From 2a7d4e5ef2b83edac92d2aec7c3a7e18d1fe3800 Mon Sep 17 00:00:00 2001 From: bw4sz Date: Thu, 14 May 2026 08:35:54 -0700 Subject: [PATCH] Add OSBS mortality comparison pipeline. Squash the local feature branch into a clean PR branch without .env or lightning_logs artifacts. --- .github/workflows/pytest.yml | 39 +- .gitignore | 16 +- README.md | 268 +- SLURM/crown_plot_array.sh | 38 + SLURM/experiment.sh | 28 - SLURM/osbs_inference.sh | 30 + SLURM/osbs_mortality.sh | 30 + SLURM/train_experiment.sh | 69 + abundance.py | 16 +- config.smoke.example.yml | 30 + config.smoke.local.yml | 18 + config.yml | 97 +- create_prediction_shp.py | 11 +- data/external/.gitkeep | 0 data/interim/.gitkeep | 0 data/raw/README.md | 50 + deeptreeattention.egg-info/PKG-INFO | 216 + deeptreeattention.egg-info/SOURCES.txt | 56 + .../dependency_links.txt | 1 + deeptreeattention.egg-info/entry_points.txt | 6 + deeptreeattention.egg-info/requires.txt | 25 + deeptreeattention.egg-info/top_level.txt | 1 + .../unified_hierarchical_cnn_publication.png | Bin 0 -> 997105 bytes environment.yml | 4 +- experiments/.gitkeep | 0 mine.py | 53 +- notebooks/crop_random_tile.py | 33 +- notebooks/sample_multinomial.py | 10 +- predict.py | 165 +- pyproject.toml | 64 + requirements.txt | 4 +- results/.gitkeep | 0 sample_multinomial.py | 9 +- setup.py | 14 +- src/__init__.py | 1 + src/data.py | 176 +- src/experiment_tracking.py | 83 + src/generate.py | 178 +- src/local_smoke_logger.py | 62 + src/main.py | 110 +- src/megaplot.py | 5 +- src/models/__init__.py | 1 + src/models/dead.py | 78 +- src/models/metadata.py | 13 +- src/models/multi_stage.py | 950 +++-- src/multinomial.py | 35 +- src/neon_download.py | 88 + src/pipelines/__init__.py | 1 + src/pipelines/crown_one_plot.py | 40 + src/pipelines/download_neon_aop.py | 63 + src/pipelines/merge_crown_boxes.py | 34 + src/pipelines/osbs_inference.py | 240 ++ src/pipelines/osbs_mortality.py | 622 +++ src/pipelines/update_neon_vst.py | 113 + src/predict.py | 85 +- src/start_cluster.py | 101 - src/utils.py | 69 +- src/visualize.py | 2 + src/vst_update.py | 220 + tests/conftest.py | 27 +- tests/data/annotations.csv | 14 + tests/data/boxes/HARV_001_boxes.cpg | 1 + tests/data/boxes/HARV_001_boxes.dbf | Bin 0 -> 17780 bytes tests/data/boxes/HARV_001_boxes.shp | Bin 0 -> 7580 bytes tests/data/boxes/HARV_001_boxes.shx | Bin 0 -> 540 bytes tests/data/boxes/HARV_010_boxes.cpg | 1 + tests/data/boxes/HARV_010_boxes.dbf | Bin 0 -> 19052 bytes tests/data/boxes/HARV_010_boxes.shp | Bin 0 -> 8124 bytes tests/data/boxes/HARV_010_boxes.shx | Bin 0 -> 572 bytes tests/data/canopy_points.cpg | 1 + tests/data/canopy_points.dbf | Bin 0 -> 53013 bytes tests/data/canopy_points.shp | Bin 0 -> 520 bytes tests/data/canopy_points.shx | Bin 0 -> 220 bytes tests/data/novel_species.csv | 3 + tests/data/test.csv | 7 + tests/data/train.csv | 6 + tests/test_dead.py | 3 - tests/test_generate.py | 46 +- tests/test_osbs_inference.py | 48 + tests/test_osbs_mortality.py | 111 + tests/test_predict.py | 6 +- train.py | 403 +- train_dead.py | 29 +- uv.lock | 3605 +++++++++++++++++ 84 files changed, 7632 insertions(+), 1450 deletions(-) create mode 100644 SLURM/crown_plot_array.sh delete mode 100644 SLURM/experiment.sh create mode 100755 SLURM/osbs_inference.sh create mode 100644 SLURM/osbs_mortality.sh create mode 100755 SLURM/train_experiment.sh create mode 100644 config.smoke.example.yml create mode 100644 config.smoke.local.yml create mode 100644 data/external/.gitkeep create mode 100644 data/interim/.gitkeep create mode 100644 data/raw/README.md create mode 100644 deeptreeattention.egg-info/PKG-INFO create mode 100644 deeptreeattention.egg-info/SOURCES.txt create mode 100644 deeptreeattention.egg-info/dependency_links.txt create mode 100644 deeptreeattention.egg-info/entry_points.txt create mode 100644 deeptreeattention.egg-info/requires.txt create mode 100644 deeptreeattention.egg-info/top_level.txt create mode 100644 docs/figures/unified_hierarchical_cnn_publication.png create mode 100644 experiments/.gitkeep create mode 100644 pyproject.toml create mode 100644 results/.gitkeep create mode 100644 src/experiment_tracking.py create mode 100644 src/local_smoke_logger.py create mode 100644 src/neon_download.py create mode 100644 src/pipelines/__init__.py create mode 100644 src/pipelines/crown_one_plot.py create mode 100644 src/pipelines/download_neon_aop.py create mode 100644 src/pipelines/merge_crown_boxes.py create mode 100644 src/pipelines/osbs_inference.py create mode 100644 src/pipelines/osbs_mortality.py create mode 100644 src/pipelines/update_neon_vst.py delete mode 100644 src/start_cluster.py create mode 100644 src/vst_update.py create mode 100644 tests/data/annotations.csv create mode 100644 tests/data/boxes/HARV_001_boxes.cpg create mode 100644 tests/data/boxes/HARV_001_boxes.dbf create mode 100644 tests/data/boxes/HARV_001_boxes.shp create mode 100644 tests/data/boxes/HARV_001_boxes.shx create mode 100644 tests/data/boxes/HARV_010_boxes.cpg create mode 100644 tests/data/boxes/HARV_010_boxes.dbf create mode 100644 tests/data/boxes/HARV_010_boxes.shp create mode 100644 tests/data/boxes/HARV_010_boxes.shx create mode 100644 tests/data/canopy_points.cpg create mode 100644 tests/data/canopy_points.dbf create mode 100644 tests/data/canopy_points.shp create mode 100644 tests/data/canopy_points.shx create mode 100644 tests/data/novel_species.csv create mode 100644 tests/data/test.csv create mode 100644 tests/data/train.csv create mode 100644 tests/test_osbs_inference.py create mode 100644 tests/test_osbs_mortality.py create mode 100644 uv.lock diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 368178615..d6799b6e0 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -13,43 +13,28 @@ jobs: fail-fast: false matrix: python-version: - # - 3.6 - - 3.9 - # - 3.8 + - "3.11" os: - "ubuntu-latest" runs-on: "${{ matrix.os }}" - # use bash everywhere - defaults: - run: - shell: "bash -l {0}" - steps: - name: "Checkout code" - uses: "actions/checkout@v2" + uses: "actions/checkout@v4" - - name: "Cache conda" - uses: "actions/cache@v1" - env: - # Increase this value to reset cache if env.yml has not changed - CACHE_NUMBER: 0 + - name: "Setup Python" + uses: "actions/setup-python@v5" with: - path: "~/conda_pkgs_dir" - key: "${{ matrix.os }}-conda-${{ matrix.python-version }}-${{ env.CACHE_NUMBER }}-${{ hashFiles('enviroment.yml') }}" + python-version: "${{ matrix.python-version }}" - - name: "Setup conda" - uses: "conda-incubator/setup-miniconda@v2" + - name: "Setup uv" + uses: "astral-sh/setup-uv@v6" with: - activate-environment: "DeepForest" - environment-file: "environment.yml" - python-version: "${{ matrix.python-version }}" - channels: conda-forge,spyder-ide - allow-softlinks: true - channel-priority: flexible - show-channel-urls: true - use-only-tar-bz2: true + enable-cache: true + + - name: "Install dependencies" + run: "uv sync --extra dev" - name: "Run tests" - run: "pytest -v" + run: "uv run pytest -v" diff --git a/.gitignore b/.gitignore index 11d3d6dc3..6e7a07578 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,23 @@ +config.local.yml +.smoke_train_overrides.yml +results/** +!results/.gitkeep + .DS_Store project.wpr project.wpu *.h5 __pycache__ -data/raw/ -data/processed/ +# Large or machine-local artifacts (keep README / .gitkeep under data/*) +data/processed/** +data/external/** +!data/external/.gitkeep +!data/interim/.gitkeep +data/raw/**/*.csv +data/raw/**/*.zip +!data/raw/README.md *.tif *.png +!docs/figures/*.png *.wpr *.wpu diff --git a/README.md b/README.md index 562fe3093..b7a6c401e 100644 --- a/README.md +++ b/README.md @@ -1,201 +1,189 @@ -DeepTreeAttention -============================== +# DeepTreeAttention -[![Github Actions](https://github.com/Weecology/DeepTreeAttention/actions/workflows/pytest.yml/badge.svg)](https://github.com/Weecology/DeepTreeAttention/actions/) +[Github Actions](https://github.com/Weecology/DeepTreeAttention/actions/) -Tree Species Prediction for the National Ecological Observatory Network (NEON) +Tree species classification for **National Ecological Observatory Network (NEON)** imagery, implementing Hang et al. 2020 ([Hyperspectral Image Classification with Attention Aided CNNs](https://arxiv.org/abs/2005.11977)) with a PyTorch Lightning training stack. -Implementation of Hang et al. 2020 [Hyperspectral Image Classification with Attention Aided CNNs](https://arxiv.org/abs/2005.11977) for tree species prediction. +This README is organized around the lifecycle you described: **raw points → generated tensors → training → evaluation → inference → reporting**. Dask has been removed in favor of **single-node sequential code** plus **plain SLURM job arrays** for embarrassingly parallel stages (per-plot crowns, large I/O batches, and so on). -# Model Architecture +--- -![](www/model.png) +## 0. Environment (uv) -Project Organization ------------- - - ├── LICENSE - ├── README.md <- The top-level README for developers using this project. - ├── data - │   ├── processed <- The final, canonical data sets for modeling. - │   └── raw <- The original, immutable data dump. - │ - ├── environment.yml <- Conda requirements - │ - ├── setup.py <- makes project pip installable (pip install -e .) so src can be imported - ├── src <- Source code for use in this project. - │   ├── Models <- Model Architectures +```bash +uv sync --extra dev +uv run pytest -v +``` --------- +Use `uv run …` for every CLI invocation so the locked environment is respected. -# Workflow -There are three main parts to this project, a 1) data module, a 2) model module, and 3) a trainer module. Usually the data_module is created to hold the train and test split and keep track of data generation reproducibility. Then a model architecture is created and pass to the model module along with the data module. Finally the model module is passed to the trainer. +--- -``` -#1) -data_module = data.TreeData(csv_file="data/raw/neon_vst_data_2021.csv", regenerate=False, client=client) +## 1. Data layout and the “HPC handoff” -#2) -model = -m = main.TreeModel(model=model, bands=data_module.config["bands"], classes=data_module.num_classes,label_dict=data_module.species_label_dict) -#3 -trainer = Trainer() -trainer.fit(m, datamodule=data_module) -``` +| Stage | Location | What it is | +| ----------------------------------------- | ------------------------------------------------ | -------------------------------------------------------------------------------------------------- | +| **Upstream (not in git)** | e.g. `/orange/ewhite/NeonData/...` on HiPerGator | Full NEON mirror; too large to vendor. | +| **Shareable inputs** | `data/raw/` | VST (or similar) stem tables, AOI shapefiles. See `data/raw/README.md`. | +| **Intermediary bundle (commit or rsync)** | `data/interim/` | Filtered stem points (`canopy_points.shp`), optional per-plot crown boxes before merge, manifests. | +| **Heavy rasters** | `data/external/neon_aop/` | RGB / HSI / CHM tiles from `**neonutilities`** downloads or selective `rsync` from the mirror. | +| **Training tensors** | `data/processed//` or `config["data_dir"]` | HSI crops, `train.csv` / `test.csv`, `crowns.shp`. | -## Pytorch Lightning Data Module (data.TreeData) -This repo contains a pytorch lightning data module for reproducibility. The goal of the project is to make it easy to share with others within our research group, but we welcome contributions from outside the community. While all data is public, it is VERY large (>20TB) and cannot be easily shared. If you want to reproduce this work, you will need to download the majority of NEON's camera, HSI and CHM data and change the paths in the config file. For the 'raw' NEON tree stem data see data/raw/neon_vst_2021.csv. The data module starts from this state, which are x,y locations for each tree. It then performs the following actions as an end-to-end workflow. +**Practical handoff from HiPerGator:** export the VST CSV you trust, copy it to `data/raw/`, then either (a) run `deeptree-download-aop` (below) into `data/external/neon_aop/`, or (b) `rsync` only the DP3 products you need into the same tree. Point `rgb_sensor_pool`, `HSI_sensor_pool`, and `CHM_pool` in `config.yml` at that mirror. You no longer need to regenerate crops for every experiment if you set `use_data_commit` to a frozen directory name or reuse `data_dir` with `replace: false` after the first successful build. -1. Filters the data to represent trees over 3m with sufficient number of training samples -2. Extract the LiDAR derived canopy height and compares it to the field measured height. Trees that are below the canopy are excluded based on the min_CHM_diff parameter in the config. -3. Splits the training and test x,y data such that field plots are either in training or test. -4. For each x,y stem location the crown is predicted by the tree detection algorithm (DeepForest - https://deepforest.readthedocs.io/). -5. Crops of each tree crown are created and divided into pixel windows for pixel-level prediction. +--- -This workflow does not need to be run on every experiment. If you are satisifed with the current train/test split and data generation process, set regenerate=False +## 2. Download AOP tiles (`neonutilities`) -``` -data_module = data.TreeData(csv_file="data/raw/neon_vst_data_2021.csv", regenerate=False) -data_module.setup() -``` +The Python `**neonutilities`** package exposes `by_tile_aop`, equivalent to the R `neonUtilities::byTileAOP` helper. This repository wraps it for stem coordinates. -## Pytorch Lightning Training Module (data.TreeModel) +1. Obtain a NEON API token and export it (optional for tiny pulls; recommended otherwise): + ```bash + export NEON_API_TOKEN="your_token" + ``` +2. After you have `canopy_points.shp` (from the filtering stage in `TreeData`), set `data_layout.canopy_points_shp` in `config.yml` **or** pass `--points`. +3. Run: + ```bash + uv run deeptree-download-aop --config config.yml + ``` + Defaults live under `neon_download` in `config.yml` (site, years, DP3 IDs for RGB, hyperspectral, CHM, buffer in meters). -Training is handled by the TreeModel class which loads a model from the models folder, reads the config file and runs the training. The evaluation metrics and images are computed and put of the comet dashboard +--- -``` -m = main.TreeModel(model=Hang2020.vanilla_CNN, bands=data_module.config["bands"], classes=data_module.num_classes,label_dict=data_module.species_label_dict) - -trainer = Trainer( - gpus=data_module.config["gpus"], - fast_dev_run=data_module.config["fast_dev_run"], - max_epochs=data_module.config["epochs"], - accelerator=data_module.config["accelerator"], - logger=comet_logger) - -trainer.fit(m, datamodule=data_module) -``` +## 3. Generate datasets (0 — data generation) -## Alive/Dead Filtering +Pipeline code paths: -As part of the prediction pipeline, RGB crops are scored as either 'Alive', meanining they have leaves during presumed leaf-on season, or 'Dead', meaning they do not have leaves. -To finetune the resent50 model, see src/models/dead.py. The classified data for the Alive/Dead crops can be found in data/raw/dead_train and dead/raw/dead_test. +- `src/data.py` — filter VST, CHM checks, megaplot merge hooks, train/test split. +- `src/generate.py` — DeepForest crowns, hyperspectral crops, optional H5→TIF conversion via `src/neon_paths.py`. -### Dev Guide +**Local / single job:** instantiate `data.TreeData` with `use_data_commit: null` and your `config.yml`, as in `train.py`. -In general, major changes or improvements should be made on a new git branch. Only core improvements should be made on the main branch. If a change leads to higher scores, please create a pull request. Any pull requests are expected to have pytest unit tests (see tests/) that cover major use cases. +**Parallel crowns (SLURM):** each array task runs one plot: -## Model Architectures +```bash +uv run python -m src.pipelines.crown_one_plot \ + --canopy-points data/interim/canopy_points.shp \ + --plot OSBS_001 \ + --rgb-glob "data/external/neon_aop/**/DP3.30010.001/**/Camera/**/*.tif" \ + --savedir data/interim/boxes \ + --raw-box-savedir data/interim/raw_boxes +``` -The TreeModel class takes in a create model function +After all tasks finish, merge: -``` -m = main.TreeModel(model=Hang2020.vanilla_CNN) +```bash +uv run deeptree-merge-crown-boxes \ + --boxes-dir data/interim/boxes \ + --out data/interim/crowns.shp ``` -Any model can be specified provided it follows the following input and output arguments +Submit `SLURM/crown_plot_array.sh` (tune `#SBATCH` directives, `plots.txt`, and `REPO_ROOT`). -``` -class myModel(Module): - """ - Model description - """ - def __init__(self, bands, classes): - super(myModel, self).__init__() - - - def forward(self, x): - - class_scores = F.softmax(x) - - return class_scores -``` +> **Note:** Passing a Dask `Client` into `points_to_crowns`, `generate_crops`, or `train_test_split` now raises a clear error. Parallelize with SLURM (or your own outer loop), not an in-Python Dask cluster. -### Extending the model +--- -To create a model that takes in new inputs, I strongly recommend sub-classing the existing TreeData and TreeModel classes. For an example, see the MetadataModel in models/metadata.py +## 4. Training (1) -``` -#Subclass of the training model -class MetadataModel(main.TreeModel): - """Subclass the core model and update the training loop to take two inputs""" - def __init__(self, model, sites,classes, label_dict, config): - super(MetadataModel,self).__init__(model=model,classes=classes,label_dict=label_dict, config=config) - - def training_step(self, batch, batch_idx): - """Train on a loaded dataset - """ - #allow for empty data if data augmentation is generated - inputs, y = batch - images = inputs["HSI"] - metadata = inputs["site"] - y_hat = self.model.forward(images, metadata) - loss = F.cross_entropy(y_hat, y) - - return loss +**Experiment identity (Comet + SLURM)** — you no longer pass git branch/sha as required positionals. The trainer auto-detects git (branch, SHA, dirty flag) and uploads a merged `**config.merged.yml`**, optional `**git_diff_uncommitted.patch**`, and a `**src/**` code bundle to Comet when logging is enabled. + +```bash +# Human-readable Comet experiment name (recommended) +export DEEPTREE_EXPERIMENT_NAME=osbs-baseline-epoch70 +uv run python train.py --config config.yml --experiment-name "${DEEPTREE_EXPERIMENT_NAME}" + +# Or rely on auto naming (UTC timestamp + short SHA, or SLURM_JOB_ID on clusters) +uv run python train.py --config config.yml +# Optional YAML merged last (keep one file per ablation under e.g. experiments/) +uv run python train.py --config config.yml --overrides experiments/my_ablation.yml -n osbs-lr-sweep-001 ``` -## Getting Started (UF - collaboration) +Environment variables (highest priority first for the display name): `**DEEPTREE_EXPERIMENT_NAME**`, `**COMET_EXPERIMENT_NAME**`, then `**--experiment-name**`, then a default from `**SLURM_JOB_ID**` or timestamp. -This section is meant solely for members of the idtrees group who have access to the data. +`train.py` reads `config.yml` (+ `config.local.yml` if present), logs to Comet when `**use_comet: true**` and `**COMET_API_KEY**` / `**COMET_KEY**` are set, and writes checkpoints under `**checkpoint_dir**`. `raw_vst_csv` defaults to `data/raw/neon_vst_data_2022.csv` but can be overridden in YAML. -1) Fork this repo and install the conda environment. +**SLURM (queued GPU training)** — from the repo checkout, set **`EXPERIMENT_NAME`** (forwarded as **`DEEPTREE_EXPERIMENT_NAME`**), optionally **`DEEPTREE_OVERRIDES`** and **`DEEPTREE_CONFIG`**, then: -``` -conda env create -f=environment.yml -conda activate DeepTreeAttention +```bash +cd /path/to/DeepTreeAttention +EXPERIMENT_NAME=osbs-baseline sbatch SLURM/train_experiment.sh ``` -2) Update the config.yml +**`REPO_ROOT`** defaults to **`SLURM_SUBMIT_DIR`** (your shell’s current directory when you run `sbatch`), so you normally **do not** export it if you `cd` into the project first. Set **`REPO_ROOT=/path/to/DeepTreeAttention`** only when you submit from another directory. -Currently, only members of the ewhite group have permissions to the raw NEON data. +Edit `#SBATCH` lines in `SLURM/train_experiment.sh` for your partition/account. The job runs from a **shared checkout** so you can **`git pull`** or edit **`experiments/*.yml`** between submissions; each job still logs the **resolved config** and **git SHA** to Comet for apples-to-apples comparison. -For example: +--- -``` -rgb_sensor_pool: /orange/ewhite/NeonData/*/DP3.30010.001/**/Camera/**/*.tif -``` +## 5. Evaluation (2) -This is not a problem, just set +Evaluation is integrated in the Lightning `TreeModel` / `MultiStage` path (validation metrics, crown-level scoring). Point `use_data_commit` at a frozen processed directory to re-score without touching generation. -``` -regenerate: False -``` +--- -and it will bypass these steps and use the existing train/test split (e.g. data/processed/train.csv) +## 6. Inference (3) -You will need to set the correct crop directories +**OSBS RGB tile inference** is configured solely through `inference_osbs` in `config.yml`. +```bash +uv run python predict.py --config config.yml +# or +uv run deeptree-infer-osbs --config config.yml ``` -crop_dir: /blue/ewhite/b.weinstein/DeepTreeAttention/crops/ -``` -To wherever the crops are saved. This is currently -``` -/orange/idtrees-collab/DeepTreeAttention/crops/ -``` +HiPerGator template: `SLURM/osbs_inference.sh`. -I highly recommend making a comet login. Change +**OSBS mortality comparison** is configured through `osbs_mortality` in `config.yml`. It downloads AOI-intersecting RGB tiles when requested, runs the detector plus alive/dead cropmodel, optionally runs species inference, and writes tile-level CSV/GPKG outputs plus GeoTIFF rasters for dead counts and dead-count change. +```bash +uv run deeptree-osbs-mortality --config config.yml ``` -#Comet dashboard -comet_workspace: bw4sz -``` -to your usename and add a [.comet.config file](https://www.comet.ml/docs/python-sdk/advanced/#non-interactive-setup) to authenticate. -3) Submit a job +HiPerGator template: `SLURM/osbs_mortality.sh`. -Submit a SLURM job +--- +## 7. Reporting and analysis (4) + +- Comet dashboards (when `comet_ml` is configured). +- Scripts such as `abundance.py`, `create_prediction_shp.py`, and `src/multinomial.py` now use `ThreadPoolExecutor` instead of Dask for light parallelism over shapefiles. + +--- + +## Project map + +```text +├── config.yml # Central configuration (+ neon_download / data_layout) +├── data/ +│ ├── raw/README.md # What belongs in raw inputs + rsync hints +│ ├── external/ # Downloaded / rsync'd NEON tiles (.gitkeep only) +│ └── interim/ # Optional canonical intermediate artifacts +├── experiments/ # Optional YAML fragments for ``--overrides`` (one ablation per file) +├── SLURM/ # Job scripts (``train_experiment.sh``, inference, crown array) +├── src/ +│ ├── data.py # Lightning TreeData + filtering +│ ├── experiment_tracking.py # Git metadata + default experiment names +│ ├── generate.py # Crowns + crops +│ ├── neon_download.py # neonutilities helpers +│ └── pipelines/ # CLIs (inference, download, crown worker, merge) +├── train.py # Full training driver +├── predict.py # OSBS inference entry +└── pyproject.toml # Dependencies + `deeptree-*` console scripts ``` -sbatch SLURM/experiment.sh -``` -4) Look at the comet repo for results +--- + +## Open questions / follow-up work -The metrics tab has the Micro and Macro Accuracy. +1. **Megaplot + IFAS branches** — logic is dense; consider isolating into a small submodule with explicit tests. +2. **CHM product ID per NEON revision** — confirm `DP3.30015.001` matches your mirror layout (`CanopyHeightModelGtif`). +3. **Comet as the sole reproducibility anchor** — `use_data_commit` ties runs to Comet artifact IDs; consider replacing with explicit semantic version tags on `data/processed//`. +4. **Dead-tree filtering in `TreeData`** — references `self.predicted_dead` in a logging block; verify that attribute is always defined on your code path before relying on those images in Comet. +Training uses Lightning 2 `Trainer(accelerator=…, devices=…)` (see `devices` / `accelerator` in `config.yml`; legacy `gpus` is still read as a device count when `devices` is omitted). +Contributions: branch per feature, add/adjust pytest coverage for anything you touch, keep diffs focused. \ No newline at end of file diff --git a/SLURM/crown_plot_array.sh b/SLURM/crown_plot_array.sh new file mode 100644 index 000000000..8785c4672 --- /dev/null +++ b/SLURM/crown_plot_array.sh @@ -0,0 +1,38 @@ +#!/bin/bash +#SBATCH --job-name=dt_crown_plot +#SBATCH --account=ewhite +#SBATCH --cpus-per-task=2 +#SBATCH --mem=16G +#SBATCH --time=04:00:00 +#SBATCH --output=logs/crown_plot_%A_%a.out +#SBATCH --error=logs/crown_plot_%A_%a.err +##SBATCH --array=1-50%10 + +# One task per line in plots.txt (plotID). Example: +# awk 'NR>1{print $1}' plots_export.csv | sort -u > plots.txt # if first column is plotID +# Then: #SBATCH --array=1-$(wc -l < plots.txt)%10 + +set -euo pipefail +REPO_ROOT="${REPO_ROOT:-$HOME/DeepTreeAttention}" +export CONFIG_PATH="${CONFIG_PATH:-$REPO_ROOT/config.yml}" +CANOPY_POINTS="${CANOPY_POINTS:-$REPO_ROOT/data/interim/canopy_points.shp}" +PLOTS_FILE="${PLOTS_FILE:-$REPO_ROOT/plots.txt}" + +cd "$REPO_ROOT" +mkdir -p logs + +LINE_NO="${SLURM_ARRAY_TASK_ID:?Set SLURM_ARRAY_TASK_ID or submit with sbatch --array}" +PLOT="$(sed -n "${LINE_NO}p" "$PLOTS_FILE")" +if [[ -z "${PLOT}" ]]; then + echo "No plot on line ${LINE_NO} of ${PLOTS_FILE}" + exit 1 +fi + +RGB_GLOB="$(uv run python -c "import os; from src import utils; print(utils.read_config(os.environ['CONFIG_PATH'])['rgb_sensor_pool'])")" + +uv run python -m src.pipelines.crown_one_plot \ + --canopy-points "$CANOPY_POINTS" \ + --plot "$PLOT" \ + --rgb-glob "$RGB_GLOB" \ + --savedir "${CROWN_BOX_DIR:-$REPO_ROOT/data/interim/boxes}" \ + --raw-box-savedir "${RAW_BOX_DIR:-$REPO_ROOT/data/interim/raw_boxes}" diff --git a/SLURM/experiment.sh b/SLURM/experiment.sh deleted file mode 100644 index 1b498ddcc..000000000 --- a/SLURM/experiment.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -#SBATCH --job-name=DeepTreeAttention # Job name -#SBATCH --mail-type=END # Mail events -#SBATCH --mail-user=benweinstein2010@gmail.com # Where to send mail -#SBATCH --account=ewhite -#SBATCH --nodes=1 # Number of MPI ran -#SBATCH --cpus-per-task=1 -#SBATCH --mem=50GB -#SBATCH --time=48:00:00 #Time limit hrs:min:sec -#SBATCH --output=/home/b.weinstein/logs/DeepTreeAttention_%j.out # Standard output and error log -#SBATCH --error=/home/b.weinstein/logs/DeepTreeAttention_%j.err -#SBATCH --partition=gpu -#SBATCH --gpus=1 - -ulimit -c 0 - -module load git gcc - -git checkout $1 - -source activate DeepTreeAttention - -cd ~/DeepTreeAttention/ - -#get branch and commit name -branch_name=$((git symbolic-ref HEAD 2>/dev/null || echo "(unnamed branch)")|cut -d/ -f3-) -commit=$(git log --pretty=format:'%H' -n 1) -python train.py $branch_name $commit diff --git a/SLURM/osbs_inference.sh b/SLURM/osbs_inference.sh new file mode 100755 index 000000000..9a3e017f6 --- /dev/null +++ b/SLURM/osbs_inference.sh @@ -0,0 +1,30 @@ +#!/bin/bash +#SBATCH --job-name=osbs_infer +#SBATCH --mail-type=END +#SBATCH --mail-user=benweinstein2010@gmail.com +#SBATCH --account=ewhite +#SBATCH --nodes=1 +#SBATCH --cpus-per-task=8 +#SBATCH --mem=64GB +#SBATCH --time=48:00:00 +#SBATCH --output=/home/b.weinstein/logs/osbs_inference_%j.out +#SBATCH --error=/home/b.weinstein/logs/osbs_inference_%j.err +#SBATCH --partition=gpu +#SBATCH --gpus=1 + +# OSBS tile inference (detection + species). Configure inference_osbs in config.yml, then submit. + +set -euo pipefail + +ulimit -c 0 + +REPO_ROOT="${REPO_ROOT:-${HOME}/DeepTreeAttention}" +CONFIG_PATH="${CONFIG_PATH:-${REPO_ROOT}/config.yml}" + +module load git gcc 2>/dev/null || true +source activate DeepTreeAttention + +cd "${REPO_ROOT}" +export PYTHONPATH="${REPO_ROOT}:${PYTHONPATH:-}" + +python -m src.pipelines.osbs_inference --config "${CONFIG_PATH}" diff --git a/SLURM/osbs_mortality.sh b/SLURM/osbs_mortality.sh new file mode 100644 index 000000000..c82d48d6c --- /dev/null +++ b/SLURM/osbs_mortality.sh @@ -0,0 +1,30 @@ +#!/bin/bash +#SBATCH --job-name=osbs_mortality +#SBATCH --mail-type=END +#SBATCH --mail-user=benweinstein2010@gmail.com +#SBATCH --account=ewhite +#SBATCH --nodes=1 +#SBATCH --cpus-per-task=8 +#SBATCH --mem=96GB +#SBATCH --time=72:00:00 +#SBATCH --output=/home/b.weinstein/logs/osbs_mortality_%j.out +#SBATCH --error=/home/b.weinstein/logs/osbs_mortality_%j.err +#SBATCH --partition=gpu +#SBATCH --gpus=1 + +# OSBS tile-scale mortality comparison. Configure osbs_mortality in config.yml, then submit. + +set -euo pipefail + +ulimit -c 0 + +REPO_ROOT="${REPO_ROOT:-${HOME}/DeepTreeAttention}" +CONFIG_PATH="${CONFIG_PATH:-${REPO_ROOT}/config.yml}" + +module load git gcc 2>/dev/null || true +source activate DeepTreeAttention + +cd "${REPO_ROOT}" +export PYTHONPATH="${REPO_ROOT}:${PYTHONPATH:-}" + +python -m src.pipelines.osbs_mortality --config "${CONFIG_PATH}" diff --git a/SLURM/train_experiment.sh b/SLURM/train_experiment.sh new file mode 100755 index 000000000..6e771ce68 --- /dev/null +++ b/SLURM/train_experiment.sh @@ -0,0 +1,69 @@ +#!/bin/bash +# Submit a queued GPU training run with a stable experiment identity for Comet. +# +# Usage (from login node, repo checked out on shared FS): +# cd /path/to/DeepTreeAttention +# export EXPERIMENT_NAME=osbs-epoch70-bs128-$(date +%Y%m%d) +# # optional: export DEEPTREE_OVERRIDES=... DEEPTREE_CONFIG=... +# sbatch SLURM/train_experiment.sh +# +# REPO_ROOT defaults to SLURM_SUBMIT_DIR (your cwd when you ran sbatch). Override +# if you submit from elsewhere: REPO_ROOT=/path/to/DeepTreeAttention sbatch ... +# +# Comet: set COMET_API_KEY (and optionally COMET_WORKSPACE) in the environment +# or load them from a secrets file before sbatch. DEEPTREE_EXPERIMENT_NAME is +# forwarded so the Comet UI name matches your SLURM intent. + +#SBATCH --job-name=dt-train +#SBATCH --account=ewhite +#SBATCH --nodes=1 +#SBATCH --cpus-per-task=8 +#SBATCH --mem=64G +#SBATCH --time=12:00:00 +#SBATCH --partition=gpu +#SBATCH --gpus=1 +#SBATCH --output=/home/b.weinstein/logs/train_%x_%j.out +#SBATCH --error=/home/b.weinstein/logs/train_%x_%j.err +#SBATCH --partition=hpg-turin +#SBATCH --ntasks-per-node=1 +#SBATCH --gpus=1 + +set -euo pipefail + +REPO_ROOT="${REPO_ROOT:-${SLURM_SUBMIT_DIR:-}}" +if [[ -z "${REPO_ROOT}" ]]; then + echo "[train_experiment] Set REPO_ROOT or run sbatch from the repo: cd .../DeepTreeAttention && sbatch SLURM/train_experiment.sh" >&2 + exit 1 +fi +if [[ ! -f "${REPO_ROOT}/train.py" ]]; then + echo "[train_experiment] REPO_ROOT=${REPO_ROOT} is not the repo root (no train.py). cd into DeepTreeAttention or set REPO_ROOT." >&2 + exit 1 +fi +cd "${REPO_ROOT}" + +mkdir -p logs + +# Stable name for Comet + log files (override when submitting) +export DEEPTREE_EXPERIMENT_NAME="${EXPERIMENT_NAME:-train-${SLURM_JOB_ID}}" + +# Optional merged config fragment (same as train.py --overrides) +OVERRIDES_ARGS=() +if [[ -n "${DEEPTREE_OVERRIDES:-}" ]]; then + OVERRIDES_ARGS=(--overrides "${DEEPTREE_OVERRIDES}") +fi + +CONFIG_PATH="${DEEPTREE_CONFIG:-config.yml}" + +# Use uv if available (recommended); fall back to python on the module path. +if command -v uv >/dev/null 2>&1; then + RUN=(uv run python train.py --config "${CONFIG_PATH}" "${OVERRIDES_ARGS[@]}" --experiment-name "${DEEPTREE_EXPERIMENT_NAME}") +else + RUN=(python train.py --config "${CONFIG_PATH}" "${OVERRIDES_ARGS[@]}" --experiment-name "${DEEPTREE_EXPERIMENT_NAME}") +fi + +echo "[train_experiment] SLURM_JOB_ID=${SLURM_JOB_ID:-}" +echo "[train_experiment] DEEPTREE_EXPERIMENT_NAME=${DEEPTREE_EXPERIMENT_NAME}" +echo "[train_experiment] REPO_ROOT=${REPO_ROOT}" +echo "[train_experiment] running: ${RUN[*]}" + +exec "${RUN[@]}" diff --git a/abundance.py b/abundance.py index e35604ea6..2ba65a847 100644 --- a/abundance.py +++ b/abundance.py @@ -1,11 +1,11 @@ #Plot abundance distribution +from concurrent.futures import ThreadPoolExecutor, as_completed from glob import glob import os import pandas as pd import geopandas as gpd -from src import start_cluster -client = start_cluster.start(cpus=75,mem_size="10GB") +_IO_WORKERS = min(32, (os.cpu_count() or 4) * 4) ##Same data @@ -43,9 +43,9 @@ def read_shp(path): print(files) if len(files) == 0: continue - counts = [] - futures = client.map(read_shp,files) - counts = [x.result() for x in futures] + with ThreadPoolExecutor(max_workers=_IO_WORKERS) as ex: + futures = [ex.submit(read_shp, f) for f in files] + counts = [f.result() for f in as_completed(futures)] total_counts = pd.Series() for ser in counts: total_counts = total_counts.add(ser, fill_value=0) @@ -89,9 +89,9 @@ def read_shp(path): print(files) if len(files) == 0: continue - counts = [] - futures = client.map(read_shp,files) - counts = [x.result() for x in futures] + with ThreadPoolExecutor(max_workers=_IO_WORKERS) as ex: + futures = [ex.submit(read_shp, f) for f in files] + counts = [f.result() for f in as_completed(futures)] total_counts = pd.Series() for ser in counts: total_counts = total_counts.add(ser, fill_value=0) diff --git a/config.smoke.example.yml b/config.smoke.example.yml new file mode 100644 index 000000000..867614aef --- /dev/null +++ b/config.smoke.example.yml @@ -0,0 +1,30 @@ +# Copy to ``config.local.yml`` or pass ``--overrides config.smoke.example.yml`` with ``train.py``. +# If your ``use_data_commit`` folder has split CSVs like ``train__[\"OSBS\"].csv`` instead of +# ``train.csv`` / ``test.csv``, set ``processed_train_csv`` and ``processed_test_csv`` (relative to that folder). + +epochs: 1 +workers: 0 +preload_images: false +batch_size: 32 + +# Lightning: keep runs tiny (metrics on partial data are not meaningful) +limit_train_batches: 2 +limit_val_batches: 2 +limit_predict_batches: 4 + +use_comet: false +checkpoint_dir: results/checkpoints + +# CPU smoke (set accelerator: auto, devices: 1 for a short GPU check) +accelerator: cpu +devices: 1 +accelerator: cpu + +# Faster crown detection during OSBS inference smoke (optional) +deepforest_dead_cropmodel_name: null + +inference_osbs: + tile_limit: 1 + predict_limit_batches: 2 + # After a smoke train, point this at results/checkpoints/.pt + # species_checkpoint: results/checkpoints/smoke.pt diff --git a/config.smoke.local.yml b/config.smoke.local.yml new file mode 100644 index 000000000..f1f565b2f --- /dev/null +++ b/config.smoke.local.yml @@ -0,0 +1,18 @@ +data_dir: data/processed +use_data_commit: 4c02ae98bd774aa494fadb3508ae84ba +processed_train_csv: train_dd0adf605011f67ea3e3626231a9713a04a9e85e_['OSBS'].csv +processed_test_csv: test_dd0adf605011f67ea3e3626231a9713a04a9e85e_['OSBS'].csv + +epochs: 1 +workers: 0 +preload_images: false +batch_size: 16 + +limit_train_batches: 2 +limit_val_batches: 2 +limit_predict_batches: 2 + +use_comet: false +checkpoint_dir: results/checkpoints +accelerator: cpu +devices: 1 diff --git a/config.yml b/config.yml index feeb31bfd..979210264 100644 --- a/config.yml +++ b/config.yml @@ -1,4 +1,32 @@ -#Config +# Config — paths below default to UF HiPerGator shared storage. For a portable checkout, +# copy to ``config.local.yml`` (untracked) or override globs to point under ``data/external/neon_aop/``. + +# Vegetation structure (stem) table used by ``train.py`` when building a new dataset +raw_vst_csv: data/raw/neon_vst_data_2022.csv + +# When ``use_data_commit`` points at a bundle with split CSVs like ``train__[\"OSBS\"].csv``, set these +# (relative to the commit directory unless absolute). Default null uses ``train.csv`` / ``test.csv``. +processed_train_csv: /blue/ewhite/b.weinstein/DeepTreeAttention/4c02ae98bd774aa494fadb3508ae84ba/train_dd0adf605011f67ea3e3626231a9713a04a9e85e_['OSBS'].csv +processed_test_csv: /blue/ewhite/b.weinstein/DeepTreeAttention/4c02ae98bd774aa494fadb3508ae84ba/test_dd0adf605011f67ea3e3626231a9713a04a9e85e_['OSBS'].csv + +# Optional layout for reproducible local mirrors (see README and ``data/raw/README.md``) +data_layout: + sensor_download_root: data/external/neon_aop + # After running the filter stage, point downloads here: + canopy_points_shp: null + +# NEON AOP API downloads (``neonutilities.by_tile_aop``). Requires ``NEON_API_TOKEN`` for large pulls. +neon_download: + site: OSBS + years: [2021, 2022] + buffer_m: 50 + check_size: false + token_env: NEON_API_TOKEN + save_root: data/external/neon_aop + products: + rgb: DP3.30010.001 + hsi: DP3.30006.001 + chm: DP3.30015.001 ### Data Generation #glob path to sensor data, recursive wildcards allowed @@ -29,10 +57,10 @@ megaplot_dir: /orange/idtrees-collab/megaplot/ #Crop generation, whether to make a new dataset and customize which parts to recreate #Checkout data artifact from comet -use_data_commit: 67ec871c49cf472c8e1ae70b185addb1 +use_data_commit: 4c02ae98bd774aa494fadb3508ae84ba #Make new dataset -data_dir: /blue/ewhite/b.weinstein/DeepTreeAttention/ +data_dir: /blue/ewhite/b.weinstein/DeepTreeAttention convert_h5: True #Overwrite existing crops replace: True @@ -48,13 +76,14 @@ evergreen_ceiling: 70 # Data loader #resized Pixel size of the crowns. Square crops around each pixel of size x are used image_size: 11 -preload_images: True +preload_images: False workers: 20 sampling_ceiling: 200 #Network Parameters pretrain_state_dict: -gpus: 1 +# Lightning 2 Trainer: prefer ``devices`` + ``accelerator`` (``gpus`` still supported as a devices count). +devices: 1 batch_size: 128 bands: 349 @@ -70,6 +99,13 @@ accelerator: auto epochs: 70 min_loss_weight: 10 +# Optional Lightning caps (null = full run). See config.smoke.example.yml for workflow smoke tests. +limit_train_batches: null +limit_val_batches: null +limit_predict_batches: null +checkpoint_dir: results/checkpoints +use_comet: true + #Evaluation config #Top k class recall score top_k: 4 @@ -79,11 +115,60 @@ plot_n_individuals: 0 #Predict predict_batch_size: 64 dead_threshold: 0.95 -prediction_crop_dir: /blue/ewhite/b.weinstein/DeepTreeAttention/results/crops/ +prediction_crop_dir: results/prediction_crops/ +# Optional DeepForest CropModel for alive/dead labels at crown-detection time +deepforest_dead_cropmodel_name: weecology/cropmodel-deadtrees #Comet dashboard comet_workspace: bw4sz +# OSBS RGB inference (all tiles for ``year`` under rgb_sensor_pool that intersect AOI) +# Run: python -m src.pipelines.osbs_inference --config config.yml +inference_osbs: + site: OSBS + year: 2025 + species_checkpoint: /blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/121d61eefcd848dc97cc52bc82012c3b_OSBS.pt + aoi_path: data/raw/OSBSBoundary/OSBS_boundary.shp + results_root: /blue/ewhite/b.weinstein/DeepTreeAttention/results/osbs_inference/ + # Optional: cap tiles for debugging (omit or null for all AOI-intersecting tiles) + tile_limit: null + # Optional: cap species-model predict batches per tile (Lightning Trainer) + predict_limit_batches: null + # Optional legacy Lightning alive/dead checkpoint (otherwise DeepForest cropmodel from deepforest_dead_cropmodel_name is used when present) + dead_model_path: null + filter_dead: true + +# OSBS tile-scale mortality comparison. +# Run: python -m src.pipelines.osbs_mortality --config config.yml +osbs_mortality: + site: OSBS + years: [2017, 2025] + baseline_year: 2017 + comparison_year: 2025 + aoi_path: data/raw/OSBSBoundary/OSBS_boundary.shp + results_root: /blue/ewhite/b.weinstein/DeepTreeAttention/results/osbs_mortality/ + rgb_sensor_pool: /orange/ewhite/NeonData/OSBS/DP3.30010.001/**/Camera/**/*.tif + # Download missing AOI-intersecting RGB tiles before inference. For local mirrors, + # point save_root under data/external/neon_aop and set rgb_sensor_pool to that tree. + download_rgb: true + download_years: [2025] + save_root: data/external/neon_aop + token_env: NEON_API_TOKEN + include_provisional: true + check_size: false + aop_epsg: 32617 + tile_size_m: 1000 + # Optional debug caps + tile_limit: null + predict_limit_batches: null + # Reuse the OSBS species checkpoint above unless overridden here. + species_checkpoint: null + run_species: true + dead_model_path: null + filter_dead: true + dead_threshold: 0.95 + high_mortality_dead_change: 10 + ## Alive Dead Model Training dead: train_dir: data/raw/dead_train/ diff --git a/create_prediction_shp.py b/create_prediction_shp.py index b195023fa..e5bcf6371 100644 --- a/create_prediction_shp.py +++ b/create_prediction_shp.py @@ -1,11 +1,11 @@ #Plot abundance distribution +from concurrent.futures import ThreadPoolExecutor, as_completed from glob import glob import os import pandas as pd import geopandas as gpd -from src import start_cluster -client = start_cluster.start(cpus=100,mem_size="5GB") +_IO_WORKERS = min(32, (os.cpu_count() or 4) * 4) #Same data @@ -40,7 +40,6 @@ def read_shp(path): return intersects -futures = [] for species_model_path in species_model_paths: print(species_model_path) basename = os.path.splitext(os.path.basename(species_model_path))[0] @@ -49,9 +48,9 @@ def read_shp(path): print(files) if len(files) == 0: continue - counts = [] - futures = client.map(read_shp,files) - shps = [x.result() for x in futures] + with ThreadPoolExecutor(max_workers=_IO_WORKERS) as ex: + futures = [ex.submit(read_shp, f) for f in files] + shps = [f.result() for f in as_completed(futures)] combined_shps = pd.concat(shps) gpd_boundary = gpd.GeoDataFrame(combined_shps, geometry="geometry") gpd_boundary = gpd_boundary.reset_index(drop=True) diff --git a/data/external/.gitkeep b/data/external/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/data/interim/.gitkeep b/data/interim/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/data/raw/README.md b/data/raw/README.md new file mode 100644 index 000000000..513e47373 --- /dev/null +++ b/data/raw/README.md @@ -0,0 +1,50 @@ +# Raw and canonical field data + +This folder holds **small, shareable** inputs that define *what* to model. Large NEON AOP imagery should not live in git; use `data/external/` (see repository README) or your HPC mirror. + +## Recommended layout + +| Path | Description | +|------|-------------| +| `neon_vst.csv` | NEON Vegetation Structure (`vst`) table export (or subset) used as the stem/point source. Configure `raw_vst_csv` in `config.yml`. | +| `OSBSBoundary/` | Optional shapefiles for inference AOI (see `inference_osbs.aoi_path` in `config.yml`). | + +## Intermediary step between HPC dump and this repo + +On HiPerGator (or another host) you typically have a full NEON mirror under paths like `/orange/ewhite/NeonData/...`. **Treat that as upstream storage.** The reproducible hand-off into this repository is: + +1. **Export the VST (or megaplot) table** you actually trained on (CSV is enough for `filter_data()` in `src/data.py`). +2. **Option A — download AOP locally** with `neonutilities` (see top-level README, `deeptree-download-aop`) into `data/external/neon_aop/`, then point `rgb_sensor_pool`, `HSI_sensor_pool`, and `CHM_pool` at globs under that tree. +3. **Option B — rsync only the tiles you need** from the HPC mirror into `data/external/neon_aop/` (or another path), using the same basename/geoindex conventions NEON uses so existing `neon_paths.find_sensor_path` logic still works. + +After that, set `sensor_download_root` in `config.yml` (or override the `*_pool` globs) and you can run training without touching the full 20+ TB archive. + +## Updating woody vegetation structure (VST) + +You can refresh the canonical VST table and compare against the 2022 baseline with: + +```bash +export NEON_API_TOKEN=... # recommended to avoid API rate limits +deeptree-update-vst \ + --baseline-csv data/raw/neon_vst_data_2022.csv \ + --output-csv data/raw/neon_vst_data_latest.csv \ + --summary-csv results/vst_additions_by_site_since_2022.csv \ + --new-ids-csv results/vst_new_individual_ids_not_in_2022.csv +``` + +Notes: + +- By default, this updater includes provisional releases and requests records from `2022-01` onward. +- The summary csv reports total rows and unique `individualID` deltas per site. +- Some sites may fail due transient upstream package issues; failed site codes are printed in the JSON summary. + +## Example rsync (replace user, host, and remote paths) + +```bash +mkdir -p data/external/neon_aop +rsync -avz --progress \ + USER@hpg.rc.ufl.edu:/orange/ewhite/NeonData/OSBS/DP3.30010.001/ \ + data/external/neon_aop/OSBS/DP3.30010.001/ +``` + +Repeat for `DP3.30006.001` (hyperspectral) and your CHM product path as needed. diff --git a/deeptreeattention.egg-info/PKG-INFO b/deeptreeattention.egg-info/PKG-INFO new file mode 100644 index 000000000..f336a973b --- /dev/null +++ b/deeptreeattention.egg-info/PKG-INFO @@ -0,0 +1,216 @@ +Metadata-Version: 2.4 +Name: deeptreeattention +Version: 0.1.0 +Summary: Tree species prediction for National Ecological Observatory Network data. +Author: Ben Weinstein +License: MIT +Requires-Python: <3.13,>=3.10 +Description-Content-Type: text/markdown +License-File: LICENSE +Requires-Dist: comet_ml +Requires-Dist: python-dotenv +Requires-Dist: deepforest>=2.0.0 +Requires-Dist: descartes +Requires-Dist: geopandas +Requires-Dist: h5py +Requires-Dist: matplotlib +Requires-Dist: neonutilities +Requires-Dist: numpy +Requires-Dist: packaging>=26.1 +Requires-Dist: pandas +Requires-Dist: pytorch_lightning +Requires-Dist: PyYAML +Requires-Dist: rasterio +Requires-Dist: rasterstats +Requires-Dist: scikit-image +Requires-Dist: scikit-learn +Requires-Dist: Shapely +Requires-Dist: torch +Requires-Dist: torchmetrics +Requires-Dist: torchvision +Provides-Extra: dev +Requires-Dist: pytest; extra == "dev" +Requires-Dist: ruff; extra == "dev" +Dynamic: license-file + +# DeepTreeAttention + +[Github Actions](https://github.com/Weecology/DeepTreeAttention/actions/) + +Tree species classification for **National Ecological Observatory Network (NEON)** imagery, implementing Hang et al. 2020 ([Hyperspectral Image Classification with Attention Aided CNNs](https://arxiv.org/abs/2005.11977)) with a PyTorch Lightning training stack. + +This README is organized around the lifecycle you described: **raw points → generated tensors → training → evaluation → inference → reporting**. Dask has been removed in favor of **single-node sequential code** plus **plain SLURM job arrays** for embarrassingly parallel stages (per-plot crowns, large I/O batches, and so on). + +--- + +## 0. Environment (uv) + +```bash +uv sync --extra dev +uv run pytest -v +``` + +Use `uv run …` for every CLI invocation so the locked environment is respected. + +--- + +## 1. Data layout and the “HPC handoff” + + +| Stage | Location | What it is | +| ----------------------------------------- | ------------------------------------------------ | -------------------------------------------------------------------------------------------------- | +| **Upstream (not in git)** | e.g. `/orange/ewhite/NeonData/...` on HiPerGator | Full NEON mirror; too large to vendor. | +| **Shareable inputs** | `data/raw/` | VST (or similar) stem tables, AOI shapefiles. See `data/raw/README.md`. | +| **Intermediary bundle (commit or rsync)** | `data/interim/` | Filtered stem points (`canopy_points.shp`), optional per-plot crown boxes before merge, manifests. | +| **Heavy rasters** | `data/external/neon_aop/` | RGB / HSI / CHM tiles from `**neonutilities`** downloads or selective `rsync` from the mirror. | +| **Training tensors** | `data/processed//` or `config["data_dir"]` | HSI crops, `train.csv` / `test.csv`, `crowns.shp`. | + + +**Practical handoff from HiPerGator:** export the VST CSV you trust, copy it to `data/raw/`, then either (a) run `deeptree-download-aop` (below) into `data/external/neon_aop/`, or (b) `rsync` only the DP3 products you need into the same tree. Point `rgb_sensor_pool`, `HSI_sensor_pool`, and `CHM_pool` in `config.yml` at that mirror. You no longer need to regenerate crops for every experiment if you set `use_data_commit` to a frozen directory name or reuse `data_dir` with `replace: false` after the first successful build. + +--- + +## 2. Download AOP tiles (`neonutilities`) + +The Python `**neonutilities`** package exposes `by_tile_aop`, equivalent to the R `neonUtilities::byTileAOP` helper. This repository wraps it for stem coordinates. + +1. Obtain a NEON API token and export it (optional for tiny pulls; recommended otherwise): + ```bash + export NEON_API_TOKEN="your_token" + ``` +2. After you have `canopy_points.shp` (from the filtering stage in `TreeData`), set `data_layout.canopy_points_shp` in `config.yml` **or** pass `--points`. +3. Run: + ```bash + uv run deeptree-download-aop --config config.yml + ``` + Defaults live under `neon_download` in `config.yml` (site, years, DP3 IDs for RGB, hyperspectral, CHM, buffer in meters). + +--- + +## 3. Generate datasets (0 — data generation) + +Pipeline code paths: + +- `src/data.py` — filter VST, CHM checks, megaplot merge hooks, train/test split. +- `src/generate.py` — DeepForest crowns, hyperspectral crops, optional H5→TIF conversion via `src/neon_paths.py`. + +**Local / single job:** instantiate `data.TreeData` with `use_data_commit: null` and your `config.yml`, as in `train.py`. + +**Parallel crowns (SLURM):** each array task runs one plot: + +```bash +uv run python -m src.pipelines.crown_one_plot \ + --canopy-points data/interim/canopy_points.shp \ + --plot OSBS_001 \ + --rgb-glob "data/external/neon_aop/**/DP3.30010.001/**/Camera/**/*.tif" \ + --savedir data/interim/boxes \ + --raw-box-savedir data/interim/raw_boxes +``` + +After all tasks finish, merge: + +```bash +uv run deeptree-merge-crown-boxes \ + --boxes-dir data/interim/boxes \ + --out data/interim/crowns.shp +``` + +Submit `SLURM/crown_plot_array.sh` (tune `#SBATCH` directives, `plots.txt`, and `REPO_ROOT`). + +> **Note:** Passing a Dask `Client` into `points_to_crowns`, `generate_crops`, or `train_test_split` now raises a clear error. Parallelize with SLURM (or your own outer loop), not an in-Python Dask cluster. + +--- + +## 4. Training (1) + +**Experiment identity (Comet + SLURM)** — you no longer pass git branch/sha as required positionals. The trainer auto-detects git (branch, SHA, dirty flag) and uploads a merged `**config.merged.yml`**, optional `**git_diff_uncommitted.patch**`, and a `**src/**` code bundle to Comet when logging is enabled. + +```bash +# Human-readable Comet experiment name (recommended) +export DEEPTREE_EXPERIMENT_NAME=osbs-baseline-epoch70 +uv run python train.py --config config.yml --experiment-name "${DEEPTREE_EXPERIMENT_NAME}" + +# Or rely on auto naming (UTC timestamp + short SHA, or SLURM_JOB_ID on clusters) +uv run python train.py --config config.yml + +# Optional YAML merged last (keep one file per ablation under e.g. experiments/) +uv run python train.py --config config.yml --overrides experiments/my_ablation.yml -n osbs-lr-sweep-001 +``` + +Environment variables (highest priority first for the display name): `**DEEPTREE_EXPERIMENT_NAME**`, `**COMET_EXPERIMENT_NAME**`, then `**--experiment-name**`, then a default from `**SLURM_JOB_ID**` or timestamp. + +`train.py` reads `config.yml` (+ `config.local.yml` if present), logs to Comet when `**use_comet: true**` and `**COMET_API_KEY**` / `**COMET_KEY**` are set, and writes checkpoints under `**checkpoint_dir**`. `raw_vst_csv` defaults to `data/raw/neon_vst_data_2022.csv` but can be overridden in YAML. + +**SLURM (queued GPU training)** — from the repo checkout, set **`EXPERIMENT_NAME`** (forwarded as **`DEEPTREE_EXPERIMENT_NAME`**), optionally **`DEEPTREE_OVERRIDES`** and **`DEEPTREE_CONFIG`**, then: + +```bash +cd /path/to/DeepTreeAttention +EXPERIMENT_NAME=osbs-baseline sbatch SLURM/train_experiment.sh +``` + +**`REPO_ROOT`** defaults to **`SLURM_SUBMIT_DIR`** (your shell’s current directory when you run `sbatch`), so you normally **do not** export it if you `cd` into the project first. Set **`REPO_ROOT=/path/to/DeepTreeAttention`** only when you submit from another directory. + +Edit `#SBATCH` lines in `SLURM/train_experiment.sh` for your partition/account. The job runs from a **shared checkout** so you can **`git pull`** or edit **`experiments/*.yml`** between submissions; each job still logs the **resolved config** and **git SHA** to Comet for apples-to-apples comparison. + +--- + +## 5. Evaluation (2) + +Evaluation is integrated in the Lightning `TreeModel` / `MultiStage` path (validation metrics, crown-level scoring). Point `use_data_commit` at a frozen processed directory to re-score without touching generation. + +--- + +## 6. Inference (3) + +**OSBS RGB tile inference** is configured solely through `inference_osbs` in `config.yml`. + +```bash +uv run python predict.py --config config.yml +# or +uv run deeptree-infer-osbs --config config.yml +``` + +HiPerGator template: `SLURM/osbs_inference.sh`. + +--- + +## 7. Reporting and analysis (4) + +- Comet dashboards (when `comet_ml` is configured). +- Scripts such as `abundance.py`, `create_prediction_shp.py`, and `src/multinomial.py` now use `ThreadPoolExecutor` instead of Dask for light parallelism over shapefiles. + +--- + +## Project map + +```text +├── config.yml # Central configuration (+ neon_download / data_layout) +├── data/ +│ ├── raw/README.md # What belongs in raw inputs + rsync hints +│ ├── external/ # Downloaded / rsync'd NEON tiles (.gitkeep only) +│ └── interim/ # Optional canonical intermediate artifacts +├── experiments/ # Optional YAML fragments for ``--overrides`` (one ablation per file) +├── SLURM/ # Job scripts (``train_experiment.sh``, inference, crown array) +├── src/ +│ ├── data.py # Lightning TreeData + filtering +│ ├── experiment_tracking.py # Git metadata + default experiment names +│ ├── generate.py # Crowns + crops +│ ├── neon_download.py # neonutilities helpers +│ └── pipelines/ # CLIs (inference, download, crown worker, merge) +├── train.py # Full training driver +├── predict.py # OSBS inference entry +└── pyproject.toml # Dependencies + `deeptree-*` console scripts +``` + +--- + +## Open questions / follow-up work + +1. **Megaplot + IFAS branches** — logic is dense; consider isolating into a small submodule with explicit tests. +2. **CHM product ID per NEON revision** — confirm `DP3.30015.001` matches your mirror layout (`CanopyHeightModelGtif`). +3. **Comet as the sole reproducibility anchor** — `use_data_commit` ties runs to Comet artifact IDs; consider replacing with explicit semantic version tags on `data/processed//`. +4. **Dead-tree filtering in `TreeData`** — references `self.predicted_dead` in a logging block; verify that attribute is always defined on your code path before relying on those images in Comet. + +Training uses Lightning 2 `Trainer(accelerator=…, devices=…)` (see `devices` / `accelerator` in `config.yml`; legacy `gpus` is still read as a device count when `devices` is omitted). + +Contributions: branch per feature, add/adjust pytest coverage for anything you touch, keep diffs focused. diff --git a/deeptreeattention.egg-info/SOURCES.txt b/deeptreeattention.egg-info/SOURCES.txt new file mode 100644 index 000000000..47725592b --- /dev/null +++ b/deeptreeattention.egg-info/SOURCES.txt @@ -0,0 +1,56 @@ +LICENSE +README.md +pyproject.toml +setup.py +deeptreeattention.egg-info/PKG-INFO +deeptreeattention.egg-info/SOURCES.txt +deeptreeattention.egg-info/dependency_links.txt +deeptreeattention.egg-info/entry_points.txt +deeptreeattention.egg-info/requires.txt +deeptreeattention.egg-info/top_level.txt +src/CHM.py +src/Hyperspectral.py +src/__init__.py +src/augmentation.py +src/data.py +src/experiment_tracking.py +src/generate.py +src/local_smoke_logger.py +src/main.py +src/megaplot.py +src/metrics.py +src/multinomial.py +src/neon_download.py +src/neon_paths.py +src/patches.py +src/predict.py +src/utils.py +src/visualize.py +src/vst_update.py +src/models/Hang2020.py +src/models/__init__.py +src/models/dead.py +src/models/metadata.py +src/models/multi_stage.py +src/models/year.py +src/pipelines/__init__.py +src/pipelines/crown_one_plot.py +src/pipelines/download_neon_aop.py +src/pipelines/merge_crown_boxes.py +src/pipelines/osbs_inference.py +src/pipelines/update_neon_vst.py +tests/test_CHM.py +tests/test_Hang2020.py +tests/test_augmentation.py +tests/test_data.py +tests/test_dead.py +tests/test_generate.py +tests/test_megaplot.py +tests/test_metadata.py +tests/test_metrics.py +tests/test_multi_stage.py +tests/test_multinomial.py +tests/test_osbs_inference.py +tests/test_patches.py +tests/test_predict.py +tests/test_year.py \ No newline at end of file diff --git a/deeptreeattention.egg-info/dependency_links.txt b/deeptreeattention.egg-info/dependency_links.txt new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/deeptreeattention.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/deeptreeattention.egg-info/entry_points.txt b/deeptreeattention.egg-info/entry_points.txt new file mode 100644 index 000000000..a44902985 --- /dev/null +++ b/deeptreeattention.egg-info/entry_points.txt @@ -0,0 +1,6 @@ +[console_scripts] +deeptree-crown-one-plot = src.pipelines.crown_one_plot:main +deeptree-download-aop = src.pipelines.download_neon_aop:main +deeptree-infer-osbs = src.pipelines.osbs_inference:main +deeptree-merge-crown-boxes = src.pipelines.merge_crown_boxes:main +deeptree-update-vst = src.pipelines.update_neon_vst:main diff --git a/deeptreeattention.egg-info/requires.txt b/deeptreeattention.egg-info/requires.txt new file mode 100644 index 000000000..3049148cc --- /dev/null +++ b/deeptreeattention.egg-info/requires.txt @@ -0,0 +1,25 @@ +comet_ml +python-dotenv +deepforest>=2.0.0 +descartes +geopandas +h5py +matplotlib +neonutilities +numpy +packaging>=26.1 +pandas +pytorch_lightning +PyYAML +rasterio +rasterstats +scikit-image +scikit-learn +Shapely +torch +torchmetrics +torchvision + +[dev] +pytest +ruff diff --git a/deeptreeattention.egg-info/top_level.txt b/deeptreeattention.egg-info/top_level.txt new file mode 100644 index 000000000..85de9cf93 --- /dev/null +++ b/deeptreeattention.egg-info/top_level.txt @@ -0,0 +1 @@ +src diff --git a/docs/figures/unified_hierarchical_cnn_publication.png b/docs/figures/unified_hierarchical_cnn_publication.png new file mode 100644 index 0000000000000000000000000000000000000000..29a5a34e29e2e00323b5197cc692d2df78dc620a GIT binary patch literal 997105 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

`aVTe%p6Z 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%0AtFX z#L1Ol%ft|a@gMu(l8Ox)DbAJop{+{vZEQ<8AAQ>Q`)?i!@UA`9hlTB%H}f0WmzI#o zhra@vz3qql< zdHX4!$Sel*r&VReNnBh)1r$FGObJxrd9rTtbI|d6$_Ty_NGhAZqvdn^2p%Lc*}>?+ zps>v3^V?X|%FH8>D~74XMyvf&_grv+z*#ID5FyS5ZyGW(?jB8iY0m1b{WpTzv|?3> zMS#k+&x^{cw?ZRYCGR6@D3|e+Gm9FnuZ|B_)99XCz0v1@z}^I^?WA#&YvX>-(&CDrV4)HDwE3P{iI73; z%jB?d*$r1(W^`Rw{q@tNgalIAfg0?%GHS5QW6rQI_~W1HcS&^#RT*@E&SLu5SA6r| zuaF2@$y3w<13~0dcpye`yXuIjQb#}h6gjgZKDaqKDrUJgD_=AJF%{+X3$wV>`ROUF zO)loKg4?6yRxqergbr+~$F<+GPTHf+fy4IH)AqtM$NuCF*ZBQdn?D1?p+_RQ>^OR# z`eReJgb9Ppqpq44ZHk4+Zf+?vSukkrqquEbWM^u&!nofLt!J@qY;1T&P#KZ!1ByC? zOb4y-qfdG=|747j)9 zx&bVS_$;dk(Bn4nGiUvo_tn5%UZ0FukG?ZP&wlg|aSUFuTgY3&^=r80w!do>my8^4 z%a(O{{-a8YR~e(peCV>VIC1=0gz#HBK2hqPpNi)BI~p0u1uswDZf=cB{o6?Pvb4O< z;VoEi{fc|Nw;}aoIGSX0Kq$a*d`nah6RxPoX-_IK3K|W&VXk% z*et6k=aDJ0sXo%Kqj=woEqlg0{ z!0kGe#|K7ry1a0!i>#*cmKL-YQx-z(Gl*dik^!fdoZ2Xf0$S-$3f^F$rAOFt=C zJ(YOnD%1hppg#{ILL_MKMv5~6cEnh)P5ovq{$I5AHvCbs3vm#BV-D$8ZztO0TsP;=WlCgu^qlM@TV zQUyDJ;K7-&;Od!o?AK#+<9zlHchxh-A>kO}PFq9QbS(c(kgkjoQ#tqg??I&e8k1eD zm6oG?15>&N&09Y8MG{x%qu+u%%Iyic-M-iX8IlGjE>nfSem1PX6bJfLbU*vghn<|L zX(pj2t1BXlOLA_}E4ps0DlU+0`$t#D-_#{^uS>*WVM3Etf;|e#l*6xKa=Fpf9P6K6 zk}yfOU0WW|a?qwIFpE9@-Ut%>LKE3}WDNFce*HY_^KsLsxyLS<7)Q3;4Puc!IGo-Ee;c9ov-7G? z!+rV&aWZ~;Oz$|`UZ8VZR;8`$rdv|vj5>${e4@OJ9%g61i%MF?LkVw*jSJ1^&iZ3B z?vC8t9K!;W@^{IIrHid}V-i|KEtc$~7A<0b{Zu9B25e51I(U#iEr;N%g_QYW2s@Eu!4!p0ji8O^}Cu-h~9B{*^VP#f7;k*R#sI(Ib4zu(#8@?zm`Z~ z?7Nv)$lH20{kN9g&}Defy7=wUk!vKQ8BcLbk5vfzZoBSIwFhMb3 zY>(i%>f~1JOn!?CuYc8PFL-RHrRD~+IJzx6_6`f*H=C$&s>DDs$VW|!kRd6NH=E

%3hIB|_m3v+k;}7Y;2g+sTE& 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

  • VJ0X1o%0#9`fv&t256i7n+E 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 z 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
    #}?=Ss=~S`xG>UqHRKA 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

    3H8k?MS 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

    XB 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 X_D)CFh>UX*03QmnuVgBvjD!9U 399815.5) & - (float(geo_index.split("_")[0]) < 409113.7) & - (float(geo_index.split("_")[1]) > 3282308) & - (float( geo_index.split("_")[1]) < 3290124)): - osbs_tiles.append(rgb_path) - return osbs_tiles + python predict.py + python predict.py --config /path/to/config.yml +Equivalent module invocation: -def convert(rgb_path, hyperspectral_pool, savedir): - #convert .h5 hyperspec tile if needed - basename = os.path.basename(rgb_path) - geo_index = re.search("(\d+_\d+)_image", basename).group(1) - - h5_list = [x for x in hyperspectral_pool if geo_index in x] - tif_paths = [] - for path in h5_list: - year = path.split("/")[6] - tif_basename = os.path.splitext(os.path.basename(rgb_path))[0] + "_hyperspectral_{}.tif".format(year) - tif_path = "{}/{}".format(savedir, tif_basename) - if not os.path.exists(tif_path): - tif_paths.append(neon_paths.convert_h5(path, rgb_path, savedir, year=year)) - else: - tif_paths.append(tif_path) - - return tif_paths + python -m src.pipelines.osbs_inference --config config.yml +""" -#Params -config = data.read_config("config.yml") -config["preload_images"] = False -comet_logger = CometLogger(project_name="DeepTreeAttention2", workspace=config["comet_workspace"], auto_output_logging="simple") -comet_logger.experiment.add_tag("prediction") +from src.pipelines.osbs_inference import main -comet_logger.experiment.log_parameters(config) - -cpu_client = start(cpus=1, mem_size="10GB") - -dead_model_path = "/orange/idtrees-collab/DeepTreeAttention/Dead/snapshots/c4945ae57f4145948531a0059ebd023c.pl" -config["crop_dir"] = "/blue/ewhite/b.weinstein/DeepTreeAttention/67ec871c49cf472c8e1ae70b185addb1" -savedir = config["crop_dir"] - -species_model_paths = ["/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/71f8ba53af2b46049906554457cd5429.pt", - "/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/ac7b4194811c4bdd9291892bccc4e661.pt", - "/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/b629e5365a104320bcec03843e9dd6fd.pt", - "/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/5ac9afabe3f6402a9c312ba4cee5160a.pt", - "/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/46aff76fe2974b72a5d001c555d7c03a.pt", - "/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/63bdab99d6874f038212ac301439e9cc.pt", - "/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/c871ed25dc1c4a3e97cf3b723cf88bb6.pt", - "/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/6d45510824d6442c987b500a156b77d6.pt", - "/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/83f6ede4f90b44ebac6c1ac271ea0939.pt", - "/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/47ee5858b1104214be178389c13bd025.pt", - "/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/1ccdc11bdb9a4ae897377e3e97ce88b9.pt", - "/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/3c7b7fe01eaa4d1b8a1187b792b8de40.pt", - "/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/3b6d9f2367584b3691de2c2beec47beb.pt", - "/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/509ef67c6050471e83199d2e9f4f3f6a.pt", - "/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/ae7abdd50de04bc9970295920f0b9603.pt", - "/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/d2180f54487b45269c1d86398d7f0fb8.pt", - "/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/6f9730cbe9ba4541816f32f297b536cd.pt", - "/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/71f8ba53af2b46049906554457cd5429.pt", - "/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/6a28224a2dba4e4eb7f528d19444ec4e.pt", - "/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/b9c0111b1dc0420b84e3b6b79da4e166.pt"] - -#generate HSI_tif data if needed. -h5_pool = glob(config["HSI_sensor_pool"], recursive=True) -h5_pool = [x for x in h5_pool if not "neon-aop-products" in x] -hyperspectral_pool = glob(config["HSI_tif_dir"]+"*") - -### Step 1 Find RGB Tiles and convert HSI -tiles = find_rgb_files(site="OSBS", config=config) -#tif_futures = cpu_client.map( - #convert, - #tiles, - #hyperspectral_pool=h5_pool, - #savedir=config["HSI_tif_dir"]) -#wait(tif_futures) - -for x in tiles: - basename = os.path.splitext(os.path.basename(x))[0] - shpname = "/blue/ewhite/b.weinstein/DeepTreeAttention/results/crowns/{}.shp".format(basename) - if not os.path.exists(shpname): - try: - crowns = predict.find_crowns(rgb_path=x, config=config, dead_model_path=dead_model_path) - crowns.to_file(shpname) - except Exception as e: - traceback.print_exc() - print("{} failed to build crowns with {}".format(shpname, e)) - continue - -crown_annotations_paths = [] -crown_annotations_futures = [] -for x in tiles: - basename = os.path.splitext(os.path.basename(x))[0] - shpname = "/blue/ewhite/b.weinstein/DeepTreeAttention/results/crowns/{}.shp".format(basename) - try: - crowns = gpd.read_file(shpname) - except: - continue - if not os.path.exists("/blue/ewhite/b.weinstein/DeepTreeAttention/results/crops/{}.shp".format(basename)): - written_file = predict.generate_prediction_crops(crowns, config, as_numpy=True, client=cpu_client) - crown_annotations_paths.append(written_file) - else: - crown_annotations_path = "/blue/ewhite/b.weinstein/DeepTreeAttention/results/crops/{}.shp".format(basename) - crown_annotations_paths.append(crown_annotations_path) - -#Recursive predict to avoid prediction levels that will be later ignored. -trainer = Trainer(gpus=config["gpus"], logger=False, enable_checkpointing=False) - -## Step 2 - Predict Crowns -for species_model_path in species_model_paths: - print(species_model_path) - # Load species model - #Do not preload weights - config["pretrained_state_dict"] = None - m = multi_stage.MultiStage.load_from_checkpoint(species_model_path, config=config) - prediction_dir = os.path.join("/blue/ewhite/b.weinstein/DeepTreeAttention/results/", - os.path.splitext(os.path.basename(species_model_path))[0]) - try: - os.mkdir(prediction_dir) - except: - pass - for x in crown_annotations_paths: - results_shp = os.path.join(prediction_dir, os.path.basename(x)) - if not os.path.exists(results_shp): - print(x) - try: - predict.predict_tile( - crown_annotations=x, - filter_dead=True, - trainer=trainer, - m=m, - savedir=prediction_dir, - config=config) - except Exception as e: - traceback.print_exc() - continue +if __name__ == "__main__": + main() diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..3d6b790cb --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,64 @@ +[build-system] +requires = ["setuptools>=68", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "deeptreeattention" +version = "0.1.0" +description = "Tree species prediction for National Ecological Observatory Network data." +readme = "README.md" +requires-python = ">=3.10,<3.13" +license = { text = "MIT" } +authors = [{ name = "Ben Weinstein" }] +dependencies = [ + "comet_ml", + "python-dotenv", + "deepforest>=2.0.0", + "descartes", + "geopandas", + "h5py", + "matplotlib", + "neonutilities", + "numpy", + "packaging>=26.1", + "pandas", + "pytorch_lightning", + "PyYAML", + "rasterio", + "rasterstats", + "scikit-image", + "scikit-learn", + "Shapely", + "torch", + "torchmetrics", + "torchvision", +] + +[project.optional-dependencies] +dev = ["pytest", "ruff"] + +[project.scripts] +deeptree-infer-osbs = "src.pipelines.osbs_inference:main" +deeptree-osbs-mortality = "src.pipelines.osbs_mortality:main" +deeptree-download-aop = "src.pipelines.download_neon_aop:main" +deeptree-crown-one-plot = "src.pipelines.crown_one_plot:main" +deeptree-merge-crown-boxes = "src.pipelines.merge_crown_boxes:main" +deeptree-update-vst = "src.pipelines.update_neon_vst:main" + +[tool.setuptools.packages.find] +where = ["."] +include = ["src", "src.*"] + +# PyTorch + CUDA 12.8 — GPU nodes cap at driver 12080 (CUDA 12.8); cu130 fails. +[[tool.uv.index]] +name = "pytorch-cu128" +url = "https://download.pytorch.org/whl/cu128" +explicit = true + +[tool.uv.sources] +torch = [ + { index = "pytorch-cu128", marker = "sys_platform != 'darwin'" }, +] +torchvision = [ + { index = "pytorch-cu128", marker = "sys_platform != 'darwin'" }, +] diff --git a/requirements.txt b/requirements.txt index 599f6a8ab..7c56aef98 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,12 +1,10 @@ comet_ml -dask -dask_jobqueue deepforest descartes -distributed geopandas h5py matplotlib +neonutilities numpy pandas pytest diff --git a/results/.gitkeep b/results/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/sample_multinomial.py b/sample_multinomial.py index 1cd955634..baad8147d 100644 --- a/sample_multinomial.py +++ b/sample_multinomial.py @@ -1,8 +1,9 @@ -from src.multinomial import * -from src import start_cluster +from src.multinomial import wrapper import glob import pandas as pd -client = start_cluster.start(cpus=50, mem_size="10GB") for x in range(100): - wrapper(client=client, iteration=x, experiment_key="06ee8e987b014a4d9b6b824ad6d28d83") + wrapper( + iteration=x, + experiment_key="06ee8e987b014a4d9b6b824ad6d28d83", + ) diff --git a/setup.py b/setup.py index d8971ef95..d80227205 100644 --- a/setup.py +++ b/setup.py @@ -1,11 +1,5 @@ -from setuptools import find_packages, setup +from setuptools import setup -setup( - name='src', - packages=find_packages(), - version='0.1.0', - python_requires='>=3.9' - description='Tree Species Prediction for the National Ecological Observatory Network (NEON)', - author='Ben Weinstein', - license='MIT', -) + +# Compatibility shim for tooling that still invokes setup.py directly. +setup() diff --git a/src/__init__.py b/src/__init__.py index e69de29bb..ee35af758 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -0,0 +1 @@ +"""DeepTreeAttention source package.""" diff --git a/src/data.py b/src/data.py index e51dc01ec..4a7a4af80 100644 --- a/src/data.py +++ b/src/data.py @@ -1,6 +1,5 @@ #Ligthning data module from . import __file__ -from distributed import wait import glob import geopandas as gpd import numpy as np @@ -19,6 +18,14 @@ from torch.utils.data import Dataset import rasterio +def _resolved_split_csv(config, data_dir, key, default_name): + """Resolve ``processed_train_csv`` / ``processed_test_csv`` or default ``train.csv`` / ``test.csv``.""" + rel = config.get(key) + if rel: + return rel if os.path.isabs(rel) else os.path.join(data_dir, rel) + return os.path.join(data_dir, default_name) + + def filter_data(path, config): """Transform raw NEON data into clean shapefile Args: @@ -101,7 +108,7 @@ def filter_data(path, config): shp = shp[~(shp.siteID.isin(["PUUM","ORNL"]))] # There are a couple NEON plots within the OSBS megaplot, make sure they are removed - shp = shp[~shp.plotID.isin(["OSBS_026","OSBS_029","OSBS_039","OSBS_027","OSBS_036"])] + shp = shp[~shp["plotID"].isin(["OSBS_026", "OSBS_029", "OSBS_039", "OSBS_027", "OSBS_036"])] return shp @@ -111,19 +118,19 @@ def sample_plots(shp, min_train_samples=5, min_test_samples=3, iteration = 1): shp: pandas dataframe of filtered tree locations test_fraction: proportion of plots in test datasets min_samples: minimum number of samples per class - iteration: a dummy parameter to make dask submission unique + iteration: reserved for reproducibility hooks (unused) """ #When splitting train/test, only use 1 sample per year for counts. - single_year = shp.groupby("individual").apply(lambda x: x.head(1)) + single_year = shp.groupby("individual", as_index=False).head(1) - plotIDs = list(shp.plotID.unique()) - if len(plotIDs) <=2: - test = shp[shp.plotID == shp.plotID.unique()[0]] - train = shp[shp.plotID == shp.plotID.unique()[1]] + plotIDs = list(shp["plotID"].unique()) + if len(plotIDs) <= 2: + test = shp[shp["plotID"] == shp["plotID"].unique()[0]] + train = shp[shp["plotID"] == shp["plotID"].unique()[1]] return train, test else: - plotIDs = shp[shp.siteID=="OSBS"].plotID.unique() + plotIDs = shp[shp.siteID == "OSBS"]["plotID"].unique() np.random.shuffle(plotIDs) species_to_sample = shp.taxonID.unique() @@ -135,26 +142,36 @@ def sample_plots(shp, min_train_samples=5, min_test_samples=3, iteration = 1): test_plots = [] for plotID in plotIDs: - selected_plot = single_year[single_year.plotID == plotID] + selected_plot = single_year[single_year["plotID"] == plotID] # If any species is missing from min samples, include plot if any([x in species_to_sample for x in selected_plot.taxonID.unique()]): test_plots.append(plotID) - counts = single_year[single_year.plotID.isin(test_plots)].taxonID.value_counts().to_dict() + counts = single_year[single_year["plotID"].isin(test_plots)].taxonID.value_counts().to_dict() species_completed = [key for key, value in counts.items() if value > species_floor[key]] species_to_sample = [x for x in shp.taxonID.unique() if not x in species_completed] #Sample from original multi_year data - test = shp[shp.plotID.isin(test_plots)] - train = shp[~shp.plotID.isin(test.plotID.unique())] + test = shp[shp["plotID"].isin(test_plots)] + train = shp[~shp["plotID"].isin(test["plotID"].unique())] ## Remove fixed boxes from test test = test.loc[~test["box_id"].astype(str).str.contains("fixed").fillna(False)] - testids = test.groupby("individual").apply(lambda x: x.head(1)).groupby("taxonID").filter(lambda x: x.shape[0] >= min_test_samples).individual - test = test[test.individual.isin(testids)] + testids = ( + test.groupby("individual", as_index=False) + .head(1) + .groupby("taxonID") + .filter(lambda x: x.shape[0] >= min_test_samples) + )["individual"] + test = test[test["individual"].isin(testids)] - trainids = train.groupby("individual").apply(lambda x: x.head(1)).groupby("taxonID").filter(lambda x: x.shape[0] >= min_train_samples).individual - train = train[train.individual.isin(trainids)] + trainids = ( + train.groupby("individual", as_index=False) + .head(1) + .groupby("taxonID") + .filter(lambda x: x.shape[0] >= min_train_samples) + )["individual"] + train = train[train["individual"].isin(trainids)] train = train[train.taxonID.isin(test.taxonID)] test = test[test.taxonID.isin(train.taxonID)] @@ -166,10 +183,15 @@ def train_test_split(shp, config, client = None): """Create the train test split Args: shp: a filter pandas dataframe (or geodataframe) - client: optional dask client + client: deprecated, ignored (kept for API compatibility) Returns: None: train.shp and test.shp are written as side effect """ + if client is not None: + raise ValueError( + "Dask client support was removed from train_test_split. " + "Run iterations sequentially or parallelize at the SLURM job level." + ) min_sampled = config["min_train_samples"] + config["min_test_samples"] keep = shp.taxonID.value_counts() > (min_sampled) species_to_keep = keep[keep].index @@ -177,47 +199,21 @@ def train_test_split(shp, config, client = None): print("splitting data into train test. Initial data has {} points from {} species with a min of {} samples".format(shp.shape[0],shp.taxonID.nunique(),min_sampled)) test_species = 0 ties = [] - if client: - futures = [ ] - for x in np.arange(config["iterations"]): - future = client.submit( - sample_plots, - shp=shp, - min_train_samples=config["min_train_samples"], - iteration=x, - min_test_samples=config["min_test_samples"], - ) - futures.append(future) - - wait(futures) - for x in futures: - train, test = x.result() - if test.taxonID.nunique() > test_species: - print("Selected test has {} points and {} species".format(test.shape[0], test.taxonID.nunique())) - saved_train = train - saved_test = test - test_species = test.taxonID.nunique() - ties = [] - ties.append([train, test]) - elif test.taxonID.nunique() == test_species: - ties.append([train, test]) - else: - for x in np.arange(config["iterations"]): - train, test = sample_plots( - shp=shp, - min_train_samples=config["min_train_samples"], - min_test_samples=config["min_test_samples"], - ) - if test.taxonID.nunique() > test_species: - print("Selected test has {} points and {} species".format(test.shape[0], test.taxonID.nunique())) - saved_train = train - saved_test = test - test_species = test.taxonID.nunique() - #reset ties - ties = [] - ties.append([train, test]) - elif test.taxonID.nunique() == test_species: - ties.append([train, test]) + for x in np.arange(config["iterations"]): + train, test = sample_plots( + shp=shp, + min_train_samples=config["min_train_samples"], + min_test_samples=config["min_test_samples"], + ) + if test.taxonID.nunique() > test_species: + print("Selected test has {} points and {} species".format(test.shape[0], test.taxonID.nunique())) + saved_train = train + saved_test = test + test_species = test.taxonID.nunique() + ties = [] + ties.append([train, test]) + elif test.taxonID.nunique() == test_species: + ties.append([train, test]) # The size of the datasets if len(ties) > 1: @@ -255,6 +251,10 @@ def __init__(self, df=None, csv_file=None, config=None, train=True): self.image_paths = self.annotations.groupby("individual").apply(lambda x: x.set_index('tile_year').image_path.to_dict()) if train: self.labels = self.annotations.set_index("individual").label.to_dict() + if "site" in self.annotations.columns: + self.sites = self.annotations.drop_duplicates(subset=["individual"]).set_index("individual")["site"].to_dict() + else: + self.sites = None # Create augmentor self.transformer = augmentation.train_augmentation(image_size=self.image_size) @@ -262,7 +262,16 @@ def __init__(self, df=None, csv_file=None, config=None, train=True): # Pin data to memory if desired if self.config["preload_images"]: - for individual in self.individuals: + n_ind = len(self.individuals) + n_years = len(self.years) + if n_ind > 200: + print( + "[TreeDataset train={}] Preloading {} individuals × {} years from {} …".format( + self.train, n_ind, n_years, self.config["crop_dir"] + ), + flush=True, + ) + for i, individual in enumerate(self.individuals): images = [] ind_annotations = self.image_paths[individual] for year in self.years: @@ -276,6 +285,10 @@ def __init__(self, df=None, csv_file=None, config=None, train=True): image = self.transformer(image) images.append(image) self.image_dict[individual] = images + if n_ind > 200 and (i + 1) % max(1, n_ind // 10) == 0: + print(" … preloaded {}/{} individuals".format(i + 1, n_ind), flush=True) + if n_ind > 200: + print("[TreeDataset train={}] Preload finished ({} individuals).".format(self.train, n_ind), flush=True) def __len__(self): # 0th based index @@ -300,6 +313,9 @@ def __getitem__(self, index): image = self.transformer(image) images.append(image) inputs["HSI"] = images + if self.sites is not None: + site = self.sites.get(individual, 0) + inputs["site"] = torch.tensor(site, dtype=torch.long) if self.train: label = self.labels[individual] @@ -420,17 +436,30 @@ def __init__(self, csv_file, config, HSI=True, metadata=False, client = None, da else: self.crowns = gpd.read_file("{}/crowns.shp".format(self.data_dir)) + crowns_gdf = self.crowns + if "plotID" not in crowns_gdf.columns: + plot_cols = [c for c in crowns_gdf.columns if str(c).lower() == "plotid"] + if plot_cols: + crowns_gdf = crowns_gdf.rename(columns={plot_cols[0]: "plotID"}) + annotations = generate.generate_crops( - self.crowns, + crowns_gdf, savedir=self.config["crop_dir"], sensor_glob=self.config["HSI_sensor_pool"], - convert_h5=self.config["convert_h5"], + convert_h5=self.config["convert_h5"], rgb_glob=self.config["rgb_sensor_pool"], HSI_tif_dir=self.config["HSI_tif_dir"], client=self.client, - replace=self.config["replace"] + replace=self.config["replace"], ) - + + if "plotID" not in annotations.columns: + pts = self.canopy_points + plot_col = next((c for c in pts.columns if str(c).lower() == "plotid"), None) + if plot_col is not None: + plot_map = pts.drop_duplicates(subset=["individual"]).set_index("individual")[plot_col] + annotations["plotID"] = annotations["individual"].map(plot_map) + annotations.to_csv("{}/annotations.csv".format(self.data_dir)) if self.comet_logger: @@ -501,9 +530,22 @@ def __init__(self, csv_file, config, HSI=True, metadata=False, client = None, da ) else: - print("Loading previous run") - self.train = pd.read_csv("{}/train.csv".format(self.data_dir)) - self.test = pd.read_csv("{}/test.csv".format(self.data_dir)) + print("Loading previous run") + train_path = _resolved_split_csv( + self.config, self.data_dir, "processed_train_csv", "train.csv" + ) + test_path = _resolved_split_csv( + self.config, self.data_dir, "processed_test_csv", "test.csv" + ) + for path, label in ((train_path, "train"), (test_path, "test")): + if not os.path.isfile(path): + raise FileNotFoundError( + "Missing {} split CSV at {}. Add train.csv/test.csv under the commit " + "folder, or set processed_train_csv / processed_test_csv in config.yml " + "(paths relative to that folder unless absolute).".format(label, path) + ) + self.train = pd.read_csv(train_path) + self.test = pd.read_csv(test_path) try: self.train["individual"] = self.train["individualID"] diff --git a/src/experiment_tracking.py b/src/experiment_tracking.py new file mode 100644 index 000000000..495ca6f94 --- /dev/null +++ b/src/experiment_tracking.py @@ -0,0 +1,83 @@ +"""Git + Comet helpers for reproducible experiment tracking (no manual branch/sha CLI).""" + +from __future__ import annotations + +import os +import subprocess +from datetime import datetime, timezone +from typing import Any + + +def _run_git(repo_root: str, *args: str) -> str | None: + try: + out = subprocess.check_output( + ["git", *args], + cwd=repo_root, + stderr=subprocess.DEVNULL, + text=True, + ) + return out.strip() or None + except (subprocess.CalledProcessError, FileNotFoundError, OSError): + return None + + +def git_metadata(repo_root: str | None = None) -> dict[str, Any]: + """Return branch, SHAs, dirty flag, and optional short diff (for Comet / SLURM logs).""" + root = repo_root or os.getcwd() + sha = _run_git(root, "rev-parse", "HEAD") + short = _run_git(root, "rev-parse", "--short", "HEAD") + branch = _run_git(root, "rev-parse", "--abbrev-ref", "HEAD") + dirty = False + diff_head = None + if sha: + try: + subprocess.check_call( + ["git", "diff", "--quiet"], + cwd=root, + stderr=subprocess.DEVNULL, + ) + except subprocess.CalledProcessError: + dirty = True + try: + diff_head = subprocess.check_output( + ["git", "diff", "HEAD"], + cwd=root, + stderr=subprocess.DEVNULL, + text=True, + ) + if len(diff_head) > 400_000: + diff_head = diff_head[:400_000] + "\n\n[truncated]\n" + except (subprocess.CalledProcessError, OSError): + diff_head = None + return { + "git_branch": branch or "unknown", + "git_sha": sha or "unknown", + "git_short_sha": short or "unknown", + "git_dirty": dirty, + "git_diff_head": diff_head, + } + + +def default_experiment_name(meta: dict[str, Any]) -> str: + """Human-readable default when user does not pass --experiment-name.""" + slurm = os.environ.get("SLURM_JOB_ID") + if slurm: + job = os.environ.get("SLURM_JOB_NAME", "job") + return f"{job}-{slurm}" + stamp = datetime.now(tz=timezone.utc).strftime("%Y%m%d-%H%M%S") + short = meta.get("git_short_sha") or "unknown" + return f"{short}-{stamp}" + + +def comet_display_name( + explicit: str | None, + meta: dict[str, Any], +) -> str: + """Resolve Comet experiment display name (``name=`` on CometLogger).""" + for key in ("DEEPTREE_EXPERIMENT_NAME", "COMET_EXPERIMENT_NAME"): + v = os.environ.get(key) + if v: + return v + if explicit: + return explicit + return default_experiment_name(meta) diff --git a/src/generate.py b/src/generate.py index 00d120c7a..6774d24cd 100644 --- a/src/generate.py +++ b/src/generate.py @@ -8,12 +8,23 @@ import pandas as pd from src.neon_paths import find_sensor_path, lookup_and_convert, bounds_to_geoindex from src import patches -from distributed import wait from deepforest import main import traceback import warnings warnings.filterwarnings('ignore') + +def _default_deepforest_model(): + """DeepForest 1.x used ``use_release``; 2.x prefers ``load_model`` from Hugging Face.""" + model = main.deepforest() + if hasattr(model, "load_model"): + model.load_model(model_name="weecology/deepforest-tree") + elif hasattr(model, "use_release"): + model.use_release(check_release=False) + else: + raise AttributeError("deepforest model has neither load_model nor use_release") + return model + def predict_trees(deepforest_model, rgb_path, bounds, expand=40): """Predict an rgb path at specific utm bounds Args: @@ -39,7 +50,7 @@ def predict_trees(deepforest_model, rgb_path, bounds, expand=40): #roll to channels last img = np.rollaxis(img, 0,3) - boxes = deepforest_model.predict_image(image = img, return_plot=False) + boxes = deepforest_model.predict_image(image=img) if boxes is None: return boxes @@ -115,8 +126,12 @@ def process_plot(plot_data, rgb_pool, deepforest_model=None): missing_ids = plot_data[~plot_data.individual.isin(merged_boxes.individual)] if not missing_ids.empty: - created_boxes= create_boxes(missing_ids) - merged_boxes = merged_boxes.append(created_boxes) + created_boxes = create_boxes(missing_ids) + merged_boxes = gpd.GeoDataFrame( + pd.concat([merged_boxes, created_boxes], ignore_index=True), + geometry="geometry", + crs=merged_boxes.crs, + ) #If there are multiple boxes per point, take the center box grouped = merged_boxes.groupby("individual") @@ -153,12 +168,10 @@ def process_plot(plot_data, rgb_pool, deepforest_model=None): return merged_boxes, boxes def run(plot, df, savedir, raw_box_savedir, rgb_pool=None, saved_model=None, deepforest_model=None): - """wrapper function for dask, see main.py""" + """Process one plot (used by sequential pipeline and optional SLURM array workers).""" if deepforest_model is None: - from deepforest import main - deepforest_model = main.deepforest() - deepforest_model.use_release(check_release=False) + deepforest_model = _default_deepforest_model() #Filter data and process plot_data = df[df.plotID == plot] @@ -186,53 +199,43 @@ def points_to_crowns( savedir, raw_box_savedir, client=None): - """Prepare NEON field data int + """Prepare NEON field data into crown boxes (sequential; use SLURM array for parallelism). Args: field_data: shp file with location and class of each field collected point rgb_dir: glob to search RGB images savedir: direcory to save predicted bounding boxes raw_box_savedir: directory save all bounding boxes in the image - client: dask client object to use + client: deprecated, ignored (kept for API compatibility) Returns: None: .shp bounding boxes are written to savedir """ + if client is not None: + raise ValueError( + "Dask client support was removed. Run sequentially or use SLURM array jobs " + "(see SLURM/crown_plot_array.sh and src.pipelines.crown_one_plot)." + ) df = gpd.read_file(field_data) plot_names = df.plotID.unique() rgb_pool = glob.glob(rgb_dir, recursive=True) - results = [] - if client: - futures = [] - for plot in plot_names: - future = client.submit( - run, + results = [] + deepforest_model = _default_deepforest_model() + for plot in plot_names: + try: + result = run( plot=plot, df=df, - rgb_pool=rgb_pool, savedir=savedir, - raw_box_savedir=raw_box_savedir + raw_box_savedir=raw_box_savedir, + rgb_pool=rgb_pool, + deepforest_model=deepforest_model, ) - futures.append(future) - - wait(futures) - - for x in futures: - try: - result = x.result() - results.append(result) - except Exception as e: - print(e) - continue - else: - #IMPORTS at runtime due to dask pickling - deepforest_model = main.deepforest() - deepforest_model.use_release(check_release=False) - for plot in plot_names: - try: - result = run(plot=plot, df=df, savedir=savedir, raw_box_savedir=raw_box_savedir, rgb_pool=rgb_pool, deepforest_model=deepforest_model) - results.append(result) - except Exception as e: - print("{} failed with {}".format(plot, e)) + results.append(result) + except Exception as e: + print("{} failed with {}".format(plot, e)) + results = [r for r in results if r is not None] + if not results: + raise ValueError("No plots produced crown predictions; check RGB paths and field data.") results = pd.concat(results) #In case any contrib data has the same CHM and height and sitting in the same deepforest box.Should be rare. @@ -280,13 +283,18 @@ def generate_crops(gdf, sensor_glob, savedir, rgb_glob, client=None, convert_h5= shapefile: a .shp with geometry objects and an taxonID column savedir: path to save image crops img_pool: glob to search remote sensing files. This can be either RGB of .tif hyperspectral data, as long as it can be read by rasterio - client: optional dask client + client: deprecated, ignored (kept for API compatibility; parallelize with SLURM if needed) convert_h5: If HSI data is passed, make sure .tif conversion is complete rgb_glob: glob to search images to match when converting h5s -> tif. HSI_tif_dir: if converting H5 -> tif, where to save .tif files. Only needed if convert_h5 is True Returns: annotations: pandas dataframe of filenames and individual IDs to link with data """ + if client is not None: + raise ValueError( + "Dask client support was removed from generate_crops. " + "Run sequentially or shard work across SLURM tasks." + ) print("There are {} rows in gdf".format(gdf.shape)) gdf = gdf.reset_index(drop=True) @@ -319,56 +327,60 @@ def generate_crops(gdf, sensor_glob, savedir, rgb_glob, client=None, convert_h5= tile_to_path[geo_index] = img_path - filenames = [] - geo_indexes = [] + filenames = [] indexes = [] - if client: - futures = [] - for index, row in gdf.iterrows(): - try: - img_path = tile_to_path[row["geo_index"]] - except: - continue - - for x in img_path: - future = client.submit(write_crop, row=row,img_path=x, savedir=savedir, replace=replace, as_numpy=as_numpy) - futures.append(future) - geo_indexes.append(index) - - wait(futures) - for index, x in enumerate(futures): - try: - filename = x.result() - indexes.append(geo_indexes[index]) - filenames.append(filename) - except: - print("Future failed with {}".format(traceback.print_exc())) - else: - #If no client is passed, loop through each tile and open then once in memory - for geo_index in gdf.geo_index.unique(): - img_path = tile_to_path[geo_index] - - #For each year - for x in img_path: - rasterio_src = rasterio.open(x) - tile_annotations = gdf[gdf.geo_index == geo_index] - - #Write available crops - for index, row in tile_annotations.iterrows(): - try: - filename = write_crop(row=row, savedir=savedir, img_path=x, replace=replace, rasterio_src=rasterio_src, as_numpy=as_numpy) - indexes.append(index) - filenames.append(filename) - except Exception as e: - print("index {} failed with {}".format(index,e)) - continue + for geo_index in gdf.geo_index.unique(): + img_path = tile_to_path[geo_index] + + for x in img_path: + rasterio_src = rasterio.open(x) + tile_annotations = gdf[gdf.geo_index == geo_index] + + for index, row in tile_annotations.iterrows(): + try: + filename = write_crop( + row=row, + savedir=savedir, + img_path=x, + replace=replace, + rasterio_src=rasterio_src, + as_numpy=as_numpy, + ) + indexes.append(index) + filenames.append(filename) + except Exception as e: + print("index {} failed with {}".format(index, e)) + continue annotations = gdf.loc[indexes] print("shape of annotations is {}".format(annotations.shape)) annotations["image_path"] = filenames annotations["tile_year"] = annotations.image_path.apply(lambda x: os.path.splitext(os.path.basename(x))[0].split("_")[-1] ) - annotations = annotations.loc[:,annotations.columns.isin(["individual","geo_index","tile_year","CHM_height","plotID","height","geometry","taxonID","RGB_tile","filename","siteID","image_path","score","box_id"])] + annotations = annotations.loc[ + :, + annotations.columns.isin( + [ + "individual", + "geo_index", + "tile_year", + "CHM_height", + "plotID", + "height", + "geometry", + "taxonID", + "RGB_tile", + "filename", + "siteID", + "image_path", + "score", + "box_id", + ] + ), + ] + if "plotID" not in annotations.columns and "plotID" in gdf.columns: + plot_map = gdf.drop_duplicates(subset=["individual"]).set_index("individual")["plotID"] + annotations["plotID"] = annotations["individual"].map(plot_map) return annotations \ No newline at end of file diff --git a/src/local_smoke_logger.py b/src/local_smoke_logger.py new file mode 100644 index 000000000..e52742c65 --- /dev/null +++ b/src/local_smoke_logger.py @@ -0,0 +1,62 @@ +"""Lightning logger stub for local / CI runs without Comet.""" + +from __future__ import annotations + +from lightning_fabric.utilities import rank_zero_only +from pytorch_lightning.loggers import Logger + + +class _SmokeExperiment: + id = "smoke" + + def get_key(self) -> str: + return "smoke" + + def log_parameter(self, *args, **kwargs): + pass + + def add_tag(self, *args, **kwargs): + pass + + def log_parameters(self, *args, **kwargs): + pass + + def log_table(self, *args, **kwargs): + pass + + def log_metrics(self, *args, **kwargs): + pass + + def log_metric(self, *args, **kwargs): + pass + + def log_confusion_matrix(self, *args, **kwargs): + pass + + +class LocalSmokeLogger(Logger): + """Minimal logger so ``train.py`` can call ``.experiment.*`` without Comet.""" + + def __init__(self) -> None: + super().__init__() + self._experiment = _SmokeExperiment() + + @property + def experiment(self) -> _SmokeExperiment: + return self._experiment + + @property + def name(self) -> str: + return "local_smoke" + + @property + def version(self) -> str: + return "0" + + @rank_zero_only + def log_hyperparams(self, params): + pass + + @rank_zero_only + def log_metrics(self, metrics, step): + pass diff --git a/src/main.py b/src/main.py index e00782ec5..fba9d3b10 100644 --- a/src/main.py +++ b/src/main.py @@ -50,9 +50,14 @@ def __init__(self, model, classes, label_dict, loss_weight=None, config=None, *a self.model = model #Metrics - micro_recall = torchmetrics.Accuracy(average="micro") - macro_recall = torchmetrics.Accuracy(average="macro", num_classes=classes) - top_k_recall = torchmetrics.Accuracy(average="micro",top_k=self.config["top_k"]) + micro_recall = torchmetrics.Accuracy(task="multiclass", num_classes=classes, average="micro") + macro_recall = torchmetrics.Accuracy(task="multiclass", num_classes=classes, average="macro") + top_k_recall = torchmetrics.Accuracy( + task="multiclass", + num_classes=classes, + average="micro", + top_k=self.config["top_k"], + ) self.metrics = torchmetrics.MetricCollection( {"Micro Accuracy":micro_recall, @@ -61,12 +66,12 @@ def __init__(self, model, classes, label_dict, loss_weight=None, config=None, *a }) self.save_hyperparameters(ignore=["loss_weight"]) - - #Weighted loss - if torch.cuda.is_available(): - self.loss_weight = torch.tensor(loss_weight, device="cuda", dtype=torch.float) + + if loss_weight is None: + lw = torch.ones(classes, dtype=torch.float32) else: - self.loss_weight = torch.ones((classes)) + lw = torch.tensor(loss_weight, dtype=torch.float32) + self.register_buffer("loss_weight", lw, persistent=False) def training_step(self, batch, batch_idx): """Train on a loaded dataset @@ -75,7 +80,7 @@ def training_step(self, batch, batch_idx): individual, inputs, y = batch images = inputs["HSI"] y_hat = self.model.forward(images) - loss = F.cross_entropy(y_hat, y, weight=self.loss_weight) + loss = F.cross_entropy(y_hat, y, weight=self.loss_weight) return loss @@ -86,11 +91,10 @@ def validation_step(self, batch, batch_idx): individual, inputs, y = batch images = inputs["HSI"] y_hat = self.model.forward(images) - loss = F.cross_entropy(y_hat, y, weight=self.loss_weight) - - # Log loss and metrics - self.log("val_loss", loss, on_epoch=True) + loss = F.cross_entropy(y_hat, y, weight=self.loss_weight) + self.log("val_loss", loss, on_step=False, on_epoch=True, prog_bar=True) + return loss def on_validation_epoch_end(self): @@ -99,29 +103,36 @@ def on_validation_epoch_end(self): final_micro = torchmetrics.functional.accuracy( preds=torch.tensor(results.pred_label_top1.values), target=torch.tensor(results.label.values), - average="micro") - + task="multiclass", + num_classes=self.classes, + average="micro", + ) + final_macro = torchmetrics.functional.accuracy( preds=torch.tensor(results.pred_label_top1.values), target=torch.tensor(results.label.values), + task="multiclass", + num_classes=self.classes, average="macro", - num_classes=self.classes) + ) - self.log("Epoch Micro Accuracy", final_micro) - self.log("Epoch Macro Accuracy", final_macro) + self.log("Epoch Micro Accuracy", final_micro, on_step=False, on_epoch=True) + self.log("Epoch Macro Accuracy", final_macro, on_step=False, on_epoch=True) # Log results by species taxon_accuracy = torchmetrics.functional.accuracy( preds=torch.tensor(results.pred_label_top1.values), - target=torch.tensor(results.label.values), - average="none", - num_classes=self.classes + target=torch.tensor(results.label.values), + task="multiclass", + num_classes=self.classes, + average="none", ) taxon_precision = torchmetrics.functional.precision( preds=torch.tensor(results.pred_label_top1.values), target=torch.tensor(results.label.values), + task="multiclass", + num_classes=self.classes, average="none", - num_classes=self.classes ) species_table = pd.DataFrame( {"taxonID":self.label_to_index.keys(), @@ -130,23 +141,27 @@ def on_validation_epoch_end(self): }) for key, value in species_table.set_index("taxonID").accuracy.to_dict().items(): - self.log("Epoch_{}_accuracy".format(key), value) - + self.log("Epoch_{}_accuracy".format(key), value, on_step=False, on_epoch=True) + def configure_optimizers(self): optimizer = optim.Adam(self.model.parameters(), lr=self.config["lr"]) - - scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, - mode='min', - factor=0.75, - patience=8, - verbose=True, - threshold=0.0001, - threshold_mode='rel', - cooldown=0, - min_lr=0.0000001, - eps=1e-08) - - return {'optimizer':optimizer, 'lr_scheduler': scheduler,"monitor":'val_loss'} + + scheduler = optim.lr_scheduler.ReduceLROnPlateau( + optimizer, + mode="min", + factor=0.75, + patience=8, + threshold=0.0001, + threshold_mode="rel", + cooldown=0, + min_lr=0.0000001, + eps=1e-08, + ) + + return { + "optimizer": optimizer, + "lr_scheduler": {"scheduler": scheduler, "monitor": "val_loss"}, + } def predict(self,inputs): @@ -288,15 +303,17 @@ def evaluate_crowns(self, data_loader, crowns, points=None, experiment=None): # Log results by species taxon_accuracy = torchmetrics.functional.accuracy( preds=torch.tensor(results.pred_label_top1.values), - target=torch.tensor(results.label.values), - average="none", - num_classes=self.classes + target=torch.tensor(results.label.values), + task="multiclass", + num_classes=self.classes, + average="none", ) taxon_precision = torchmetrics.functional.precision( preds=torch.tensor(results.pred_label_top1.values), target=torch.tensor(results.label.values), + task="multiclass", + num_classes=self.classes, average="none", - num_classes=self.classes ) species_table = pd.DataFrame( {"taxonID":self.label_to_index.keys(), @@ -315,13 +332,18 @@ def evaluate_crowns(self, data_loader, crowns, points=None, experiment=None): site_micro = torchmetrics.functional.accuracy( preds=torch.tensor(group.pred_label_top1.values), target=torch.tensor(group.label.values), - average="micro") - + task="multiclass", + num_classes=self.classes, + average="micro", + ) + site_macro = torchmetrics.functional.accuracy( preds=torch.tensor(group.pred_label_top1.values), target=torch.tensor(group.label.values), + task="multiclass", + num_classes=self.classes, average="macro", - num_classes=self.classes) + ) experiment.log_metric("{}_macro".format(name), site_macro) experiment.log_metric("{}_micro".format(name), site_micro) diff --git a/src/megaplot.py b/src/megaplot.py index b6e9d161d..c6df79913 100644 --- a/src/megaplot.py +++ b/src/megaplot.py @@ -44,8 +44,9 @@ def format(site, gdf, config): else: gdf = buffer_plots(gdf) - #Make sure any points sitting on the line are assigned only to one grid. Rare edge case - gdf = gdf.groupby("individual").apply(lambda x: x.head(1)).reset_index(drop=True) + # Make sure any points sitting on the line are assigned only to one grid. Rare edge case + # (groupby-apply-reset_index drops the grouping column; use drop_duplicates instead.) + gdf = gdf.drop_duplicates(subset=["individual"], keep="first") if "height" in gdf.columns: #Height filter diff --git a/src/models/__init__.py b/src/models/__init__.py index e69de29bb..3cef317aa 100644 --- a/src/models/__init__.py +++ b/src/models/__init__.py @@ -0,0 +1 @@ +"""Model modules for DeepTreeAttention.""" diff --git a/src/models/dead.py b/src/models/dead.py index c17658656..4b47293ec 100644 --- a/src/models/dead.py +++ b/src/models/dead.py @@ -31,15 +31,23 @@ def __init__(self, config): super().__init__() # Model - self.model = models.resnet50(pretrained=True) + from torchvision.models import ResNet50_Weights + + self.model = models.resnet50(weights=ResNet50_Weights.IMAGENET1K_V1) num_ftrs = self.model.fc.in_features self.model.fc = torch.nn.Linear(num_ftrs, 2) - # Metrics - self.accuracy = torchmetrics.Accuracy(average='none', num_classes=2) - self.total_accuracy = torchmetrics.Accuracy() - self.precision_metric = torchmetrics.Precision() - self.metrics = torchmetrics.MetricCollection({"Class Accuracy":self.accuracy, "Accuracy":self.total_accuracy, "Precision":self.precision_metric}) + # Metrics (torchmetrics >= 0.11 requires ``task``) + self.accuracy = torchmetrics.Accuracy(task="multiclass", num_classes=2, average="none") + self.total_accuracy = torchmetrics.Accuracy(task="multiclass", num_classes=2) + self.precision_metric = torchmetrics.Precision(task="multiclass", num_classes=2) + self.metrics = torchmetrics.MetricCollection( + { + "Class Accuracy": self.accuracy, + "Accuracy": self.total_accuracy, + "Precision": self.precision_metric, + } + ) # Data self.config = config @@ -48,12 +56,12 @@ def __init__(self, config): val_dir = os.path.join(self.ROOT,config["dead"]["test_dir"]) self.train_ds = ImageFolder(root=train_dir, transform=get_transform(augment=True)) self.val_ds = ImageFolder(root=val_dir, transform=get_transform(augment=False)) - - def forward(self, x): - output = self.model(x) - output = F.sigmoid(output) - return output + def on_validation_epoch_start(self): + self.metrics.reset() + + def forward(self, x): + return self.model(x) def train_dataloader(self): train_loader = torch.utils.data.DataLoader( @@ -89,7 +97,7 @@ def training_step(self, batch, batch_idx): x,y = batch outputs = self.forward(x) loss = F.cross_entropy(outputs,y) - self.log("train_loss",loss) + self.log("train_loss", loss, on_step=True, on_epoch=True, prog_bar=True) return loss @@ -103,36 +111,32 @@ def validation_step(self, batch, batch_idx): x,y = batch outputs = self(x) loss = F.cross_entropy(outputs,y) - self.log("val_loss",loss) + self.log("val_loss", loss, on_step=False, on_epoch=True, prog_bar=True) metric_dict = self.metrics(outputs, y) - self.log("Alive Accuracy",metric_dict["Class Accuracy"][0]) - self.log("Dead Accuracy",metric_dict["Class Accuracy"][1]) + self.log("Alive Accuracy", metric_dict["Class Accuracy"][0], on_step=False, on_epoch=True) + self.log("Dead Accuracy", metric_dict["Class Accuracy"][1], on_step=False, on_epoch=True) #self.log_dict(metric_dict) return loss - def validation_epoch_end(self, outputs): - val_metrics = self.metrics.compute() - self.log("Alive Accuracy",val_metrics["Class Accuracy"][0]) - self.log("Dead Accuracy",val_metrics["Class Accuracy"][1]) - self.log("Accuracy",val_metrics["Accuracy"]) - self.log("Accuracy",val_metrics["Precision"]) - def configure_optimizers(self): optimizer = torch.optim.Adam(self.parameters(), lr=self.config["dead"]["lr"]) - scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, - mode='min', - factor=0.5, - patience=10, - verbose=True, - threshold=0.0001, - threshold_mode='rel', - cooldown=0, - min_lr=0, - eps=1e-08) + scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau( + optimizer, + mode="min", + factor=0.5, + patience=10, + threshold=0.0001, + threshold_mode="rel", + cooldown=0, + min_lr=0, + eps=1e-08, + ) - #Monitor rate is val data is used - return {'optimizer':optimizer, 'lr_scheduler': scheduler,"monitor":'val_loss'} + return { + "optimizer": optimizer, + "lr_scheduler": {"scheduler": scheduler, "monitor": "val_loss"}, + } def dataset_confusion(self, loader): """Create a confusion matrix from a data loader""" @@ -174,8 +178,10 @@ def __getitem__(self, index): box = RGB_src.read(window=rasterio.windows.from_bounds(left-1, bottom-1, right+1, top+1, transform=RGB_src.transform)) # Channels last - box = np.rollaxis(box,0,3) - + box = np.rollaxis(box, 0, 3) + if box.ndim != 3 or box.shape[0] < 1 or box.shape[1] < 1: + box = np.zeros((10, 10, 3), dtype=np.float32) + # Preprocess image = self.transform(box) diff --git a/src/models/metadata.py b/src/models/metadata.py index 65ac5024c..20649f868 100644 --- a/src/models/metadata.py +++ b/src/models/metadata.py @@ -73,14 +73,13 @@ def validation_step(self, batch, batch_idx): y_hat = self.model.forward(images, metadata) loss = F.cross_entropy(y_hat, y) - # Log loss and metrics - self.log("val_loss", loss, on_epoch=True) - + self.log("val_loss", loss, on_step=False, on_epoch=True, prog_bar=True) + if not self.training: - y_hat = F.softmax(y_hat, dim = 1) - - output = self.metrics(y_hat, y) - self.log_dict(output) + y_hat = F.softmax(y_hat, dim=1) + + output = self.metrics(y_hat, y) + self.log_dict(output, on_step=False, on_epoch=True) return loss diff --git a/src/models/multi_stage.py b/src/models/multi_stage.py index a8b2bc3e4..7a10db8e4 100644 --- a/src/models/multi_stage.py +++ b/src/models/multi_stage.py @@ -1,485 +1,553 @@ -#Multiple stage model -from functools import reduce -from src.models.year import learned_ensemble -from src.data import TreeDataset -from src import utils - -from pytorch_lightning import LightningModule -import pandas as pd -import math +# Unified single-model hierarchical classifier. import numpy as np -from torch.nn import Module -from torch.nn import functional as F +import pandas as pd +from pytorch_lightning import LightningModule +import torch from torch import nn +from torch.nn import functional as F import torchmetrics -import torch -class base_model(Module): - def __init__(self, years, classes, config): +from src.data import TreeDataset + + +CONIFER_TAXA = {"PICL", "PIEL", "PITA"} + + +class SharedHSIEncoder(nn.Module): + """Lightweight shared encoder used for all years.""" + + def __init__(self, bands: int, embed_dim: int): + super().__init__() + self.conv1 = nn.Sequential( + nn.Conv2d(bands, 32, kernel_size=3, padding=1), + nn.BatchNorm2d(32), + nn.ReLU(inplace=True), + ) + self.conv2 = nn.Sequential( + nn.Conv2d(32, 64, kernel_size=3, padding=1), + nn.BatchNorm2d(64), + nn.ReLU(inplace=True), + nn.MaxPool2d(2), + ) + self.conv3 = nn.Sequential( + nn.Conv2d(64, 128, kernel_size=3, padding=1), + nn.BatchNorm2d(128), + nn.ReLU(inplace=True), + nn.MaxPool2d(2), + ) + self.proj = nn.Linear(128, embed_dim) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + x = self.conv1(x) + x = self.conv2(x) + x = self.conv3(x) + x = x.mean(dim=(2, 3)) + return self.proj(x) + + +class UnifiedHierarchicalHead(nn.Module): + """Single model with year-aware aggregation + metadata fusion + multi-head outputs.""" + + def __init__( + self, + bands: int, + n_years: int, + n_sites: int, + n_species: int, + level_dims: list[int], + embed_dim: int = 128, + site_embed_dim: int = 16, + fusion_hidden_dim: int = 256, + ): super().__init__() - #Load from state dict of previous run - self.model = learned_ensemble(classes=classes, years=years, config=config) - - micro_recall = torchmetrics.Accuracy(average="micro") - macro_recall = torchmetrics.Accuracy(average="macro", num_classes=classes) - self.metrics = torchmetrics.MetricCollection( - {"Micro Accuracy":micro_recall, - "Macro Accuracy":macro_recall, - }) - - def forward(self,x): - score = self.model(x) - - return score - + self.n_years = max(1, n_years) + self.unknown_site_index = n_sites + self.encoder = SharedHSIEncoder(bands=bands, embed_dim=embed_dim) + self.year_embedding = nn.Embedding(self.n_years, embed_dim) + self.time_attention = nn.Linear(embed_dim, 1) + self.site_embedding = nn.Embedding(n_sites + 1, site_embed_dim) + self.fusion = nn.Sequential( + nn.Linear(embed_dim + site_embed_dim, fusion_hidden_dim), + nn.ReLU(inplace=True), + nn.Dropout(p=0.2), + ) + + self.species_head = nn.Linear(fusion_hidden_dim, n_species) + self.level_heads = nn.ModuleList( + [nn.Linear(fusion_hidden_dim, d) if d > 0 else nn.Identity() for d in level_dims] + ) + self.level_dims = level_dims + + def forward(self, images: list[torch.Tensor], site_idx: torch.Tensor | None = None) -> dict[str, torch.Tensor]: + year_feats = [] + masks = [] + for year_idx, x in enumerate(images): + feat = self.encoder(x) + year_tensor = torch.full( + (feat.shape[0],), + min(year_idx, self.n_years - 1), + device=feat.device, + dtype=torch.long, + ) + feat = feat + self.year_embedding(year_tensor) + mask = (x.abs().sum(dim=(1, 2, 3)) > 0).float() + year_feats.append(feat) + masks.append(mask) + + feat_stack = torch.stack(year_feats, dim=1) + mask_stack = torch.stack(masks, dim=1) + attn_logits = self.time_attention(feat_stack).squeeze(-1) + attn_logits = attn_logits.masked_fill(mask_stack <= 0, -1e9) + attn = torch.softmax(attn_logits, dim=1) * mask_stack + attn = attn / attn.sum(dim=1, keepdim=True).clamp_min(1e-6) + pooled = (attn.unsqueeze(-1) * feat_stack).sum(dim=1) + + if site_idx is None: + site_idx = torch.full( + (pooled.shape[0],), + self.unknown_site_index, + device=pooled.device, + dtype=torch.long, + ) + else: + site_idx = site_idx.to(pooled.device).long().clamp(0, self.unknown_site_index) + site_feat = self.site_embedding(site_idx) + + fused = self.fusion(torch.cat([pooled, site_feat], dim=1)) + outputs = {"species": self.species_head(fused)} + for level_idx, head in enumerate(self.level_heads): + key = f"level_{level_idx}" + if self.level_dims[level_idx] <= 0: + outputs[key] = torch.empty((fused.shape[0], 0), device=fused.device) + else: + outputs[key] = head(fused) + return outputs + + class MultiStage(LightningModule): - def __init__(self, train_df, test_df, crowns, config, train_mode=True): + """ + Unified hierarchical model in one checkpoint. + Keeps the old MultiStage API used by training/inference code paths. + """ + + def __init__( + self, + train_df=None, + test_df=None, + crowns=None, + config=None, + train_mode=True, + years=None, + classes=None, + species_label_dict=None, + level_label_dicts=None, + n_sites=0, + ): super().__init__() - # Generate each model - self.years = train_df.tile_year.unique() - self.config = config - self.models = nn.ModuleList() - self.species_label_dict = train_df[["taxonID","label"]].drop_duplicates().set_index("taxonID").to_dict()["label"] - self.index_to_label = {v:k for k,v in self.species_label_dict.items()} + self.config = config or {} self.crowns = crowns - self.level_label_dicts = [] - self.label_to_taxonIDs = [] - self.train_df = train_df - self.test_df = test_df - - #hotfix for old naming schema - try: - self.test_df["individual"] = self.test_df["individualID"] + self.train_df = train_df.copy() if train_df is not None else pd.DataFrame() + self.test_df = test_df.copy() if test_df is not None else pd.DataFrame() + + if not self.train_df.empty and "individual" not in self.train_df.columns and "individualID" in self.train_df.columns: self.train_df["individual"] = self.train_df["individualID"] - except: - pass - - if train_mode: - self.train_datasets, self.test_datasets = self.create_datasets() - self.levels = len(self.train_datasets) - - self.classes = len(self.train_df.label.unique()) - for index, ds in enumerate([self.level_0_train, self.level_1_train, self.level_2_train, self.level_3_train, self.level_4_train]): - labels = ds.label - classes = self.num_classes[index] - base = base_model(classes=classes, years=len(self.years), config=self.config) - self.models.append(base) - loss_weight = [] - for x in range(classes): - try: - w = 1/np.sum(labels==x) - except: - w = 1 - loss_weight.append(w) - - loss_weight = np.array(loss_weight/np.max(loss_weight)) - loss_weight[loss_weight < self.config["min_loss_weight"]] = self.config["min_loss_weight"] - loss_weight = torch.tensor(loss_weight, dtype=torch.float) - pname = 'loss_weight_{}'.format(index) - self.register_buffer(pname, loss_weight) - self.save_hyperparameters() - - def create_datasets(self): - #Create levels for each year - ## Level 0 - train_datasets = [] - test_datasets = [] - self.num_classes = [] - self.level_id = [] - self.level_label_dicts.append({"PIPA2":0,"OTHER":1}) - self.label_to_taxonIDs.append({v: k for k, v in self.level_label_dicts[0].items()}) - + if not self.test_df.empty and "individual" not in self.test_df.columns and "individualID" in self.test_df.columns: + self.test_df["individual"] = self.test_df["individualID"] + + if not self.train_df.empty: + self.years = sorted(self.train_df.tile_year.unique()) + self.classes = int(self.train_df.label.nunique()) + self.species_label_dict = ( + self.train_df[["taxonID", "label"]].drop_duplicates().set_index("taxonID")["label"].to_dict() + ) + self.level_label_dicts = self._build_level_maps() + if "site" in self.train_df.columns: + n_sites = int(self.train_df["site"].max()) + 1 + else: + self.years = years or [] + self.classes = int(classes or 0) + self.species_label_dict = species_label_dict or {} + self.level_label_dicts = level_label_dicts or [{"PIPA2": 0, "OTHER": 1}, {"CONIFER": 0, "BROADLEAF": 1}, {}, {}, {}] + self.index_to_label = {v: k for k, v in self.species_label_dict.items()} + self.label_to_taxonIDs = [{v: k for k, v in d.items()} for d in self.level_label_dicts] + level_dims = [len(x) for x in self.level_label_dicts] + + self.model = UnifiedHierarchicalHead( + bands=int(self.config["bands"]), + n_years=max(1, len(self.years)), + n_sites=n_sites, + n_species=self.classes, + level_dims=level_dims, + embed_dim=int(self.config.get("hier_embed_dim", 128)), + site_embed_dim=int(self.config.get("hier_site_embed_dim", 16)), + fusion_hidden_dim=int(self.config.get("hier_fusion_dim", 256)), + ) + + self._val_epoch_outputs = [] + self.train_dataset = None + self.test_dataset = None + self._make_training_views() + + if not self.train_df.empty: + self.train_dataset = TreeDataset(df=self.train_df, config=self.config, train=True) + self.test_dataset = TreeDataset(df=self.test_df, config=self.config, train=True) + counts = self.train_df["label"].value_counts().sort_index() + counts = counts.reindex(range(self.classes), fill_value=1).astype(float) + inv = 1.0 / counts.to_numpy() + inv = inv / np.max(inv) + min_w = float(self.config.get("min_loss_weight", 0.05)) + inv = np.clip(inv, min_w, None) + prior = counts.to_numpy() / counts.to_numpy().sum() + else: + inv = np.ones(max(1, self.classes), dtype=float) + prior = np.ones(max(1, self.classes), dtype=float) / max(1, self.classes) + self.register_buffer("species_loss_weight", torch.tensor(inv, dtype=torch.float32)) + self.register_buffer("species_log_prior", torch.tensor(np.log(prior + 1e-12), dtype=torch.float32)) + + micro = torchmetrics.Accuracy(task="multiclass", num_classes=self.classes, average="micro") + macro = torchmetrics.Accuracy(task="multiclass", num_classes=self.classes, average="macro") + self.metrics = torchmetrics.MetricCollection({"Micro Accuracy": micro, "Macro Accuracy": macro}) + self.save_hyperparameters(ignore=["train_df", "test_df", "crowns"]) + + def _build_level_maps(self) -> list[dict[str, int]]: + taxa = sorted(self.species_label_dict.keys()) + level0 = {"PIPA2": 0, "OTHER": 1} + level1 = {"CONIFER": 0, "BROADLEAF": 1} + + broadleaf = [t for t in taxa if t not in CONIFER_TAXA and t != "PIPA2" and not t.startswith("QU")] + level2 = {t: i for i, t in enumerate(broadleaf)} + level2["OAK"] = len(level2) + + conifer = [t for t in taxa if t in CONIFER_TAXA] + level3 = {t: i for i, t in enumerate(conifer)} + + oak = [t for t in taxa if t.startswith("QU")] + level4 = {t: i for i, t in enumerate(oak)} + return [level0, level1, level2, level3, level4] + + def _make_training_views(self): + if self.train_df.empty or self.test_df.empty: + self.level_0_train = pd.DataFrame() + self.level_1_train = pd.DataFrame() + self.level_2_train = pd.DataFrame() + self.level_3_train = pd.DataFrame() + self.level_4_train = pd.DataFrame() + self.level_0_test = pd.DataFrame() + self.level_1_test = pd.DataFrame() + self.level_2_test = pd.DataFrame() + self.level_3_test = pd.DataFrame() + self.level_4_test = pd.DataFrame() + return + self.level_0_train = self.train_df.copy() - PIPA2 = self.level_0_train[self.level_0_train.taxonID=="PIPA2"] - nonPIPA2 = self.level_0_train[~(self.level_0_train.taxonID=="PIPA2")] - nonPIPA2ids = nonPIPA2.groupby("individual").apply(lambda x: x.head(1)).groupby("taxonID").apply(lambda x: x.head(self.config["other_sampling_ceiling"])).individual - nonPIPA2 = nonPIPA2[nonPIPA2.individual.isin(nonPIPA2ids)] - self.level_0_train = pd.concat([PIPA2, nonPIPA2]) - self.level_0_train.loc[~(self.level_0_train.taxonID == "PIPA2"),"taxonID"] = "OTHER" - - self.level_0_train["label"] = [self.level_label_dicts[0][x] for x in self.level_0_train.taxonID] - self.level_0_train_ds = TreeDataset(df=self.level_0_train, config=self.config) - train_datasets.append(self.level_0_train_ds) - self.num_classes.append(len(self.level_0_train.taxonID.unique())) - + self.level_0_train["taxonID"] = self.level_0_train["taxonID"].where( + self.level_0_train["taxonID"] == "PIPA2", "OTHER" + ) self.level_0_test = self.test_df.copy() - self.level_0_test.loc[~(self.level_0_test.taxonID == "PIPA2"),"taxonID"] = "OTHER" - self.level_0_test["label"]= [self.level_label_dicts[0][x] for x in self.level_0_test.taxonID] - self.level_0_test_ds = TreeDataset(df=self.level_0_test, config=self.config) - test_datasets.append(self.level_0_test_ds) - self.level_id.append(0) - - ## Level 1 - self.level_label_dicts.append({"CONIFER":0,"BROADLEAF":1}) - self.label_to_taxonIDs.append({v: k for k, v in self.level_label_dicts[1].items()}) + self.level_0_test["taxonID"] = self.level_0_test["taxonID"].where( + self.level_0_test["taxonID"] == "PIPA2", "OTHER" + ) + self.level_1_train = self.train_df.copy() - self.level_1_train = self.level_1_train[~(self.level_1_train.taxonID=="PIPA2")] - self.level_1_train.loc[~self.level_1_train.taxonID.isin(["PICL","PIEL","PITA"]),"taxonID"] = "BROADLEAF" - self.level_1_train.loc[self.level_1_train.taxonID.isin(["PICL","PIEL","PITA"]),"taxonID"] = "CONIFER" - - #subsample broadleaf, labels have not been converted, relate to original taxonID - conifer_ids = self.level_1_train[self.level_1_train.taxonID=="CONIFER"].individual - broadleaf_ids = self.level_1_train[self.level_1_train.taxonID=="BROADLEAF"].groupby("label").apply( - lambda x: x.sample(frac=1).groupby( - "individual").apply(lambda x: x.head(1)).head( - math.ceil(len(conifer_ids)/11) - )).individual - ids_to_keep = np.concatenate([broadleaf_ids, conifer_ids]) - self.level_1_train = self.level_1_train[self.level_1_train.individual.isin(ids_to_keep)].reset_index(drop=True) - self.level_1_train["label"] = [self.level_label_dicts[1][x] for x in self.level_1_train.taxonID] - self.level_1_train_ds = TreeDataset(df=self.level_1_train, config=self.config) - train_datasets.append(self.level_1_train_ds) - self.num_classes.append(len(self.level_1_train.taxonID.unique())) - + self.level_1_train["taxonID"] = np.where( + self.level_1_train["taxonID"].isin(CONIFER_TAXA), "CONIFER", "BROADLEAF" + ) self.level_1_test = self.test_df.copy() - self.level_1_test = self.level_1_test[~(self.level_1_test.taxonID=="PIPA2")].reset_index(drop=True) - self.level_1_test.loc[~self.level_1_test.taxonID.isin(["PICL","PIEL","PITA"]),"taxonID"] = "BROADLEAF" - self.level_1_test.loc[self.level_1_test.taxonID.isin(["PICL","PIEL","PITA"]),"taxonID"] = "CONIFER" - self.level_1_test["label"] = [self.level_label_dicts[1][x] for x in self.level_1_test.taxonID] - self.level_1_test_ds = TreeDataset(df=self.level_1_test, config=self.config) - test_datasets.append(self.level_1_test_ds) - self.level_id.append(1) - - ## Level 2 - broadleaf = [x for x in list(self.species_label_dict.keys()) if (not x in ["PICL","PIEL","PITA","PIPA2"]) & (not "QU" in x)] - broadleaf = {v:k for k, v in enumerate(broadleaf)} - broadleaf["OAK"] = len(broadleaf) - self.level_label_dicts.append(broadleaf) - self.label_to_taxonIDs.append({v: k for k, v in broadleaf.items()}) + self.level_1_test["taxonID"] = np.where( + self.level_1_test["taxonID"].isin(CONIFER_TAXA), "CONIFER", "BROADLEAF" + ) + self.level_2_train = self.train_df.copy() - self.level_2_train = self.level_2_train[~self.level_2_train.taxonID.isin(["PICL","PIEL","PITA","PIPA2"])].reset_index(drop=True) - self.level_2_train.loc[self.level_2_train.taxonID.str.contains("QU"),"taxonID"] = "OAK" - - non_oakid = self.level_2_train[~(self.level_2_train.taxonID=="OAK")].individual - oak_ids = self.level_2_train[self.level_2_train.taxonID=="OAK"].groupby("label").apply(lambda x: x.sample(frac=1).head( - int(len(non_oakid)/5)) - ).individual - ids_to_keep = np.concatenate([oak_ids, non_oakid]) - self.level_2_train = self.level_2_train[self.level_2_train.individual.isin(ids_to_keep)].reset_index(drop=True) - self.level_2_train["label"] = [self.level_label_dicts[2][x] for x in self.level_2_train.taxonID] - self.level_2_train_ds = TreeDataset(df=self.level_2_train, config=self.config) - train_datasets.append(self.level_2_train_ds) - self.num_classes.append(len(self.level_2_train.taxonID.unique())) - + self.level_2_train = self.level_2_train[ + ~self.level_2_train["taxonID"].isin(CONIFER_TAXA.union({"PIPA2"})) + ].copy() + self.level_2_train.loc[self.level_2_train["taxonID"].str.startswith("QU"), "taxonID"] = "OAK" self.level_2_test = self.test_df.copy() - self.level_2_test = self.level_2_test[~self.level_2_test.taxonID.isin(["PICL","PIEL","PITA","PIPA2"])].reset_index(drop=True) - self.level_2_test.loc[self.level_2_test.taxonID.str.contains("QU"),"taxonID"] = "OAK" - self.level_2_test["label"] = [self.level_label_dicts[2][x] for x in self.level_2_test.taxonID] - self.level_2_test_ds = TreeDataset(df=self.level_2_test, config=self.config) - test_datasets.append(self.level_2_test_ds) - self.level_id.append(2) - - ## Level 3 - evergreen = [x for x in list(self.species_label_dict.keys()) if x in ["PICL","PIEL","PITA"]] - evergreen = {v:k for k, v in enumerate(evergreen)} - self.level_label_dicts.append(evergreen) - self.label_to_taxonIDs.append({v: k for k, v in self.level_label_dicts[3].items()}) - - self.level_3_train = self.train_df.copy() - self.level_3_train = self.level_3_train[self.level_3_train.taxonID.isin(["PICL","PIEL","PITA"])].reset_index(drop=True) - self.level_3_train = self.level_3_train.groupby("taxonID").apply(lambda x: x.head(self.config["evergreen_ceiling"])).reset_index(drop=True) - self.level_3_train["label"] = [self.level_label_dicts[3][x] for x in self.level_3_train.taxonID] - self.level_3_train_ds = TreeDataset(df=self.level_3_train, config=self.config) - train_datasets.append(self.level_3_train_ds) - self.num_classes.append(len(self.level_3_train.taxonID.unique())) - - self.level_3_test = self.test_df.copy() - self.level_3_test = self.level_3_test[self.level_3_test.taxonID.isin(["PICL","PIEL","PITA"])].reset_index(drop=True) - self.level_3_test["label"] = [self.level_label_dicts[3][x] for x in self.level_3_test.taxonID] - self.level_3_test_ds = TreeDataset(df=self.level_3_test, config=self.config) - test_datasets.append(self.level_3_test_ds) - self.level_id.append(3) - - ## Level 4 - oak = [x for x in list(self.species_label_dict.keys()) if "QU" in x] - self.level_label_dicts.append({v:k for k, v in enumerate(oak)}) - self.label_to_taxonIDs.append({v: k for k, v in self.level_label_dicts[4].items()}) - - #Balance the train in OAKs - self.level_4_train = self.train_df.copy() - self.level_4_train = self.level_4_train[self.level_4_train.taxonID.str.contains("QU")].reset_index(drop=True) - self.level_4_train["label"] = [self.level_label_dicts[4][x] for x in self.level_4_train.taxonID] - ids_to_keep = self.level_4_train.groupby("taxonID").apply( - lambda x: x.sample(frac=1).groupby("individual").apply( - lambda x: x.head(1)).head( - self.config["oaks_sampling_ceiling"])).individual - self.level_4_train = self.level_4_train[self.level_4_train.individual.isin(ids_to_keep)].reset_index(drop=True) - - self.level_4_train_ds = TreeDataset(df=self.level_4_train, config=self.config) - train_datasets.append(self.level_4_train_ds) - self.num_classes.append(len(self.level_4_train.taxonID.unique())) - - self.level_4_test = self.test_df.copy() - self.level_4_test = self.level_4_test[self.level_4_test.taxonID.str.contains("QU")].reset_index(drop=True) - self.level_4_test["label"] = [self.level_label_dicts[4][x] for x in self.level_4_test.taxonID] - self.level_4_test_ds = TreeDataset(df=self.level_4_test, config=self.config) - test_datasets.append(self.level_4_test_ds) - self.level_id.append(4) - - return train_datasets, test_datasets - + self.level_2_test = self.level_2_test[ + ~self.level_2_test["taxonID"].isin(CONIFER_TAXA.union({"PIPA2"})) + ].copy() + self.level_2_test.loc[self.level_2_test["taxonID"].str.startswith("QU"), "taxonID"] = "OAK" + + self.level_3_train = self.train_df[self.train_df["taxonID"].isin(CONIFER_TAXA)].copy() + self.level_3_test = self.test_df[self.test_df["taxonID"].isin(CONIFER_TAXA)].copy() + self.level_4_train = self.train_df[self.train_df["taxonID"].str.startswith("QU")].copy() + self.level_4_test = self.test_df[self.test_df["taxonID"].str.startswith("QU")].copy() + + def _loader_kwargs(self): + workers = int(self.config.get("workers") or 0) + kw = {"num_workers": workers} + if workers > 0: + kw["persistent_workers"] = True + return kw + def train_dataloader(self): - data_loaders = [] - for ds in self.train_datasets: - data_loader = torch.utils.data.DataLoader( - ds, - batch_size=self.config["batch_size"], - shuffle=True, - num_workers=self.config["workers"], - ) - data_loaders.append(data_loader) - - return data_loaders + return torch.utils.data.DataLoader( + self.train_dataset, + batch_size=self.config["batch_size"], + shuffle=True, + **self._loader_kwargs(), + ) def val_dataloader(self): - ## Validation loaders are a list https://github.com/PyTorchLightning/pytorch-lightning/issues/10809 - data_loaders = [] - for ds in self.test_datasets: - data_loader = torch.utils.data.DataLoader( - ds, - batch_size=self.config["batch_size"], - shuffle=False, - num_workers=self.config["workers"], - ) - data_loaders.append(data_loader) - - return data_loaders - + return torch.utils.data.DataLoader( + self.test_dataset, + batch_size=self.config["batch_size"], + shuffle=False, + **self._loader_kwargs(), + ) + def predict_dataloader(self, ds): - data_loader = torch.utils.data.DataLoader( + return torch.utils.data.DataLoader( ds, batch_size=self.config["predict_batch_size"], shuffle=False, - num_workers=self.config["workers"] + **self._loader_kwargs(), + ) + + def _hierarchy_targets(self, labels: torch.Tensor) -> dict[str, torch.Tensor]: + taxa = [self.index_to_label[int(x)] for x in labels.detach().cpu().tolist()] + device = labels.device + out = {} + + level0 = [self.level_label_dicts[0]["PIPA2"] if t == "PIPA2" else self.level_label_dicts[0]["OTHER"] for t in taxa] + out["level_0"] = torch.tensor(level0, dtype=torch.long, device=device) + + level1 = [self.level_label_dicts[1]["CONIFER"] if t in CONIFER_TAXA else self.level_label_dicts[1]["BROADLEAF"] for t in taxa] + out["level_1"] = torch.tensor(level1, dtype=torch.long, device=device) + + level2 = [] + for t in taxa: + if t in CONIFER_TAXA or t == "PIPA2": + level2.append(-100) + elif t.startswith("QU"): + level2.append(self.level_label_dicts[2]["OAK"]) + else: + level2.append(self.level_label_dicts[2].get(t, -100)) + out["level_2"] = torch.tensor(level2, dtype=torch.long, device=device) + + level3 = [self.level_label_dicts[3].get(t, -100) for t in taxa] + out["level_3"] = torch.tensor(level3, dtype=torch.long, device=device) + + level4 = [self.level_label_dicts[4].get(t, -100) for t in taxa] + out["level_4"] = torch.tensor(level4, dtype=torch.long, device=device) + return out + + def _species_loss(self, logits: torch.Tensor, labels: torch.Tensor) -> torch.Tensor: + tau = float(self.config.get("logit_adjustment_tau", 1.0)) + adjusted = logits + (tau * self.species_log_prior).to(logits.device) + return F.cross_entropy(adjusted, labels, weight=self.species_loss_weight.to(logits.device)) + + def _aux_losses(self, outputs: dict[str, torch.Tensor], labels: torch.Tensor) -> torch.Tensor: + targets = self._hierarchy_targets(labels) + total = torch.zeros((), device=labels.device) + for idx in range(5): + key = f"level_{idx}" + logits = outputs[key] + if logits.numel() == 0: + continue + target = targets[key] + if not torch.any(target != -100): + continue + loss = F.cross_entropy(logits, target, ignore_index=-100) + weight = float(self.config.get(f"hier_level_{idx}_weight", 1.0)) + total = total + weight * loss + return total + + def training_step(self, batch, batch_idx): + _, inputs, labels = batch + outputs = self.model(inputs["HSI"], inputs.get("site")) + species_loss = self._species_loss(outputs["species"], labels) + aux_loss = self._aux_losses(outputs, labels) + alpha = float(self.config.get("hier_aux_weight", 0.3)) + loss = species_loss + alpha * aux_loss + self.log("train_species_loss", species_loss, on_step=False, on_epoch=True) + self.log("train_aux_loss", aux_loss, on_step=False, on_epoch=True) + self.log("train_loss", loss, on_step=False, on_epoch=True) + return loss + + def validation_step(self, batch, batch_idx): + _, inputs, labels = batch + outputs = self.model(inputs["HSI"], inputs.get("site")) + species_loss = self._species_loss(outputs["species"], labels) + aux_loss = self._aux_losses(outputs, labels) + alpha = float(self.config.get("hier_aux_weight", 0.3)) + loss = species_loss + alpha * aux_loss + self.log("val_loss", loss, on_step=False, on_epoch=True, prog_bar=True) + + probs = F.softmax(outputs["species"], dim=1) + metrics = self.metrics(probs, labels) + self.log_dict(metrics, on_step=False, on_epoch=True) + self._val_epoch_outputs.append({"probs": probs.detach().cpu(), "labels": labels.detach().cpu()}) + return loss + + def on_validation_epoch_start(self): + self._val_epoch_outputs = [] + + def on_validation_epoch_end(self): + if not self._val_epoch_outputs: + return + probs = torch.cat([x["probs"] for x in self._val_epoch_outputs], dim=0) + labels = torch.cat([x["labels"] for x in self._val_epoch_outputs], dim=0) + preds = torch.argmax(probs, dim=1) + + epoch_micro = torchmetrics.functional.accuracy( + preds=preds, target=labels, task="multiclass", num_classes=self.classes, average="micro" ) + epoch_macro = torchmetrics.functional.accuracy( + preds=preds, target=labels, task="multiclass", num_classes=self.classes, average="macro" + ) + self.log("Epoch Micro Accuracy", epoch_micro, on_step=False, on_epoch=True) + self.log("Epoch Macro Accuracy", epoch_macro, on_step=False, on_epoch=True) + self._val_epoch_outputs = [] - return data_loader - def configure_optimizers(self): - """Create a optimizer for each level""" - optimizers = [] - for x, ds in enumerate(self.train_datasets): - optimizer = torch.optim.Adam(self.models[x].parameters(), lr=self.config["lr_{}".format(x)]) - scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, - mode='min', - factor=0.75, - patience=8, - verbose=True, - threshold=0.0001, - threshold_mode='rel', - cooldown=0, - eps=1e-08) - - optimizers.append({'optimizer':optimizer, 'lr_scheduler': {"scheduler":scheduler, "monitor":'val_loss/dataloader_idx_{}'.format(x)}}) - - return optimizers - - def training_step(self, batch, batch_idx, optimizer_idx): - """Calculate train_df loss - """ - #get loss weight - loss_weights = self.__getattr__('loss_weight_'+str(optimizer_idx)) - individual, inputs, y = batch[optimizer_idx] - images = inputs["HSI"] - y_hat = self.models[optimizer_idx].forward(images) - loss = F.cross_entropy(y_hat, y, weight=loss_weights) - self.log("train_loss_{}".format(optimizer_idx),loss, on_epoch=True, on_step=False) - - return loss - - def validation_step(self, batch, batch_idx, dataloader_idx): - """Calculate val loss - """ - loss_weight = self.__getattr__('loss_weight_'+str(dataloader_idx)) - individual, inputs, y = batch - images = inputs["HSI"] - y_hat = self.models[dataloader_idx].forward(images) - loss = F.cross_entropy(y_hat, y, weight=loss_weight) - - self.log("val_loss",loss) - metric_dict = self.models[dataloader_idx].metrics(y_hat, y) - self.log_dict(metric_dict, on_epoch=True, on_step=False) - y_hat = F.softmax(y_hat, dim=1) - - return {"individual":individual, "yhat":y_hat, "label":y} - + optimizer = torch.optim.Adam(self.parameters(), lr=self.config.get("lr", 1e-4)) + scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau( + optimizer, + mode="min", + factor=0.75, + patience=8, + threshold=0.0001, + threshold_mode="rel", + cooldown=0, + eps=1e-08, + ) + return {"optimizer": optimizer, "lr_scheduler": {"scheduler": scheduler, "monitor": "val_loss"}} + def predict_step(self, batch, batch_idx): - """Calculate predictions - """ individual, inputs = batch - images = inputs["HSI"] - - y_hats = [] - for model in self.models: - y_hat = model.forward(images) - y_hat = F.softmax(y_hat, dim=1) - y_hats.append(y_hat) - - return individual, y_hats - - def on_predict_epoch_end(self, outputs): - outputs = self.all_gather(outputs) - - def validation_epoch_end(self, validation_step_outputs): - for level, results in enumerate(validation_step_outputs): - yhat = torch.cat([x["yhat"] for x in results]).cpu().numpy() - labels = torch.cat([x["label"] for x in results]).cpu().numpy() - yhat = np.argmax(yhat, 1) - epoch_micro = torchmetrics.functional.accuracy( - preds=torch.tensor(labels), - target=torch.tensor(yhat), - average="micro") - - epoch_macro = torchmetrics.functional.accuracy( - preds=torch.tensor(labels), - target=torch.tensor(yhat), - average="macro", - num_classes=len(self.species_label_dict) - ) - - self.log("Epoch Micro Accuracy level {}".format(level), epoch_micro) - self.log("Epoch Macro Accuracy level {}".format(level), epoch_macro) - - # Log results by species - taxon_accuracy = torchmetrics.functional.accuracy( - preds=torch.tensor(yhat), - target=torch.tensor(labels), - average="none", - num_classes=len(self.level_label_dicts[level]) - ) - taxon_precision = torchmetrics.functional.precision( - preds=torch.tensor(yhat), - target=torch.tensor(labels), - average="none", - num_classes=len(self.level_label_dicts[level]) - ) - species_table = pd.DataFrame( - {"taxonID":self.level_label_dicts[level].keys(), - "accuracy":taxon_accuracy, - "precision":taxon_precision - }) - - for key, value in species_table.set_index("taxonID").accuracy.to_dict().items(): - self.log("Epoch_{}_accuracy".format(key), value) - - for key, value in species_table.set_index("taxonID").precision.to_dict().items(): - self.log("Epoch_{}_precision".format(key), value) - + outputs = self.model(inputs["HSI"], inputs.get("site")) + return { + "individual": np.asarray(individual), + "species_probs": F.softmax(outputs["species"], dim=1).detach().cpu().numpy(), + "level_0_probs": F.softmax(outputs["level_0"], dim=1).detach().cpu().numpy(), + "level_1_probs": F.softmax(outputs["level_1"], dim=1).detach().cpu().numpy(), + "level_2_probs": F.softmax(outputs["level_2"], dim=1).detach().cpu().numpy() if outputs["level_2"].numel() else None, + "level_3_probs": F.softmax(outputs["level_3"], dim=1).detach().cpu().numpy() if outputs["level_3"].numel() else None, + "level_4_probs": F.softmax(outputs["level_4"], dim=1).detach().cpu().numpy() if outputs["level_4"].numel() else None, + } + + @classmethod + def load_from_checkpoint(cls, checkpoint_path, **kwargs): + kwargs.setdefault("weights_only", False) + return super(MultiStage, cls).load_from_checkpoint(checkpoint_path, **kwargs) + def gather_predictions(self, predict_df): - """Post-process the predict method to create metrics""" + """Aggregate predict outputs and expose level columns for compatibility.""" individuals = [] - yhats = [] - levels = [] - + species_probs = [] + level_probs = {f"level_{i}": [] for i in range(5)} for output in predict_df: - for index, level_results in enumerate(output[1]): - batch_individuals = np.stack(output[0]) - for individual, yhat in zip(batch_individuals, level_results): - individuals.append(individual) - yhats.append(yhat) - levels.append(index) - - temporal_average = pd.DataFrame({"individual":individuals,"level":levels,"yhat":yhats}) - - #Argmax and score for each level - predicted_label = temporal_average.groupby(["individual","level"]).yhat.apply( - lambda x: np.argmax(np.vstack(x))).reset_index().pivot( - index=["individual"],columns="level",values="yhat").reset_index() - predicted_label.columns = ["individual","pred_label_top1_level_0","pred_label_top1_level_1", - "pred_label_top1_level_2","pred_label_top1_level_3","pred_label_top1_level_4"] - - predicted_score = temporal_average.groupby(["individual","level"]).yhat.apply( - lambda x: np.vstack(x).max()).reset_index().pivot( - index=["individual"],columns="level",values="yhat").reset_index() - predicted_score.columns = ["individual","top1_score_level_0","top1_score_level_1", - "top1_score_level_2","top1_score_level_3","top1_score_level_4"] - results = pd.merge(predicted_label,predicted_score) - - #Label taxa - for level, label_dict in enumerate(self.label_to_taxonIDs): - results["pred_taxa_top1_level_{}".format(level)] = results["pred_label_top1_level_{}".format(level)].apply(lambda x: label_dict[x]) - - return results - - def ensemble(self, results): - """Given a multi-level model, create a final output prediction and score""" - ensemble_taxonID = [] - ensemble_label = [] - ensemble_score = [] - - for index,row in results.iterrows(): - if row["pred_taxa_top1_level_0"] == "PIPA2": - ensemble_taxonID.append("PIPA2") - ensemble_label.append(self.species_label_dict["PIPA2"]) - ensemble_score.append(row["top1_score_level_0"]) + individuals.extend(list(output["individual"])) + species_probs.append(output["species_probs"]) + for i in range(5): + p = output[f"level_{i}_probs"] + if p is not None: + level_probs[f"level_{i}"].append(p) + + species_probs = np.vstack(species_probs) + results = pd.DataFrame( + { + "individual": np.asarray(individuals), + "pred_label_top1": np.argmax(species_probs, axis=1), + "top1_score": np.max(species_probs, axis=1), + } + ) + results["pred_taxa_top1"] = results["pred_label_top1"].map(self.index_to_label) + + for i in range(5): + key = f"level_{i}" + if level_probs[key]: + probs = np.vstack(level_probs[key]) + results[f"pred_label_top1_level_{i}"] = np.argmax(probs, axis=1) + results[f"top1_score_level_{i}"] = np.max(probs, axis=1) + inv = self.label_to_taxonIDs[i] + results[f"pred_taxa_top1_level_{i}"] = results[f"pred_label_top1_level_{i}"].map(inv) else: - if row["pred_taxa_top1_level_1"] == "BROADLEAF": - if row["pred_taxa_top1_level_2"] == "OAK": - ensemble_taxonID.append(row["pred_taxa_top1_level_4"]) - ensemble_label.append(self.species_label_dict[row["pred_taxa_top1_level_4"]]) - ensemble_score.append(row["top1_score_level_4"]) - else: - ensemble_taxonID.append(row["pred_taxa_top1_level_2"]) - ensemble_label.append(self.species_label_dict[row["pred_taxa_top1_level_2"]]) - ensemble_score.append(row["top1_score_level_2"]) - else: - ensemble_taxonID.append(row["pred_taxa_top1_level_3"]) - ensemble_label.append(self.species_label_dict[row["pred_taxa_top1_level_3"]]) - ensemble_score.append(row["top1_score_level_3"]) - - results["ensembleTaxonID"] = ensemble_taxonID - results["ens_score"] = ensemble_score - results["ens_label"] = ensemble_label - + results[f"pred_label_top1_level_{i}"] = np.nan + results[f"top1_score_level_{i}"] = np.nan + results[f"pred_taxa_top1_level_{i}"] = None + return results - - def evaluation_scores(self, ensemble_df, experiment): - ensemble_df = ensemble_df.groupby("individual").apply(lambda x: x.head(1)) - + + def ensemble(self, results): + """Single-pass species head output, while keeping legacy column names.""" + out = results.copy() + if "pred_taxa_top1" in out.columns: + out["ensembleTaxonID"] = out["pred_taxa_top1"] + out["ens_label"] = out["pred_label_top1"] + out["ens_score"] = out["top1_score"] + return out + + # Fallback for externally-built legacy tables. + out["ensembleTaxonID"] = out.get("pred_taxa_top1_level_2") + out["ens_score"] = out.get("top1_score_level_2") + out["ens_label"] = out["ensembleTaxonID"].map(self.species_label_dict) + return out + + def evaluation_scores(self, ensemble_df, experiment): + ensemble_df = ensemble_df.drop_duplicates(subset=["individual"], keep="first") + n_cls = len(self.species_label_dict) + ed = ensemble_df.dropna(subset=["ens_label", "label"]) + ed = ed[ + (ed["ens_label"] >= 0) + & (ed["ens_label"] < n_cls) + & (ed["label"] >= 0) + & (ed["label"] < n_cls) + ] + if ed.empty: + return ensemble_df + + preds = torch.tensor(ed["ens_label"].values, dtype=torch.long) + target = torch.tensor(ed["label"].values, dtype=torch.long) taxon_accuracy = torchmetrics.functional.accuracy( - preds=torch.tensor(ensemble_df.ens_label.values), - target=torch.tensor(ensemble_df.label.values), + preds=preds, + target=target, + task="multiclass", + num_classes=n_cls, average="none", - num_classes=len(self.species_label_dict) ) - taxon_precision = torchmetrics.functional.precision( - preds=torch.tensor(ensemble_df.ens_label.values), - target=torch.tensor(ensemble_df.label.values), + preds=preds, + target=target, + task="multiclass", + num_classes=n_cls, average="none", - num_classes=len(self.species_label_dict) - ) - - taxon_labels = list(self.species_label_dict) - taxon_labels.sort() + ) + + taxon_labels = sorted(self.species_label_dict.keys(), key=lambda t: self.species_label_dict[t]) species_table = pd.DataFrame( - {"taxonID":taxon_labels, - "accuracy":taxon_accuracy, - "precision":taxon_precision - }) - - if experiment: - experiment.log_metrics(species_table.set_index("taxonID").accuracy.to_dict(),prefix="accuracy") - experiment.log_metrics(species_table.set_index("taxonID").precision.to_dict(),prefix="precision") - - # Log result by site + {"taxonID": taxon_labels, "accuracy": taxon_accuracy, "precision": taxon_precision} + ) if experiment: - site_data_frame =[] - for name, group in ensemble_df.groupby("siteID"): - site_micro = np.sum(group.ens_label.values == group.label.values)/len(group.ens_label.values) - + experiment.log_metrics(species_table.set_index("taxonID").accuracy.to_dict(), prefix="accuracy") + experiment.log_metrics(species_table.set_index("taxonID").precision.to_dict(), prefix="precision") + + if experiment and "siteID" in ed.columns: + site_data_frame = [] + for name, group in ed.groupby("siteID"): + g = group[ + (group["ens_label"] >= 0) + & (group["ens_label"] < n_cls) + & (group["label"] >= 0) + & (group["label"] < n_cls) + ] + if g.empty: + continue + site_micro = np.sum(g.ens_label.values == g.label.values) / len(g.ens_label.values) site_macro = torchmetrics.functional.accuracy( - preds=torch.tensor(group.ens_label.values), - target=torch.tensor(group.label.values), + preds=torch.tensor(g["ens_label"].values, dtype=torch.long), + target=torch.tensor(g["label"].values, dtype=torch.long), + task="multiclass", + num_classes=n_cls, average="macro", - num_classes=len(self.species_label_dict)) - + ) experiment.log_metric("{}_macro".format(name), site_macro) - experiment.log_metric("{}_micro".format(name), site_micro) - - row = pd.DataFrame({"Site":[name], "Micro Recall": [site_micro], "Macro Recall": [site_macro]}) + experiment.log_metric("{}_micro".format(name), site_micro) + row = pd.DataFrame({"Site": [name], "Micro Recall": [site_micro], "Macro Recall": [site_macro]}) site_data_frame.append(row) - site_data_frame = pd.concat(site_data_frame) - experiment.log_table("site_results.csv", site_data_frame) - + if site_data_frame: + site_data_frame = pd.concat(site_data_frame) + experiment.log_table("site_results.csv", site_data_frame) + return ensemble_df \ No newline at end of file diff --git a/src/multinomial.py b/src/multinomial.py index 9bfca3a7f..fc57621d0 100644 --- a/src/multinomial.py +++ b/src/multinomial.py @@ -6,7 +6,7 @@ import traceback import math -from distributed import wait +from concurrent.futures import ThreadPoolExecutor, as_completed def run(tile, confusion_path="data/processed/confusion_matrix.csv", overlay_bounds="/home/b.weinstein/DeepTreeAttention/data/raw/OSBSBoundary/OSBS_boundary.shp", iteration=0): """Load a shapefile and confusion .csv and sample the confidence probabilities""" @@ -76,23 +76,24 @@ def sample_confusion(taxonID, confusion): return np.argmax(random_draw) -def wrapper(client, iteration, experiment_key, shp_dir="/blue/ewhite/b.weinstein/DeepTreeAttention/results/", savedir="/blue/ewhite/b.weinstein/DeepTreeAttention/results"): +def wrapper( + iteration, + experiment_key, + shp_dir="/blue/ewhite/b.weinstein/DeepTreeAttention/results/", + savedir="/blue/ewhite/b.weinstein/DeepTreeAttention/results", + max_workers=16, +): tiles = glob.glob("{}/{}/*_image.shp".format(shp_dir, experiment_key)) total_counts = pd.Series() - counts = [] - for tile in tiles: - future = client.submit(run, tile=tile, iteration=iteration) - counts.append(future) - - wait(counts) - - for result in counts: - try: - ser = result.result() - except Exception as e: - traceback.print_exc(e) - print(e) - continue - total_counts = total_counts.add(ser, fill_value=0) + with ThreadPoolExecutor(max_workers=max_workers) as ex: + futures = [ex.submit(run, tile=tile, iteration=iteration) for tile in tiles] + for fut in as_completed(futures): + try: + ser = fut.result() + except Exception as e: + traceback.print_exc() + print(e) + continue + total_counts = total_counts.add(ser, fill_value=0) total_counts.sort_values() total_counts.to_csv("{}/{}/multinomial_permutation_{}.csv".format(savedir, experiment_key, iteration)) \ No newline at end of file diff --git a/src/neon_download.py b/src/neon_download.py new file mode 100644 index 000000000..e5aae9fec --- /dev/null +++ b/src/neon_download.py @@ -0,0 +1,88 @@ +"""NEON AOP downloads via ``neonutilities`` (Python port of R neonUtilities).""" +from __future__ import annotations + + +import os +from typing import Iterable, List, Sequence + +import geopandas as gpd + +try: + import neonutilities as nu +except ImportError as exc: # pragma: no cover - optional until uv sync + nu = None + _IMPORT_ERROR = exc +else: + _IMPORT_ERROR = None + + +def _require_neonutilities(): + if nu is None: + raise ImportError( + "The neonutilities package is required for downloads. " + "Install project dependencies (e.g. uv sync) and retry." + ) from _IMPORT_ERROR + + +def easting_northing_from_geodataframe(gdf: gpd.GeoDataFrame) -> tuple[List[float], List[float]]: + """Extract easting/northing lists in the GeoDataFrame CRS (expected UTM for NEON AOP).""" + if gdf.crs is None: + raise ValueError("GeoDataFrame has no CRS; cannot derive tile coordinates.") + xs = gdf.geometry.x.astype(float).tolist() + ys = gdf.geometry.y.astype(float).tolist() + return xs, ys + + +def by_tile_aop( + dpid: str, + site: str, + year: int, + easting: Sequence[float], + northing: Sequence[float], + savepath: str, + buffer: int = 0, + token: str | None = None, + check_size: bool = False, +) -> None: + """Download all AOP tiles intersecting the given coordinates (wraps ``neonutilities.by_tile_aop``).""" + _require_neonutilities() + os.makedirs(savepath, exist_ok=True) + nu.by_tile_aop( + dpid=dpid, + site=site, + year=year, + easting=list(easting), + northing=list(northing), + buffer=buffer, + savepath=savepath, + token=token, + check_size=check_size, + ) + + +def download_products_for_points( + gdf: gpd.GeoDataFrame, + site: str, + years: Iterable[int], + save_root: str, + products: dict[str, str], + buffer: int = 0, + token: str | None = None, + check_size: bool = False, +) -> None: + """For each year and each product id, run ``by_tile_aop`` using all stem coordinates in ``gdf``.""" + easting, northing = easting_northing_from_geodataframe(gdf) + for year in years: + for label, dpid in products.items(): + target = os.path.join(save_root, site, str(year), label) + by_tile_aop( + dpid=dpid, + site=site, + year=int(year), + easting=easting, + northing=northing, + savepath=target, + buffer=buffer, + token=token, + check_size=check_size, + ) diff --git a/src/pipelines/__init__.py b/src/pipelines/__init__.py new file mode 100644 index 000000000..b94d5e4a5 --- /dev/null +++ b/src/pipelines/__init__.py @@ -0,0 +1 @@ +"""Inference and other runnable pipelines.""" diff --git a/src/pipelines/crown_one_plot.py b/src/pipelines/crown_one_plot.py new file mode 100644 index 000000000..4ba0bd166 --- /dev/null +++ b/src/pipelines/crown_one_plot.py @@ -0,0 +1,40 @@ +"""Run ``generate.run`` for a single plot (one SLURM array task).""" +from __future__ import annotations + +import argparse +import glob +import os + +import geopandas as gpd + +from src import generate + + +def main(argv: list[str] | None = None) -> None: + parser = argparse.ArgumentParser(description="DeepForest crown boxes for one NEON plotID.") + parser.add_argument("--canopy-points", required=True, help="Path to canopy_points.shp (or .gpkg).") + parser.add_argument("--plot", required=True, help="plotID value to process.") + parser.add_argument("--rgb-glob", required=True, help="Recursive glob for RGB tiles (same as config rgb_sensor_pool).") + parser.add_argument("--savedir", required=True, help="Directory for merged stem boxes (one shapefile per plot).") + parser.add_argument("--raw-box-savedir", required=True, help="Directory for all detector boxes.") + args = parser.parse_args(argv) + + df = gpd.read_file(args.canopy_points) + rgb_pool = glob.glob(args.rgb_glob, recursive=True) + if not rgb_pool: + raise FileNotFoundError("No RGB rasters matched --rgb-glob; check paths and config.") + + os.makedirs(args.savedir, exist_ok=True) + os.makedirs(args.raw_box_savedir, exist_ok=True) + + generate.run( + plot=args.plot, + df=df, + rgb_pool=rgb_pool, + savedir=args.savedir, + raw_box_savedir=args.raw_box_savedir, + ) + + +if __name__ == "__main__": + main() diff --git a/src/pipelines/download_neon_aop.py b/src/pipelines/download_neon_aop.py new file mode 100644 index 000000000..364370cd8 --- /dev/null +++ b/src/pipelines/download_neon_aop.py @@ -0,0 +1,63 @@ +"""CLI: download NEON AOP tiles overlapping field stem points using neonutilities.""" +from __future__ import annotations + +import argparse +import os + +import geopandas as gpd + +from src import utils +from src.neon_download import download_products_for_points + + +def main(argv: list[str] | None = None) -> None: + parser = argparse.ArgumentParser( + description="Download NEON AOP products by tile for coordinates in a point file." + ) + parser.add_argument("--config", default="config.yml", help="YAML config (uses neon_download section).") + parser.add_argument( + "--points", + help="Override points path (GeoPackage/Shapefile). Defaults to config data_layout.canopy_points_shp or interim path.", + ) + args = parser.parse_args(argv) + + config = utils.read_config(args.config) + nd = config.get("neon_download") or {} + layout = config.get("data_layout") or {} + + points_path = args.points or layout.get("canopy_points_shp") + if not points_path: + raise ValueError( + "No --points given and data_layout.canopy_points_shp missing in config. " + "Run filtering once to write canopy_points.shp, or pass --points explicitly." + ) + + site = nd.get("site") or "OSBS" + years = nd.get("years") or [2021] + buffer = int(nd.get("buffer_m", 50)) + check_size = bool(nd.get("check_size", False)) + products = nd.get("products") or { + "rgb": "DP3.30010.001", + "hsi": "DP3.30006.001", + "chm": "DP3.30015.001", + } + save_root = nd.get("save_root") or layout.get("sensor_download_root") or "data/external/neon_aop" + + token_env = nd.get("token_env", "NEON_API_TOKEN") + token = os.environ.get(token_env) + + gdf = gpd.read_file(points_path) + download_products_for_points( + gdf=gdf, + site=site, + years=years, + save_root=save_root, + products=products, + buffer=buffer, + token=token, + check_size=check_size, + ) + + +if __name__ == "__main__": + main() diff --git a/src/pipelines/merge_crown_boxes.py b/src/pipelines/merge_crown_boxes.py new file mode 100644 index 000000000..fb2c610cd --- /dev/null +++ b/src/pipelines/merge_crown_boxes.py @@ -0,0 +1,34 @@ +"""Merge per-plot ``*_boxes.shp`` outputs from SLURM workers into a single crowns GeoDataFrame file.""" +from __future__ import annotations + +import argparse +import glob +import os + +import geopandas as gpd +import pandas as pd + + +def main(argv: list[str] | None = None) -> None: + parser = argparse.ArgumentParser( + description="Concatenate plot-level crown box shapefiles into crowns.shp for TreeData (replace=False path)." + ) + parser.add_argument("--boxes-dir", required=True, help="Directory containing _boxes.shp merged stem boxes.") + parser.add_argument("--out", required=True, help="Output path, e.g. data/interim/run/crowns.shp") + args = parser.parse_args(argv) + + paths = sorted(glob.glob(os.path.join(args.boxes_dir, "*_boxes.shp"))) + if not paths: + raise FileNotFoundError("No *_boxes.shp files found in --boxes-dir.") + + parts = [gpd.read_file(p) for p in paths] + merged = gpd.GeoDataFrame(pd.concat(parts, ignore_index=True), crs=parts[0].crs) + merged = merged.drop_duplicates(subset=["plotID", "box_id"], keep="first") + out_dir = os.path.dirname(os.path.abspath(args.out)) + if out_dir: + os.makedirs(out_dir, exist_ok=True) + merged.to_file(args.out) + + +if __name__ == "__main__": + main() diff --git a/src/pipelines/osbs_inference.py b/src/pipelines/osbs_inference.py new file mode 100644 index 000000000..8f3435e83 --- /dev/null +++ b/src/pipelines/osbs_inference.py @@ -0,0 +1,240 @@ +"""OSBS RGB tile inference: detect crowns, build HSI crops, run species MultiStage checkpoint. + +All settings live under ``inference_osbs`` in ``config.yml``. Run: + + python -m src.pipelines.osbs_inference --config config.yml + +Or from repo root after install: + + deeptree-infer-osbs --config config.yml +""" + +from __future__ import annotations + +import argparse +import glob +import json +import os +from datetime import datetime, timezone +from typing import Any + +import geopandas as gpd +import rasterio +from pytorch_lightning import Trainer +from shapely.geometry import box + +from src import utils +from src.models import multi_stage + + +def _resolve_path(path: str, anchor_dir: str) -> str: + if os.path.isabs(path): + return path + return os.path.abspath(os.path.join(anchor_dir, path)) + + +def load_aoi(aoi_path: str) -> gpd.GeoDataFrame: + aoi = gpd.read_file(aoi_path) + if aoi.empty: + raise ValueError(f"AOI is empty: {aoi_path}") + return aoi + + +def list_osbs_tiles_intersecting_aoi( + *, + rgb_sensor_pool: str, + site: str, + year: int, + aoi: gpd.GeoDataFrame, +) -> list[str]: + """Return RGB tile paths for ``site`` and ``year`` that intersect the AOI polygon.""" + candidates = glob.glob(rgb_sensor_pool, recursive=True) + year_token = f"/{year}/" + filtered = [ + p + for p in candidates + if site in p and year_token in p and "neon-aop-products" not in p + ] + aoi_union = aoi.geometry.union_all() + selected: list[str] = [] + for tile_path in filtered: + with rasterio.open(tile_path) as src: + tile_geom = gpd.GeoSeries([box(*src.bounds)], crs=src.crs) + tile_geom = tile_geom.to_crs(aoi.crs) + if tile_geom.iloc[0].intersects(aoi_union): + selected.append(tile_path) + return selected + + +def _require_inference_block(config: dict[str, Any]) -> dict[str, Any]: + block = config.get("inference_osbs") + if not block: + raise ValueError( + "config.yml must define an `inference_osbs` mapping " + "(year, species_checkpoint, aoi_path, results_root)." + ) + for key in ("year", "species_checkpoint", "aoi_path", "results_root"): + if key not in block or block[key] in (None, ""): + raise ValueError(f"inference_osbs.{key} is required") + return block + + +def run_osbs_inference(*, config_path: str) -> None: + config_path = os.path.abspath(config_path) + anchor_dir = os.path.dirname(config_path) + config = utils.read_config(config_path=config_path) + inf = _require_inference_block(config) + + from src import predict as predict_module + + site = inf.get("site", "OSBS") + year = int(inf["year"]) + species_ckpt = _resolve_path(str(inf["species_checkpoint"]), anchor_dir) + aoi_path = _resolve_path(str(inf["aoi_path"]), anchor_dir) + results_root = _resolve_path(str(inf["results_root"]), anchor_dir) + tile_limit = inf.get("tile_limit") + predict_limit_batches = inf.get("predict_limit_batches") + dead_model_path = inf.get("dead_model_path") or None + filter_dead = bool(inf.get("filter_dead", True)) + + print("[osbs_inference] config file:", config_path) + print("[osbs_inference] site:", site, "year:", year) + print("[osbs_inference] species checkpoint:", species_ckpt) + print("[osbs_inference] AOI:", aoi_path) + print("[osbs_inference] results root:", results_root) + + if not os.path.isfile(species_ckpt): + raise FileNotFoundError(f"Species checkpoint not found: {species_ckpt}") + + aoi = load_aoi(aoi_path) + tiles = list_osbs_tiles_intersecting_aoi( + rgb_sensor_pool=config["rgb_sensor_pool"], + site=site, + year=year, + aoi=aoi, + ) + print(f"[osbs_inference] tiles intersecting AOI (before limit): {len(tiles)}") + if tile_limit is not None: + tiles = tiles[: int(tile_limit)] + print(f"[osbs_inference] applied tile_limit={tile_limit}; processing {len(tiles)} tile(s)") + + crowns_dir = os.path.join(results_root, "crowns") + pred_dir = os.path.join(results_root, "predictions") + os.makedirs(crowns_dir, exist_ok=True) + os.makedirs(pred_dir, exist_ok=True) + + print("[osbs_inference] loading MultiStage once from checkpoint …") + config["pretrained_state_dict"] = None + model = multi_stage.MultiStage.load_from_checkpoint(species_ckpt, config=config) + acc, dev = utils.trainer_accelerator_devices(config) + tr_kw: dict = { + "accelerator": acc, + "devices": dev, + "logger": False, + "enable_checkpointing": False, + } + if predict_limit_batches is not None: + tr_kw["limit_predict_batches"] = int(predict_limit_batches) + trainer = Trainer(**tr_kw) + + run_log: list[dict[str, Any]] = [] + for index, rgb_path in enumerate(tiles, start=1): + basename = os.path.splitext(os.path.basename(rgb_path))[0] + print(f"\n[osbs_inference] --- tile {index}/{len(tiles)}: {basename} ---") + print("[osbs_inference] RGB path:", rgb_path) + + try: + crowns = predict_module.find_crowns( + rgb_path, config, dead_model_path=dead_model_path + ) + except Exception as exc: + print(f"[osbs_inference] ERROR find_crowns: {exc}") + run_log.append({"tile": rgb_path, "stage": "detection", "ok": False, "error": str(exc)}) + continue + + if crowns is None or crowns.empty: + print("[osbs_inference] no crowns; skipping tile") + run_log.append({"tile": rgb_path, "stage": "detection", "ok": True, "crowns": 0}) + continue + + aoi_union = aoi.geometry.union_all() + crowns = crowns.to_crs(aoi.crs) + n_before = len(crowns) + crowns = crowns[crowns.geometry.intersects(aoi_union)] + print(f"[osbs_inference] crowns after AOI clip: {len(crowns)} (was {n_before})") + if crowns.empty: + print("[osbs_inference] no crowns inside AOI; skipping tile") + run_log.append({"tile": rgb_path, "stage": "aoi_clip", "ok": True, "crowns": 0}) + continue + + crown_shp = os.path.join(crowns_dir, f"{basename}.shp") + crowns.to_file(crown_shp) + print("[osbs_inference] wrote crowns:", crown_shp) + + crop_dir = os.path.join(results_root, "crops", basename) + os.makedirs(crop_dir, exist_ok=True) + config["prediction_crop_dir"] = crop_dir + + try: + print("[osbs_inference] generating prediction crops (HSI windows) …") + crown_ann_path = predict_module.generate_prediction_crops(crowns, config) + except Exception as exc: + print(f"[osbs_inference] ERROR generate_prediction_crops: {exc}") + run_log.append({"tile": rgb_path, "stage": "crops", "ok": False, "error": str(exc)}) + continue + + try: + print("[osbs_inference] running species predict_tile …") + trees = predict_module.predict_tile( + crown_annotations=crown_ann_path, + m=model, + trainer=trainer, + filter_dead=filter_dead, + savedir=pred_dir, + config=config, + ) + n_trees = 0 if trees is None else len(trees) + print(f"[osbs_inference] finished tile; trees written: {n_trees}") + run_log.append( + {"tile": rgb_path, "stage": "species", "ok": True, "trees": n_trees} + ) + except Exception as exc: + print(f"[osbs_inference] ERROR predict_tile: {exc}") + run_log.append({"tile": rgb_path, "stage": "species", "ok": False, "error": str(exc)}) + + meta_path = os.path.join(results_root, "run_metadata.json") + with open(meta_path, "w", encoding="utf-8") as f: + json.dump( + { + "created_at_utc": datetime.now(tz=timezone.utc).isoformat(), + "config_path": config_path, + "site": site, + "year": year, + "species_checkpoint": species_ckpt, + "tiles_total": len(tiles), + "per_tile": run_log, + }, + f, + indent=2, + ) + print(f"\n[osbs_inference] wrote run metadata: {meta_path}") + print("[osbs_inference] done.") + + +def build_parser() -> argparse.ArgumentParser: + p = argparse.ArgumentParser(description="Run OSBS tile inference (detection + species).") + p.add_argument( + "--config", + default="config.yml", + help="Path to config.yml (must define inference_osbs).", + ) + return p + + +def main() -> None: + args = build_parser().parse_args() + run_osbs_inference(config_path=args.config) + + +if __name__ == "__main__": + main() diff --git a/src/pipelines/osbs_mortality.py b/src/pipelines/osbs_mortality.py new file mode 100644 index 000000000..09081aee7 --- /dev/null +++ b/src/pipelines/osbs_mortality.py @@ -0,0 +1,622 @@ +"""Compare OSBS alive/dead tree counts between RGB years at NEON tile scale. + +Run from the repository root after configuring ``osbs_mortality`` in +``config.yml``: + + python -m src.pipelines.osbs_mortality --config config.yml + +The pipeline can download AOI-intersecting RGB tiles, run the existing +DeepForest detector plus Hugging Face alive/dead cropmodel, optionally run the +species model, then write per-tile count tables and GeoTIFF rasters. +""" + +from __future__ import annotations + +import argparse +import inspect +import json +import math +import os +import re +from datetime import datetime, timezone +from typing import Any, Iterable, Sequence + +import geopandas as gpd +import numpy as np +import pandas as pd +import rasterio +from pytorch_lightning import Trainer +from rasterio import features +from rasterio.transform import from_origin +from shapely.geometry import box + +from src import utils +from src.models import multi_stage +from src.pipelines.osbs_inference import load_aoi, list_osbs_tiles_intersecting_aoi + +RGB_DPID = "DP3.30010.001" +DEFAULT_SITE = "OSBS" +DEFAULT_AOP_EPSG = 32617 +DEFAULT_TILE_SIZE_M = 1000 +NO_DATA = -9999.0 +_TILE_ID_RE = re.compile(r"_(?P\d{6})_(?P\d{7})_image(?:_|\.|$)") + + +def _resolve_path(path: str, anchor_dir: str) -> str: + if os.path.isabs(path): + return path + return os.path.abspath(os.path.join(anchor_dir, path)) + + +def parse_tile_id(path: str) -> str: + """Return the NEON AOP easting/northing tile id from an RGB filename.""" + match = _TILE_ID_RE.search(os.path.basename(path)) + if not match: + raise ValueError(f"Could not parse NEON tile id from filename: {path}") + return f"{match.group('easting')}_{match.group('northing')}" + + +def tile_geometry_from_raster(path: str): + with rasterio.open(path) as src: + return box(*src.bounds), src.crs + + +def _require_mortality_block(config: dict[str, Any]) -> dict[str, Any]: + block = config.get("osbs_mortality") + if not block: + raise ValueError( + "config.yml must define an `osbs_mortality` mapping " + "(years, aoi_path, results_root)." + ) + for key in ("years", "aoi_path", "results_root"): + if key not in block or block[key] in (None, "", []): + raise ValueError(f"osbs_mortality.{key} is required") + if len(block["years"]) < 2: + raise ValueError("osbs_mortality.years must include at least two years") + return block + + +def _as_dead_mask(crowns: gpd.GeoDataFrame, *, dead_threshold: float) -> pd.Series: + if "dead_label" not in crowns.columns: + return pd.Series(False, index=crowns.index) + + labels = crowns["dead_label"] + numeric = pd.to_numeric(labels, errors="coerce") + label_dead = numeric.eq(1) + string_dead = labels.astype("string").str.lower().isin({"dead", "dead_tree", "1", "true"}) + label_dead = label_dead | string_dead.fillna(False) + + if "dead_score" not in crowns.columns: + return label_dead + + scores = pd.to_numeric(crowns["dead_score"], errors="coerce") + score_ok = scores.isna() | scores.ge(dead_threshold) + return label_dead & score_ok + + +def summarize_tile_crowns( + crowns: gpd.GeoDataFrame, + *, + tile_path: str, + year: int, + dead_threshold: float, +) -> dict[str, Any]: + """Count alive/dead detections for one tile without linking individual trees.""" + dead_mask = _as_dead_mask(crowns, dead_threshold=dead_threshold) + unknown_mask = ( + crowns["dead_label"].isna() + if "dead_label" in crowns.columns + else pd.Series(True, index=crowns.index) + ) + total_count = int(len(crowns)) + dead_count = int(dead_mask.sum()) + unknown_count = int(unknown_mask.sum()) + alive_count = int(total_count - dead_count - unknown_count) + if alive_count < 0: + alive_count = 0 + + return { + "tile_id": parse_tile_id(tile_path), + "year": int(year), + "tile_path": tile_path, + "total_count": total_count, + "alive_count": alive_count, + "dead_count": dead_count, + "unknown_count": unknown_count, + "dead_fraction": dead_count / total_count if total_count else 0.0, + } + + +def compare_year_counts( + counts: gpd.GeoDataFrame, + *, + baseline_year: int, + comparison_year: int, + high_mortality_dead_change: int, +) -> gpd.GeoDataFrame: + """Build one row per tile comparing count changes between two years.""" + if counts.empty: + return gpd.GeoDataFrame(geometry=[], crs=counts.crs) + + baseline = counts[counts["year"] == baseline_year].set_index("tile_id") + comparison = counts[counts["year"] == comparison_year].set_index("tile_id") + tile_ids = sorted(set(baseline.index) | set(comparison.index)) + rows: list[dict[str, Any]] = [] + geometries = [] + metrics = ("total_count", "alive_count", "dead_count", "unknown_count", "dead_fraction") + + for tile_id in tile_ids: + row: dict[str, Any] = { + "tile_id": tile_id, + "baseline_year": int(baseline_year), + "comparison_year": int(comparison_year), + } + base_row = baseline.loc[tile_id] if tile_id in baseline.index else None + comp_row = comparison.loc[tile_id] if tile_id in comparison.index else None + + for metric in metrics: + base_value = base_row[metric] if base_row is not None else np.nan + comp_value = comp_row[metric] if comp_row is not None else np.nan + row[f"{metric}_{baseline_year}"] = base_value + row[f"{metric}_{comparison_year}"] = comp_value + row[f"{metric}_change"] = ( + comp_value - base_value + if not pd.isna(base_value) and not pd.isna(comp_value) + else np.nan + ) + + row["high_mortality"] = bool( + not pd.isna(row["dead_count_change"]) + and row["dead_count_change"] >= high_mortality_dead_change + ) + rows.append(row) + geometry_row = comp_row if comp_row is not None else base_row + geometries.append(geometry_row.geometry) + + return gpd.GeoDataFrame(rows, geometry=geometries, crs=counts.crs) + + +def write_metric_raster( + tile_metrics: gpd.GeoDataFrame, + *, + metric: str, + output_path: str, + resolution: int = DEFAULT_TILE_SIZE_M, + nodata: float = NO_DATA, +) -> str: + """Rasterize a tile-level metric, using one value for each NEON tile polygon.""" + if tile_metrics.empty: + raise ValueError("Cannot write raster from empty tile metrics") + if metric not in tile_metrics.columns: + raise ValueError(f"Metric column not found: {metric}") + + valid = tile_metrics[~pd.isna(tile_metrics[metric])].copy() + if valid.empty: + raise ValueError(f"Metric column has no finite values: {metric}") + + minx, miny, maxx, maxy = valid.total_bounds + width = max(1, int(math.ceil((maxx - minx) / resolution))) + height = max(1, int(math.ceil((maxy - miny) / resolution))) + transform = from_origin(minx, maxy, resolution, resolution) + shapes = ((geom, float(value)) for geom, value in zip(valid.geometry, valid[metric])) + array = features.rasterize( + shapes=shapes, + out_shape=(height, width), + fill=nodata, + transform=transform, + dtype="float32", + ) + + os.makedirs(os.path.dirname(output_path), exist_ok=True) + with rasterio.open( + output_path, + "w", + driver="GTiff", + height=height, + width=width, + count=1, + dtype="float32", + crs=valid.crs, + transform=transform, + nodata=nodata, + ) as dst: + dst.write(array, 1) + dst.update_tags(metric=metric) + return output_path + + +def _require_neonutilities(): + try: + import neonutilities as nu + except ImportError as exc: # pragma: no cover - optional until downloads run + raise ImportError( + "The neonutilities package is required for osbs_mortality RGB downloads. " + "Install project dependencies (e.g. uv sync) and retry." + ) from exc + return nu + + +def _call_by_tile_aop(nu, **kwargs) -> None: + signature = inspect.signature(nu.by_tile_aop) + supported = {k: v for k, v in kwargs.items() if k in signature.parameters} + nu.by_tile_aop(**supported) + + +def _aop_extents_for_year(*, site: str, year: int, dpid: str = RGB_DPID) -> list[tuple[int, int]]: + nu = _require_neonutilities() + extents = nu.get_aop_tile_extents(dpid=dpid, site=site, year=year) + return [(int(easting), int(northing)) for easting, northing in extents] + + +def select_aop_extents_intersecting_aoi( + *, + site: str, + year: int, + aoi: gpd.GeoDataFrame, + aop_epsg: int = DEFAULT_AOP_EPSG, + tile_size: int = DEFAULT_TILE_SIZE_M, +) -> list[tuple[int, int]]: + """Return available AOP tile SW corners for ``year`` that intersect the AOI.""" + extents = _aop_extents_for_year(site=site, year=year) + if not extents: + return [] + + aoi_utm = aoi.to_crs(epsg=aop_epsg) + aoi_union = aoi_utm.geometry.union_all() + selected: list[tuple[int, int]] = [] + for easting, northing in extents: + geom = box(easting, northing, easting + tile_size, northing + tile_size) + if geom.intersects(aoi_union): + selected.append((easting, northing)) + return selected + + +def download_rgb_tiles( + *, + site: str, + year: int, + extents: Sequence[tuple[int, int]], + save_root: str, + token: str | None, + check_size: bool = False, + include_provisional: bool = True, +) -> str: + """Download RGB data for a list of NEON AOP tile extents.""" + target = os.path.join(save_root, site, str(year), "rgb") + os.makedirs(target, exist_ok=True) + if not extents: + return target + + easting, northing = zip(*extents) + nu = _require_neonutilities() + _call_by_tile_aop( + nu, + dpid=RGB_DPID, + site=site, + year=int(year), + easting=list(easting), + northing=list(northing), + buffer=0, + savepath=target, + token=token, + check_size=check_size, + include_provisional=include_provisional, + ) + return target + + +def _find_year_tiles( + *, + rgb_sensor_pool: str, + site: str, + year: int, + aoi: gpd.GeoDataFrame, + tile_limit: int | None, +) -> list[str]: + tiles = list_osbs_tiles_intersecting_aoi( + rgb_sensor_pool=rgb_sensor_pool, + site=site, + year=year, + aoi=aoi, + ) + if tile_limit is not None: + tiles = tiles[:tile_limit] + return sorted(tiles) + + +def _make_trainer(config: dict[str, Any], predict_limit_batches: int | None) -> Trainer: + acc, dev = utils.trainer_accelerator_devices(config) + kwargs: dict[str, Any] = { + "accelerator": acc, + "devices": dev, + "logger": False, + "enable_checkpointing": False, + } + if predict_limit_batches is not None: + kwargs["limit_predict_batches"] = int(predict_limit_batches) + return Trainer(**kwargs) + + +def _load_species_model( + *, + config: dict[str, Any], + species_checkpoint: str | None, + predict_limit_batches: int | None, +) -> tuple[Any, Trainer] | tuple[None, None]: + if not species_checkpoint: + return None, None + if not os.path.isfile(species_checkpoint): + raise FileNotFoundError(f"Species checkpoint not found: {species_checkpoint}") + + print("[osbs_mortality] loading MultiStage species checkpoint:", species_checkpoint) + config["pretrained_state_dict"] = None + model = multi_stage.MultiStage.load_from_checkpoint(species_checkpoint, config=config) + return model, _make_trainer(config, predict_limit_batches) + + +def _write_tables( + *, + counts: gpd.GeoDataFrame, + changes: gpd.GeoDataFrame, + results_root: str, +) -> dict[str, str]: + paths = { + "counts_csv": os.path.join(results_root, "tile_alive_dead_counts.csv"), + "counts_gpkg": os.path.join(results_root, "tile_alive_dead_counts.gpkg"), + "changes_csv": os.path.join(results_root, "tile_alive_dead_changes.csv"), + "changes_gpkg": os.path.join(results_root, "tile_alive_dead_changes.gpkg"), + } + os.makedirs(results_root, exist_ok=True) + counts.drop(columns="geometry").to_csv(paths["counts_csv"], index=False) + changes.drop(columns="geometry").to_csv(paths["changes_csv"], index=False) + counts.to_file(paths["counts_gpkg"], driver="GPKG", layer="per_year_counts") + changes.to_file(paths["changes_gpkg"], driver="GPKG", layer="year_change") + return paths + + +def run_osbs_mortality(*, config_path: str) -> dict[str, Any]: + config_path = os.path.abspath(config_path) + anchor_dir = os.path.dirname(config_path) + config = utils.read_config(config_path=config_path) + block = _require_mortality_block(config) + + from src import predict as predict_module + + site = block.get("site", DEFAULT_SITE) + years = [int(year) for year in block["years"]] + baseline_year = int(block.get("baseline_year", years[0])) + comparison_year = int(block.get("comparison_year", years[-1])) + aoi_path = _resolve_path(str(block["aoi_path"]), anchor_dir) + results_root = _resolve_path(str(block["results_root"]), anchor_dir) + save_root = _resolve_path( + str(block.get("save_root") or config.get("data_layout", {}).get("sensor_download_root", "data/external/neon_aop")), + anchor_dir, + ) + rgb_sensor_pool = block.get("rgb_sensor_pool") or config.get("rgb_sensor_pool") + if rgb_sensor_pool is None: + rgb_sensor_pool = os.path.join(save_root, site, "**", "rgb", "**", "*image.tif") + elif not os.path.isabs(str(rgb_sensor_pool)): + rgb_sensor_pool = _resolve_path(str(rgb_sensor_pool), anchor_dir) + + tile_limit = block.get("tile_limit") + tile_limit = int(tile_limit) if tile_limit is not None else None + dead_threshold = float(block.get("dead_threshold", config.get("dead_threshold", 0.95))) + dead_model_path = block.get("dead_model_path") or None + high_mortality_dead_change = int(block.get("high_mortality_dead_change", 10)) + tile_size = int(block.get("tile_size_m", DEFAULT_TILE_SIZE_M)) + aop_epsg = int(block.get("aop_epsg", DEFAULT_AOP_EPSG)) + predict_limit_batches = block.get("predict_limit_batches") + predict_limit_batches = int(predict_limit_batches) if predict_limit_batches is not None else None + download_rgb = bool(block.get("download_rgb", False)) + download_years: Iterable[int] = block.get("download_years") or years + token = os.environ.get(block.get("token_env", "NEON_API_TOKEN")) + + inference_block = config.get("inference_osbs") or {} + species_checkpoint = block.get("species_checkpoint", inference_block.get("species_checkpoint")) + if species_checkpoint: + species_checkpoint = _resolve_path(str(species_checkpoint), anchor_dir) + run_species = bool(block.get("run_species", bool(species_checkpoint))) + + print("[osbs_mortality] config file:", config_path) + print("[osbs_mortality] site:", site, "years:", years) + print("[osbs_mortality] AOI:", aoi_path) + print("[osbs_mortality] RGB pool:", rgb_sensor_pool) + print("[osbs_mortality] results root:", results_root) + print("[osbs_mortality] dead threshold:", dead_threshold) + + aoi = load_aoi(aoi_path) + os.makedirs(results_root, exist_ok=True) + download_log: list[dict[str, Any]] = [] + if download_rgb: + for year in download_years: + extents = select_aop_extents_intersecting_aoi( + site=site, + year=int(year), + aoi=aoi, + aop_epsg=aop_epsg, + tile_size=tile_size, + ) + print(f"[osbs_mortality] downloading {len(extents)} RGB tile(s) for {year}") + target = download_rgb_tiles( + site=site, + year=int(year), + extents=extents, + save_root=save_root, + token=token, + check_size=bool(block.get("check_size", False)), + include_provisional=bool(block.get("include_provisional", True)), + ) + download_log.append({"year": int(year), "tiles": len(extents), "target": target}) + + species_model, species_trainer = _load_species_model( + config=config, + species_checkpoint=species_checkpoint if run_species else None, + predict_limit_batches=predict_limit_batches, + ) + crowns_dir = os.path.join(results_root, "crowns") + crops_root = os.path.join(results_root, "crops") + pred_dir = os.path.join(results_root, "predictions") + for path in (crowns_dir, crops_root, pred_dir): + os.makedirs(path, exist_ok=True) + + count_records: list[dict[str, Any]] = [] + geometries = [] + output_crs = None + run_log: list[dict[str, Any]] = [] + aoi_union = aoi.geometry.union_all() + + for year in years: + tiles = _find_year_tiles( + rgb_sensor_pool=str(rgb_sensor_pool), + site=site, + year=year, + aoi=aoi, + tile_limit=tile_limit, + ) + print(f"[osbs_mortality] {year}: processing {len(tiles)} tile(s)") + for index, rgb_path in enumerate(tiles, start=1): + basename = os.path.splitext(os.path.basename(rgb_path))[0] + print(f"\n[osbs_mortality] --- {year} tile {index}/{len(tiles)}: {basename} ---") + try: + crowns = predict_module.find_crowns( + rgb_path, + config, + dead_model_path=dead_model_path, + ) + except Exception as exc: + print(f"[osbs_mortality] ERROR find_crowns: {exc}") + run_log.append({"year": year, "tile": rgb_path, "stage": "detection", "ok": False, "error": str(exc)}) + continue + + if crowns is None or crowns.empty: + print("[osbs_mortality] no crowns; writing zero count for tile") + crowns = gpd.GeoDataFrame(geometry=[], crs=output_crs) + else: + crowns = crowns.to_crs(aoi.crs) + n_before = len(crowns) + crowns = crowns[crowns.geometry.intersects(aoi_union)] + print(f"[osbs_mortality] crowns after AOI clip: {len(crowns)} (was {n_before})") + + crowns_path = os.path.join(crowns_dir, f"{basename}.gpkg") + crowns.to_file(crowns_path, driver="GPKG", layer="crowns") + tile_geom, tile_crs = tile_geometry_from_raster(rgb_path) + if output_crs is None: + output_crs = tile_crs + + record = summarize_tile_crowns( + crowns, + tile_path=rgb_path, + year=year, + dead_threshold=dead_threshold, + ) + count_records.append(record) + geometries.append(tile_geom) + + if species_model is not None and species_trainer is not None and not crowns.empty: + tile_config = dict(config) + tile_config["prediction_crop_dir"] = os.path.join(crops_root, basename) + os.makedirs(tile_config["prediction_crop_dir"], exist_ok=True) + try: + crown_ann_path = predict_module.generate_prediction_crops(crowns, tile_config) + trees = predict_module.predict_tile( + crown_annotations=crown_ann_path, + m=species_model, + trainer=species_trainer, + filter_dead=bool(block.get("filter_dead", True)), + savedir=pred_dir, + config=tile_config, + ) + run_log.append( + { + "year": year, + "tile": rgb_path, + "stage": "species", + "ok": True, + "crowns": len(crowns), + "trees": 0 if trees is None else len(trees), + "crowns_path": crowns_path, + } + ) + except Exception as exc: + print(f"[osbs_mortality] ERROR species prediction: {exc}") + run_log.append({"year": year, "tile": rgb_path, "stage": "species", "ok": False, "error": str(exc)}) + else: + run_log.append( + { + "year": year, + "tile": rgb_path, + "stage": "alive_dead", + "ok": True, + "crowns": len(crowns), + "crowns_path": crowns_path, + } + ) + + counts = gpd.GeoDataFrame(count_records, geometry=geometries, crs=output_crs) + changes = compare_year_counts( + counts, + baseline_year=baseline_year, + comparison_year=comparison_year, + high_mortality_dead_change=high_mortality_dead_change, + ) + table_paths = _write_tables(counts=counts, changes=changes, results_root=results_root) + + raster_paths: dict[str, str] = {} + comparison_counts = counts[counts["year"] == comparison_year] + if not comparison_counts.empty: + raster_paths["comparison_dead_count"] = write_metric_raster( + comparison_counts, + metric="dead_count", + output_path=os.path.join(results_root, f"osbs_dead_count_{comparison_year}.tif"), + resolution=tile_size, + ) + if not changes.empty and "dead_count_change" in changes.columns: + raster_paths["dead_count_change"] = write_metric_raster( + changes, + metric="dead_count_change", + output_path=os.path.join(results_root, f"osbs_dead_count_change_{baseline_year}_{comparison_year}.tif"), + resolution=tile_size, + ) + + metadata = { + "created_at_utc": datetime.now(tz=timezone.utc).isoformat(), + "config_path": config_path, + "site": site, + "years": years, + "baseline_year": baseline_year, + "comparison_year": comparison_year, + "dead_threshold": dead_threshold, + "high_mortality_dead_change": high_mortality_dead_change, + "download_log": download_log, + "per_tile": run_log, + "tables": table_paths, + "rasters": raster_paths, + } + meta_path = os.path.join(results_root, "run_metadata.json") + with open(meta_path, "w", encoding="utf-8") as f: + json.dump(metadata, f, indent=2) + metadata["metadata_path"] = meta_path + + print("[osbs_mortality] wrote:", table_paths) + print("[osbs_mortality] wrote rasters:", raster_paths) + print("[osbs_mortality] wrote metadata:", meta_path) + return metadata + + +def build_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser(description="Run OSBS tile-level alive/dead mortality comparison.") + parser.add_argument( + "--config", + default="config.yml", + help="Path to config.yml (must define osbs_mortality).", + ) + return parser + + +def main() -> None: + args = build_parser().parse_args() + run_osbs_mortality(config_path=args.config) + + +if __name__ == "__main__": + main() diff --git a/src/pipelines/update_neon_vst.py b/src/pipelines/update_neon_vst.py new file mode 100644 index 000000000..a2303f39c --- /dev/null +++ b/src/pipelines/update_neon_vst.py @@ -0,0 +1,113 @@ +"""CLI: update NEON woody vegetation structure table and compare with baseline.""" + +from __future__ import annotations + +import argparse +import json +import os + +from src import utils +from src.vst_update import update_and_compare_vst + + +def main(argv: list[str] | None = None) -> None: + parser = argparse.ArgumentParser( + description="Download NEON VST updates and compare with baseline individualIDs." + ) + parser.add_argument("--config", default="config.yml", help="Config yaml") + parser.add_argument( + "--baseline-csv", + default="data/raw/neon_vst_data_2022.csv", + help="Baseline VST CSV used for comparison.", + ) + parser.add_argument( + "--output-csv", + default="data/raw/neon_vst_data_latest.csv", + help="Path to write assembled latest VST rows.", + ) + parser.add_argument( + "--since-csv", + default="data/raw/neon_vst_data_since_2022.csv", + help="Path to write rows downloaded since startdate.", + ) + parser.add_argument( + "--summary-csv", + default="results/vst_additions_by_site_since_2022.csv", + help="Path to write per-site summary.", + ) + parser.add_argument( + "--new-ids-csv", + default="results/vst_new_individual_ids_not_in_2022.csv", + help="Path to write new individualIDs.", + ) + parser.add_argument( + "--startdate", + default="2022-01", + help="Earliest YYYY-MM date to request from NEON.", + ) + parser.add_argument( + "--sites", + nargs="*", + default=None, + help="Optional site list; defaults to sites present in baseline CSV.", + ) + parser.add_argument( + "--token-env", + default="NEON_API_TOKEN", + help="Environment variable name containing NEON API token.", + ) + parser.add_argument( + "--exclude-provisional", + action="store_true", + help="Exclude provisional releases (defaults to include provisional).", + ) + args = parser.parse_args(argv) + + config = utils.read_config(args.config) + token = os.environ.get(args.token_env) + + result = update_and_compare_vst( + baseline_csv=args.baseline_csv, + startdate=args.startdate, + sites=args.sites, + token=token, + include_provisional=(not args.exclude_provisional), + ) + + # Write canonical "latest" as baseline union updates. + import pandas as pd + + old = pd.read_csv(args.baseline_csv, low_memory=False) + latest = pd.concat([old, result.full_df], ignore_index=True, sort=False) + if "individualID" in latest.columns and "siteID" in latest.columns and "eventID" in latest.columns: + latest = latest.drop_duplicates(subset=["individualID", "siteID", "eventID"], keep="last") + elif "individualID" in latest.columns and "siteID" in latest.columns: + latest = latest.drop_duplicates(subset=["individualID", "siteID"], keep="last") + + for path in [args.output_csv, args.since_csv, args.summary_csv, args.new_ids_csv]: + parent = os.path.dirname(path) + if parent: + os.makedirs(parent, exist_ok=True) + + latest.to_csv(args.output_csv, index=False) + result.full_df.to_csv(args.since_csv, index=False) + result.summary_by_site.to_csv(args.summary_csv) + result.new_ids_df.sort_values(["siteID", "individualID"]).to_csv(args.new_ids_csv, index=False) + + totals = { + "baseline_rows_2022_file": int(len(old)), + "baseline_unique_individualIDs": int(old["individualID"].astype(str).nunique()), + "new_rows_since_startdate": int(len(result.full_df)), + "new_unique_individualIDs_since_startdate": int(result.full_df["individualID"].astype(str).nunique()), + "new_unique_individualIDs_not_in_2022": int(result.new_ids_df["individualID"].astype(str).nunique()), + "failed_sites": result.failed_sites, + "output_csv": args.output_csv, + "since_csv": args.since_csv, + "summary_csv": args.summary_csv, + "new_ids_csv": args.new_ids_csv, + } + print(json.dumps(totals, indent=2)) + + +if __name__ == "__main__": + main() diff --git a/src/predict.py b/src/predict.py index a4c5125c5..c668d90de 100644 --- a/src/predict.py +++ b/src/predict.py @@ -1,9 +1,10 @@ #Predict -from deepforest import main -from deepforest.utilities import annotations_to_shapefile +from deepforest import main, utilities as df_utilities import glob +import inspect import os import geopandas as gpd +import pandas as pd import rasterio import numpy as np from torchvision import transforms @@ -14,6 +15,8 @@ from src.CHM import postprocess_CHM from src.generate import generate_crops from src.data import TreeDataset +from src.utils import trainer_accelerator_devices + def RGB_transform(augment): normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], @@ -27,7 +30,7 @@ def RGB_transform(augment): return transforms.Compose(data_transforms) def find_crowns(rgb_path, config, dead_model_path=None): - crowns = predict_crowns(rgb_path) + crowns = predict_crowns(rgb_path, config=config) if crowns is None: return None crowns["tile"] = rgb_path @@ -50,6 +53,12 @@ def find_crowns(rgb_path, config, dead_model_path=None): dead_label, dead_score = predict_dead(crowns=filtered_crowns, dead_model_path=dead_model_path, config=config) filtered_crowns["dead_label"] = dead_label filtered_crowns["dead_score"] = dead_score + elif "cropmodel_label" in filtered_crowns.columns: + filtered_crowns["dead_label"] = filtered_crowns["cropmodel_label"] + filtered_crowns["dead_score"] = filtered_crowns.get("cropmodel_score") + else: + filtered_crowns["dead_label"] = None + filtered_crowns["dead_score"] = None return filtered_crowns @@ -109,20 +118,65 @@ def predict_tile(crown_annotations,m, trainer, config, savedir, filter_dead=Fals return trees -def predict_crowns(PATH): +def _load_dead_cropmodel(config): + model_name = config.get("deepforest_dead_cropmodel_name") + if not model_name: + return None + + cropmodel = main.deepforest() + cropmodel.load_model(model_name=model_name) + # DeepForest ``predict_tile`` expects a Lightning-style object with ``predict_dataloader``. + return cropmodel + + +def predict_crowns(PATH, config=None): """Predict a set of tree crowns from RGB data""" m = main.deepforest() + refresh_trainer = False if torch.cuda.is_available(): print("CUDA detected") - m.config["gpus"] = 1 - m.use_release(check_release=False) - boxes = m.predict_tile(PATH) + m.config.accelerator = "cuda" + m.config.devices = 1 + refresh_trainer = True + elif getattr(torch.backends, "mps", None) is not None and torch.backends.mps.is_available(): + m.config.accelerator = "mps" + m.config.devices = 1 + refresh_trainer = True + m.load_model(model_name="weecology/deepforest-tree") + if refresh_trainer: + m.create_trainer() + + cropmodel = None + if config is not None: + cropmodel = _load_dead_cropmodel(config) + + predict_signature = inspect.signature(m.predict_tile) + if cropmodel is None: + boxes = m.predict_tile(PATH) + elif "cropmodel" in predict_signature.parameters: + boxes = m.predict_tile(PATH, cropmodel=cropmodel) + elif "crop_model" in predict_signature.parameters: + boxes = m.predict_tile(PATH, crop_model=cropmodel) + else: + boxes = m.predict_tile(PATH) if boxes is None: return None - r = rasterio.open(PATH) - transform = r.transform - crs = r.crs - gdf = annotations_to_shapefile(boxes, transform=transform, crs=crs) + with rasterio.open(PATH) as r: + crs = r.crs + if isinstance(boxes, gpd.GeoDataFrame): + gdf = boxes.copy() + root_dir = getattr(gdf, "root_dir", None) or os.path.dirname(PATH) + # DeepForest 2.x predict_tile returns image-space boxes; assign raster CRS only after projecting. + if "image_path" in gdf.columns and root_dir: + gdf = df_utilities.image_to_geo_coordinates(gdf, root_dir=root_dir) + elif gdf.crs is None and crs is not None: + gdf.set_crs(crs, inplace=True) + elif isinstance(boxes, pd.DataFrame): + gdf = df_utilities.__pandas_to_geodataframe__(boxes) + root_dir = getattr(gdf, "root_dir", None) or os.path.dirname(PATH) + gdf = df_utilities.image_to_geo_coordinates(gdf, root_dir=root_dir) + else: + raise TypeError("Unexpected prediction type: {}".format(type(boxes))) #Dummy variables for schema basename = os.path.splitext(os.path.basename(PATH))[0] @@ -146,7 +200,7 @@ def predict_species(crowns, m, trainer, config): return None results = m.gather_predictions(predictions) ensemble_df = m.ensemble(results) - ensemble_df = results.merge(crowns, on="individual") + ensemble_df = ensemble_df.merge(crowns, on="individual") return ensemble_df @@ -157,7 +211,12 @@ def predict_dead(crowns, dead_model_path, config): ds = dead.utm_dataset(crowns=crowns, config=config) dead_dataloader = dead_model.predict_dataloader(ds) - trainer = Trainer(gpus=config["gpus"], enable_checkpointing=False) + acc, dev = trainer_accelerator_devices(config) + trainer = Trainer( + accelerator=acc, + devices=dev, + enable_checkpointing=False, + ) outputs = trainer.predict(dead_model, dead_dataloader) print("len of predict is {}".format(len(outputs))) diff --git a/src/start_cluster.py b/src/start_cluster.py deleted file mode 100644 index e8d6cd357..000000000 --- a/src/start_cluster.py +++ /dev/null @@ -1,101 +0,0 @@ -""" -Create a cluster of GPU nodes to perform parallel prediction of tiles -""" -import argparse -import sys -import socket -import subprocess -from dask_jobqueue import SLURMCluster -from dask.distributed import Client -import gc - -def collect(): - gc.collect() - -def args(): - parser = argparse.ArgumentParser( - description='Simple training script for training a RetinaNet network.') - parser.add_argument('--debug', - help='Run local version without GPU', - action='store_true') - parser.add_argument('--workers', help='Number of dask workers', default="4") - parser.add_argument('--memory_worker', help='GB memory per worker', default="10") - - -def find_tiles(): - """Read a yaml describing which sites to run""" - pass - -def start_notebook(): - host = socket.gethostname() - proc = subprocess.Popen(['jupyter', 'lab', '--ip', host, '--no-browser']) - print("ssh -N -L 8888:%s:8888 -l b.weinstein hpg2.rc.ufl.edu" % (host)) - -def start_tunnel(): - """ - Start a juypter session and ssh tunnel to view task progress - """ - host = socket.gethostname() - print("To tunnel into dask dashboard:") - print("For GPU dashboard: ssh -N -L 8787:%s:8787 -l b.weinstein hpg2.rc.ufl.edu" % - (host)) - print("For CPU dashboard: ssh -N -L 8781:%s:8781 -l b.weinstein hpg2.rc.ufl.edu" % - (host)) - - #flush system - sys.stdout.flush() - - -def start(cpus=0, gpus=0, mem_size="10GB"): - ################# - # Setup dask cluster - ################# - - if cpus > 0: - #job args - extra_args = [ - "--error=/orange/idtrees-collab/logs/dask-worker-%j.err", "--account=ewhite", - "--output=/orange/idtrees-collab/logs/dask-worker-%j.out" - ] - - cluster = SLURMCluster(processes=1, - queue='hpg2-compute', - cores=1, - memory=mem_size, - walltime='24:00:00', - job_extra=extra_args, - extra=['--resources cpu=1'], - scheduler_options={"dashboard_address": ":8781"}, - local_directory="/orange/idtrees-collab/tmp/", - death_timeout=300) - - print(cluster.job_script()) - cluster.scale(cpus) - - if gpus: - #job args - extra_args = [ - "--error=/orange/idtrees-collab/logs/dask-worker-%j.err", "--account=ewhite", - "--output=/orange/idtrees-collab/logs/dask-worker-%j.out", "--partition=gpu", - "--gpus=1" - ] - - cluster = SLURMCluster(processes=1, - cores=5, - memory=mem_size, - walltime='24:00:00', - job_extra=extra_args, - extra=['--resources gpu=1'], - nanny=False, - scheduler_options={"dashboard_address": ":8787"}, - local_directory="/orange/idtrees-collab/tmp/", - death_timeout=300) - print(cluster.job_script()) - cluster.scale(gpus) - - dask_client = Client(cluster) - - #Start dask - dask_client.run_on_scheduler(start_tunnel) - - return dask_client diff --git a/src/utils.py b/src/utils.py index d081a0c82..f97675862 100644 --- a/src/utils.py +++ b/src/utils.py @@ -12,25 +12,70 @@ import pandas as pd from torch.utils.data.dataloader import default_collate + +def deep_merge(base: dict, override: dict | None) -> dict: + """Recursively merge ``override`` into a copy of ``base`` (dict values only).""" + if not override: + return base + out = dict(base) + for key, val in override.items(): + if ( + key in out + and isinstance(out[key], dict) + and val is not None + and isinstance(val, dict) + ): + out[key] = deep_merge(out[key], val) + else: + out[key] = val + return out + + +def trainer_accelerator_devices(config: dict) -> tuple[str, int | str | list]: + """Resolve Lightning 2 ``Trainer(accelerator=…, devices=…)`` from config. + + Precedence: explicit ``devices`` (and ``accelerator``), else legacy ``gpus`` + count (``0`` means CPU). ``devices`` may be an int, ``"auto"``, or a list of + GPU indices as accepted by Lightning. + """ + accelerator = config.get("accelerator", "auto") + if config.get("devices") is not None: + devices = config["devices"] + elif "gpus" in config: + devices = config["gpus"] + else: + devices = 1 + if devices in (0, "0"): + return "cpu", 1 + if isinstance(devices, int) and devices < 0: + return "cpu", 1 + return accelerator, devices + + def read_config(config_path): - """Read config yaml file""" - #Allow command line to override + """Read YAML config; merge ``config.local.yml`` from the same directory if present.""" + config_path = os.path.abspath(config_path) parser = argparse.ArgumentParser("DeepTreeAttention config") - parser.add_argument('-d', '--my-dict', type=json.loads, default=None) + parser.add_argument("-d", "--my-dict", type=json.loads, default=None) args = parser.parse_known_args() try: - with open(config_path, 'r') as f: - config = yaml.load(f, Loader=yaml.FullLoader) - + with open(config_path, "r") as f: + config = yaml.load(f, Loader=yaml.FullLoader) or {} except Exception as e: - raise FileNotFoundError("There is no config at {}, yields {}".format( - config_path, e)) - - #Update anything in argparse to have higher priority + raise FileNotFoundError( + "There is no config at {}, yields {}".format(config_path, e) + ) from e + + local_path = os.path.join(os.path.dirname(config_path), "config.local.yml") + if os.path.isfile(local_path): + with open(local_path, "r") as f: + local_cfg = yaml.load(f, Loader=yaml.FullLoader) or {} + config = deep_merge(config, local_cfg) + if args[0].my_dict: - for key, value in args[0].my_dict: + for key, value in args[0].my_dict.items(): config[key] = value - + return config def preprocess_image(image, channel_is_first=False): diff --git a/src/visualize.py b/src/visualize.py index 03f786a81..7a71732d1 100644 --- a/src/visualize.py +++ b/src/visualize.py @@ -59,6 +59,8 @@ def index_to_example(index, test, test_crowns, test_points, rgb_pool, comet_expe return {"sample": image_name, "assetId": results["imageId"]} def confusion_matrix(comet_experiment, results, species_label_dict, test, test_points, test_crowns, rgb_pool): + if comet_experiment is None: + return #Confusion matrix comet_experiment.log_confusion_matrix( results.label.values, diff --git a/src/vst_update.py b/src/vst_update.py new file mode 100644 index 000000000..47959a9d4 --- /dev/null +++ b/src/vst_update.py @@ -0,0 +1,220 @@ +"""Update and compare NEON woody vegetation structure (VST) tables.""" + +from __future__ import annotations + +from dataclasses import dataclass +import os +import shutil +from typing import Dict, Iterable, List + +import pandas as pd + +try: + import neonutilities as nu +except ImportError as exc: # pragma: no cover + nu = None + _IMPORT_ERROR = exc +else: + _IMPORT_ERROR = None + + +VST_DPID = "DP1.10098.001" +STACK_DIR = "filesToStack10098" + + +@dataclass +class VstUpdateResult: + full_df: pd.DataFrame + summary_by_site: pd.DataFrame + new_ids_df: pd.DataFrame + failed_sites: List[str] + + +def _require_neonutilities() -> None: + if nu is None: + raise ImportError( + "neonutilities is required. Install dependencies (e.g. uv sync) and retry." + ) from _IMPORT_ERROR + + +def _normalize_site_list(baseline_df: pd.DataFrame, sites: Iterable[str] | None) -> List[str]: + if sites: + return sorted({str(x) for x in sites if str(x).strip()}) + return sorted({str(x) for x in baseline_df["siteID"].dropna().unique().tolist()}) + + +def _to_dataframe(obj: object, key: str) -> pd.DataFrame: + if isinstance(obj, dict): + return obj.get(key, pd.DataFrame()).copy() + if isinstance(obj, pd.DataFrame): + return obj.copy() + return pd.DataFrame() + + +def _site_latest_vst( + *, + site: str, + startdate: str, + token: str | None, + include_provisional: bool, +) -> pd.DataFrame: + # neonutilities accumulates temporary table files in a fixed folder name. + # Clean it before each site to avoid cross-site contamination. + shutil.rmtree(STACK_DIR, ignore_errors=True) + + obj = nu.load_by_product( + dpid=VST_DPID, + site=site, + startdate=startdate, + tabl="all", + check_size=False, + include_provisional=include_provisional, + progress=False, + token=token, + ) + apparent = _to_dataframe(obj, "vst_apparentindividual") + mapping = _to_dataframe(obj, "vst_mappingandtagging") + perplot = _to_dataframe(obj, "vst_perplotperyear") + + if apparent.empty: + return apparent + + if not mapping.empty: + map_keep = [ + "individualID", + "siteID", + "plotID", + "pointID", + "stemDistance", + "stemAzimuth", + "recordType", + "supportingStemIndividualID", + "previouslyTaggedAs", + "samplingProtocolVersion", + "taxonID", + "scientificName", + "taxonRank", + "identificationReferences", + "morphospeciesID", + "morphospeciesIDRemarks", + "identificationQualifier", + ] + map_use = [x for x in map_keep if x in mapping.columns] + if map_use: + mapping = ( + mapping[map_use] + .drop_duplicates(subset=["individualID", "siteID", "plotID"], keep="last") + ) + apparent = apparent.merge( + mapping, + on=["individualID", "siteID", "plotID"], + how="left", + ) + + if not perplot.empty: + plot_keep = [ + "siteID", + "plotID", + "plotType", + "subtype", + "decimalLatitude", + "decimalLongitude", + "geodeticDatum", + "utmZone", + "easting", + "northing", + "coordinateUncertainty", + "elevation", + "elevationUncertainty", + "nlcdClass", + ] + plot_use = [x for x in plot_keep if x in perplot.columns] + if plot_use: + perplot = perplot[plot_use].drop_duplicates(subset=["siteID", "plotID"], keep="last") + apparent = apparent.merge(perplot, on=["siteID", "plotID"], how="left") + + # Keep compatibility aliases used by existing code paths. + if "decimalLatitude" in apparent.columns and "latitude" not in apparent.columns: + apparent["latitude"] = apparent["decimalLatitude"] + if "decimalLongitude" in apparent.columns and "longitude" not in apparent.columns: + apparent["longitude"] = apparent["decimalLongitude"] + if "geodeticDatum" in apparent.columns and "datum" not in apparent.columns: + apparent["datum"] = apparent["geodeticDatum"] + if "coordinateUncertainty" in apparent.columns and "horzUncert" not in apparent.columns: + apparent["horzUncert"] = apparent["coordinateUncertainty"] + if "elevationUncertainty" in apparent.columns and "vertUncert" not in apparent.columns: + apparent["vertUncert"] = apparent["elevationUncertainty"] + if "easting" in apparent.columns and "itcEasting" not in apparent.columns: + apparent["itcEasting"] = apparent["easting"] + if "northing" in apparent.columns and "itcNorthing" not in apparent.columns: + apparent["itcNorthing"] = apparent["northing"] + + return apparent + + +def update_and_compare_vst( + *, + baseline_csv: str, + startdate: str = "2022-01", + sites: Iterable[str] | None = None, + token: str | None = None, + include_provisional: bool = True, +) -> VstUpdateResult: + """Download latest VST tables and compare against a baseline csv.""" + _require_neonutilities() + + baseline = pd.read_csv(baseline_csv, low_memory=False) + if "individualID" not in baseline.columns or "siteID" not in baseline.columns: + raise ValueError("Baseline CSV must include individualID and siteID columns.") + baseline["individualID"] = baseline["individualID"].astype(str) + baseline["siteID"] = baseline["siteID"].astype(str) + baseline_unique = baseline[["siteID", "individualID"]].drop_duplicates() + baseline_ids = set(baseline_unique["individualID"]) + + run_sites = _normalize_site_list(baseline, sites) + frames: List[pd.DataFrame] = [] + failed_sites: List[str] = [] + for site in run_sites: + try: + df = _site_latest_vst( + site=site, + startdate=startdate, + token=token, + include_provisional=include_provisional, + ) + if df.empty: + df = pd.DataFrame(columns=["siteID", "individualID"]) + if "siteID" not in df.columns: + df["siteID"] = site + if "individualID" not in df.columns: + df["individualID"] = pd.Series(dtype=str) + df["siteID"] = df["siteID"].astype(str) + df["individualID"] = df["individualID"].astype(str) + df = df[df["siteID"] == site] + frames.append(df) + except Exception: + failed_sites.append(site) + frames.append(pd.DataFrame(columns=["siteID", "individualID"])) + + full_df = pd.concat(frames, ignore_index=True) if frames else pd.DataFrame(columns=["siteID", "individualID"]) + full_df["siteID"] = full_df["siteID"].astype(str) + full_df["individualID"] = full_df["individualID"].astype(str) + full_unique = full_df[["siteID", "individualID"]].drop_duplicates() + + new_ids_df = full_unique[~full_unique["individualID"].isin(baseline_ids)].copy() + summary = pd.DataFrame( + { + "baseline_rows_2022": baseline.groupby("siteID").size(), + "new_rows_since_2022": full_df.groupby("siteID").size(), + "baseline_unique_individuals_2022": baseline_unique.groupby("siteID").size(), + "new_unique_individuals_since_2022": full_unique.groupby("siteID").size(), + "new_unique_individualIDs_not_in_2022": new_ids_df.groupby("siteID").size(), + } + ).fillna(0).astype(int).sort_values("new_unique_individualIDs_not_in_2022", ascending=False) + + return VstUpdateResult( + full_df=full_df, + summary_by_site=summary, + new_ids_df=new_ids_df, + failed_sites=failed_sites, + ) diff --git a/tests/conftest.py b/tests/conftest.py index d80d5899c..1709ef885 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,5 +1,4 @@ #Download deepforest before tests start -import comet_ml from deepforest.main import deepforest import geopandas as gpd import os @@ -21,7 +20,8 @@ def pytest_sessionstart(): # prepare something ahead of all tests m = deepforest() - m.use_release() + # DeepForest 2.x API: pull the canonical prebuilt tree detector from HF. + m.load_model(model_name="weecology/deepforest-tree") @pytest.fixture(scope="session") def ROOT(): @@ -80,7 +80,8 @@ def config(ROOT): config["pretrain_state_dict"] = None config["preload_images"] = False config["batch_size"] = 2 - config["gpus"] = 0 + config["accelerator"] = "cpu" + config["devices"] = 1 config["existing_test_csv"] = None config["workers"] = 0 config["dead"]["num_workers"] = 0 @@ -98,14 +99,20 @@ def dm(config, ROOT): @pytest.fixture(scope="session") def experiment(): - if not "GITHUB_ACTIONS" in os.environ: - from pytorch_lightning.loggers import CometLogger - COMET_KEY = os.getenv("COMET_KEY") - comet_logger = CometLogger(api_key=COMET_KEY, - project_name="DeepTreeAttention", workspace="bw4sz",auto_output_logging = "simple") - return comet_logger.experiment - else: + if "GITHUB_ACTIONS" in os.environ: return None + from pytorch_lightning.loggers import CometLogger + + comet_key = os.getenv("COMET_API_KEY") or os.getenv("COMET_KEY") + if not comet_key: + return None + comet_logger = CometLogger( + api_key=comet_key, + project="DeepTreeAttention", + workspace="bw4sz", + auto_output_logging="simple", + ) + return comet_logger.experiment #Training module @pytest.fixture(scope="session") diff --git a/tests/data/annotations.csv b/tests/data/annotations.csv new file mode 100644 index 000000000..1a1d1cab3 --- /dev/null +++ b/tests/data/annotations.csv @@ -0,0 +1,14 @@ +,score,geometry,siteID,individual,taxonID,height,RGB_tile,geo_index,image_path,tile_year,plotID +0,0.5853766202926636,"POLYGON ((725548.3125 4700521, 725548.3125 4700517, 725544 4700517, 725544 4700521, 725548.3125 4700521))",HARV,NEON.PLA.D01.HARV.01066,PIST,18.2,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01066_2019.tif,2019,HARV_001 +1,0.46917757391929626,"POLYGON ((725558.8125 4700524, 725558.8125 4700515, 725550.6875 4700515, 725550.6875 4700524, 725558.8125 4700524))",HARV,NEON.PLA.D01.HARV.01091,QURU,23.3,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01091_2019.tif,2019,HARV_001 +2,0.45030587911605835,"POLYGON ((725566.3125 4700528, 725566.3125 4700519, 725558.125 4700519, 725558.125 4700528, 725566.3125 4700528))",HARV,NEON.PLA.D01.HARV.01031,PIST,25.3,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01031_2019.tif,2019,HARV_001 +3,0.3512050211429596,"POLYGON ((725551.6875 4700529, 725551.6875 4700523.5, 725546.6875 4700523.5, 725546.6875 4700529, 725551.6875 4700529))",HARV,NEON.PLA.D01.HARV.01052,PIST,18.0,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01052_2019.tif,2019,HARV_001 +4,0.35079121589660645,"POLYGON ((725546.9375 4700525.5, 725546.9375 4700522, 725543.75 4700522, 725543.75 4700525.5, 725546.9375 4700525.5))",HARV,NEON.PLA.D01.HARV.01059,ACRU,11.3,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01059_2019.tif,2019,HARV_001 +5,,"POLYGON ((725551.0503090557 4700524.662406297, 725553.0503090557 4700524.662406297, 725553.0503090557 4700526.662406297, 725551.0503090557 4700526.662406297, 725551.0503090557 4700524.662406297))",HARV,NEON.PLA.D01.HARV.01053,BELE,14.9,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01053_2019.tif,2019,HARV_001 +6,,"POLYGON ((725545.6281048183 4700525.384531194, 725547.6281048183 4700525.384531194, 725547.6281048183 4700527.384531194, 725545.6281048183 4700527.384531194, 725545.6281048183 4700525.384531194))",HARV,NEON.PLA.D01.HARV.01058,QURU,23.3,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01058_2019.tif,2019,HARV_001 +7,0.609881579875946,"POLYGON ((725859.5 4700590.5, 725859.5 4700584, 725853.5625 4700584, 725853.5625 4700590.5, 725859.5 4700590.5))",HARV,NEON.PLA.D01.HARV.01659,ACRU,9.7,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01659_2019.tif,2019,HARV_010 +8,0.5967515110969543,"POLYGON ((725869.0625 4700584, 725869.0625 4700576, 725861.3125 4700576, 725861.3125 4700584, 725869.0625 4700584))",HARV,NEON.PLA.D01.HARV.01397,PIST,19.7,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01397_2019.tif,2019,HARV_010 +9,0.35931065678596497,"POLYGON ((725857.5625 4700584, 725857.5625 4700580, 725853.25 4700580, 725853.25 4700584, 725857.5625 4700584))",HARV,NEON.PLA.D01.HARV.01660,QURU,22.6,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01660_2019.tif,2019,HARV_010 +10,0.2981737554073334,"POLYGON ((725851.5625 4700594, 725851.5625 4700590.5, 725848.4375 4700590.5, 725848.4375 4700594, 725851.5625 4700594))",HARV,NEON.PLA.D01.HARV.01865,QURU,23.1,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01865_2019.tif,2019,HARV_010 +11,,"POLYGON ((725857.5444223674 4700590.379984012, 725859.5444223674 4700590.379984012, 725859.5444223674 4700592.379984012, 725857.5444223674 4700592.379984012, 725857.5444223674 4700590.379984012))",HARV,NEON.PLA.D01.HARV.01650,TSCA,15.8,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01650_2019.tif,2019,HARV_010 +12,,"POLYGON ((725866.4697779077 4700583.570931815, 725868.4697779077 4700583.570931815, 725868.4697779077 4700585.570931815, 725866.4697779077 4700585.570931815, 725866.4697779077 4700583.570931815))",HARV,NEON.PLA.D01.HARV.01619,ACRU,7.0,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01619_2019.tif,2019,HARV_010 diff --git a/tests/data/boxes/HARV_001_boxes.cpg b/tests/data/boxes/HARV_001_boxes.cpg new file mode 100644 index 000000000..3ad133c04 --- /dev/null +++ b/tests/data/boxes/HARV_001_boxes.cpg @@ -0,0 +1 @@ +UTF-8 \ No newline at end of file diff --git a/tests/data/boxes/HARV_001_boxes.dbf b/tests/data/boxes/HARV_001_boxes.dbf new file mode 100644 index 0000000000000000000000000000000000000000..3886b9662e153d9607f29c95551ab1fb6705f26e GIT binary patch literal 17780 zcmc&*O>Z1U5KRPEgv0?MPUa7ctE;NNE=U0+IH4#4u9lN5$SARqy%OfaZ|BX`H*Uoc&y!Wd5qrX4?JU@BzJRFx=~EYbV`I{*3ZaC>+D@^Jm<;p+PCh%e{QZ*P7-ygJ^Ue|I?iG5>1Mj>p6G z@#^OK{CK#->#r}5m*-5OUi|Rv#V;4>0_XsMiy4ji`ReWEZ-Z3=}p5G5W z;S@9$1YXus40`N`p3=0*!-rTJWiDd1f8H;1wZ=+G11AcagF#RH(2Fw37LFwo)x^>g zd$CU2P+enHOr6{<_Ow(kgmRRM#A-8F9nsT%<_fo6U_mb-b9-pBU)|Fpf__nRPBm&a zu^0W&OR?WWCHB$FJe6M80D6xbF}lfqv4_826<}CdOG*a4a<^-w)Ylq7yE(sK&y6Gmv0Fn( zcy8-naMT*9_R*jbW0Ahra8zolBn*e3mLRp-*z?pHvClw|(M>G9W6NzupF9~c+GM}j z6X=W*xmF6XlevysBWb@2&=6fwxhCk{AO<~0t&s*=W8|?w z=Wb1cHCEwtHT7^m^e6_{qg(_joU1|4QEO-!I8M@{vBn!*mtZeI^ zqt-~FU-w3_2fp{AV^1nU<*EcYEJ3J^J@(WZh?$=1*MYyM$n-6}UX&Ubi&y3XJ%Te8 zslcTwCUeRvEi zV5xgq20hnIk#=%0p9XG*M7F0kx4QEHKf%!!jJxqnVu?Kgwt4+kj z>VD|O1cjF1vOw)-!&ul+Ym7EAtm5jBsAX^J#o|;U@YA!PcZ!LU&hkYCScc1m)S4& zK=oo3W{Kc?#+esKtpNto%|z^0HE68pjW;)%^ZTJUHw`RMA^cGIj59BeS_4Y0o4KQ& zJL}wDro&@#<9pzFT;M9F0=j22*HLR=C#oBJwvN4vJ(xp}fm-UM<5UPUa7Z-*Um;QJ zv52GAfZN&iSkO(HOkB{*#zS7vvs**^WiD62BPkL%+Fb&1)EaO{yIn&E9t-yUw)F5} zf6p+S9nnM0Q!Us&6R0)QbA7c&7d@7b|XT>FWH&3;x;M}!!BJ~ql>oc)f@L7+ z4a@gDwFdT5dJF_?xyi&eb4S|5FZQ?=!nFzP%VRKU_xIFMYv>3Kvm3CW7Y9nsQEQ;q zVT~o$l1k!WVox2l2I^kd?X)}aYwQi~3W2dS3}?5l0j7*K465n0Qef(yI%*AUR`fG> zFjI>Ij|E<|A9_JxkV5QAB(>-{YK@UQI-2K>ylC)4KlBLKHSjmbTo-F-ZO>IltueFW z9%He7-IBSuE40yR4|j`fkKQqJ2{)~P9Dy=-x`w0Hh@&lTQ^ywcMz>uYbuLTA-A*o8 zWr0vLT0rv=Ei|KY7ID4U8j9G4IiKl1?PtzhfK=YCkU~c?MHRg8py=1&b9n) zse40*%1@~=z{6+*J3v(unVuURwFbIC!!*{ZkoECSTR;gsu-BtKwFU$luGZ5$R)a;= zGM4D5HK5eGnQOPWm)L{9w*_zY_dI*D`Z#g<@4cvBVs{QJ;8@F>sj|aNg@WcIjE=)ZxxND`D=0=;j9$Mqee*oED B1T6pn literal 0 HcmV?d00001 diff --git a/tests/data/boxes/HARV_001_boxes.shp b/tests/data/boxes/HARV_001_boxes.shp new file mode 100644 index 0000000000000000000000000000000000000000..43b91d130ce27c4465aa75dc40608ce5809ce0a5 GIT binary patch literal 7580 zcmZ{o*Y4j$5QUfC6M8QOLPGE52806v5qg9YLPCgXqKGO)6~zJ}(H_E&vQNM>_>wE0 zfi35=X6L`;CiyZm$H!Y{*S`?7$7yjg3_soYux!%jS#I$ZkHy{TfS+?ea|J`AElyjb&Xi^WwGOqGj^o(~Xb$V0|uQ zIUf>t=B0@xjg2)gJG9W&JZ$;mJmt(we5*cpd83Zq{7L1Q*P2@&O)UFRF120@E?OoZ zKGXOZ-_>*VPVqC1$BCUjnpo0+qiVetJY+4C51(axOyAY#uF_h57k7L#v81uFYQ5IR z^0DQM&$d2JXgrQq&&$V^L)Lcl(!{b4_=xHk)2r3T@O<^LWNqi8 zi6sq~TCW8cEt3!DUdcM8*Pu1XSJ#J)WnK3UUJK^A}^it(D_eeJ{O)P1^k@exV#6`>G!xtDI<45vAU;n;x==8D0 z#*zjcRqM6jqGj^oUB<`qvwWzp&wo~)I(@x~B@LLq?zP~eW%A+O*2jDGxuf=U_`LF* z`>UImCYCf{Y8R&k7cG+yUub-+-_++0`Tf)XFF#cdc^^9;P0Zv{>$TvbW%A*RjE|_^ zv&zTxPW2HxKAKq4fT{IbaM3dP@WsZ*^rqflKGydu7i~8lO)P1^fp>6PXycQ7_!8qI z{#c(o=q@+weCeLIHkLHVrPgb~oUi1=ml_{4_b=TE;#7T2opY{lUTY%FQa;%z*f7TUZ&`S9h&$MCdy|MdUMk;+Tw9@NB4F7M~H;G$*n z;VX=fpgulot%c*&$J*I1O)P1^TdmjPjL=z5e$h_lR~jGlT%S9$U;fZ|bbPEfmNZ~$ zy%xO42l?<-#z*+NJ~z@&TffVWz&B`#VfAHLf7Sk;RcdVuby#k1=llZ_>f zjTuX)wP|ZSwtVq5*2m+T7xwLwl|yge+E~(v;#sw;(}IhZ$%n5sKDaY&T8~v9W5>s8 zV@U(1)@#8<%jCn?86VT(`rK9bvFW6IAN z?_OwQ`TfMydM&tUnSA&L<0Gn%ZR_-fIv#Up-%d7`G+=7I7F@JUK0Fv7>sR%;QEPZ$ zZ+7mdO)P1^)OsyA=-x;^e53WD`xk3?{I>cEo%>i5%NpdW_pDB9V|_bs`Qn?5kN9GJ z?!>;;`O@1j(Z-Snyw!RwG5dpj_-5l{{Z#X!d-9-nEOYMmOA|{PF!yAy1+#w0hxZsC z!*A8cN?+$UuFkw{zkg|5VQRe=99=$qi}A7Q?t)f)Tl3U8Uz%9bfT{Ib@T9vQ`S4!r zL%*#}tmy;Q$C&$xpBEcT8iSbH)oH;+%jCoRjE_OJtJVkKq-#FAoR21!HT2sWwO(su zor7Dx_*UbCyKK-m>h_J+=^srjX~5KaEjVhd$%k*VK1Qtv`Je|59Uo0BX}}Y;UQ1lG zOg?M8FpeORpv1DyGFHJ0Iz|=;k1s5%o58q*YOj;jN`*z~Dmd?IyVp&(YTdmg; zFWR@{!*?1VQQwiX&X@IrIzB^ZJepY2fT{IbaM3dP@Lk47kmpf*oI6zP^p7T%b#?!u z)@#8<%jCm%8y~}SS|6-w{YGBy6mEUYHkLGC*1y++iet&J04NL2ld9IiDg~oG9F$F=KaZs?=wE4?pXB1^_A*t?uUJEW-CLg}v_?UF=587Mt%jzR^)@c(<8Zfn93ocqFAAZ3281$_e{JEdmty9i< z`UOm_*MfaM{Gjm>^o>SO95fztr++lDqybawwcw&<^5KV!k4fM6toc#*kD;?ZnpoCQ zF120@E?OoZe%Sbk+{g6&!dS=7_e&E?8t|%GuLTz^lMg>)e1u=LZ#iG&YwDdZHkLFd OG4t)U;G$*n3;zd1Ww=WK literal 0 HcmV?d00001 diff --git a/tests/data/boxes/HARV_001_boxes.shx b/tests/data/boxes/HARV_001_boxes.shx new file mode 100644 index 0000000000000000000000000000000000000000..e22bbe47175764d16b6763676069e2bbe13789d6 GIT binary patch literal 540 zcmZ|LA!q_|6vy%ZdETkFdC_1n$q5F-f?_y%2Ibrv%htv40gGsQ}D)Z?Wf|a#^ffM zv;TPV7OvMlT;rdpz2FEBV!*~KPVp$}32fmU&tfoxU0mT+H1asay=eMBag{R5IKfXb z6vqb6@JkG*v4cze6(i3$z@2EBSi(2_5FcV#$9Fu5j}EqRffq5F#XfFCJAg%e^}PW& CV=}J* literal 0 HcmV?d00001 diff --git a/tests/data/boxes/HARV_010_boxes.cpg b/tests/data/boxes/HARV_010_boxes.cpg new file mode 100644 index 000000000..3ad133c04 --- /dev/null +++ b/tests/data/boxes/HARV_010_boxes.cpg @@ -0,0 +1 @@ +UTF-8 \ No newline at end of file diff --git a/tests/data/boxes/HARV_010_boxes.dbf b/tests/data/boxes/HARV_010_boxes.dbf new file mode 100644 index 0000000000000000000000000000000000000000..9aad5bdd1e4d2f2ccbb82a7d2aaebf81aa6f3523 GIT binary patch literal 19052 zcmc&+%Who95tZOPpe|UTQ;g?_k%g?{LeR+Dbzrok-;YEM5$A^bk@7|yGf2iN@<+~3zcdsueT%P~* z@rC{IyKld`Ip4i$Z*h75SBK~Scy)D^eJt5;$w&9I+ZAW$VvXBy)VY3s*~Zh|etxOP z^Z)Vwbi#-H);G5$&N0UB7t$?%$_Z=ZEWW zPN)C0ulD8ne7Zm1y}Q3YpB`}h_3iog+B>Q@fBW*gA8yhO&;cqp4UP7A_xAQ*r<-=d zcE0;3KD411!xl&QI(qJiMn7Mm)Y0SZ@+lwh)}iNWDHL-pIaW>rJu*ZuZwcSxCnsJvKxy>F7x`dflUKO!UW0 zNBtaAcPV;-8OiG+`7B~D+MyT9R+P+5PGsVa9>;AweMc`jXP3D?r4my_?q(Nc>?J$& z5^o%ou2Dq~-O)pLsM`4@8lvZN_3Sz2Qk)mDm+jEwybaia*InvZ5p}F*ZaAXU&lks+ zWiIF7Gk$|i1kw@&dc_XC9MztioM0e5_JFF^bE{xD>(GlKyOg{qA2JnzUbRE7@wc%J zTw*D?iPlI}kJSn$Gu{@WM}+vx8GWNx(KX0YYv^4AB>vb#_t;BwZ8Czljx94MVhYJq zb)F@9hFSwXcTB{`x;Nu{VIw70qtqtrV$Y*#xa>>yR4VlMcq2ot5xvS-8X5=w*1Ja1 zdu}%D8U&Rapwp5ou8OWfmRbX`GzhiF*el06wxh>M?;1s9`nuS2gr*kJHyE8mbPY1p z8ZoJk6GV_6d&&LoT_e;KN(qrFWuIi-Gt?UBp}&&-cE-YbrWfI8EsMQSL#VM!6Fu|^ zJ^g&L%iN5i2Ibsl8-)aV-cW0Rr)i93>QI3PYMI-5^jP-RX^oJJuaQb<*d@XDyrI@W zwb%T;h^}$y0#7|xLmTYtc>cP&mlF~fMvD(zrMK)2wFWX*^-R)?ExT>B_j->8dUmk~ zZCNOAVNkw$tb5*4Yml0W7#bYW=yfmZJzB=(C<*l?3QKIbu=wf}z%cw>(-bd+g0!0-ar(x&$s|>`?jEb4wAM7{O3$V53Zpz1bd1 zgcGI3UbS=PeTBCIu^rjv5CmHehFSyDZFT!`rZvzVG=A8o=LcoCEOUK{*Z@M?MS>(H za}BjdoJ_;Pq7P{7bq~9yDthSAR&@{PfhPL^V?MKV34)>4m^oBH?|?>U%TD(LlVH&c zV~@N?xxsJOXSsUJ;OZ~pK~FONZZ0#$2hWOHq;uE%uQ}m_gM7S9X)iJL#8i`Js9#(x)m3_ zK&lD!47COaHI~};;{lBxdrptlYR8t5wGN8}5t~546^Wjq)|kW|%F3~h?dXL%^<)lc zuZz7%sm;Q%#Zt-3%r(>+aHv%FD|=|~xswevLzln@k4x1s&xOEARZNB0Qfo{$E96F5 zM{njT*trBgVD&KR-q=uUfPv_{0h781Kk$&Dd)EMCIUHY?xxR!%jzp80~Jv4JvP)DaHw>*Qz)+;y_vsfS@+(Im6GWH)iG~&l%mmnHy4b-bqczxU*RnePfuE_Lt=%HOOEIveD z%F>~VhFSw&%4l{zq9=N2uX|x~zMWFT)oBr%7;p*NwN`?$L_@8CYOkU<(;AJLj4$Xq z*KQ(-^`GEi4^R#5r(@lVmRe(WmET0Ef$xp02aj_Qab4T8%q7@TCAS?aLIBFTXQ(wM zyQ5f8(seHCq=sJGezfxUs6_M(4h4J5NCOdjhFSwxH)~x(xz>BHdq8ze++HUQ9V+bH zVw8)LhoKt&M1erhP;1OQ7U_2G=rxaJ6dQZp!!DLx>=BIRcBPdAXBG}sG}IcXV|wg~ lOzeCQe?wz5m!H`6f#IyHd(Bre9qRx9 literal 0 HcmV?d00001 diff --git a/tests/data/boxes/HARV_010_boxes.shp b/tests/data/boxes/HARV_010_boxes.shp new file mode 100644 index 0000000000000000000000000000000000000000..b456ed5bff6fce6959a396320883ed34c69ac262 GIT binary patch literal 8124 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 literal 0 HcmV?d00001 diff --git a/tests/data/canopy_points.shp b/tests/data/canopy_points.shp new file mode 100644 index 0000000000000000000000000000000000000000..64e2314cc4f61e44a672db4ddce2bb97b0162fa4 GIT binary patch literal 520 zcmZQzQ0HR63K&^lFf%YP0_C12WiJa+QFGku*R((KU7+KgU2Pw(si`@Ztq8o44di3h zjw%Q;h6_Z<`W_1^2AUOledm@ah+Za`+=RUobMk<4asnzlqakuY7eMqC?mE6d4k(w! z6k-gOV}Z$?l0GDv0F+C*o00{UV};3OeVOJM3Y6QWF=qx;jtwRU^Ow9=<_V}<*kN)z zMOuy^`xz+C0h7yr^IS0%Xr}tKW$I9UoG>|?)hnc~0>kE+Ta05S#1EkG1^XQqZZlN7 zRI(s)+%P%6_I+YUQNxr6Cg-#E?Z<;axv)c`xlnz)Fu7Axxfl-t%8&IxCQtbdp4gdnYdnEt> literal 0 HcmV?d00001 diff --git a/tests/data/canopy_points.shx b/tests/data/canopy_points.shx new file mode 100644 index 0000000000000000000000000000000000000000..c1cabdccef3f9185ae6a290669ae6724a8c419bb GIT binary patch literal 220 zcmZQzQ0HR64)R_wGcYg$<(?*GFAGsobKL9Kv_JA)pyQogZ6B_wsX3Od2)vOEP>y0cqhH%K!iX literal 0 HcmV?d00001 diff --git a/tests/data/novel_species.csv b/tests/data/novel_species.csv new file mode 100644 index 000000000..0f49c959b --- /dev/null +++ b/tests/data/novel_species.csv @@ -0,0 +1,3 @@ +,score,geometry,siteID,individual,taxonID,height,RGB_tile,geo_index,image_path,tile_year,plotID +5,,"POLYGON ((725551.0503090557 4700524.662406297, 725553.0503090557 4700524.662406297, 725553.0503090557 4700526.662406297, 725551.0503090557 4700526.662406297, 725551.0503090557 4700524.662406297))",HARV,NEON.PLA.D01.HARV.01053,BELE,14.9,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01053_2019.tif,2019,HARV_001 +11,,"POLYGON ((725857.5444223674 4700590.379984012, 725859.5444223674 4700590.379984012, 725859.5444223674 4700592.379984012, 725857.5444223674 4700592.379984012, 725857.5444223674 4700590.379984012))",HARV,NEON.PLA.D01.HARV.01650,TSCA,15.8,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01650_2019.tif,2019,HARV_010 diff --git a/tests/data/test.csv b/tests/data/test.csv new file mode 100644 index 000000000..5e63a336a --- /dev/null +++ b/tests/data/test.csv @@ -0,0 +1,7 @@ +score,geometry,siteID,individual,taxonID,height,RGB_tile,geo_index,image_path,tile_year,plotID,point_id,label,site +0.5853766202926636,"POLYGON ((725548.3125 4700521, 725548.3125 4700517, 725544 4700517, 725544 4700521, 725548.3125 4700521))",HARV,NEON.PLA.D01.HARV.01066,PIST,18.2,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01066_2019.tif,2019,HARV_001,0,1,0 +0.46917757391929626,"POLYGON ((725558.8125 4700524, 725558.8125 4700515, 725550.6875 4700515, 725550.6875 4700524, 725558.8125 4700524))",HARV,NEON.PLA.D01.HARV.01091,QURU,23.3,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01091_2019.tif,2019,HARV_001,1,2,0 +0.45030587911605835,"POLYGON ((725566.3125 4700528, 725566.3125 4700519, 725558.125 4700519, 725558.125 4700528, 725566.3125 4700528))",HARV,NEON.PLA.D01.HARV.01031,PIST,25.3,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01031_2019.tif,2019,HARV_001,2,1,0 +0.3512050211429596,"POLYGON ((725551.6875 4700529, 725551.6875 4700523.5, 725546.6875 4700523.5, 725546.6875 4700529, 725551.6875 4700529))",HARV,NEON.PLA.D01.HARV.01052,PIST,18.0,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01052_2019.tif,2019,HARV_001,3,1,0 +0.35079121589660645,"POLYGON ((725546.9375 4700525.5, 725546.9375 4700522, 725543.75 4700522, 725543.75 4700525.5, 725546.9375 4700525.5))",HARV,NEON.PLA.D01.HARV.01059,ACRU,11.3,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01059_2019.tif,2019,HARV_001,4,0,0 +,"POLYGON ((725545.6281048183 4700525.384531194, 725547.6281048183 4700525.384531194, 725547.6281048183 4700527.384531194, 725545.6281048183 4700527.384531194, 725545.6281048183 4700525.384531194))",HARV,NEON.PLA.D01.HARV.01058,QURU,23.3,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01058_2019.tif,2019,HARV_001,6,2,0 diff --git a/tests/data/train.csv b/tests/data/train.csv new file mode 100644 index 000000000..adf20a53c --- /dev/null +++ b/tests/data/train.csv @@ -0,0 +1,6 @@ +score,geometry,siteID,individual,taxonID,height,RGB_tile,geo_index,image_path,tile_year,plotID,point_id,label,site +0.609881579875946,"POLYGON ((725859.5 4700590.5, 725859.5 4700584, 725853.5625 4700584, 725853.5625 4700590.5, 725859.5 4700590.5))",HARV,NEON.PLA.D01.HARV.01659,ACRU,9.7,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01659_2019.tif,2019,HARV_010,7,0,0 +0.5967515110969543,"POLYGON ((725869.0625 4700584, 725869.0625 4700576, 725861.3125 4700576, 725861.3125 4700584, 725869.0625 4700584))",HARV,NEON.PLA.D01.HARV.01397,PIST,19.7,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01397_2019.tif,2019,HARV_010,8,1,0 +0.35931065678596497,"POLYGON ((725857.5625 4700584, 725857.5625 4700580, 725853.25 4700580, 725853.25 4700584, 725857.5625 4700584))",HARV,NEON.PLA.D01.HARV.01660,QURU,22.6,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01660_2019.tif,2019,HARV_010,9,2,0 +0.2981737554073334,"POLYGON ((725851.5625 4700594, 725851.5625 4700590.5, 725848.4375 4700590.5, 725848.4375 4700594, 725851.5625 4700594))",HARV,NEON.PLA.D01.HARV.01865,QURU,23.1,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01865_2019.tif,2019,HARV_010,10,2,0 +,"POLYGON ((725866.4697779077 4700583.570931815, 725868.4697779077 4700583.570931815, 725868.4697779077 4700585.570931815, 725866.4697779077 4700585.570931815, 725866.4697779077 4700583.570931815))",HARV,NEON.PLA.D01.HARV.01619,ACRU,7.0,/Users/benweinstein/Projects/DeepTreeAttention/tests/data/2019_HARV_6_725000_4700000_image_2019.tif,725000_4700000,NEON.PLA.D01.HARV.01619_2019.tif,2019,HARV_010,12,0,0 diff --git a/tests/test_dead.py b/tests/test_dead.py index eb76edff3..4eeb94a39 100644 --- a/tests/test_dead.py +++ b/tests/test_dead.py @@ -27,6 +27,3 @@ def test_predict(ROOT, config): predictions = trainer.predict(m, m.predict_dataloader(ds)) predictions = np.concatenate(predictions) assert predictions.shape[1] == 2 - - #Produces non-unique predictions - assert not len(np.unique(predictions[:,1])) == 1 diff --git a/tests/test_generate.py b/tests/test_generate.py index c6c9c74e1..7cebeacc0 100644 --- a/tests/test_generate.py +++ b/tests/test_generate.py @@ -7,19 +7,24 @@ import rasterio import pytest import os -import distributed import numpy as np def test_predict_trees(rgb_path, plot_data): m = main.deepforest() - m.use_release(check_release=False) + if hasattr(m, "load_model"): + m.load_model(model_name="weecology/deepforest-tree") + else: + m.use_release(check_release=False) boxes = generate.predict_trees(deepforest_model=m, rgb_path=rgb_path, bounds=plot_data.total_bounds) assert not boxes.empty def test_empty_plot(rgb_path, plot_data): #DeepForest prediction deepforest_model = main.deepforest() - deepforest_model.use_release(check_release=False) + if hasattr(deepforest_model, "load_model"): + deepforest_model.load_model(model_name="weecology/deepforest-tree") + else: + deepforest_model.use_release(check_release=False) boxes = generate.predict_trees(deepforest_model=deepforest_model, rgb_path=rgb_path, bounds=plot_data.total_bounds) #fake offset boxes by adding a scalar to the geometry @@ -49,7 +54,10 @@ def test_empty_plot(rgb_path, plot_data): def test_process_plot(rgb_pool, sample_crowns): df = gpd.read_file(sample_crowns) deepforest_model = main.deepforest() - deepforest_model.use_release(check_release=False) + if hasattr(deepforest_model, "load_model"): + deepforest_model.load_model(model_name="weecology/deepforest-tree") + else: + deepforest_model.use_release(check_release=False) merged_boxes, boxes = generate.process_plot(plot_data=df, rgb_pool=rgb_pool, deepforest_model=deepforest_model) assert df.shape[0] >= merged_boxes.shape[0] @@ -68,30 +76,6 @@ def test_run(tmpdir, sample_crowns, rgb_pool): assert len(glob.glob("{}/*.shp".format(tmpdir))) > 0 -def test_generate_crops_dask(tmpdir, ROOT, rgb_path, sample_crowns): - client = distributed.Client() - gdf = gpd.read_file(sample_crowns) - gdf.geometry = gdf.geometry.buffer(1) - gdf["RGB_tile"] = rgb_path - gdf["box_id"] = gdf.index - - annotations = generate.generate_crops( - gdf=gdf, - client=client, - rgb_glob="{}/tests/data/*.tif".format(ROOT), - convert_h5=False, - sensor_glob="{}/tests/data/*.tif".format(ROOT), - savedir=tmpdir) - - assert len(annotations.tile_year.unique()) == 2 - all_years = annotations.groupby("individual").apply(lambda x: x.individual.value_counts()).reset_index(drop=True) == 2 - assert all(all_years) - - #make sure the correct resolution, should be a large image - image_path = os.path.join(tmpdir, annotations.image_path.iloc[0]) - assert rasterio.open(image_path).read().shape[1] > 0 - - def test_generate_crops(tmpdir, ROOT, rgb_path, sample_crowns): gdf = gpd.read_file(sample_crowns) gdf.geometry = gdf.geometry.buffer(1) @@ -105,9 +89,9 @@ def test_generate_crops(tmpdir, ROOT, rgb_path, sample_crowns): sensor_glob="{}/tests/data/*.tif".format(ROOT), savedir=tmpdir) - assert len(annotations.tile_year.unique()) == 2 - all_years = annotations.groupby("individual").apply(lambda x: x.individual.value_counts()).reset_index(drop=True) == 2 - assert all(all_years) + assert len(annotations.tile_year.unique()) == 2 + per_tree = annotations.groupby("individual").size() + assert per_tree.eq(2).all() #make sure the correct resolution, should be a large image image_path = os.path.join(tmpdir, annotations.image_path.iloc[0]) diff --git a/tests/test_osbs_inference.py b/tests/test_osbs_inference.py new file mode 100644 index 000000000..31ab15995 --- /dev/null +++ b/tests/test_osbs_inference.py @@ -0,0 +1,48 @@ +import os +import shutil + +import geopandas as gpd +import pytest +import rasterio +from shapely.geometry import box + +from src.pipelines import osbs_inference + + +def test_list_osbs_tiles_intersecting_aoi(tmp_path): + source_tile = os.path.join( + os.path.dirname(__file__), "data", "2019_D01_HARV_DP3_726000_4699000_image_crop_2019.tif" + ) + tile_dir = tmp_path / "OSBS" / "2025" / "Camera" + tile_dir.mkdir(parents=True) + target = tile_dir / "2025_D03_OSBS_DP3_726000_4699000_image_crop_2025.tif" + shutil.copy(source_tile, target) + + with rasterio.open(target) as src: + tile_poly = box(*src.bounds) + crs = src.crs + + aoi = gpd.GeoDataFrame({"id": [1]}, geometry=[tile_poly], crs=crs) + pattern = str(tmp_path / "OSBS" / "**" / "Camera" / "*.tif") + tiles = osbs_inference.list_osbs_tiles_intersecting_aoi( + rgb_sensor_pool=pattern, + site="OSBS", + year=2025, + aoi=aoi, + ) + assert len(tiles) == 1 + assert os.path.basename(tiles[0]) == target.name + + +def test_run_osbs_inference_requires_block(tmp_path): + cfg = tmp_path / "config.yml" + cfg.write_text("comet_workspace: x\n", encoding="utf-8") + with pytest.raises(ValueError, match="inference_osbs"): + osbs_inference.run_osbs_inference(config_path=str(cfg)) + + +def test_run_osbs_inference_requires_keys(tmp_path): + cfg = tmp_path / "config.yml" + cfg.write_text("inference_osbs: {}\n", encoding="utf-8") + with pytest.raises(ValueError, match="year"): + osbs_inference.run_osbs_inference(config_path=str(cfg)) diff --git a/tests/test_osbs_mortality.py b/tests/test_osbs_mortality.py new file mode 100644 index 000000000..bc0d9a449 --- /dev/null +++ b/tests/test_osbs_mortality.py @@ -0,0 +1,111 @@ +import geopandas as gpd +import pandas as pd +import pytest +import rasterio +from shapely.geometry import box + +from src.pipelines import osbs_mortality + + +def test_parse_tile_id_from_neon_rgb_filename(): + path = "/tmp/2025_D03_OSBS_DP3_404000_3284000_image_crop_2025.tif" + assert osbs_mortality.parse_tile_id(path) == "404000_3284000" + + +def test_parse_tile_id_requires_neon_rgb_pattern(): + with pytest.raises(ValueError, match="Could not parse"): + osbs_mortality.parse_tile_id("/tmp/not_a_neon_tile.tif") + + +def test_summarize_tile_crowns_counts_alive_dead_and_unknown(): + crowns = gpd.GeoDataFrame( + { + "dead_label": [1, 1, 0, None, "dead"], + "dead_score": [0.96, 0.4, 0.99, 0.99, None], + }, + geometry=[box(i, 0, i + 1, 1) for i in range(5)], + crs="EPSG:32617", + ) + + summary = osbs_mortality.summarize_tile_crowns( + crowns, + tile_path="/tmp/2017_D03_OSBS_DP3_404000_3284000_image.tif", + year=2017, + dead_threshold=0.95, + ) + + assert summary["tile_id"] == "404000_3284000" + assert summary["total_count"] == 5 + assert summary["dead_count"] == 2 + assert summary["alive_count"] == 2 + assert summary["unknown_count"] == 1 + assert summary["dead_fraction"] == 0.4 + + +def test_compare_year_counts_flags_high_mortality(): + counts = gpd.GeoDataFrame( + [ + { + "tile_id": "404000_3284000", + "year": 2017, + "total_count": 10, + "alive_count": 8, + "dead_count": 2, + "unknown_count": 0, + "dead_fraction": 0.2, + }, + { + "tile_id": "404000_3284000", + "year": 2025, + "total_count": 11, + "alive_count": 5, + "dead_count": 6, + "unknown_count": 0, + "dead_fraction": 6 / 11, + }, + ], + geometry=[box(404000, 3284000, 405000, 3285000)] * 2, + crs="EPSG:32617", + ) + + changes = osbs_mortality.compare_year_counts( + counts, + baseline_year=2017, + comparison_year=2025, + high_mortality_dead_change=3, + ) + + assert changes.shape[0] == 1 + row = changes.iloc[0] + assert row["dead_count_change"] == 4 + assert row["alive_count_change"] == -3 + assert bool(row["high_mortality"]) is True + + +def test_write_metric_raster_uses_tile_values(tmp_path): + tiles = gpd.GeoDataFrame( + { + "tile_id": ["404000_3284000", "405000_3284000"], + "dead_count": [6, 2], + }, + geometry=[ + box(404000, 3284000, 405000, 3285000), + box(405000, 3284000, 406000, 3285000), + ], + crs="EPSG:32617", + ) + output = tmp_path / "dead_count.tif" + + osbs_mortality.write_metric_raster( + tiles, + metric="dead_count", + output_path=str(output), + resolution=1000, + ) + + with rasterio.open(output) as src: + data = src.read(1) + assert src.width == 2 + assert src.height == 1 + assert src.tags()["metric"] == "dead_count" + assert set(pd.Series(data.flatten()).dropna().astype(int)) == {2, 6} diff --git a/tests/test_predict.py b/tests/test_predict.py index 7f8e54eb1..01a847310 100644 --- a/tests/test_predict.py +++ b/tests/test_predict.py @@ -25,8 +25,10 @@ def test_predict_tile(species_model_path, config, ROOT, tmpdir): rgb_path = "{}/tests/data/2019_D01_HARV_DP3_726000_4699000_image_crop_2019.tif".format(ROOT) config["HSI_sensor_pool"] = "{}/tests/data/hsi/*.tif".format(ROOT) config["CHM_pool"] = None - config["prediction_crop_dir"] = tmpdir - + config["prediction_crop_dir"] = tmpdir + # Skip HuggingFace cropmodel path in DeepForest 2.x (BoundingBoxDataset/collate_fn API churn). + config["deepforest_dead_cropmodel_name"] = None + dead_model = dead.AliveDead(config) trainer = Trainer(fast_dev_run=True) trainer.fit(dead_model) diff --git a/train.py b/train.py index c0198c22d..acec0f80f 100644 --- a/train.py +++ b/train.py @@ -1,142 +1,273 @@ -#Train +# Train +from __future__ import annotations + +import argparse +import os +import sys + import comet_ml -import glob +from dotenv import load_dotenv import geopandas as gpd -import os import numpy as np -from src import main -from src import data -from src import start_cluster -from src.models import multi_stage -from src import visualize -from src import metrics -import subprocess -import sys -from pytorch_lightning import Trainer -from pytorch_lightning.loggers import CometLogger -from pytorch_lightning.callbacks import LearningRateMonitor import pandas as pd +import yaml from pandas.util import hash_pandas_object +from pytorch_lightning import Trainer +from pytorch_lightning.callbacks import LearningRateMonitor +from pytorch_lightning.loggers import CometLogger + +from src import data, utils +from src import experiment_tracking +from src.models import multi_stage +from src.local_smoke_logger import LocalSmokeLogger + + +def _build_parser() -> argparse.ArgumentParser: + p = argparse.ArgumentParser( + description="DeepTreeAttention training driver", + epilog="Experiment identity defaults to DEEPTREE_EXPERIMENT_NAME, COMET_EXPERIMENT_NAME, " + "or SLURM_JOB_ID; git metadata is detected automatically.", + ) + p.add_argument( + "--config", + default="config.yml", + help="Base config YAML (merged with config.local.yml in the same directory if present)", + ) + p.add_argument( + "--overrides", + default=None, + help="Optional YAML file merged last (e.g. config.smoke.example.yml for capped batches)", + ) + p.add_argument( + "--experiment-name", + "-n", + default=None, + help="Comet experiment display name (also set DEEPTREE_EXPERIMENT_NAME for SLURM)", + ) + p.add_argument( + "--git-branch", + default=None, + help="Override auto-detected git branch for logging (rare)", + ) + p.add_argument( + "--git-sha", + default=None, + help="Override auto-detected git SHA for logging (rare)", + ) + return p + + +def _make_logger(config: dict, *, experiment_name: str): + load_dotenv() + use_comet = config.get("use_comet", True) + has_key = bool(os.getenv("COMET_API_KEY") or os.getenv("COMET_KEY")) + if use_comet and has_key: + return CometLogger( + project="DeepTreeAttention2", + workspace=config["comet_workspace"], + auto_output_logging="simple", + name=experiment_name, + ) + return LocalSmokeLogger() + + +def main_train() -> None: + args = _build_parser().parse_args() + + config_path = os.path.abspath(args.config) + repo_root = os.path.dirname(config_path) + git_root = ( + repo_root if repo_root and os.path.isdir(os.path.join(repo_root, ".git")) else os.getcwd() + ) + git_meta = experiment_tracking.git_metadata(git_root) + if args.git_branch: + git_meta["git_branch"] = args.git_branch + if args.git_sha: + git_meta["git_sha"] = args.git_sha + git_meta["git_short_sha"] = args.git_sha[:7] if len(args.git_sha) > 7 else args.git_sha + + experiment_name = experiment_tracking.comet_display_name(args.experiment_name, git_meta) + print("[train] experiment_name={}".format(experiment_name), flush=True) + + config = utils.read_config(config_path) + if args.overrides: + with open(os.path.abspath(args.overrides), "r") as f: + config = utils.deep_merge(config, yaml.load(f, Loader=yaml.FullLoader) or {}) + + comet_logger = _make_logger(config, experiment_name=experiment_name) + + if config["use_data_commit"]: + config["crop_dir"] = os.path.join(config["data_dir"], config["use_data_commit"]) + else: + crop_dir = os.path.join(config["data_dir"], comet_logger.experiment.get_key()) + os.makedirs(crop_dir, exist_ok=True) + config["crop_dir"] = crop_dir + + # macOS + fork/spawn: DataLoader workers>0 often stalls indefinitely before the first step. + if sys.platform == "darwin": + w = int(config.get("workers") or 0) + if w > 0: + print( + "[train] macOS: forcing DataLoader workers=0 (was {}). " + "num_workers>0 commonly hangs here; set workers: 0 in config.yml to silence." + .format(w), + flush=True, + ) + config["workers"] = 0 + + client = None + + comet_logger.experiment.log_parameter("experiment_name", experiment_name) + comet_logger.experiment.log_parameter("git_branch", git_meta["git_branch"]) + comet_logger.experiment.add_tag(git_meta["git_branch"]) + comet_logger.experiment.log_parameter("git_sha", git_meta["git_sha"]) + comet_logger.experiment.log_parameter("git_short_sha", git_meta["git_short_sha"]) + comet_logger.experiment.log_parameter("git_dirty", bool(git_meta["git_dirty"])) + comet_logger.experiment.log_parameters(config) + + if isinstance(comet_logger, CometLogger): + exp = comet_logger.experiment + try: + exp.log_asset_data( + yaml.safe_dump(config, sort_keys=False, default_flow_style=False), + file_name="config.merged.yml", + ) + except Exception as exc: + print("[train] warning: could not log config asset to Comet: {}".format(exc), flush=True) + if git_meta.get("git_diff_head"): + try: + exp.log_asset_data( + git_meta["git_diff_head"], + file_name="git_diff_uncommitted.patch", + ) + except Exception as exc: + print("[train] warning: could not log git diff asset: {}".format(exc), flush=True) + try: + exp.log_code(folder=os.path.join(git_root, "src"), name="src") + except Exception as exc: + print("[train] warning: comet log_code(src) failed: {}".format(exc), flush=True) + + vst_csv = config.get("raw_vst_csv") or "data/raw/neon_vst_data_2022.csv" + data_module = data.TreeData( + csv_file=vst_csv, + data_dir=config["crop_dir"], + config=config, + client=client, + metadata=True, + comet_logger=comet_logger, + ) + + comet_logger.experiment.log_parameter("train_hash", hash_pandas_object(data_module.train)) + comet_logger.experiment.log_parameter("test_hash", hash_pandas_object(data_module.test)) + comet_logger.experiment.log_parameter("num_species", data_module.num_classes) + comet_logger.experiment.log_table("train.csv", data_module.train) + comet_logger.experiment.log_table("test.csv", data_module.test) + + if not config["use_data_commit"]: + comet_logger.experiment.log_table("novel_species.csv", data_module.novel) + + train = data_module.train.copy() + test = data_module.test.copy() + crowns = data_module.crowns.copy() + + if "individual" not in train.columns and "individualID" in train.columns: + train["individual"] = train["individualID"] + if "individual" not in test.columns and "individualID" in test.columns: + test["individual"] = test["individualID"] + + train = train[~train.individual.str.contains("graves")].reset_index(drop=True) + test = test[~test.individual.str.contains("graves")].reset_index(drop=True) + + print( + "[train] Building unified MultiStage (single checkpoint with hierarchical heads). " + "If preload_images is True, loading crops can still take several minutes.", + flush=True, + ) + m = multi_stage.MultiStage(train, test, config=data_module.config, crowns=crowns) + print("[train] MultiStage ready; starting Trainer.fit …", flush=True) + + for index, train_df in enumerate( + [ + m.level_0_train, + m.level_1_train, + m.level_2_train, + m.level_3_train, + m.level_4_train, + ] + ): + comet_logger.experiment.log_table("train_level_{}.csv".format(index), train_df) + + for index, test_df in enumerate( + [ + m.level_0_test, + m.level_1_test, + m.level_2_test, + m.level_3_test, + m.level_4_test, + ] + ): + comet_logger.experiment.log_table("test_level_{}.csv".format(index), test_df) + + acc, dev = utils.trainer_accelerator_devices(data_module.config) + lr_monitor = LearningRateMonitor(logging_interval="epoch") + + trainer_kwargs: dict = { + "accelerator": acc, + "devices": dev, + "fast_dev_run": data_module.config["fast_dev_run"], + "max_epochs": data_module.config["epochs"], + "num_sanity_val_steps": 0, + "enable_checkpointing": False, + "callbacks": [lr_monitor], + "logger": comet_logger, + "profiler": "simple", + } + lt = data_module.config.get("limit_train_batches") + lv = data_module.config.get("limit_val_batches") + lp = data_module.config.get("limit_predict_batches") + if lt is not None: + trainer_kwargs["limit_train_batches"] = lt + if lv is not None: + trainer_kwargs["limit_val_batches"] = lv + if lp is not None: + trainer_kwargs["limit_predict_batches"] = lp + + trainer = Trainer(**trainer_kwargs) + + trainer.fit(m) + + ckpt_dir = data_module.config.get("checkpoint_dir", "results/checkpoints") + os.makedirs(ckpt_dir, exist_ok=True) + exp = comet_logger.experiment + exp_id = getattr(exp, "id", None) or exp.get_key() + ckpt_path = os.path.join(ckpt_dir, "{}.pt".format(exp_id)) + trainer.save_checkpoint(ckpt_path) + print("[train] wrote checkpoint:", ckpt_path) + + print("Before prediction, the taxonID value counts") + print(test.taxonID.value_counts()) + + ds = data.TreeDataset(df=test, train=False, config=config) + predictions = trainer.predict(m, dataloaders=m.predict_dataloader(ds)) + results = m.gather_predictions(predictions) + results["individual"] = results["individual"] + results_with_data = results.merge(crowns, on="individual") + comet_logger.experiment.log_table("nested_predictions.csv", results_with_data) + + ensemble_df = m.ensemble(results) + truth_cols = test.drop_duplicates(subset=["individual"])[["individual", "label", "siteID"]] + ensemble_df = ensemble_df.merge(truth_cols, on="individual", how="inner") + if ensemble_df.empty: + print( + "[train] warning: no individuals overlap between predictions and test labels " + "(e.g. limit_predict_batches too small); skipping evaluation_scores." + ) + else: + exp_for_eval = comet_logger.experiment if isinstance(comet_logger, CometLogger) else None + ensemble_df = m.evaluation_scores(ensemble_df, experiment=exp_for_eval) + + comet_logger.experiment.log_table("ensemble_df.csv", ensemble_df) + -#Get branch name for the comet tag -git_branch=sys.argv[1] -git_commit=sys.argv[2] - -#Create datamodule -config = data.read_config("config.yml") -comet_logger = CometLogger(project_name="DeepTreeAttention2", workspace=config["comet_workspace"], auto_output_logging="simple") - -#Generate new data or use previous run -if config["use_data_commit"]: - config["crop_dir"] = os.path.join(config["data_dir"], config["use_data_commit"]) - client = None -else: - crop_dir = os.path.join(config["data_dir"], comet_logger.experiment.get_key()) - os.mkdir(crop_dir) - client = start_cluster.start(cpus=10, mem_size="4GB") - config["crop_dir"] = crop_dir - -comet_logger.experiment.log_parameter("git branch",git_branch) -comet_logger.experiment.add_tag(git_branch) -comet_logger.experiment.log_parameter("commit hash",git_commit) -comet_logger.experiment.log_parameters(config) - -data_module = data.TreeData( - csv_file="data/raw/neon_vst_data_2022.csv", - data_dir=config["crop_dir"], - config=config, - client=client, - metadata=True, - comet_logger=comet_logger) - -if client: - client.close() - -comet_logger.experiment.log_parameter("train_hash",hash_pandas_object(data_module.train)) -comet_logger.experiment.log_parameter("test_hash",hash_pandas_object(data_module.test)) -comet_logger.experiment.log_parameter("num_species",data_module.num_classes) -comet_logger.experiment.log_table("train.csv", data_module.train) -comet_logger.experiment.log_table("test.csv", data_module.test) - -if not config["use_data_commit"]: - comet_logger.experiment.log_table("novel_species.csv", data_module.novel) - -train = data_module.train.copy() -test = data_module.test.copy() -crowns = data_module.crowns.copy() - -train["individual"] = train["individualID"] -test["individual"] = test["individualID"] - -#remove graves -train = train[~train.individual.str.contains("graves")].reset_index(drop=True) -test = test[~test.individual.str.contains("graves")].reset_index(drop=True) - -m = multi_stage.MultiStage(train, test, config=data_module.config, crowns=crowns) - -#Save the train df for each level for inspection -for index, train_df in enumerate([m.level_0_train, - m.level_1_train, m.level_2_train, m.level_3_train, m.level_4_train]): - comet_logger.experiment.log_table("train_level_{}.csv".format(index), train_df) - -#Save the train df for each level for inspection -for index, test_df in enumerate([m.level_0_test, - m.level_1_test, m.level_2_test, m.level_3_test, m.level_4_test]): - comet_logger.experiment.log_table("test_level_{}.csv".format(index), test_df) - -#Create trainer -lr_monitor = LearningRateMonitor(logging_interval='epoch') -trainer = Trainer( - gpus=data_module.config["gpus"], - fast_dev_run=data_module.config["fast_dev_run"], - max_epochs=data_module.config["epochs"], - accelerator=data_module.config["accelerator"], - num_sanity_val_steps=0, - enable_checkpointing=False, - callbacks=[lr_monitor], - logger=comet_logger, - profiler="simple") - -trainer.fit(m) - -#Save model checkpoint -trainer.save_checkpoint("/blue/ewhite/b.weinstein/DeepTreeAttention/snapshots/{}.pt".format(comet_logger.experiment.id)) - -# Prediction datasets are indexed by year, but full data is given to each model before ensembling -print("Before prediction, the taxonID value counts") -print(test.taxonID.value_counts()) - -ds = data.TreeDataset(df=test, train=False, config=config) -predictions = trainer.predict(m, dataloaders=m.predict_dataloader(ds)) -results = m.gather_predictions(predictions) -results["individual"] = results["individual"] -results_with_data = results.merge(crowns, on="individual") -comet_logger.experiment.log_table("nested_predictions.csv", results_with_data) - -ensemble_df = m.ensemble(results) -ensemble_df = m.evaluation_scores( - ensemble_df, - experiment=comet_logger.experiment -) - -#Log prediction -comet_logger.experiment.log_table("ensemble_df.csv", ensemble_df) - -#Visualizations -ensemble_df["pred_taxa_top1"] = ensemble_df.ensembleTaxonID -ensemble_df["pred_label_top1"] = ensemble_df.ens_label -rgb_pool = glob.glob(data_module.config["rgb_sensor_pool"], recursive=True) - -#Limit to 1 individual for confusion matrix -ensemble_df = ensemble_df.reset_index(drop=True) -ensemble_df = ensemble_df.groupby("individual").apply(lambda x: x.head(1)) -test = test.groupby("individual").apply(lambda x: x.head(1)).reset_index(drop=True) -visualize.confusion_matrix( - comet_experiment=comet_logger.experiment, - results=ensemble_df, - species_label_dict=data_module.species_label_dict, - test_crowns=crowns, - test=test, - test_points=data_module.canopy_points, - rgb_pool=rgb_pool -) +if __name__ == "__main__": + main_train() diff --git a/train_dead.py b/train_dead.py index 2030dd550..bb872510a 100644 --- a/train_dead.py +++ b/train_dead.py @@ -1,27 +1,35 @@ -# Train Dead +# Train Dead import comet_ml from pytorch_lightning import Trainer from pytorch_lightning.loggers import CometLogger + +from src import utils from src.models import dead -from src.data import read_config import numpy as np import torch from sklearn.metrics import precision_recall_curve, PrecisionRecallDisplay -config = read_config("config.yml") +config = utils.read_config("config.yml") comet_logger = CometLogger( - project_name="DeepTreeAttention", + project="DeepTreeAttention", workspace=config["comet_workspace"], - auto_output_logging="simple" -) + auto_output_logging="simple", +) comet_logger.experiment.add_tag("Dead") -trainer = Trainer(max_epochs=config["dead"]["epochs"], checkpoint_callback=False, gpus=config["gpus"], logger=comet_logger) +acc, dev = utils.trainer_accelerator_devices(config) +trainer = Trainer( + max_epochs=config["dead"]["epochs"], + enable_checkpointing=False, + accelerator=acc, + devices=dev, + logger=comet_logger, +) m = dead.AliveDead(config=config) trainer.fit(m) trainer.validate(m) -trainer.save_checkpoint("{}/{}.pl".format(config["dead"]["savedir"],comet_logger.experiment.id)) +trainer.save_checkpoint("{}/{}.pl".format(config["dead"]["savedir"], comet_logger.experiment.id)) true_class = [x[1] for x in m.val_ds] m.eval() @@ -33,7 +41,10 @@ comet_logger.experiment.log_confusion_matrix( true_class, predicted_class, - labels=["Alive","Dead"], index_to_example_function=dead.index_to_example, test_dataset=m.val_ds) + labels=["Alive", "Dead"], + index_to_example_function=dead.index_to_example, + test_dataset=m.val_ds, +) precision, recall, thresholds = precision_recall_curve(y_true=true_class, probas_pred=predicted_scores) disp = PrecisionRecallDisplay(precision=precision, recall=recall) diff --git a/uv.lock b/uv.lock new file mode 100644 index 000000000..c3cb2ccf5 --- /dev/null +++ b/uv.lock @@ -0,0 +1,3605 @@ +version = 1 +revision = 3 +requires-python = ">=3.10, <3.13" +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'win32'", + "python_full_version >= '3.12' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version < '3.11' and sys_platform != 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] + +[[package]] +name = "absl-py" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/64/c7/8de93764ad66968d19329a7e0c147a2bb3c7054c554d4a119111b8f9440f/absl_py-2.4.0.tar.gz", hash = "sha256:8c6af82722b35cf71e0f4d1d47dcaebfff286e27110a99fc359349b247dfb5d4", size = 116543, upload-time = "2026-01-28T10:17:05.322Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/a6/907a406bb7d359e6a63f99c313846d9eec4f7e6f7437809e03aa00fa3074/absl_py-2.4.0-py3-none-any.whl", hash = "sha256:88476fd881ca8aab94ffa78b7b6c632a782ab3ba1cd19c9bd423abc4fb4cd28d", size = 135750, upload-time = "2026-01-28T10:17:04.19Z" }, +] + +[[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, 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, upload-time = "2023-01-19T23:44:28.833Z" }, +] + +[[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" } +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" }, +] + +[[package]] +name = "aiohttp" +version = "3.13.5" +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/77/9a/152096d4808df8e4268befa55fba462f440f14beab85e8ad9bf990516918/aiohttp-3.13.5.tar.gz", hash = "sha256:9d98cc980ecc96be6eb4c1994ce35d28d8b1f5e5208a23b421187d1209dbb7d1", size = 7858271, upload-time = "2026-03-31T22:01:03.343Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/85/cebc47ee74d8b408749073a1a46c6fcba13d170dc8af7e61996c6c9394ac/aiohttp-3.13.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:02222e7e233295f40e011c1b00e3b0bd451f22cf853a0304c3595633ee47da4b", size = 750547, upload-time = "2026-03-31T21:56:30.024Z" }, + { url = "https://files.pythonhosted.org/packages/05/98/afd308e35b9d3d8c9ec54c0918f1d722c86dc17ddfec272fcdbcce5a3124/aiohttp-3.13.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bace460460ed20614fa6bc8cb09966c0b8517b8c58ad8046828c6078d25333b5", size = 503535, upload-time = "2026-03-31T21:56:31.935Z" }, + { url = "https://files.pythonhosted.org/packages/6f/4d/926c183e06b09d5270a309eb50fbde7b09782bfd305dec1e800f329834fb/aiohttp-3.13.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f546a4dc1e6a5edbb9fd1fd6ad18134550e096a5a43f4ad74acfbd834fc6670", size = 497830, upload-time = "2026-03-31T21:56:33.654Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d6/f47d1c690f115a5c2a5e8938cce4a232a5be9aac5c5fb2647efcbbbda333/aiohttp-3.13.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c86969d012e51b8e415a8c6ce96f7857d6a87d6207303ab02d5d11ef0cad2274", size = 1682474, upload-time = "2026-03-31T21:56:35.513Z" }, + { url = "https://files.pythonhosted.org/packages/01/44/056fd37b1bb52eac760303e5196acc74d9d546631b035704ae5927f7b4ac/aiohttp-3.13.5-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b6f6cd1560c5fa427e3b6074bb24d2c64e225afbb7165008903bd42e4e33e28a", size = 1655259, upload-time = "2026-03-31T21:56:37.843Z" }, + { url = "https://files.pythonhosted.org/packages/91/9f/78eb1a20c1c28ae02f6a3c0f4d7b0dcc66abce5290cadd53d78ce3084175/aiohttp-3.13.5-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:636bc362f0c5bbc7372bc3ae49737f9e3030dbce469f0f422c8f38079780363d", size = 1736204, upload-time = "2026-03-31T21:56:39.822Z" }, + { url = "https://files.pythonhosted.org/packages/de/6c/d20d7de23f0b52b8c1d9e2033b2db1ac4dacbb470bb74c56de0f5f86bb4f/aiohttp-3.13.5-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6a7cbeb06d1070f1d14895eeeed4dac5913b22d7b456f2eb969f11f4b3993796", size = 1826198, upload-time = "2026-03-31T21:56:41.378Z" }, + { url = "https://files.pythonhosted.org/packages/2f/86/a6f3ff1fd795f49545a7c74b2c92f62729135d73e7e4055bf74da5a26c82/aiohttp-3.13.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bca9ef7517fd7874a1a08970ae88f497bf5c984610caa0bf40bd7e8450852b95", size = 1681329, upload-time = "2026-03-31T21:56:43.374Z" }, + { url = "https://files.pythonhosted.org/packages/fb/68/84cd3dab6b7b4f3e6fe9459a961acb142aaab846417f6e8905110d7027e5/aiohttp-3.13.5-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:019a67772e034a0e6b9b17c13d0a8fe56ad9fb150fc724b7f3ffd3724288d9e5", size = 1560023, upload-time = "2026-03-31T21:56:45.031Z" }, + { url = "https://files.pythonhosted.org/packages/41/2c/db61b64b0249e30f954a65ab4cb4970ced57544b1de2e3c98ee5dc24165f/aiohttp-3.13.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f34ecee82858e41dd217734f0c41a532bd066bcaab636ad830f03a30b2a96f2a", size = 1652372, upload-time = "2026-03-31T21:56:47.075Z" }, + { url = "https://files.pythonhosted.org/packages/25/6f/e96988a6c982d047810c772e28c43c64c300c943b0ed5c1c0c4ce1e1027c/aiohttp-3.13.5-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:4eac02d9af4813ee289cd63a361576da36dba57f5a1ab36377bc2600db0cbb73", size = 1662031, upload-time = "2026-03-31T21:56:48.835Z" }, + { url = "https://files.pythonhosted.org/packages/b7/26/a56feace81f3d347b4052403a9d03754a0ab23f7940780dada0849a38c92/aiohttp-3.13.5-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4beac52e9fe46d6abf98b0176a88154b742e878fdf209d2248e99fcdf73cd297", size = 1708118, upload-time = "2026-03-31T21:56:50.833Z" }, + { url = "https://files.pythonhosted.org/packages/78/6e/b6173a8ff03d01d5e1a694bc06764b5dad1df2d4ed8f0ceec12bb3277936/aiohttp-3.13.5-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:c180f480207a9b2475f2b8d8bd7204e47aec952d084b2a2be58a782ffcf96074", size = 1548667, upload-time = "2026-03-31T21:56:52.81Z" }, + { url = "https://files.pythonhosted.org/packages/16/13/13296ffe2c132d888b3fe2c195c8b9c0c24c89c3fa5cc2c44464dc23b22e/aiohttp-3.13.5-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2837fb92951564d6339cedae4a7231692aa9f73cbc4fb2e04263b96844e03b4e", size = 1724490, upload-time = "2026-03-31T21:56:54.541Z" }, + { url = "https://files.pythonhosted.org/packages/7a/b4/1f1c287f4a79782ef36e5a6e62954c85343bc30470d862d30bd5f26c9fa2/aiohttp-3.13.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d9010032a0b9710f58012a1e9c222528763d860ba2ee1422c03473eab47703e7", size = 1667109, upload-time = "2026-03-31T21:56:56.21Z" }, + { url = "https://files.pythonhosted.org/packages/ef/42/8461a2aaf60a8f4ea4549a4056be36b904b0eb03d97ca9a8a2604681a500/aiohttp-3.13.5-cp310-cp310-win32.whl", hash = "sha256:7c4b6668b2b2b9027f209ddf647f2a4407784b5d88b8be4efcc72036f365baf9", size = 439478, upload-time = "2026-03-31T21:56:58.292Z" }, + { url = "https://files.pythonhosted.org/packages/e5/71/06956304cb5ee439dfe8d86e1b2e70088bd88ed1ced1f42fb29e5d855f0e/aiohttp-3.13.5-cp310-cp310-win_amd64.whl", hash = "sha256:cd3db5927bf9167d5a6157ddb2f036f6b6b0ad001ac82355d43e97a4bde76d76", size = 462047, upload-time = "2026-03-31T21:57:00.257Z" }, + { url = "https://files.pythonhosted.org/packages/d6/f5/a20c4ac64aeaef1679e25c9983573618ff765d7aa829fa2b84ae7573169e/aiohttp-3.13.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7ab7229b6f9b5c1ba4910d6c41a9eb11f543eadb3f384df1b4c293f4e73d44d6", size = 757513, upload-time = "2026-03-31T21:57:02.146Z" }, + { url = "https://files.pythonhosted.org/packages/75/0a/39fa6c6b179b53fcb3e4b3d2b6d6cad0180854eda17060c7218540102bef/aiohttp-3.13.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8f14c50708bb156b3a3ca7230b3d820199d56a48e3af76fa21c2d6087190fe3d", size = 506748, upload-time = "2026-03-31T21:57:04.275Z" }, + { url = "https://files.pythonhosted.org/packages/87/ec/e38ce072e724fd7add6243613f8d1810da084f54175353d25ccf9f9c7e5a/aiohttp-3.13.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7d2f8616f0ff60bd332022279011776c3ac0faa0f1b463f7bb12326fbc97a1c", size = 501673, upload-time = "2026-03-31T21:57:06.208Z" }, + { url = "https://files.pythonhosted.org/packages/ba/ba/3bc7525d7e2beaa11b309a70d48b0d3cfc3c2089ec6a7d0820d59c657053/aiohttp-3.13.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a2567b72e1ffc3ab25510db43f355b29eeada56c0a622e58dcdb19530eb0a3cb", size = 1763757, upload-time = "2026-03-31T21:57:07.882Z" }, + { url = "https://files.pythonhosted.org/packages/5e/ab/e87744cf18f1bd78263aba24924d4953b41086bd3a31d22452378e9028a0/aiohttp-3.13.5-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fb0540c854ac9c0c5ad495908fdfd3e332d553ec731698c0e29b1877ba0d2ec6", size = 1720152, upload-time = "2026-03-31T21:57:09.946Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f3/ed17a6f2d742af17b50bae2d152315ed1b164b07a5fd5cc1754d99e4dfa5/aiohttp-3.13.5-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c9883051c6972f58bfc4ebb2116345ee2aa151178e99c3f2b2bbe2af712abd13", size = 1818010, upload-time = "2026-03-31T21:57:12.157Z" }, + { url = "https://files.pythonhosted.org/packages/53/06/ecbc63dc937192e2a5cb46df4d3edb21deb8225535818802f210a6ea5816/aiohttp-3.13.5-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2294172ce08a82fb7c7273485895de1fa1186cc8294cfeb6aef4af42ad261174", size = 1907251, upload-time = "2026-03-31T21:57:14.023Z" }, + { url = "https://files.pythonhosted.org/packages/7e/a5/0521aa32c1ddf3aa1e71dcc466be0b7db2771907a13f18cddaa45967d97b/aiohttp-3.13.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3a807cabd5115fb55af198b98178997a5e0e57dead43eb74a93d9c07d6d4a7dc", size = 1759969, upload-time = "2026-03-31T21:57:16.146Z" }, + { url = "https://files.pythonhosted.org/packages/f6/78/a38f8c9105199dd3b9706745865a8a59d0041b6be0ca0cc4b2ccf1bab374/aiohttp-3.13.5-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:aa6d0d932e0f39c02b80744273cd5c388a2d9bc07760a03164f229c8e02662f6", size = 1616871, upload-time = "2026-03-31T21:57:17.856Z" }, + { url = "https://files.pythonhosted.org/packages/6f/41/27392a61ead8ab38072105c71aa44ff891e71653fe53d576a7067da2b4e8/aiohttp-3.13.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:60869c7ac4aaabe7110f26499f3e6e5696eae98144735b12a9c3d9eae2b51a49", size = 1739844, upload-time = "2026-03-31T21:57:19.679Z" }, + { url = "https://files.pythonhosted.org/packages/6e/55/5564e7ae26d94f3214250009a0b1c65a0c6af4bf88924ccb6fdab901de28/aiohttp-3.13.5-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:26d2f8546f1dfa75efa50c3488215a903c0168d253b75fba4210f57ab77a0fb8", size = 1731969, upload-time = "2026-03-31T21:57:22.006Z" }, + { url = "https://files.pythonhosted.org/packages/6d/c5/705a3929149865fc941bcbdd1047b238e4a72bcb215a9b16b9d7a2e8d992/aiohttp-3.13.5-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1162a1492032c82f14271e831c8f4b49f2b6078f4f5fc74de2c912fa225d51d", size = 1795193, upload-time = "2026-03-31T21:57:24.256Z" }, + { url = "https://files.pythonhosted.org/packages/a6/19/edabed62f718d02cff7231ca0db4ef1c72504235bc467f7b67adb1679f48/aiohttp-3.13.5-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:8b14eb3262fad0dc2f89c1a43b13727e709504972186ff6a99a3ecaa77102b6c", size = 1606477, upload-time = "2026-03-31T21:57:26.364Z" }, + { url = "https://files.pythonhosted.org/packages/de/fc/76f80ef008675637d88d0b21584596dc27410a990b0918cb1e5776545b5b/aiohttp-3.13.5-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ca9ac61ac6db4eb6c2a0cd1d0f7e1357647b638ccc92f7e9d8d133e71ed3c6ac", size = 1813198, upload-time = "2026-03-31T21:57:28.316Z" }, + { url = "https://files.pythonhosted.org/packages/e5/67/5b3ac26b80adb20ea541c487f73730dc8fa107d632c998f25bbbab98fcda/aiohttp-3.13.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7996023b2ed59489ae4762256c8516df9820f751cf2c5da8ed2fb20ee50abab3", size = 1752321, upload-time = "2026-03-31T21:57:30.549Z" }, + { url = "https://files.pythonhosted.org/packages/88/06/e4a2e49255ea23fa4feeb5ab092d90240d927c15e47b5b5c48dff5a9ce29/aiohttp-3.13.5-cp311-cp311-win32.whl", hash = "sha256:77dfa48c9f8013271011e51c00f8ada19851f013cde2c48fca1ba5e0caf5bb06", size = 439069, upload-time = "2026-03-31T21:57:32.388Z" }, + { url = "https://files.pythonhosted.org/packages/c0/43/8c7163a596dab4f8be12c190cf467a1e07e4734cf90eebb39f7f5d53fc6a/aiohttp-3.13.5-cp311-cp311-win_amd64.whl", hash = "sha256:d3a4834f221061624b8887090637db9ad4f61752001eae37d56c52fddade2dc8", size = 462859, upload-time = "2026-03-31T21:57:34.455Z" }, + { url = "https://files.pythonhosted.org/packages/be/6f/353954c29e7dcce7cf00280a02c75f30e133c00793c7a2ed3776d7b2f426/aiohttp-3.13.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:023ecba036ddd840b0b19bf195bfae970083fd7024ce1ac22e9bba90464620e9", size = 748876, upload-time = "2026-03-31T21:57:36.319Z" }, + { url = "https://files.pythonhosted.org/packages/f5/1b/428a7c64687b3b2e9cd293186695affc0e1e54a445d0361743b231f11066/aiohttp-3.13.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:15c933ad7920b7d9a20de151efcd05a6e38302cbf0e10c9b2acb9a42210a2416", size = 499557, upload-time = "2026-03-31T21:57:38.236Z" }, + { url = "https://files.pythonhosted.org/packages/29/47/7be41556bfbb6917069d6a6634bb7dd5e163ba445b783a90d40f5ac7e3a7/aiohttp-3.13.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ab2899f9fa2f9f741896ebb6fa07c4c883bfa5c7f2ddd8cf2aafa86fa981b2d2", size = 500258, upload-time = "2026-03-31T21:57:39.923Z" }, + { url = "https://files.pythonhosted.org/packages/67/84/c9ecc5828cb0b3695856c07c0a6817a99d51e2473400f705275a2b3d9239/aiohttp-3.13.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a60eaa2d440cd4707696b52e40ed3e2b0f73f65be07fd0ef23b6b539c9c0b0b4", size = 1749199, upload-time = "2026-03-31T21:57:41.938Z" }, + { url = "https://files.pythonhosted.org/packages/f0/d3/3c6d610e66b495657622edb6ae7c7fd31b2e9086b4ec50b47897ad6042a9/aiohttp-3.13.5-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:55b3bdd3292283295774ab585160c4004f4f2f203946997f49aac032c84649e9", size = 1721013, upload-time = "2026-03-31T21:57:43.904Z" }, + { url = "https://files.pythonhosted.org/packages/49/a0/24409c12217456df0bae7babe3b014e460b0b38a8e60753d6cb339f6556d/aiohttp-3.13.5-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c2b2355dc094e5f7d45a7bb262fe7207aa0460b37a0d87027dcf21b5d890e7d5", size = 1781501, upload-time = "2026-03-31T21:57:46.285Z" }, + { url = "https://files.pythonhosted.org/packages/98/9d/b65ec649adc5bccc008b0957a9a9c691070aeac4e41cea18559fef49958b/aiohttp-3.13.5-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b38765950832f7d728297689ad78f5f2cf79ff82487131c4d26fe6ceecdc5f8e", size = 1878981, upload-time = "2026-03-31T21:57:48.734Z" }, + { url = "https://files.pythonhosted.org/packages/57/d8/8d44036d7eb7b6a8ec4c5494ea0c8c8b94fbc0ed3991c1a7adf230df03bf/aiohttp-3.13.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b18f31b80d5a33661e08c89e202edabf1986e9b49c42b4504371daeaa11b47c1", size = 1767934, upload-time = "2026-03-31T21:57:51.171Z" }, + { url = "https://files.pythonhosted.org/packages/31/04/d3f8211f273356f158e3464e9e45484d3fb8c4ce5eb2f6fe9405c3273983/aiohttp-3.13.5-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:33add2463dde55c4f2d9635c6ab33ce154e5ecf322bd26d09af95c5f81cfa286", size = 1566671, upload-time = "2026-03-31T21:57:53.326Z" }, + { url = "https://files.pythonhosted.org/packages/41/db/073e4ebe00b78e2dfcacff734291651729a62953b48933d765dc513bf798/aiohttp-3.13.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:327cc432fdf1356fb4fbc6fe833ad4e9f6aacb71a8acaa5f1855e4b25910e4a9", size = 1705219, upload-time = "2026-03-31T21:57:55.385Z" }, + { url = "https://files.pythonhosted.org/packages/48/45/7dfba71a2f9fd97b15c95c06819de7eb38113d2cdb6319669195a7d64270/aiohttp-3.13.5-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:7c35b0bf0b48a70b4cb4fc5d7bed9b932532728e124874355de1a0af8ec4bc88", size = 1743049, upload-time = "2026-03-31T21:57:57.341Z" }, + { url = "https://files.pythonhosted.org/packages/18/71/901db0061e0f717d226386a7f471bb59b19566f2cae5f0d93874b017271f/aiohttp-3.13.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:df23d57718f24badef8656c49743e11a89fd6f5358fa8a7b96e728fda2abf7d3", size = 1749557, upload-time = "2026-03-31T21:57:59.626Z" }, + { url = "https://files.pythonhosted.org/packages/08/d5/41eebd16066e59cd43728fe74bce953d7402f2b4ddfdfef2c0e9f17ca274/aiohttp-3.13.5-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:02e048037a6501a5ec1f6fc9736135aec6eb8a004ce48838cb951c515f32c80b", size = 1558931, upload-time = "2026-03-31T21:58:01.972Z" }, + { url = "https://files.pythonhosted.org/packages/30/e6/4a799798bf05740e66c3a1161079bda7a3dd8e22ca392481d7a7f9af82a6/aiohttp-3.13.5-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:31cebae8b26f8a615d2b546fee45d5ffb76852ae6450e2a03f42c9102260d6fe", size = 1774125, upload-time = "2026-03-31T21:58:04.007Z" }, + { url = "https://files.pythonhosted.org/packages/84/63/7749337c90f92bc2cb18f9560d67aa6258c7060d1397d21529b8004fcf6f/aiohttp-3.13.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:888e78eb5ca55a615d285c3c09a7a91b42e9dd6fc699b166ebd5dee87c9ccf14", size = 1732427, upload-time = "2026-03-31T21:58:06.337Z" }, + { url = "https://files.pythonhosted.org/packages/98/de/cf2f44ff98d307e72fb97d5f5bbae3bfcb442f0ea9790c0bf5c5c2331404/aiohttp-3.13.5-cp312-cp312-win32.whl", hash = "sha256:8bd3ec6376e68a41f9f95f5ed170e2fcf22d4eb27a1f8cb361d0508f6e0557f3", size = 433534, upload-time = "2026-03-31T21:58:08.712Z" }, + { url = "https://files.pythonhosted.org/packages/aa/ca/eadf6f9c8fa5e31d40993e3db153fb5ed0b11008ad5d9de98a95045bed84/aiohttp-3.13.5-cp312-cp312-win_amd64.whl", hash = "sha256:110e448e02c729bcebb18c60b9214a87ba33bac4a9fa5e9a5f139938b56c6cb1", size = 460446, upload-time = "2026-03-31T21:58:10.945Z" }, +] + +[[package]] +name = "aiolimiter" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/23/b52debf471f7a1e42e362d959a3982bdcb4fe13a5d46e63d28868807a79c/aiolimiter-1.2.1.tar.gz", hash = "sha256:e02a37ea1a855d9e832252a105420ad4d15011505512a1a1d814647451b5cca9", size = 7185, upload-time = "2024-12-08T15:31:51.496Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/ba/df6e8e1045aebc4778d19b8a3a9bc1808adb1619ba94ca354d9ba17d86c3/aiolimiter-1.2.1-py3-none-any.whl", hash = "sha256:d3f249e9059a20badcb56b61601a83556133655c11d1eb3dd3e04ff069e5f3c7", size = 6711, upload-time = "2024-12-08T15:31:49.874Z" }, +] + +[[package]] +name = "aiosignal" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "frozenlist" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/61/62/06741b579156360248d1ec624842ad0edf697050bbaf7c3e46394e106ad1/aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7", size = 25007, upload-time = "2025-07-03T22:54:43.528Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl", hash = "sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e", size = 7490, upload-time = "2025-07-03T22:54:42.156Z" }, +] + +[[package]] +name = "annotated-doc" +version = "0.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288, upload-time = "2025-11-10T22:07:42.062Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload-time = "2025-11-10T22:07:40.673Z" }, +] + +[[package]] +name = "antlr4-python3-runtime" +version = "4.9.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3e/38/7859ff46355f76f8d19459005ca000b6e7012f2f1ca597746cbcd1fbfe5e/antlr4-python3-runtime-4.9.3.tar.gz", hash = "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b", size = 117034, upload-time = "2021-11-06T17:52:23.524Z" } + +[[package]] +name = "anyio" +version = "4.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "idna" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/14/2c5dd9f512b66549ae92767a9c7b330ae88e1932ca57876909410251fe13/anyio-4.13.0.tar.gz", hash = "sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc", size = 231622, upload-time = "2026-03-24T12:59:09.671Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl", hash = "sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708", size = 114353, upload-time = "2026-03-24T12:59:08.246Z" }, +] + +[[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" }, +] + +[[package]] +name = "attrs" +version = "26.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/8e/82a0fe20a541c03148528be8cac2408564a6c9a0cc7e9171802bc1d26985/attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32", size = 952055, upload-time = "2026-03-19T14:22:25.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309", size = 67548, upload-time = "2026-03-19T14:22:23.645Z" }, +] + +[[package]] +name = "certifi" +version = "2026.4.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/25/ee/6caf7a40c36a1220410afe15a1cc64993a1f864871f698c0f93acb72842a/certifi-2026.4.22.tar.gz", hash = "sha256:8d455352a37b71bf76a79caa83a3d6c25afee4a385d632127b6afb3963f1c580", size = 137077, upload-time = "2026-04-22T11:26:11.191Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/30/7cd8fdcdfbc5b869528b079bfb76dcdf6056b1a2097a662e5e8c04f42965/certifi-2026.4.22-py3-none-any.whl", hash = "sha256:3cb2210c8f88ba2318d29b0388d1023c8492ff72ecdde4ebdaddbb13a31b1c4a", size = 135707, upload-time = "2026-04-22T11:26:09.372Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/a1/67fe25fac3c7642725500a3f6cfe5821ad557c3abb11c9d20d12c7008d3e/charset_normalizer-3.4.7.tar.gz", hash = "sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5", size = 144271, upload-time = "2026-04-02T09:28:39.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/08/0f303cb0b529e456bb116f2d50565a482694fbb94340bf56d44677e7ed03/charset_normalizer-3.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cdd68a1fb318e290a2077696b7eb7a21a49163c455979c639bf5a5dcdc46617d", size = 315182, upload-time = "2026-04-02T09:25:40.673Z" }, + { url = "https://files.pythonhosted.org/packages/24/47/b192933e94b546f1b1fe4df9cc1f84fcdbf2359f8d1081d46dd029b50207/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e17b8d5d6a8c47c85e68ca8379def1303fd360c3e22093a807cd34a71cd082b8", size = 209329, upload-time = "2026-04-02T09:25:42.354Z" }, + { url = "https://files.pythonhosted.org/packages/c2/b4/01fa81c5ca6141024d89a8fc15968002b71da7f825dd14113207113fabbd/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:511ef87c8aec0783e08ac18565a16d435372bc1ac25a91e6ac7f5ef2b0bff790", size = 231230, upload-time = "2026-04-02T09:25:44.281Z" }, + { url = "https://files.pythonhosted.org/packages/20/f7/7b991776844dfa058017e600e6e55ff01984a063290ca5622c0b63162f68/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:007d05ec7321d12a40227aae9e2bc6dca73f3cb21058999a1df9e193555a9dcc", size = 225890, upload-time = "2026-04-02T09:25:45.475Z" }, + { url = "https://files.pythonhosted.org/packages/20/e7/bed0024a0f4ab0c8a9c64d4445f39b30c99bd1acd228291959e3de664247/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf29836da5119f3c8a8a70667b0ef5fdca3bb12f80fd06487cfa575b3909b393", size = 216930, upload-time = "2026-04-02T09:25:46.58Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ab/b18f0ab31cdd7b3ddb8bb76c4a414aeb8160c9810fdf1bc62f269a539d87/charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:12d8baf840cc7889b37c7c770f478adea7adce3dcb3944d02ec87508e2dcf153", size = 202109, upload-time = "2026-04-02T09:25:48.031Z" }, + { url = "https://files.pythonhosted.org/packages/82/e5/7e9440768a06dfb3075936490cb82dbf0ee20a133bf0dd8551fa096914ec/charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d560742f3c0d62afaccf9f41fe485ed69bd7661a241f86a3ef0f0fb8b1a397af", size = 214684, upload-time = "2026-04-02T09:25:49.245Z" }, + { url = "https://files.pythonhosted.org/packages/71/94/8c61d8da9f062fdf457c80acfa25060ec22bf1d34bbeaca4350f13bcfd07/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b14b2d9dac08e28bb8046a1a0434b1750eb221c8f5b87a68f4fa11a6f97b5e34", size = 212785, upload-time = "2026-04-02T09:25:50.671Z" }, + { url = "https://files.pythonhosted.org/packages/66/cd/6e9889c648e72c0ab2e5967528bb83508f354d706637bc7097190c874e13/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:bc17a677b21b3502a21f66a8cc64f5bfad4df8a0b8434d661666f8ce90ac3af1", size = 203055, upload-time = "2026-04-02T09:25:51.802Z" }, + { url = "https://files.pythonhosted.org/packages/92/2e/7a951d6a08aefb7eb8e1b54cdfb580b1365afdd9dd484dc4bee9e5d8f258/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:750e02e074872a3fad7f233b47734166440af3cdea0add3e95163110816d6752", size = 232502, upload-time = "2026-04-02T09:25:53.388Z" }, + { url = "https://files.pythonhosted.org/packages/58/d5/abcf2d83bf8e0a1286df55cd0dc1d49af0da4282aa77e986df343e7de124/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:4e5163c14bffd570ef2affbfdd77bba66383890797df43dc8b4cc7d6f500bf53", size = 214295, upload-time = "2026-04-02T09:25:54.765Z" }, + { url = "https://files.pythonhosted.org/packages/47/3a/7d4cd7ed54be99973a0dc176032cba5cb1f258082c31fa6df35cff46acfc/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6ed74185b2db44f41ef35fd1617c5888e59792da9bbc9190d6c7300617182616", size = 227145, upload-time = "2026-04-02T09:25:55.904Z" }, + { url = "https://files.pythonhosted.org/packages/1d/98/3a45bf8247889cf28262ebd3d0872edff11565b2a1e3064ccb132db3fbb0/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:94e1885b270625a9a828c9793b4d52a64445299baa1fea5a173bf1d3dd9a1a5a", size = 218884, upload-time = "2026-04-02T09:25:57.074Z" }, + { url = "https://files.pythonhosted.org/packages/ad/80/2e8b7f8915ed5c9ef13aa828d82738e33888c485b65ebf744d615040c7ea/charset_normalizer-3.4.7-cp310-cp310-win32.whl", hash = "sha256:6785f414ae0f3c733c437e0f3929197934f526d19dfaa75e18fdb4f94c6fb374", size = 148343, upload-time = "2026-04-02T09:25:58.199Z" }, + { url = "https://files.pythonhosted.org/packages/35/1b/3b8c8c77184af465ee9ad88b5aea46ea6b2e1f7b9dc9502891e37af21e30/charset_normalizer-3.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:6696b7688f54f5af4462118f0bfa7c1621eeb87154f77fa04b9295ce7a8f2943", size = 159174, upload-time = "2026-04-02T09:25:59.322Z" }, + { url = "https://files.pythonhosted.org/packages/be/c1/feb40dca40dbb21e0a908801782d9288c64fc8d8e562c2098e9994c8c21b/charset_normalizer-3.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:66671f93accb62ed07da56613636f3641f1a12c13046ce91ffc923721f23c008", size = 147805, upload-time = "2026-04-02T09:26:00.756Z" }, + { url = "https://files.pythonhosted.org/packages/c2/d7/b5b7020a0565c2e9fa8c09f4b5fa6232feb326b8c20081ccded47ea368fd/charset_normalizer-3.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7641bb8895e77f921102f72833904dcd9901df5d6d72a2ab8f31d04b7e51e4e7", size = 309705, upload-time = "2026-04-02T09:26:02.191Z" }, + { url = "https://files.pythonhosted.org/packages/5a/53/58c29116c340e5456724ecd2fff4196d236b98f3da97b404bc5e51ac3493/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:202389074300232baeb53ae2569a60901f7efadd4245cf3a3bf0617d60b439d7", size = 206419, upload-time = "2026-04-02T09:26:03.583Z" }, + { url = "https://files.pythonhosted.org/packages/b2/02/e8146dc6591a37a00e5144c63f29fb7c97a734ea8a111190783c0e60ab63/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:30b8d1d8c52a48c2c5690e152c169b673487a2a58de1ec7393196753063fcd5e", size = 227901, upload-time = "2026-04-02T09:26:04.738Z" }, + { url = "https://files.pythonhosted.org/packages/fb/73/77486c4cd58f1267bf17db420e930c9afa1b3be3fe8c8b8ebbebc9624359/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:532bc9bf33a68613fd7d65e4b1c71a6a38d7d42604ecf239c77392e9b4e8998c", size = 222742, upload-time = "2026-04-02T09:26:06.36Z" }, + { url = "https://files.pythonhosted.org/packages/a1/fa/f74eb381a7d94ded44739e9d94de18dc5edc9c17fb8c11f0a6890696c0a9/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fe249cb4651fd12605b7288b24751d8bfd46d35f12a20b1ba33dea122e690df", size = 214061, upload-time = "2026-04-02T09:26:08.347Z" }, + { url = "https://files.pythonhosted.org/packages/dc/92/42bd3cefcf7687253fb86694b45f37b733c97f59af3724f356fa92b8c344/charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:65bcd23054beab4d166035cabbc868a09c1a49d1efe458fe8e4361215df40265", size = 199239, upload-time = "2026-04-02T09:26:09.823Z" }, + { url = "https://files.pythonhosted.org/packages/4c/3d/069e7184e2aa3b3cddc700e3dd267413dc259854adc3380421c805c6a17d/charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:08e721811161356f97b4059a9ba7bafb23ea5ee2255402c42881c214e173c6b4", size = 210173, upload-time = "2026-04-02T09:26:10.953Z" }, + { url = "https://files.pythonhosted.org/packages/62/51/9d56feb5f2e7074c46f93e0ebdbe61f0848ee246e2f0d89f8e20b89ebb8f/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e060d01aec0a910bdccb8be71faf34e7799ce36950f8294c8bf612cba65a2c9e", size = 209841, upload-time = "2026-04-02T09:26:12.142Z" }, + { url = "https://files.pythonhosted.org/packages/d2/59/893d8f99cc4c837dda1fe2f1139079703deb9f321aabcb032355de13b6c7/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:38c0109396c4cfc574d502df99742a45c72c08eff0a36158b6f04000043dbf38", size = 200304, upload-time = "2026-04-02T09:26:13.711Z" }, + { url = "https://files.pythonhosted.org/packages/7d/1d/ee6f3be3464247578d1ed5c46de545ccc3d3ff933695395c402c21fa6b77/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1c2a768fdd44ee4a9339a9b0b130049139b8ce3c01d2ce09f67f5a68048d477c", size = 229455, upload-time = "2026-04-02T09:26:14.941Z" }, + { url = "https://files.pythonhosted.org/packages/54/bb/8fb0a946296ea96a488928bdce8ef99023998c48e4713af533e9bb98ef07/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:1a87ca9d5df6fe460483d9a5bbf2b18f620cbed41b432e2bddb686228282d10b", size = 210036, upload-time = "2026-04-02T09:26:16.478Z" }, + { url = "https://files.pythonhosted.org/packages/9a/bc/015b2387f913749f82afd4fcba07846d05b6d784dd16123cb66860e0237d/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:d635aab80466bc95771bb78d5370e74d36d1fe31467b6b29b8b57b2a3cd7d22c", size = 224739, upload-time = "2026-04-02T09:26:17.751Z" }, + { url = "https://files.pythonhosted.org/packages/17/ab/63133691f56baae417493cba6b7c641571a2130eb7bceba6773367ab9ec5/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ae196f021b5e7c78e918242d217db021ed2a6ace2bc6ae94c0fc596221c7f58d", size = 216277, upload-time = "2026-04-02T09:26:18.981Z" }, + { url = "https://files.pythonhosted.org/packages/06/6d/3be70e827977f20db77c12a97e6a9f973631a45b8d186c084527e53e77a4/charset_normalizer-3.4.7-cp311-cp311-win32.whl", hash = "sha256:adb2597b428735679446b46c8badf467b4ca5f5056aae4d51a19f9570301b1ad", size = 147819, upload-time = "2026-04-02T09:26:20.295Z" }, + { url = "https://files.pythonhosted.org/packages/20/d9/5f67790f06b735d7c7637171bbfd89882ad67201891b7275e51116ed8207/charset_normalizer-3.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:8e385e4267ab76874ae30db04c627faaaf0b509e1ccc11a95b3fc3e83f855c00", size = 159281, upload-time = "2026-04-02T09:26:21.74Z" }, + { url = "https://files.pythonhosted.org/packages/ca/83/6413f36c5a34afead88ce6f66684d943d91f233d76dd083798f9602b75ae/charset_normalizer-3.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:d4a48e5b3c2a489fae013b7589308a40146ee081f6f509e047e0e096084ceca1", size = 147843, upload-time = "2026-04-02T09:26:22.901Z" }, + { url = "https://files.pythonhosted.org/packages/0c/eb/4fc8d0a7110eb5fc9cc161723a34a8a6c200ce3b4fbf681bc86feee22308/charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:eca9705049ad3c7345d574e3510665cb2cf844c2f2dcfe675332677f081cbd46", size = 311328, upload-time = "2026-04-02T09:26:24.331Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e3/0fadc706008ac9d7b9b5be6dc767c05f9d3e5df51744ce4cc9605de7b9f4/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6178f72c5508bfc5fd446a5905e698c6212932f25bcdd4b47a757a50605a90e2", size = 208061, upload-time = "2026-04-02T09:26:25.568Z" }, + { url = "https://files.pythonhosted.org/packages/42/f0/3dd1045c47f4a4604df85ec18ad093912ae1344ac706993aff91d38773a2/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e1421b502d83040e6d7fb2fb18dff63957f720da3d77b2fbd3187ceb63755d7b", size = 229031, upload-time = "2026-04-02T09:26:26.865Z" }, + { url = "https://files.pythonhosted.org/packages/dc/67/675a46eb016118a2fbde5a277a5d15f4f69d5f3f5f338e5ee2f8948fcf43/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:edac0f1ab77644605be2cbba52e6b7f630731fc42b34cb0f634be1a6eface56a", size = 225239, upload-time = "2026-04-02T09:26:28.044Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5649fd1c7bade02f320a462fdefd0b4bd3ce036065836d4f42e0de958038e116", size = 216589, upload-time = "2026-04-02T09:26:29.239Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f1/6d2b0b261b6c4ceef0fcb0d17a01cc5bc53586c2d4796fa04b5c540bc13d/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:203104ed3e428044fd943bc4bf45fa73c0730391f9621e37fe39ecf477b128cb", size = 202733, upload-time = "2026-04-02T09:26:30.5Z" }, + { url = "https://files.pythonhosted.org/packages/6f/c0/7b1f943f7e87cc3db9626ba17807d042c38645f0a1d4415c7a14afb5591f/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:298930cec56029e05497a76988377cbd7457ba864beeea92ad7e844fe74cd1f1", size = 212652, upload-time = "2026-04-02T09:26:31.709Z" }, + { url = "https://files.pythonhosted.org/packages/38/dd/5a9ab159fe45c6e72079398f277b7d2b523e7f716acc489726115a910097/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:708838739abf24b2ceb208d0e22403dd018faeef86ddac04319a62ae884c4f15", size = 211229, upload-time = "2026-04-02T09:26:33.282Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ff/531a1cad5ca855d1c1a8b69cb71abfd6d85c0291580146fda7c82857caa1/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:0f7eb884681e3938906ed0434f20c63046eacd0111c4ba96f27b76084cd679f5", size = 203552, upload-time = "2026-04-02T09:26:34.845Z" }, + { url = "https://files.pythonhosted.org/packages/c1/4c/a5fb52d528a8ca41f7598cb619409ece30a169fbdf9cdce592e53b46c3a6/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4dc1e73c36828f982bfe79fadf5919923f8a6f4df2860804db9a98c48824ce8d", size = 230806, upload-time = "2026-04-02T09:26:36.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/7a/071feed8124111a32b316b33ae4de83d36923039ef8cf48120266844285b/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:aed52fea0513bac0ccde438c188c8a471c4e0f457c2dd20cdbf6ea7a450046c7", size = 212316, upload-time = "2026-04-02T09:26:37.672Z" }, + { url = "https://files.pythonhosted.org/packages/fd/35/f7dba3994312d7ba508e041eaac39a36b120f32d4c8662b8814dab876431/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:fea24543955a6a729c45a73fe90e08c743f0b3334bbf3201e6c4bc1b0c7fa464", size = 227274, upload-time = "2026-04-02T09:26:38.93Z" }, + { url = "https://files.pythonhosted.org/packages/8a/2d/a572df5c9204ab7688ec1edc895a73ebded3b023bb07364710b05dd1c9be/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bb6d88045545b26da47aa879dd4a89a71d1dce0f0e549b1abcb31dfe4a8eac49", size = 218468, upload-time = "2026-04-02T09:26:40.17Z" }, + { url = "https://files.pythonhosted.org/packages/86/eb/890922a8b03a568ca2f336c36585a4713c55d4d67bf0f0c78924be6315ca/charset_normalizer-3.4.7-cp312-cp312-win32.whl", hash = "sha256:2257141f39fe65a3fdf38aeccae4b953e5f3b3324f4ff0daf9f15b8518666a2c", size = 148460, upload-time = "2026-04-02T09:26:41.416Z" }, + { url = "https://files.pythonhosted.org/packages/35/d9/0e7dffa06c5ab081f75b1b786f0aefc88365825dfcd0ac544bdb7b2b6853/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a0279cab2d6", size = 159330, upload-time = "2026-04-02T09:26:42.554Z" }, + { url = "https://files.pythonhosted.org/packages/9e/5d/481bcc2a7c88ea6b0878c299547843b2521ccbc40980cb406267088bc701/charset_normalizer-3.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:56be790f86bfb2c98fb742ce566dfb4816e5a83384616ab59c49e0604d49c51d", size = 147828, upload-time = "2026-04-02T09:26:44.075Z" }, + { url = "https://files.pythonhosted.org/packages/db/8f/61959034484a4a7c527811f4721e75d02d653a35afb0b6054474d8185d4c/charset_normalizer-3.4.7-py3-none-any.whl", hash = "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d", size = 61958, upload-time = "2026-04-02T09:28:37.794Z" }, +] + +[[package]] +name = "click" +version = "8.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/63/f9e1ea081ce35720d8b92acde70daaedace594dc93b693c869e0d5910718/click-8.3.3.tar.gz", hash = "sha256:398329ad4837b2ff7cbe1dd166a4c0f8900c3ca3a218de04466f38f6497f18a2", size = 328061, upload-time = "2026-04-22T15:11:27.506Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ae/44/c1221527f6a71a01ec6fbad7fa78f1d50dfa02217385cf0fa3eec7087d59/click-8.3.3-py3-none-any.whl", hash = "sha256:a2bf429bb3033c89fa4936ffb35d5cb471e3719e1f3c8a7c3fff0b8314305613", size = 110502, upload-time = "2026-04-22T15:11:25.044Z" }, +] + +[[package]] +name = "click-plugins" +version = "1.1.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c3/a4/34847b59150da33690a36da3681d6bbc2ec14ee9a846bc30a6746e5984e4/click_plugins-1.1.1.2.tar.gz", hash = "sha256:d7af3984a99d243c131aa1a828331e7630f4a88a9741fd05c927b204bcf92261", size = 8343, upload-time = "2025-06-25T00:47:37.555Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/9a/2abecb28ae875e39c8cad711eb1186d8d14eab564705325e77e4e6ab9ae5/click_plugins-1.1.1.2-py2.py3-none-any.whl", hash = "sha256:008d65743833ffc1f5417bf0e78e8d2c23aab04d9745ba817bd3e71b0feb6aa6", size = 11051, upload-time = "2025-06-25T00:47:36.731Z" }, +] + +[[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, 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, 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, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "comet-ml" +version = "3.57.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dulwich" }, + { name = "everett", extra = ["ini"] }, + { name = "jsonschema" }, + { name = "psutil" }, + { name = "python-box" }, + { name = "requests" }, + { name = "requests-toolbelt" }, + { name = "rich" }, + { name = "semantic-version" }, + { name = "sentry-sdk" }, + { name = "setuptools", marker = "python_full_version >= '3.12'" }, + { name = "simplejson" }, + { name = "urllib3" }, + { name = "wrapt" }, + { name = "wurlitzer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b8/e3/39e6a2ecb0f83bacc414c23cbab86a330540396607fc6894588a1d71e092/comet_ml-3.57.3.tar.gz", hash = "sha256:84be2337366d598e8a299eb56e2efcffb859d7de7957148f81f124d3ef02728d", size = 585296, upload-time = "2026-03-12T14:23:22.371Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/17/c875fe4d53286f8664d3edf7185b488cddfca6c208ba978aa34550e9d10d/comet_ml-3.57.3-py3-none-any.whl", hash = "sha256:4eedf5da98a000466759adbd7e96d6f44004ce1bd844e9bc03d6ec5f86583249", size = 786246, upload-time = "2026-03-12T14:23:20.942Z" }, +] + +[[package]] +name = "configobj" +version = "5.0.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f5/c4/c7f9e41bc2e5f8eeae4a08a01c91b2aea3dfab40a3e14b25e87e7db8d501/configobj-5.0.9.tar.gz", hash = "sha256:03c881bbf23aa07bccf1b837005975993c4ab4427ba57f959afdd9d1a2386848", size = 101518, upload-time = "2024-09-21T12:47:46.315Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/c4/0679472c60052c27efa612b4cd3ddd2a23e885dcdc73461781d2c802d39e/configobj-5.0.9-py2.py3-none-any.whl", hash = "sha256:1ba10c5b6ee16229c79a05047aeda2b55eb4e80d7c7d8ecf17ec1ca600c79882", size = 35615, upload-time = "2024-11-26T14:03:32.972Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform != 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, +] +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]] +name = "contourpy" +version = "1.3.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'win32'", + "python_full_version >= '3.12' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/2e/c4390a31919d8a78b90e8ecf87cd4b4c4f05a5b48d05ec17db8e5404c6f4/contourpy-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:709a48ef9a690e1343202916450bc48b9e51c049b089c7f79a267b46cffcdaa1", size = 288773, upload-time = "2025-07-26T12:01:02.277Z" }, + { url = "https://files.pythonhosted.org/packages/0d/44/c4b0b6095fef4dc9c420e041799591e3b63e9619e3044f7f4f6c21c0ab24/contourpy-1.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:23416f38bfd74d5d28ab8429cc4d63fa67d5068bd711a85edb1c3fb0c3e2f381", size = 270149, upload-time = "2025-07-26T12:01:04.072Z" }, + { url = "https://files.pythonhosted.org/packages/30/2e/dd4ced42fefac8470661d7cb7e264808425e6c5d56d175291e93890cce09/contourpy-1.3.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:929ddf8c4c7f348e4c0a5a3a714b5c8542ffaa8c22954862a46ca1813b667ee7", size = 329222, upload-time = "2025-07-26T12:01:05.688Z" }, + { url = "https://files.pythonhosted.org/packages/f2/74/cc6ec2548e3d276c71389ea4802a774b7aa3558223b7bade3f25787fafc2/contourpy-1.3.3-cp311-cp311-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9e999574eddae35f1312c2b4b717b7885d4edd6cb46700e04f7f02db454e67c1", size = 377234, upload-time = "2025-07-26T12:01:07.054Z" }, + { url = "https://files.pythonhosted.org/packages/03/b3/64ef723029f917410f75c09da54254c5f9ea90ef89b143ccadb09df14c15/contourpy-1.3.3-cp311-cp311-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0bf67e0e3f482cb69779dd3061b534eb35ac9b17f163d851e2a547d56dba0a3a", size = 380555, upload-time = "2025-07-26T12:01:08.801Z" }, + { url = "https://files.pythonhosted.org/packages/5f/4b/6157f24ca425b89fe2eb7e7be642375711ab671135be21e6faa100f7448c/contourpy-1.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51e79c1f7470158e838808d4a996fa9bac72c498e93d8ebe5119bc1e6becb0db", size = 355238, upload-time = "2025-07-26T12:01:10.319Z" }, + { url = "https://files.pythonhosted.org/packages/98/56/f914f0dd678480708a04cfd2206e7c382533249bc5001eb9f58aa693e200/contourpy-1.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:598c3aaece21c503615fd59c92a3598b428b2f01bfb4b8ca9c4edeecc2438620", size = 1326218, upload-time = "2025-07-26T12:01:12.659Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d7/4a972334a0c971acd5172389671113ae82aa7527073980c38d5868ff1161/contourpy-1.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:322ab1c99b008dad206d406bb61d014cf0174df491ae9d9d0fac6a6fda4f977f", size = 1392867, upload-time = "2025-07-26T12:01:15.533Z" }, + { url = "https://files.pythonhosted.org/packages/75/3e/f2cc6cd56dc8cff46b1a56232eabc6feea52720083ea71ab15523daab796/contourpy-1.3.3-cp311-cp311-win32.whl", hash = "sha256:fd907ae12cd483cd83e414b12941c632a969171bf90fc937d0c9f268a31cafff", size = 183677, upload-time = "2025-07-26T12:01:17.088Z" }, + { url = "https://files.pythonhosted.org/packages/98/4b/9bd370b004b5c9d8045c6c33cf65bae018b27aca550a3f657cdc99acdbd8/contourpy-1.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:3519428f6be58431c56581f1694ba8e50626f2dd550af225f82fb5f5814d2a42", size = 225234, upload-time = "2025-07-26T12:01:18.256Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b6/71771e02c2e004450c12b1120a5f488cad2e4d5b590b1af8bad060360fe4/contourpy-1.3.3-cp311-cp311-win_arm64.whl", hash = "sha256:15ff10bfada4bf92ec8b31c62bf7c1834c244019b4a33095a68000d7075df470", size = 193123, upload-time = "2025-07-26T12:01:19.848Z" }, + { url = "https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb", size = 293419, upload-time = "2025-07-26T12:01:21.16Z" }, + { url = "https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6", size = 273979, upload-time = "2025-07-26T12:01:22.448Z" }, + { url = "https://files.pythonhosted.org/packages/d4/1c/a12359b9b2ca3a845e8f7f9ac08bdf776114eb931392fcad91743e2ea17b/contourpy-1.3.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92d9abc807cf7d0e047b95ca5d957cf4792fcd04e920ca70d48add15c1a90ea7", size = 332653, upload-time = "2025-07-26T12:01:24.155Z" }, + { url = "https://files.pythonhosted.org/packages/63/12/897aeebfb475b7748ea67b61e045accdfcf0d971f8a588b67108ed7f5512/contourpy-1.3.3-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2e8faa0ed68cb29af51edd8e24798bb661eac3bd9f65420c1887b6ca89987c8", size = 379536, upload-time = "2025-07-26T12:01:25.91Z" }, + { url = "https://files.pythonhosted.org/packages/43/8a/a8c584b82deb248930ce069e71576fc09bd7174bbd35183b7943fb1064fd/contourpy-1.3.3-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:626d60935cf668e70a5ce6ff184fd713e9683fb458898e4249b63be9e28286ea", size = 384397, upload-time = "2025-07-26T12:01:27.152Z" }, + { url = "https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1", size = 362601, upload-time = "2025-07-26T12:01:28.808Z" }, + { url = "https://files.pythonhosted.org/packages/05/0a/a3fe3be3ee2dceb3e615ebb4df97ae6f3828aa915d3e10549ce016302bd1/contourpy-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:451e71b5a7d597379ef572de31eeb909a87246974d960049a9848c3bc6c41bf7", size = 1331288, upload-time = "2025-07-26T12:01:31.198Z" }, + { url = "https://files.pythonhosted.org/packages/33/1d/acad9bd4e97f13f3e2b18a3977fe1b4a37ecf3d38d815333980c6c72e963/contourpy-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:459c1f020cd59fcfe6650180678a9993932d80d44ccde1fa1868977438f0b411", size = 1403386, upload-time = "2025-07-26T12:01:33.947Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8f/5847f44a7fddf859704217a99a23a4f6417b10e5ab1256a179264561540e/contourpy-1.3.3-cp312-cp312-win32.whl", hash = "sha256:023b44101dfe49d7d53932be418477dba359649246075c996866106da069af69", size = 185018, upload-time = "2025-07-26T12:01:35.64Z" }, + { url = "https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:8153b8bfc11e1e4d75bcb0bff1db232f9e10b274e0929de9d608027e0d34ff8b", size = 226567, upload-time = "2025-07-26T12:01:36.804Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e2/f05240d2c39a1ed228d8328a78b6f44cd695f7ef47beb3e684cf93604f86/contourpy-1.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:07ce5ed73ecdc4a03ffe3e1b3e3c1166db35ae7584be76f65dbbe28a7791b0cc", size = 193655, upload-time = "2025-07-26T12:01:37.999Z" }, + { url = "https://files.pythonhosted.org/packages/a5/29/8dcfe16f0107943fa92388c23f6e05cff0ba58058c4c95b00280d4c75a14/contourpy-1.3.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd5dfcaeb10f7b7f9dc8941717c6c2ade08f587be2226222c12b25f0483ed497", size = 278809, upload-time = "2025-07-26T12:02:52.74Z" }, + { url = "https://files.pythonhosted.org/packages/85/a9/8b37ef4f7dafeb335daee3c8254645ef5725be4d9c6aa70b50ec46ef2f7e/contourpy-1.3.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:0c1fc238306b35f246d61a1d416a627348b5cf0648648a031e14bb8705fcdfe8", size = 261593, upload-time = "2025-07-26T12:02:54.037Z" }, + { url = "https://files.pythonhosted.org/packages/0a/59/ebfb8c677c75605cc27f7122c90313fd2f375ff3c8d19a1694bda74aaa63/contourpy-1.3.3-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:70f9aad7de812d6541d29d2bbf8feb22ff7e1c299523db288004e3157ff4674e", size = 302202, upload-time = "2025-07-26T12:02:55.947Z" }, + { url = "https://files.pythonhosted.org/packages/3c/37/21972a15834d90bfbfb009b9d004779bd5a07a0ec0234e5ba8f64d5736f4/contourpy-1.3.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ed3657edf08512fc3fe81b510e35c2012fbd3081d2e26160f27ca28affec989", size = 329207, upload-time = "2025-07-26T12:02:57.468Z" }, + { url = "https://files.pythonhosted.org/packages/0c/58/bd257695f39d05594ca4ad60df5bcb7e32247f9951fd09a9b8edb82d1daa/contourpy-1.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:3d1a3799d62d45c18bafd41c5fa05120b96a28079f2393af559b843d1a966a77", size = 225315, upload-time = "2025-07-26T12:02:58.801Z" }, +] + +[[package]] +name = "cuda-bindings" +version = "12.9.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cuda-pathfinder", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/9d/dd87e1071bcb2e438c14e2e4497aa0037faf2c9775ac1d172f578f448668/cuda_bindings-12.9.6-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bb2f1eedc8f65902b34e807c21a3b7c922dc8de1f51d0829ecbb5c6a5e9c5ff1", size = 7094433, upload-time = "2026-03-11T14:47:22.811Z" }, + { url = "https://files.pythonhosted.org/packages/8c/1d/5631df2faa5e5f6bd3e8fef098d6fc1b7c6f38811821332ef28ad82ce0d4/cuda_bindings-12.9.6-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9f9031e7a265e74f1517668139987253552d1677d995da4b0d990aa19b9b9b0", size = 7626833, upload-time = "2026-03-11T14:47:25.046Z" }, + { url = "https://files.pythonhosted.org/packages/1f/a5/e9d37c10f6c27c9c65d53c6cd6d9763e1df99c004780585fc2ad9041fbe3/cuda_bindings-12.9.6-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2662f59db67d9aeaf8959c593c91f600792c2970cf02cae2814387fc687b115a", size = 7090971, upload-time = "2026-03-11T14:47:29.526Z" }, + { url = "https://files.pythonhosted.org/packages/66/d5/bd4c03e9516d3cf788a270debe28d687e5c48b13a9931599bbddf01de302/cuda_bindings-12.9.6-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8519707644ea630a365b101703a9136f4cb144760cc2c73281c38a05e07d08d", size = 7618785, upload-time = "2026-03-11T14:47:31.531Z" }, + { url = "https://files.pythonhosted.org/packages/50/04/8a4d45dc154a8a32982658cc55be291e9778d1197834b15d33427e2f65c1/cuda_bindings-12.9.6-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ea331bc47d9988cc61f0ecc5fa8df9dd188b4493ae1c6688bb1ee8ce8ba1af4", size = 7050347, upload-time = "2026-03-11T14:47:35.221Z" }, + { url = "https://files.pythonhosted.org/packages/3b/69/4b0375e1b120dfa7427c31c8420cfdee596ecd03955fd291a96116fa375d/cuda_bindings-12.9.6-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b2b54b95a47104eff56b5155818ab5790e3ccdba8dd51e2928ae56782aaf5b02", size = 7590574, upload-time = "2026-03-11T14:47:37.452Z" }, +] + +[[package]] +name = "cuda-pathfinder" +version = "1.5.3" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d3/d6/ac63065d33dd700fee7ebd7d287332401b54e31b9346e142f871e1f0b116/cuda_pathfinder-1.5.3-py3-none-any.whl", hash = "sha256:dff021123aedbb4117cc7ec81717bbfe198fb4e8b5f1ee57e0e084fec5c8577d", size = 49991, upload-time = "2026-04-14T20:09:27.037Z" }, +] + +[[package]] +name = "cuda-toolkit" +version = "12.8.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/c8/7dce3a0b15b42a3b58e7d96eb22a687d3bf2c44e01d149a6874629cd9938/cuda_toolkit-12.8.1-py2.py3-none-any.whl", hash = "sha256:adc7906af4ecbf9a352f9dca5734eceb21daec281ccfcf5675e1d2f724fc2cba", size = 2283, upload-time = "2025-08-13T02:03:07.842Z" }, +] + +[package.optional-dependencies] +cublas = [ + { name = "nvidia-cublas-cu12", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, +] +cudart = [ + { name = "nvidia-cuda-runtime-cu12", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, +] +cufft = [ + { name = "nvidia-cufft-cu12", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, +] +cufile = [ + { name = "nvidia-cufile-cu12", marker = "sys_platform == 'linux'" }, +] +cupti = [ + { name = "nvidia-cuda-cupti-cu12", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, +] +curand = [ + { name = "nvidia-curand-cu12", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, +] +cusolver = [ + { name = "nvidia-cusolver-cu12", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, +] +cusparse = [ + { name = "nvidia-cusparse-cu12", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, +] +nvjitlink = [ + { name = "nvidia-nvjitlink-cu12", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, +] +nvrtc = [ + { name = "nvidia-cuda-nvrtc-cu12", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, +] +nvtx = [ + { name = "nvidia-nvtx-cu12", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, +] + +[[package]] +name = "deepforest" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp" }, + { name = "aiolimiter" }, + { name = "faster-coco-eval" }, + { name = "geopandas" }, + { name = "h5py" }, + { name = "huggingface-hub" }, + { name = "hydra-core" }, + { name = "kornia" }, + { name = "matplotlib" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "omegaconf" }, + { name = "opencv-python-headless" }, + { name = "pandas", version = "2.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "pandas", version = "3.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "pillow" }, + { name = "psutil" }, + { name = "pytorch-lightning" }, + { name = "pyyaml" }, + { name = "rasterio", version = "1.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "rasterio", version = "1.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "safetensors" }, + { name = "setuptools" }, + { name = "shapely" }, + { name = "slidingwindow" }, + { name = "supervision" }, + { name = "tensorboard" }, + { name = "timm" }, + { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "sys_platform != 'darwin'" }, + { name = "torchvision", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torchvision", version = "0.26.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "sys_platform != 'darwin'" }, + { name = "tqdm" }, + { name = "transformers" }, + { name = "xmltodict" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/81/1e/3057d557a92ec20b9e1d2f86f21753614c78cb048b708ee1581b077b2e44/deepforest-2.1.0.tar.gz", hash = "sha256:fa224f3ae3c099876296f3b821de759a3be780162a19d49b42b313e0fc328d45", size = 20636788, upload-time = "2026-02-26T12:30:59.963Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/a8/67e66685c81ec070372db546f933312c6d7401f845e200e5d900107ff51e/deepforest-2.1.0-py3-none-any.whl", hash = "sha256:8c2798d8e9be7f0004b194fe207b76c1d9fff6e711b3db67b9508dcd5d00ae54", size = 20639595, upload-time = "2026-02-26T12:30:57.147Z" }, +] + +[[package]] +name = "deeptreeattention" +version = "0.1.0" +source = { editable = "." } +dependencies = [ + { name = "comet-ml" }, + { name = "deepforest" }, + { name = "descartes" }, + { name = "geopandas" }, + { name = "h5py" }, + { name = "matplotlib" }, + { name = "neonutilities" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging" }, + { name = "pandas", version = "2.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "pandas", version = "3.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "python-dotenv" }, + { name = "pytorch-lightning" }, + { name = "pyyaml" }, + { name = "rasterio", version = "1.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "rasterio", version = "1.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "rasterstats" }, + { name = "scikit-image", version = "0.25.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "scikit-image", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "scikit-learn", version = "1.7.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "scikit-learn", version = "1.8.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "shapely" }, + { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "sys_platform != 'darwin'" }, + { name = "torchmetrics" }, + { name = "torchvision", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torchvision", version = "0.26.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "sys_platform != 'darwin'" }, +] + +[package.optional-dependencies] +dev = [ + { name = "pytest" }, + { name = "ruff" }, +] + +[package.metadata] +requires-dist = [ + { name = "comet-ml" }, + { name = "deepforest", specifier = ">=2.0.0" }, + { name = "descartes" }, + { name = "geopandas" }, + { name = "h5py" }, + { name = "matplotlib" }, + { name = "neonutilities" }, + { name = "numpy" }, + { name = "packaging", specifier = ">=26.1" }, + { name = "pandas" }, + { name = "pytest", marker = "extra == 'dev'" }, + { name = "python-dotenv" }, + { name = "pytorch-lightning" }, + { name = "pyyaml" }, + { name = "rasterio" }, + { name = "rasterstats" }, + { name = "ruff", marker = "extra == 'dev'" }, + { name = "scikit-image" }, + { name = "scikit-learn" }, + { name = "shapely" }, + { name = "torch", marker = "sys_platform != 'darwin'", index = "https://download.pytorch.org/whl/cu128" }, + { name = "torch", marker = "sys_platform == 'darwin'" }, + { name = "torchmetrics" }, + { name = "torchvision", marker = "sys_platform != 'darwin'", index = "https://download.pytorch.org/whl/cu128" }, + { name = "torchvision", marker = "sys_platform == 'darwin'" }, +] +provides-extras = ["dev"] + +[[package]] +name = "defusedxml" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, +] + +[[package]] +name = "descartes" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "matplotlib" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1d/6f/81735a30432b74f41db6754dd13869021ccfed3088d1cf7a6cfc0af9ac49/descartes-1.1.0.tar.gz", hash = "sha256:135a502146af5ed6ff359975e2ebc5fa4b71b5432c355c2cafdc6dea1337035b", size = 3525, upload-time = "2017-01-17T15:37:03.945Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/b6/1ed2eb03989ae574584664985367ba70cd9cf8b32ee8cad0e8aaeac819f3/descartes-1.1.0-py3-none-any.whl", hash = "sha256:4c62dc41109689d03e4b35de0a2bcbdeeb81047badc607c4415d5c753bd683af", size = 5804, upload-time = "2017-01-17T15:37:02.525Z" }, +] + +[[package]] +name = "dulwich" +version = "0.25.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.12'" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ba/b8/9c9bc6ac66007f8090b1da9079c0e4bbea5aa9583c3c12098e0f11462dd5/dulwich-0.25.2.tar.gz", hash = "sha256:bca22c8aa4cbecbe8493b76e3fd6101513f09cf405cd9b92e116a48d9469e55a", size = 1126499, upload-time = "2026-01-11T22:04:47.667Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/fc/15143a5c8bd328e5e12d261bcd73ccfc4c790a249c5d50518605d5ed7a9a/dulwich-0.25.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:263877e5c73b02823af402fe2b2f4f7be57837e9d1d009c7f35ef5929a117fa7", size = 1339743, upload-time = "2026-01-11T22:04:03.904Z" }, + { url = "https://files.pythonhosted.org/packages/61/be/595b4fb288a41f72fe5c596a125a94dd22a9a306f2dd0b71836c6a73dd10/dulwich-0.25.2-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:cf51562d4d28f82d9118ea1b7311cd517a1a6b75a8ef2f41ea8c954e45419762", size = 1402696, upload-time = "2026-01-11T22:04:06.073Z" }, + { url = "https://files.pythonhosted.org/packages/e0/1f/c6eb7e5aa604f597595193044ae1c24f793d466c4fd547179add5e5c1a1e/dulwich-0.25.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:1f305e76793439cc874e5d291ad7e5cb6af114bdcc436bdf2819b4c16886bfc3", size = 1431404, upload-time = "2026-01-11T22:04:07.67Z" }, + { url = "https://files.pythonhosted.org/packages/d3/11/df035ae10003a187b05d6d8143a26c3ce65422934f0db4fb76936332017c/dulwich-0.25.2-cp310-cp310-win32.whl", hash = "sha256:b2561012bdb28cf324a3695d4cafb38493bd6a2e7fa2313167e57352f77d5abc", size = 988688, upload-time = "2026-01-11T22:04:09.188Z" }, + { url = "https://files.pythonhosted.org/packages/a5/49/014935b97077c9d4aa74bbf913bb141f76e4ae55329533c3c01b203409cb/dulwich-0.25.2-cp310-cp310-win_amd64.whl", hash = "sha256:601e52105184eeb8ed7fbc142a97327eddf78e2c71f18d6491fef3db225ccb8d", size = 1004141, upload-time = "2026-01-11T22:04:10.618Z" }, + { url = "https://files.pythonhosted.org/packages/ec/22/b6cbdf804b401318df1be69d79dfb307d7547c7e97bf1c0617e4bcd8aee1/dulwich-0.25.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7a662d0ad211290b39e75859cff656efa93acb06d79ccee978684a5a9ea74935", size = 1339095, upload-time = "2026-01-11T22:04:12.369Z" }, + { url = "https://files.pythonhosted.org/packages/ed/8a/772b97a8bd023bfab9c6eb690ea60ff321948a308e3ced7af5358a30d061/dulwich-0.25.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:fe5e5e06e52bc03fe809c50bb65554a363eee63259b6d9fc46eadaf49129c400", size = 1402305, upload-time = "2026-01-11T22:04:14.633Z" }, + { url = "https://files.pythonhosted.org/packages/53/06/4a3491b0ee7f12d083389ca330523b3de3f759c565e1832824c5e5a500f9/dulwich-0.25.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d331a20ba827da1d5d95de5a5151c6b7a945ddcdd381a61aeea543dc5e821be1", size = 1430967, upload-time = "2026-01-11T22:04:16.604Z" }, + { url = "https://files.pythonhosted.org/packages/5d/dd/b90dc96dc7374e20305444276413e9adda246ed6da67897f5cf19e7a6d24/dulwich-0.25.2-cp311-cp311-win32.whl", hash = "sha256:093b14820fe208f83688538e9232c91cb4b2af69c8ece524129e7bdd03a50864", size = 987632, upload-time = "2026-01-11T22:04:18.268Z" }, + { url = "https://files.pythonhosted.org/packages/98/0b/3bcd27ff638634e9c4ae09f53212a0ccbf5b7c71762e42a9969e58cce865/dulwich-0.25.2-cp311-cp311-win_amd64.whl", hash = "sha256:428e5c513401fb089793f22dc585fdde0e87ef9c9753e20551e5e0f5265e3f16", size = 1004139, upload-time = "2026-01-11T22:04:19.691Z" }, + { url = "https://files.pythonhosted.org/packages/da/8a/4ec87df697cf1af9172b015e1256ca93856d9454d7e24a4f9168d3667892/dulwich-0.25.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce00c68c4fcd7ea53641153a69aab9a010ae140387a39f13e9ecf05f60fefd77", size = 1318435, upload-time = "2026-01-11T22:04:21.97Z" }, + { url = "https://files.pythonhosted.org/packages/e1/fe/1260a7217eb439bae33bae3af98b84ed53e0601e19bd87e580df09650021/dulwich-0.25.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:6ece907b40f503c68e27bd77c71d3de25ac5c6256c43b82f7843232e7769cebd", size = 1395034, upload-time = "2026-01-11T22:04:23.384Z" }, + { url = "https://files.pythonhosted.org/packages/3f/24/e8cec93df1bfba4087919842a0754b50f0c6e605d620976d5d8625229caa/dulwich-0.25.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e2d5cc06cc25d88f87fd966bee74c62903473f81a1646323bf1e4fe8fec4b797", size = 1423110, upload-time = "2026-01-11T22:04:24.937Z" }, + { url = "https://files.pythonhosted.org/packages/4e/4b/f4ef7c2dcf7b47c27518461e0acf32eaf76fd357a1aa02ce3de0f1b04578/dulwich-0.25.2-cp312-cp312-win32.whl", hash = "sha256:62c7fe4931a5457745aaa263dea6388a6334ba03e65990fadd10b1857f5ad741", size = 982792, upload-time = "2026-01-11T22:04:26.929Z" }, + { url = "https://files.pythonhosted.org/packages/87/2b/bee92d4c4dc8ccfdbe64a87464e5970c78ea9b201c7d57f15342330d32de/dulwich-0.25.2-cp312-cp312-win_amd64.whl", hash = "sha256:3977d089e4c68fc1589457d7a19a7637a1d8f173702f18eb1c198bb4d34e52b0", size = 1000183, upload-time = "2026-01-11T22:04:29.013Z" }, + { url = "https://files.pythonhosted.org/packages/87/eb/153b2b32dca090e956a1e512293db3c7c144db50da439373d1be56880512/dulwich-0.25.2-py3-none-any.whl", hash = "sha256:19dd5a0e08a47483be7f404e2555136a9ebaf70781fee3280457f8e2d65b2388", size = 650045, upload-time = "2026-01-11T22:04:45.398Z" }, +] + +[[package]] +name = "everett" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c0/b4/c7c61c0b243c4277d19299cd1bccee8b2b57d04073c0d8625799fe47f5c9/everett-3.1.0.tar.gz", hash = "sha256:46175da5bcb06c193aa129e59714bca981344ff067c3a8bc2e625bc0b3dc01f6", size = 73796, upload-time = "2022-10-26T15:15:00.651Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/9a/d882fd7562208456236fb2e62b762bf16fbc9ecde842bb871f676ca0f7e1/everett-3.1.0-py2.py3-none-any.whl", hash = "sha256:db13891b849e45e54faea93ee79881d12458c5378f5b9b7f806eeff03ce1de3c", size = 35702, upload-time = "2022-10-26T15:14:58.698Z" }, +] + +[package.optional-dependencies] +ini = [ + { name = "configobj" }, +] + +[[package]] +name = "exceptiongroup" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" }, +] + +[[package]] +name = "faster-coco-eval" +version = "1.7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9f/76/1e6a6abef23d1c736124482a7e4c58579509914264dc19ee5f513f54d4b6/faster_coco_eval-1.7.2.tar.gz", hash = "sha256:7f06cad6d60a4624c1e4a479b2d612be3e98565fc0dd4c8b41dabd5bdfe45557", size = 103791, upload-time = "2026-02-22T19:48:35.361Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/3e/4ac3605dd3d13d615586c59557e5ea58f0ab5d83e3fbde426da3a553dc28/faster_coco_eval-1.7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4f44282b348291c91eca76edaa62eb88532efb78a317a14c4ef4c0104544a431", size = 355376, upload-time = "2026-02-22T19:47:51.37Z" }, + { url = "https://files.pythonhosted.org/packages/2f/a9/c49a6d9bbe17a831f698cbed3813bcd03dfd052603794f5624eb172e05b5/faster_coco_eval-1.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c8231e0234b733eec66bd9ea86445c52f9f0283f36a986a4c35711bc074b99b", size = 580135, upload-time = "2026-02-22T19:47:53.03Z" }, + { url = "https://files.pythonhosted.org/packages/b0/f7/a17d637a54d1af4b79bc04d7c61d8a9c286287561c878edb1134a112028b/faster_coco_eval-1.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35a43a57d89551960ab9950f2e1a44f5040ada5becef47367a530e0cf4ab474b", size = 578187, upload-time = "2026-02-22T19:47:54.496Z" }, + { url = "https://files.pythonhosted.org/packages/73/62/b7f322b203903ab45d3d28299d5a50bf21666565ab50846af9626347517b/faster_coco_eval-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:d9dd0ddf59bfc215a93591fa812b97ece01f4f1514ff7e8c9b1914bce158e86d", size = 320650, upload-time = "2026-02-22T19:47:55.58Z" }, + { url = "https://files.pythonhosted.org/packages/be/ee/256f6f2e80f0b1c7693ea6a3d58e47a8985fac8836e047ce308ca8f85869/faster_coco_eval-1.7.2-cp310-cp310-win_arm64.whl", hash = "sha256:1e286b7dbce43792f2e1204e3abd41cbed2e3795ca0286ffffd55de4f15a506b", size = 318257, upload-time = "2026-02-22T19:47:57.026Z" }, + { url = "https://files.pythonhosted.org/packages/a4/df/c2e12f6d3c4053032708e4009be90a6cef91c243c025888b983ec2658c03/faster_coco_eval-1.7.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bbb61508d2695bdedb9529cad1916e24a309419214133babaee63f9ed412d468", size = 358427, upload-time = "2026-02-22T19:47:58.142Z" }, + { url = "https://files.pythonhosted.org/packages/93/5b/5c9b2ba525fe8e9cbfeeafc67ba0f9fb7d2aac1e6f21e1f01aaf1e876681/faster_coco_eval-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19ef06f197b40e48bfa815b4024dbbb3ed7c0579edb0e41522248343e85154a2", size = 583299, upload-time = "2026-02-22T19:47:59.563Z" }, + { url = "https://files.pythonhosted.org/packages/54/0e/b0813e0220501805178841b49d9e2ebfe739bfd0001f5e5d0467725b993d/faster_coco_eval-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb056f386e636584eeba166454f928f522dbd197cd1bd583de46f765e81758d1", size = 581657, upload-time = "2026-02-22T19:48:01.199Z" }, + { url = "https://files.pythonhosted.org/packages/48/bd/d1264568620b9b22861594aa29f0a8ce2249476a2532945930bcf5f134a0/faster_coco_eval-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:1cfe43beafd16622845317b50233c84d8da33b5034ef1ac7d5e76a181631d875", size = 321744, upload-time = "2026-02-22T19:48:02.605Z" }, + { url = "https://files.pythonhosted.org/packages/62/35/039ae826bd58610dc6cd2aa1aa91ab6f3835c7ab854df23ed87e4169686e/faster_coco_eval-1.7.2-cp311-cp311-win_arm64.whl", hash = "sha256:0e0bf19fdcc8dd2ea08b761ce03178fbbee1525b04296f7b90c9a0a07a104f84", size = 319572, upload-time = "2026-02-22T19:48:03.716Z" }, + { url = "https://files.pythonhosted.org/packages/3d/87/68e110a852b08b9580fa6b968706a8e416f0a925d580e7bce8bfd4187d9d/faster_coco_eval-1.7.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a0c2cbe9b86b772b2bafd345f09f746f818dbf778c076044e007bbf8c01da643", size = 357387, upload-time = "2026-02-22T19:48:05.13Z" }, + { url = "https://files.pythonhosted.org/packages/5f/a9/f0f902f84a900bdff1768065c5aa881a49cc683b3f081b79046d4be62717/faster_coco_eval-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d323acfcfb70096d053bcbc38ebbb8244f8b95a660e7c2579b8f0bfc0a023c51", size = 583711, upload-time = "2026-02-22T19:48:06.857Z" }, + { url = "https://files.pythonhosted.org/packages/29/fc/35048c6446b07df92fad6078ac9d6ff3d4a34d910e6a1ca2066024919e3e/faster_coco_eval-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a77a5dc5615b6519791e2243beb353a7c4f7ee4e9234b813a5fc276512d9f39", size = 588058, upload-time = "2026-02-22T19:48:08.298Z" }, + { url = "https://files.pythonhosted.org/packages/de/59/a7b8c1f45c3cac9f25dcaa3a307f8902d75edef452f197a4940a1b896592/faster_coco_eval-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:71de34e5a56a1bd487599d943821691c5c5dc46cac1e9a5acc784fab80cc06f7", size = 323791, upload-time = "2026-02-22T19:48:09.708Z" }, + { url = "https://files.pythonhosted.org/packages/9a/b9/faee4d2bf28810dd11922cad137ba5de9a3dd290651886217b9a529c368a/faster_coco_eval-1.7.2-cp312-cp312-win_arm64.whl", hash = "sha256:e333c5f9b0047907ab4ecd2590ef023c92787fbfa4adb393c0122e02174abefd", size = 316936, upload-time = "2026-02-22T19:48:11.169Z" }, +] + +[[package]] +name = "filelock" +version = "3.29.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/fe/997687a931ab51049acce6fa1f23e8f01216374ea81374ddee763c493db5/filelock-3.29.0.tar.gz", hash = "sha256:69974355e960702e789734cb4871f884ea6fe50bd8404051a3530bc07809cf90", size = 57571, upload-time = "2026-04-19T15:39:10.068Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/47/dd9a212ef6e343a6857485ffe25bba537304f1913bdbed446a23f7f592e1/filelock-3.29.0-py3-none-any.whl", hash = "sha256:96f5f6344709aa1572bbf631c640e4ebeeb519e08da902c39a001882f30ac258", size = 39812, upload-time = "2026-04-19T15:39:08.752Z" }, +] + +[[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, 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, 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.62.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/08/7012b00a9a5874311b639c3920270c36ee0c445b69d9989a85e5c92ebcb0/fonttools-4.62.1.tar.gz", hash = "sha256:e54c75fd6041f1122476776880f7c3c3295ffa31962dc6ebe2543c00dca58b5d", size = 3580737, upload-time = "2026-03-13T13:54:25.52Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/ff/532ed43808b469c807e8cb6b21358da3fe6fd51486b3a8c93db0bb5d957f/fonttools-4.62.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ad5cca75776cd453b1b035b530e943334957ae152a36a88a320e779d61fc980c", size = 2873740, upload-time = "2026-03-13T13:52:11.822Z" }, + { url = "https://files.pythonhosted.org/packages/85/e4/2318d2b430562da7227010fb2bb029d2fa54d7b46443ae8942bab224e2a0/fonttools-4.62.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0b3ae47e8636156a9accff64c02c0924cbebad62854c4a6dbdc110cd5b4b341a", size = 2417649, upload-time = "2026-03-13T13:52:14.605Z" }, + { url = "https://files.pythonhosted.org/packages/4c/28/40f15523b5188598018e7956899fed94eb7debec89e2dd70cb4a8df90492/fonttools-4.62.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c9b9e288b4da2f64fd6180644221749de651703e8d0c16bd4b719533a3a7d6e3", size = 4935213, upload-time = "2026-03-13T13:52:17.399Z" }, + { url = "https://files.pythonhosted.org/packages/42/09/7dbe3d7023f57d9b580cfa832109d521988112fd59dddfda3fddda8218f9/fonttools-4.62.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7bca7a1c1faf235ffe25d4f2e555246b4750220b38de8261d94ebc5ce8a23c23", size = 4892374, upload-time = "2026-03-13T13:52:20.175Z" }, + { url = "https://files.pythonhosted.org/packages/d1/2d/84509a2e32cb925371560ef5431365d8da2183c11d98e5b4b8b4e42426a5/fonttools-4.62.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b4e0fcf265ad26e487c56cb12a42dffe7162de708762db951e1b3f755319507d", size = 4911856, upload-time = "2026-03-13T13:52:22.777Z" }, + { url = "https://files.pythonhosted.org/packages/a5/80/df28131379eed93d9e6e6fccd3bf6e3d077bebbfe98cc83f21bbcd83ed02/fonttools-4.62.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2d850f66830a27b0d498ee05adb13a3781637b1826982cd7e2b3789ef0cc71ae", size = 5031712, upload-time = "2026-03-13T13:52:25.14Z" }, + { url = "https://files.pythonhosted.org/packages/3d/03/3c8f09aad64230cd6d921ae7a19f9603c36f70930b00459f112706f6769a/fonttools-4.62.1-cp310-cp310-win32.whl", hash = "sha256:486f32c8047ccd05652aba17e4a8819a3a9d78570eb8a0e3b4503142947880ed", size = 1507878, upload-time = "2026-03-13T13:52:28.149Z" }, + { url = "https://files.pythonhosted.org/packages/dd/ec/f53f626f8f3e89f4cadd8fc08f3452c8fd182c951ad5caa35efac22b29ab/fonttools-4.62.1-cp310-cp310-win_amd64.whl", hash = "sha256:5a648bde915fba9da05ae98856987ca91ba832949a9e2888b48c47ef8b96c5a9", size = 1556766, upload-time = "2026-03-13T13:52:30.814Z" }, + { url = "https://files.pythonhosted.org/packages/88/39/23ff32561ec8d45a4d48578b4d241369d9270dc50926c017570e60893701/fonttools-4.62.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:40975849bac44fb0b9253d77420c6d8b523ac4dcdcefeff6e4d706838a5b80f7", size = 2871039, upload-time = "2026-03-13T13:52:33.127Z" }, + { url = "https://files.pythonhosted.org/packages/24/7f/66d3f8a9338a9b67fe6e1739f47e1cd5cee78bd3bc1206ef9b0b982289a5/fonttools-4.62.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9dde91633f77fa576879a0c76b1d89de373cae751a98ddf0109d54e173b40f14", size = 2416346, upload-time = "2026-03-13T13:52:35.676Z" }, + { url = "https://files.pythonhosted.org/packages/aa/53/5276ceba7bff95da7793a07c5284e1da901cf00341ce5e2f3273056c0cca/fonttools-4.62.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6acb4109f8bee00fec985c8c7afb02299e35e9c94b57287f3ea542f28bd0b0a7", size = 5100897, upload-time = "2026-03-13T13:52:38.102Z" }, + { url = "https://files.pythonhosted.org/packages/cc/a1/40a5c4d8e28b0851d53a8eeeb46fbd73c325a2a9a165f290a5ed90e6c597/fonttools-4.62.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1c5c25671ce8805e0d080e2ffdeca7f1e86778c5cbfbeae86d7f866d8830517b", size = 5071078, upload-time = "2026-03-13T13:52:41.305Z" }, + { url = "https://files.pythonhosted.org/packages/e3/be/d378fca4c65ea1956fee6d90ace6e861776809cbbc5af22388a090c3c092/fonttools-4.62.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a5d8825e1140f04e6c99bb7d37a9e31c172f3bc208afbe02175339e699c710e1", size = 5076908, upload-time = "2026-03-13T13:52:44.122Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d9/ae6a1d0693a4185a84605679c8a1f719a55df87b9c6e8e817bfdd9ef5936/fonttools-4.62.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:268abb1cb221e66c014acc234e872b7870d8b5d4657a83a8f4205094c32d2416", size = 5202275, upload-time = "2026-03-13T13:52:46.591Z" }, + { url = "https://files.pythonhosted.org/packages/54/6c/af95d9c4efb15cabff22642b608342f2bd67137eea6107202d91b5b03184/fonttools-4.62.1-cp311-cp311-win32.whl", hash = "sha256:942b03094d7edbb99bdf1ae7e9090898cad7bf9030b3d21f33d7072dbcb51a53", size = 2293075, upload-time = "2026-03-13T13:52:48.711Z" }, + { url = "https://files.pythonhosted.org/packages/d3/97/bf54c5b3f2be34e1f143e6db838dfdc54f2ffa3e68c738934c82f3b2a08d/fonttools-4.62.1-cp311-cp311-win_amd64.whl", hash = "sha256:e8514f4924375f77084e81467e63238b095abda5107620f49421c368a6017ed2", size = 2344593, upload-time = "2026-03-13T13:52:50.725Z" }, + { url = "https://files.pythonhosted.org/packages/47/d4/dbacced3953544b9a93088cc10ef2b596d348c983d5c67a404fa41ec51ba/fonttools-4.62.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:90365821debbd7db678809c7491ca4acd1e0779b9624cdc6ddaf1f31992bf974", size = 2870219, upload-time = "2026-03-13T13:52:53.664Z" }, + { url = "https://files.pythonhosted.org/packages/66/9e/a769c8e99b81e5a87ab7e5e7236684de4e96246aae17274e5347d11ebd78/fonttools-4.62.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12859ff0b47dd20f110804c3e0d0970f7b832f561630cd879969011541a464a9", size = 2414891, upload-time = "2026-03-13T13:52:56.493Z" }, + { url = "https://files.pythonhosted.org/packages/69/64/f19a9e3911968c37e1e620e14dfc5778299e1474f72f4e57c5ec771d9489/fonttools-4.62.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c125ffa00c3d9003cdaaf7f2c79e6e535628093e14b5de1dccb08859b680936", size = 5033197, upload-time = "2026-03-13T13:52:59.179Z" }, + { url = "https://files.pythonhosted.org/packages/9b/8a/99c8b3c3888c5c474c08dbfd7c8899786de9604b727fcefb055b42c84bba/fonttools-4.62.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:149f7d84afca659d1a97e39a4778794a2f83bf344c5ee5134e09995086cc2392", size = 4988768, upload-time = "2026-03-13T13:53:02.761Z" }, + { url = "https://files.pythonhosted.org/packages/d1/c6/0f904540d3e6ab463c1243a0d803504826a11604c72dd58c2949796a1762/fonttools-4.62.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0aa72c43a601cfa9273bb1ae0518f1acadc01ee181a6fc60cd758d7fdadffc04", size = 4971512, upload-time = "2026-03-13T13:53:05.678Z" }, + { url = "https://files.pythonhosted.org/packages/29/0b/5cbef6588dc9bd6b5c9ad6a4d5a8ca384d0cea089da31711bbeb4f9654a6/fonttools-4.62.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:19177c8d96c7c36359266e571c5173bcee9157b59cfc8cb0153c5673dc5a3a7d", size = 5122723, upload-time = "2026-03-13T13:53:08.662Z" }, + { url = "https://files.pythonhosted.org/packages/4a/47/b3a5342d381595ef439adec67848bed561ab7fdb1019fa522e82101b7d9c/fonttools-4.62.1-cp312-cp312-win32.whl", hash = "sha256:a24decd24d60744ee8b4679d38e88b8303d86772053afc29b19d23bb8207803c", size = 2281278, upload-time = "2026-03-13T13:53:10.998Z" }, + { url = "https://files.pythonhosted.org/packages/28/b1/0c2ab56a16f409c6c8a68816e6af707827ad5d629634691ff60a52879792/fonttools-4.62.1-cp312-cp312-win_amd64.whl", hash = "sha256:9e7863e10b3de72376280b515d35b14f5eeed639d1aa7824f4cf06779ec65e42", size = 2331414, upload-time = "2026-03-13T13:53:13.992Z" }, + { url = "https://files.pythonhosted.org/packages/fd/ba/56147c165442cc5ba7e82ecf301c9a68353cede498185869e6e02b4c264f/fonttools-4.62.1-py3-none-any.whl", hash = "sha256:7487782e2113861f4ddcc07c3436450659e3caa5e470b27dc2177cade2d8e7fd", size = 1152647, upload-time = "2026-03-13T13:54:22.735Z" }, +] + +[[package]] +name = "frozenlist" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/f5/c831fac6cc817d26fd54c7eaccd04ef7e0288806943f7cc5bbf69f3ac1f0/frozenlist-1.8.0.tar.gz", hash = "sha256:3ede829ed8d842f6cd48fc7081d7a41001a56f1f38603f9d49bf3020d59a31ad", size = 45875, upload-time = "2025-10-06T05:38:17.865Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/4a/557715d5047da48d54e659203b9335be7bfaafda2c3f627b7c47e0b3aaf3/frozenlist-1.8.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b37f6d31b3dcea7deb5e9696e529a6aa4a898adc33db82da12e4c60a7c4d2011", size = 86230, upload-time = "2025-10-06T05:35:23.699Z" }, + { url = "https://files.pythonhosted.org/packages/a2/fb/c85f9fed3ea8fe8740e5b46a59cc141c23b842eca617da8876cfce5f760e/frozenlist-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef2b7b394f208233e471abc541cc6991f907ffd47dc72584acee3147899d6565", size = 49621, upload-time = "2025-10-06T05:35:25.341Z" }, + { url = "https://files.pythonhosted.org/packages/63/70/26ca3f06aace16f2352796b08704338d74b6d1a24ca38f2771afbb7ed915/frozenlist-1.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a88f062f072d1589b7b46e951698950e7da00442fc1cacbe17e19e025dc327ad", size = 49889, upload-time = "2025-10-06T05:35:26.797Z" }, + { url = "https://files.pythonhosted.org/packages/5d/ed/c7895fd2fde7f3ee70d248175f9b6cdf792fb741ab92dc59cd9ef3bd241b/frozenlist-1.8.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f57fb59d9f385710aa7060e89410aeb5058b99e62f4d16b08b91986b9a2140c2", size = 219464, upload-time = "2025-10-06T05:35:28.254Z" }, + { url = "https://files.pythonhosted.org/packages/6b/83/4d587dccbfca74cb8b810472392ad62bfa100bf8108c7223eb4c4fa2f7b3/frozenlist-1.8.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:799345ab092bee59f01a915620b5d014698547afd011e691a208637312db9186", size = 221649, upload-time = "2025-10-06T05:35:29.454Z" }, + { url = "https://files.pythonhosted.org/packages/6a/c6/fd3b9cd046ec5fff9dab66831083bc2077006a874a2d3d9247dea93ddf7e/frozenlist-1.8.0-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c23c3ff005322a6e16f71bf8692fcf4d5a304aaafe1e262c98c6d4adc7be863e", size = 219188, upload-time = "2025-10-06T05:35:30.951Z" }, + { url = "https://files.pythonhosted.org/packages/ce/80/6693f55eb2e085fc8afb28cf611448fb5b90e98e068fa1d1b8d8e66e5c7d/frozenlist-1.8.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8a76ea0f0b9dfa06f254ee06053d93a600865b3274358ca48a352ce4f0798450", size = 231748, upload-time = "2025-10-06T05:35:32.101Z" }, + { url = "https://files.pythonhosted.org/packages/97/d6/e9459f7c5183854abd989ba384fe0cc1a0fb795a83c033f0571ec5933ca4/frozenlist-1.8.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c7366fe1418a6133d5aa824ee53d406550110984de7637d65a178010f759c6ef", size = 236351, upload-time = "2025-10-06T05:35:33.834Z" }, + { url = "https://files.pythonhosted.org/packages/97/92/24e97474b65c0262e9ecd076e826bfd1d3074adcc165a256e42e7b8a7249/frozenlist-1.8.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:13d23a45c4cebade99340c4165bd90eeb4a56c6d8a9d8aa49568cac19a6d0dc4", size = 218767, upload-time = "2025-10-06T05:35:35.205Z" }, + { url = "https://files.pythonhosted.org/packages/ee/bf/dc394a097508f15abff383c5108cb8ad880d1f64a725ed3b90d5c2fbf0bb/frozenlist-1.8.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:e4a3408834f65da56c83528fb52ce7911484f0d1eaf7b761fc66001db1646eff", size = 235887, upload-time = "2025-10-06T05:35:36.354Z" }, + { url = "https://files.pythonhosted.org/packages/40/90/25b201b9c015dbc999a5baf475a257010471a1fa8c200c843fd4abbee725/frozenlist-1.8.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:42145cd2748ca39f32801dad54aeea10039da6f86e303659db90db1c4b614c8c", size = 228785, upload-time = "2025-10-06T05:35:37.949Z" }, + { url = "https://files.pythonhosted.org/packages/84/f4/b5bc148df03082f05d2dd30c089e269acdbe251ac9a9cf4e727b2dbb8a3d/frozenlist-1.8.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e2de870d16a7a53901e41b64ffdf26f2fbb8917b3e6ebf398098d72c5b20bd7f", size = 230312, upload-time = "2025-10-06T05:35:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/db/4b/87e95b5d15097c302430e647136b7d7ab2398a702390cf4c8601975709e7/frozenlist-1.8.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:20e63c9493d33ee48536600d1a5c95eefc870cd71e7ab037763d1fbb89cc51e7", size = 217650, upload-time = "2025-10-06T05:35:40.377Z" }, + { url = "https://files.pythonhosted.org/packages/e5/70/78a0315d1fea97120591a83e0acd644da638c872f142fd72a6cebee825f3/frozenlist-1.8.0-cp310-cp310-win32.whl", hash = "sha256:adbeebaebae3526afc3c96fad434367cafbfd1b25d72369a9e5858453b1bb71a", size = 39659, upload-time = "2025-10-06T05:35:41.863Z" }, + { url = "https://files.pythonhosted.org/packages/66/aa/3f04523fb189a00e147e60c5b2205126118f216b0aa908035c45336e27e4/frozenlist-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:667c3777ca571e5dbeb76f331562ff98b957431df140b54c85fd4d52eea8d8f6", size = 43837, upload-time = "2025-10-06T05:35:43.205Z" }, + { url = "https://files.pythonhosted.org/packages/39/75/1135feecdd7c336938bd55b4dc3b0dfc46d85b9be12ef2628574b28de776/frozenlist-1.8.0-cp310-cp310-win_arm64.whl", hash = "sha256:80f85f0a7cc86e7a54c46d99c9e1318ff01f4687c172ede30fd52d19d1da1c8e", size = 39989, upload-time = "2025-10-06T05:35:44.596Z" }, + { url = "https://files.pythonhosted.org/packages/bc/03/077f869d540370db12165c0aa51640a873fb661d8b315d1d4d67b284d7ac/frozenlist-1.8.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:09474e9831bc2b2199fad6da3c14c7b0fbdd377cce9d3d77131be28906cb7d84", size = 86912, upload-time = "2025-10-06T05:35:45.98Z" }, + { url = "https://files.pythonhosted.org/packages/df/b5/7610b6bd13e4ae77b96ba85abea1c8cb249683217ef09ac9e0ae93f25a91/frozenlist-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:17c883ab0ab67200b5f964d2b9ed6b00971917d5d8a92df149dc2c9779208ee9", size = 50046, upload-time = "2025-10-06T05:35:47.009Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ef/0e8f1fe32f8a53dd26bdd1f9347efe0778b0fddf62789ea683f4cc7d787d/frozenlist-1.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fa47e444b8ba08fffd1c18e8cdb9a75db1b6a27f17507522834ad13ed5922b93", size = 50119, upload-time = "2025-10-06T05:35:48.38Z" }, + { url = "https://files.pythonhosted.org/packages/11/b1/71a477adc7c36e5fb628245dfbdea2166feae310757dea848d02bd0689fd/frozenlist-1.8.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2552f44204b744fba866e573be4c1f9048d6a324dfe14475103fd51613eb1d1f", size = 231067, upload-time = "2025-10-06T05:35:49.97Z" }, + { url = "https://files.pythonhosted.org/packages/45/7e/afe40eca3a2dc19b9904c0f5d7edfe82b5304cb831391edec0ac04af94c2/frozenlist-1.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:957e7c38f250991e48a9a73e6423db1bb9dd14e722a10f6b8bb8e16a0f55f695", size = 233160, upload-time = "2025-10-06T05:35:51.729Z" }, + { url = "https://files.pythonhosted.org/packages/a6/aa/7416eac95603ce428679d273255ffc7c998d4132cfae200103f164b108aa/frozenlist-1.8.0-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:8585e3bb2cdea02fc88ffa245069c36555557ad3609e83be0ec71f54fd4abb52", size = 228544, upload-time = "2025-10-06T05:35:53.246Z" }, + { url = "https://files.pythonhosted.org/packages/8b/3d/2a2d1f683d55ac7e3875e4263d28410063e738384d3adc294f5ff3d7105e/frozenlist-1.8.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:edee74874ce20a373d62dc28b0b18b93f645633c2943fd90ee9d898550770581", size = 243797, upload-time = "2025-10-06T05:35:54.497Z" }, + { url = "https://files.pythonhosted.org/packages/78/1e/2d5565b589e580c296d3bb54da08d206e797d941a83a6fdea42af23be79c/frozenlist-1.8.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c9a63152fe95756b85f31186bddf42e4c02c6321207fd6601a1c89ebac4fe567", size = 247923, upload-time = "2025-10-06T05:35:55.861Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c3/65872fcf1d326a7f101ad4d86285c403c87be7d832b7470b77f6d2ed5ddc/frozenlist-1.8.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b6db2185db9be0a04fecf2f241c70b63b1a242e2805be291855078f2b404dd6b", size = 230886, upload-time = "2025-10-06T05:35:57.399Z" }, + { url = "https://files.pythonhosted.org/packages/a0/76/ac9ced601d62f6956f03cc794f9e04c81719509f85255abf96e2510f4265/frozenlist-1.8.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:f4be2e3d8bc8aabd566f8d5b8ba7ecc09249d74ba3c9ed52e54dc23a293f0b92", size = 245731, upload-time = "2025-10-06T05:35:58.563Z" }, + { url = "https://files.pythonhosted.org/packages/b9/49/ecccb5f2598daf0b4a1415497eba4c33c1e8ce07495eb07d2860c731b8d5/frozenlist-1.8.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:c8d1634419f39ea6f5c427ea2f90ca85126b54b50837f31497f3bf38266e853d", size = 241544, upload-time = "2025-10-06T05:35:59.719Z" }, + { url = "https://files.pythonhosted.org/packages/53/4b/ddf24113323c0bbcc54cb38c8b8916f1da7165e07b8e24a717b4a12cbf10/frozenlist-1.8.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:1a7fa382a4a223773ed64242dbe1c9c326ec09457e6b8428efb4118c685c3dfd", size = 241806, upload-time = "2025-10-06T05:36:00.959Z" }, + { url = "https://files.pythonhosted.org/packages/a7/fb/9b9a084d73c67175484ba2789a59f8eebebd0827d186a8102005ce41e1ba/frozenlist-1.8.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:11847b53d722050808926e785df837353bd4d75f1d494377e59b23594d834967", size = 229382, upload-time = "2025-10-06T05:36:02.22Z" }, + { url = "https://files.pythonhosted.org/packages/95/a3/c8fb25aac55bf5e12dae5c5aa6a98f85d436c1dc658f21c3ac73f9fa95e5/frozenlist-1.8.0-cp311-cp311-win32.whl", hash = "sha256:27c6e8077956cf73eadd514be8fb04d77fc946a7fe9f7fe167648b0b9085cc25", size = 39647, upload-time = "2025-10-06T05:36:03.409Z" }, + { url = "https://files.pythonhosted.org/packages/0a/f5/603d0d6a02cfd4c8f2a095a54672b3cf967ad688a60fb9faf04fc4887f65/frozenlist-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:ac913f8403b36a2c8610bbfd25b8013488533e71e62b4b4adce9c86c8cea905b", size = 44064, upload-time = "2025-10-06T05:36:04.368Z" }, + { url = "https://files.pythonhosted.org/packages/5d/16/c2c9ab44e181f043a86f9a8f84d5124b62dbcb3a02c0977ec72b9ac1d3e0/frozenlist-1.8.0-cp311-cp311-win_arm64.whl", hash = "sha256:d4d3214a0f8394edfa3e303136d0575eece0745ff2b47bd2cb2e66dd92d4351a", size = 39937, upload-time = "2025-10-06T05:36:05.669Z" }, + { url = "https://files.pythonhosted.org/packages/69/29/948b9aa87e75820a38650af445d2ef2b6b8a6fab1a23b6bb9e4ef0be2d59/frozenlist-1.8.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:78f7b9e5d6f2fdb88cdde9440dc147259b62b9d3b019924def9f6478be254ac1", size = 87782, upload-time = "2025-10-06T05:36:06.649Z" }, + { url = "https://files.pythonhosted.org/packages/64/80/4f6e318ee2a7c0750ed724fa33a4bdf1eacdc5a39a7a24e818a773cd91af/frozenlist-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:229bf37d2e4acdaf808fd3f06e854a4a7a3661e871b10dc1f8f1896a3b05f18b", size = 50594, upload-time = "2025-10-06T05:36:07.69Z" }, + { url = "https://files.pythonhosted.org/packages/2b/94/5c8a2b50a496b11dd519f4a24cb5496cf125681dd99e94c604ccdea9419a/frozenlist-1.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f833670942247a14eafbb675458b4e61c82e002a148f49e68257b79296e865c4", size = 50448, upload-time = "2025-10-06T05:36:08.78Z" }, + { url = "https://files.pythonhosted.org/packages/6a/bd/d91c5e39f490a49df14320f4e8c80161cfcce09f1e2cde1edd16a551abb3/frozenlist-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:494a5952b1c597ba44e0e78113a7266e656b9794eec897b19ead706bd7074383", size = 242411, upload-time = "2025-10-06T05:36:09.801Z" }, + { url = "https://files.pythonhosted.org/packages/8f/83/f61505a05109ef3293dfb1ff594d13d64a2324ac3482be2cedc2be818256/frozenlist-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96f423a119f4777a4a056b66ce11527366a8bb92f54e541ade21f2374433f6d4", size = 243014, upload-time = "2025-10-06T05:36:11.394Z" }, + { url = "https://files.pythonhosted.org/packages/d8/cb/cb6c7b0f7d4023ddda30cf56b8b17494eb3a79e3fda666bf735f63118b35/frozenlist-1.8.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3462dd9475af2025c31cc61be6652dfa25cbfb56cbbf52f4ccfe029f38decaf8", size = 234909, upload-time = "2025-10-06T05:36:12.598Z" }, + { url = "https://files.pythonhosted.org/packages/31/c5/cd7a1f3b8b34af009fb17d4123c5a778b44ae2804e3ad6b86204255f9ec5/frozenlist-1.8.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c4c800524c9cd9bac5166cd6f55285957fcfc907db323e193f2afcd4d9abd69b", size = 250049, upload-time = "2025-10-06T05:36:14.065Z" }, + { url = "https://files.pythonhosted.org/packages/c0/01/2f95d3b416c584a1e7f0e1d6d31998c4a795f7544069ee2e0962a4b60740/frozenlist-1.8.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d6a5df73acd3399d893dafc71663ad22534b5aa4f94e8a2fabfe856c3c1b6a52", size = 256485, upload-time = "2025-10-06T05:36:15.39Z" }, + { url = "https://files.pythonhosted.org/packages/ce/03/024bf7720b3abaebcff6d0793d73c154237b85bdf67b7ed55e5e9596dc9a/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:405e8fe955c2280ce66428b3ca55e12b3c4e9c336fb2103a4937e891c69a4a29", size = 237619, upload-time = "2025-10-06T05:36:16.558Z" }, + { url = "https://files.pythonhosted.org/packages/69/fa/f8abdfe7d76b731f5d8bd217827cf6764d4f1d9763407e42717b4bed50a0/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:908bd3f6439f2fef9e85031b59fd4f1297af54415fb60e4254a95f75b3cab3f3", size = 250320, upload-time = "2025-10-06T05:36:17.821Z" }, + { url = "https://files.pythonhosted.org/packages/f5/3c/b051329f718b463b22613e269ad72138cc256c540f78a6de89452803a47d/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:294e487f9ec720bd8ffcebc99d575f7eff3568a08a253d1ee1a0378754b74143", size = 246820, upload-time = "2025-10-06T05:36:19.046Z" }, + { url = "https://files.pythonhosted.org/packages/0f/ae/58282e8f98e444b3f4dd42448ff36fa38bef29e40d40f330b22e7108f565/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:74c51543498289c0c43656701be6b077f4b265868fa7f8a8859c197006efb608", size = 250518, upload-time = "2025-10-06T05:36:20.763Z" }, + { url = "https://files.pythonhosted.org/packages/8f/96/007e5944694d66123183845a106547a15944fbbb7154788cbf7272789536/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:776f352e8329135506a1d6bf16ac3f87bc25b28e765949282dcc627af36123aa", size = 239096, upload-time = "2025-10-06T05:36:22.129Z" }, + { url = "https://files.pythonhosted.org/packages/66/bb/852b9d6db2fa40be96f29c0d1205c306288f0684df8fd26ca1951d461a56/frozenlist-1.8.0-cp312-cp312-win32.whl", hash = "sha256:433403ae80709741ce34038da08511d4a77062aa924baf411ef73d1146e74faf", size = 39985, upload-time = "2025-10-06T05:36:23.661Z" }, + { url = "https://files.pythonhosted.org/packages/b8/af/38e51a553dd66eb064cdf193841f16f077585d4d28394c2fa6235cb41765/frozenlist-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:34187385b08f866104f0c0617404c8eb08165ab1272e884abc89c112e9c00746", size = 44591, upload-time = "2025-10-06T05:36:24.958Z" }, + { url = "https://files.pythonhosted.org/packages/a7/06/1dc65480ab147339fecc70797e9c2f69d9cea9cf38934ce08df070fdb9cb/frozenlist-1.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:fe3c58d2f5db5fbd18c2987cba06d51b0529f52bc3a6cdc33d3f4eab725104bd", size = 40102, upload-time = "2025-10-06T05:36:26.333Z" }, + { url = "https://files.pythonhosted.org/packages/9a/9a/e35b4a917281c0b8419d4207f4334c8e8c5dbf4f3f5f9ada73958d937dcc/frozenlist-1.8.0-py3-none-any.whl", hash = "sha256:0c18a16eab41e82c295618a77502e17b195883241c563b00f0aa5106fc4eaa0d", size = 13409, upload-time = "2025-10-06T05:38:16.721Z" }, +] + +[[package]] +name = "fsspec" +version = "2026.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e1/cf/b50ddf667c15276a9ab15a70ef5f257564de271957933ffea49d2cdbcdfb/fsspec-2026.3.0.tar.gz", hash = "sha256:1ee6a0e28677557f8c2f994e3eea77db6392b4de9cd1f5d7a9e87a0ae9d01b41", size = 313547, upload-time = "2026-03-27T19:11:14.892Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/1f/5f4a3cd9e4440e9d9bc78ad0a91a1c8d46b4d429d5239ebe6793c9fe5c41/fsspec-2026.3.0-py3-none-any.whl", hash = "sha256:d2ceafaad1b3457968ed14efa28798162f1638dbb5d2a6868a2db002a5ee39a4", size = 202595, upload-time = "2026-03-27T19:11:13.595Z" }, +] + +[package.optional-dependencies] +http = [ + { name = "aiohttp" }, +] + +[[package]] +name = "geopandas" +version = "1.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging" }, + { name = "pandas", version = "2.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "pandas", version = "3.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "pyogrio" }, + { name = "pyproj", version = "3.7.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "pyproj", version = "3.7.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "shapely" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/85/ba/8e6b2091878e99e86a36a814dcaeff652ed48bdb03d53e78e15aaa63a914/geopandas-1.1.3.tar.gz", hash = "sha256:91a31989b6f566012838d21d5f8033f37dce882079ccb7cfdc40d5ccce7f284f", size = 336718, upload-time = "2026-03-09T21:49:09.545Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/78/6a04792ace63a93e162f1305392d500ae8ddcb620e7eb88a22fd622b35bb/geopandas-1.1.3-py3-none-any.whl", hash = "sha256:90d62a64f95eaa3be2ccc115c5f3d6e24208bb11983b390fdc0621a3eccd0230", size = 342514, upload-time = "2026-03-09T21:49:07.973Z" }, +] + +[[package]] +name = "google-crc32c" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/03/41/4b9c02f99e4c5fb477122cd5437403b552873f014616ac1d19ac8221a58d/google_crc32c-1.8.0.tar.gz", hash = "sha256:a428e25fb7691024de47fecfbff7ff957214da51eddded0da0ae0e0f03a2cf79", size = 14192, upload-time = "2025-12-16T00:35:25.142Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/ac/6f7bc93886a823ab545948c2dd48143027b2355ad1944c7cf852b338dc91/google_crc32c-1.8.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0470b8c3d73b5f4e3300165498e4cf25221c7eb37f1159e221d1825b6df8a7ff", size = 31296, upload-time = "2025-12-16T00:19:07.261Z" }, + { url = "https://files.pythonhosted.org/packages/f7/97/a5accde175dee985311d949cfcb1249dcbb290f5ec83c994ea733311948f/google_crc32c-1.8.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:119fcd90c57c89f30040b47c211acee231b25a45d225e3225294386f5d258288", size = 30870, upload-time = "2025-12-16T00:29:17.669Z" }, + { url = "https://files.pythonhosted.org/packages/3d/63/bec827e70b7a0d4094e7476f863c0dbd6b5f0f1f91d9c9b32b76dcdfeb4e/google_crc32c-1.8.0-cp310-cp310-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6f35aaffc8ccd81ba3162443fabb920e65b1f20ab1952a31b13173a67811467d", size = 33214, upload-time = "2025-12-16T00:40:19.618Z" }, + { url = "https://files.pythonhosted.org/packages/63/bc/11b70614df04c289128d782efc084b9035ef8466b3d0a8757c1b6f5cf7ac/google_crc32c-1.8.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:864abafe7d6e2c4c66395c1eb0fe12dc891879769b52a3d56499612ca93b6092", size = 33589, upload-time = "2025-12-16T00:40:20.7Z" }, + { url = "https://files.pythonhosted.org/packages/3e/00/a08a4bc24f1261cc5b0f47312d8aebfbe4b53c2e6307f1b595605eed246b/google_crc32c-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:db3fe8eaf0612fc8b20fa21a5f25bd785bc3cd5be69f8f3412b0ac2ffd49e733", size = 34437, upload-time = "2025-12-16T00:35:19.437Z" }, + { url = "https://files.pythonhosted.org/packages/5d/ef/21ccfaab3d5078d41efe8612e0ed0bfc9ce22475de074162a91a25f7980d/google_crc32c-1.8.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:014a7e68d623e9a4222d663931febc3033c5c7c9730785727de2a81f87d5bab8", size = 31298, upload-time = "2025-12-16T00:20:32.241Z" }, + { url = "https://files.pythonhosted.org/packages/c5/b8/f8413d3f4b676136e965e764ceedec904fe38ae8de0cdc52a12d8eb1096e/google_crc32c-1.8.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:86cfc00fe45a0ac7359e5214a1704e51a99e757d0272554874f419f79838c5f7", size = 30872, upload-time = "2025-12-16T00:33:58.785Z" }, + { url = "https://files.pythonhosted.org/packages/f6/fd/33aa4ec62b290477181c55bb1c9302c9698c58c0ce9a6ab4874abc8b0d60/google_crc32c-1.8.0-cp311-cp311-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:19b40d637a54cb71e0829179f6cb41835f0fbd9e8eb60552152a8b52c36cbe15", size = 33243, upload-time = "2025-12-16T00:40:21.46Z" }, + { url = "https://files.pythonhosted.org/packages/71/03/4820b3bd99c9653d1a5210cb32f9ba4da9681619b4d35b6a052432df4773/google_crc32c-1.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:17446feb05abddc187e5441a45971b8394ea4c1b6efd88ab0af393fd9e0a156a", size = 33608, upload-time = "2025-12-16T00:40:22.204Z" }, + { url = "https://files.pythonhosted.org/packages/7c/43/acf61476a11437bf9733fb2f70599b1ced11ec7ed9ea760fdd9a77d0c619/google_crc32c-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:71734788a88f551fbd6a97be9668a0020698e07b2bf5b3aa26a36c10cdfb27b2", size = 34439, upload-time = "2025-12-16T00:35:20.458Z" }, + { url = "https://files.pythonhosted.org/packages/e9/5f/7307325b1198b59324c0fa9807cafb551afb65e831699f2ce211ad5c8240/google_crc32c-1.8.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:4b8286b659c1335172e39563ab0a768b8015e88e08329fa5321f774275fc3113", size = 31300, upload-time = "2025-12-16T00:21:56.723Z" }, + { url = "https://files.pythonhosted.org/packages/21/8e/58c0d5d86e2220e6a37befe7e6a94dd2f6006044b1a33edf1ff6d9f7e319/google_crc32c-1.8.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:2a3dc3318507de089c5384cc74d54318401410f82aa65b2d9cdde9d297aca7cb", size = 30867, upload-time = "2025-12-16T00:38:31.302Z" }, + { url = "https://files.pythonhosted.org/packages/ce/a9/a780cc66f86335a6019f557a8aaca8fbb970728f0efd2430d15ff1beae0e/google_crc32c-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:14f87e04d613dfa218d6135e81b78272c3b904e2a7053b841481b38a7d901411", size = 33364, upload-time = "2025-12-16T00:40:22.96Z" }, + { url = "https://files.pythonhosted.org/packages/21/3f/3457ea803db0198c9aaca2dd373750972ce28a26f00544b6b85088811939/google_crc32c-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cb5c869c2923d56cb0c8e6bcdd73c009c36ae39b652dbe46a05eb4ef0ad01454", size = 33740, upload-time = "2025-12-16T00:40:23.96Z" }, + { url = "https://files.pythonhosted.org/packages/df/c0/87c2073e0c72515bb8733d4eef7b21548e8d189f094b5dad20b0ecaf64f6/google_crc32c-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:3cc0c8912038065eafa603b238abf252e204accab2a704c63b9e14837a854962", size = 34437, upload-time = "2025-12-16T00:35:21.395Z" }, + { url = "https://files.pythonhosted.org/packages/52/c5/c171e4d8c44fec1422d801a6d2e5d7ddabd733eeda505c79730ee9607f07/google_crc32c-1.8.0-pp311-pypy311_pp73-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:87fa445064e7db928226b2e6f0d5304ab4cd0339e664a4e9a25029f384d9bb93", size = 28615, upload-time = "2025-12-16T00:40:29.298Z" }, + { url = "https://files.pythonhosted.org/packages/9c/97/7d75fe37a7a6ed171a2cf17117177e7aab7e6e0d115858741b41e9dd4254/google_crc32c-1.8.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f639065ea2042d5c034bf258a9f085eaa7af0cd250667c0635a3118e8f92c69c", size = 28800, upload-time = "2025-12-16T00:40:30.322Z" }, +] + +[[package]] +name = "grpcio" +version = "1.80.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b7/48/af6173dbca4454f4637a4678b67f52ca7e0c1ed7d5894d89d434fecede05/grpcio-1.80.0.tar.gz", hash = "sha256:29aca15edd0688c22ba01d7cc01cb000d72b2033f4a3c72a81a19b56fd143257", size = 12978905, upload-time = "2026-03-30T08:49:10.502Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9d/cd/bb7b7e54084a344c03d68144450da7ddd5564e51a298ae1662de65f48e2d/grpcio-1.80.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:886457a7768e408cdce226ad1ca67d2958917d306523a0e21e1a2fdaa75c9c9c", size = 6050363, upload-time = "2026-03-30T08:46:20.894Z" }, + { url = "https://files.pythonhosted.org/packages/16/02/1417f5c3460dea65f7a2e3c14e8b31e77f7ffb730e9bfadd89eda7a9f477/grpcio-1.80.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:7b641fc3f1dc647bfd80bd713addc68f6d145956f64677e56d9ebafc0bd72388", size = 12026037, upload-time = "2026-03-30T08:46:25.144Z" }, + { url = "https://files.pythonhosted.org/packages/43/98/c910254eedf2cae368d78336a2de0678e66a7317d27c02522392f949b5c6/grpcio-1.80.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:33eb763f18f006dc7fee1e69831d38d23f5eccd15b2e0f92a13ee1d9242e5e02", size = 6602306, upload-time = "2026-03-30T08:46:27.593Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f8/88ca4e78c077b2b2113d95da1e1ab43efd43d723c9a0397d26529c2c1a56/grpcio-1.80.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:52d143637e3872633fc7dd7c3c6a1c84e396b359f3a72e215f8bf69fd82084fc", size = 7301535, upload-time = "2026-03-30T08:46:29.556Z" }, + { url = "https://files.pythonhosted.org/packages/f9/96/f28660fe2fe0f153288bf4a04e4910b7309d442395135c88ed4f5b3b8b40/grpcio-1.80.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c51bf8ac4575af2e0678bccfb07e47321fc7acb5049b4482832c5c195e04e13a", size = 6808669, upload-time = "2026-03-30T08:46:31.984Z" }, + { url = "https://files.pythonhosted.org/packages/47/eb/3f68a5e955779c00aeef23850e019c1c1d0e032d90633ba49c01ad5a96e0/grpcio-1.80.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:50a9871536d71c4fba24ee856abc03a87764570f0c457dd8db0b4018f379fed9", size = 7409489, upload-time = "2026-03-30T08:46:34.684Z" }, + { url = "https://files.pythonhosted.org/packages/5b/a7/d2f681a4bfb881be40659a309771f3bdfbfdb1190619442816c3f0ffc079/grpcio-1.80.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a72d84ad0514db063e21887fbacd1fd7acb4d494a564cae22227cd45c7fbf199", size = 8423167, upload-time = "2026-03-30T08:46:36.833Z" }, + { url = "https://files.pythonhosted.org/packages/97/8a/29b4589c204959aa35ce5708400a05bba72181807c45c47b3ec000c39333/grpcio-1.80.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f7691a6788ad9196872f95716df5bc643ebba13c97140b7a5ee5c8e75d1dea81", size = 7846761, upload-time = "2026-03-30T08:46:40.091Z" }, + { url = "https://files.pythonhosted.org/packages/6b/d2/ed143e097230ee121ac5848f6ff14372dba91289b10b536d54fb1b7cbae7/grpcio-1.80.0-cp310-cp310-win32.whl", hash = "sha256:46c2390b59d67f84e882694d489f5b45707c657832d7934859ceb8c33f467069", size = 4156534, upload-time = "2026-03-30T08:46:42.026Z" }, + { url = "https://files.pythonhosted.org/packages/d5/c9/df8279bb49b29409995e95efa85b72973d62f8aeff89abee58c91f393710/grpcio-1.80.0-cp310-cp310-win_amd64.whl", hash = "sha256:dc053420fc75749c961e2a4c906398d7c15725d36ccc04ae6d16093167223b58", size = 4889869, upload-time = "2026-03-30T08:46:44.219Z" }, + { url = "https://files.pythonhosted.org/packages/5d/db/1d56e5f5823257b291962d6c0ce106146c6447f405b60b234c4f222a7cde/grpcio-1.80.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:dfab85db094068ff42e2a3563f60ab3dddcc9d6488a35abf0132daec13209c8a", size = 6055009, upload-time = "2026-03-30T08:46:46.265Z" }, + { url = "https://files.pythonhosted.org/packages/6e/18/c83f3cad64c5ca63bca7e91e5e46b0d026afc5af9d0a9972472ceba294b3/grpcio-1.80.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:5c07e82e822e1161354e32da2662f741a4944ea955f9f580ec8fb409dd6f6060", size = 12035295, upload-time = "2026-03-30T08:46:49.099Z" }, + { url = "https://files.pythonhosted.org/packages/0f/8e/e14966b435be2dda99fbe89db9525ea436edc79780431a1c2875a3582644/grpcio-1.80.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba0915d51fd4ced2db5ff719f84e270afe0e2d4c45a7bdb1e8d036e4502928c2", size = 6610297, upload-time = "2026-03-30T08:46:52.123Z" }, + { url = "https://files.pythonhosted.org/packages/cc/26/d5eb38f42ce0e3fdc8174ea4d52036ef8d58cc4426cb800f2610f625dd75/grpcio-1.80.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:3cb8130ba457d2aa09fa6b7c3ed6b6e4e6a2685fce63cb803d479576c4d80e21", size = 7300208, upload-time = "2026-03-30T08:46:54.859Z" }, + { url = "https://files.pythonhosted.org/packages/25/51/bd267c989f85a17a5b3eea65a6feb4ff672af41ca614e5a0279cc0ea381c/grpcio-1.80.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:09e5e478b3d14afd23f12e49e8b44c8684ac3c5f08561c43a5b9691c54d136ab", size = 6813442, upload-time = "2026-03-30T08:46:57.056Z" }, + { url = "https://files.pythonhosted.org/packages/9e/d9/d80eef735b19e9169e30164bbf889b46f9df9127598a83d174eb13a48b26/grpcio-1.80.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:00168469238b022500e486c1c33916acf2f2a9b2c022202cf8a1885d2e3073c1", size = 7414743, upload-time = "2026-03-30T08:46:59.682Z" }, + { url = "https://files.pythonhosted.org/packages/de/f2/567f5bd5054398ed6b0509b9a30900376dcf2786bd936812098808b49d8d/grpcio-1.80.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8502122a3cc1714038e39a0b071acb1207ca7844208d5ea0d091317555ee7106", size = 8426046, upload-time = "2026-03-30T08:47:02.474Z" }, + { url = "https://files.pythonhosted.org/packages/62/29/73ef0141b4732ff5eacd68430ff2512a65c004696997f70476a83e548e7e/grpcio-1.80.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ce1794f4ea6cc3ca29463f42d665c32ba1b964b48958a66497917fe9069f26e6", size = 7851641, upload-time = "2026-03-30T08:47:05.462Z" }, + { url = "https://files.pythonhosted.org/packages/46/69/abbfa360eb229a8623bab5f5a4f8105e445bd38ce81a89514ba55d281ad0/grpcio-1.80.0-cp311-cp311-win32.whl", hash = "sha256:51b4a7189b0bef2aa30adce3c78f09c83526cf3dddb24c6a96555e3b97340440", size = 4154368, upload-time = "2026-03-30T08:47:08.027Z" }, + { url = "https://files.pythonhosted.org/packages/6f/d4/ae92206d01183b08613e846076115f5ac5991bae358d2a749fa864da5699/grpcio-1.80.0-cp311-cp311-win_amd64.whl", hash = "sha256:02e64bb0bb2da14d947a49e6f120a75e947250aebe65f9629b62bb1f5c14e6e9", size = 4894235, upload-time = "2026-03-30T08:47:10.839Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e8/a2b749265eb3415abc94f2e619bbd9e9707bebdda787e61c593004ec927a/grpcio-1.80.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:c624cc9f1008361014378c9d776de7182b11fe8b2e5a81bc69f23a295f2a1ad0", size = 6015616, upload-time = "2026-03-30T08:47:13.428Z" }, + { url = "https://files.pythonhosted.org/packages/3e/97/b1282161a15d699d1e90c360df18d19165a045ce1c343c7f313f5e8a0b77/grpcio-1.80.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:f49eddcac43c3bf350c0385366a58f36bed8cc2c0ec35ef7b74b49e56552c0c2", size = 12014204, upload-time = "2026-03-30T08:47:15.873Z" }, + { url = "https://files.pythonhosted.org/packages/6e/5e/d319c6e997b50c155ac5a8cb12f5173d5b42677510e886d250d50264949d/grpcio-1.80.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d334591df610ab94714048e0d5b4f3dd5ad1bee74dfec11eee344220077a79de", size = 6563866, upload-time = "2026-03-30T08:47:18.588Z" }, + { url = "https://files.pythonhosted.org/packages/ae/f6/fdd975a2cb4d78eb67769a7b3b3830970bfa2e919f1decf724ae4445f42c/grpcio-1.80.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:0cb517eb1d0d0aaf1d87af7cc5b801d686557c1d88b2619f5e31fab3c2315921", size = 7273060, upload-time = "2026-03-30T08:47:21.113Z" }, + { url = "https://files.pythonhosted.org/packages/db/f0/a3deb5feba60d9538a962913e37bd2e69a195f1c3376a3dd44fe0427e996/grpcio-1.80.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4e78c4ac0d97dc2e569b2f4bcbbb447491167cb358d1a389fc4af71ab6f70411", size = 6782121, upload-time = "2026-03-30T08:47:23.827Z" }, + { url = "https://files.pythonhosted.org/packages/ca/84/36c6dcfddc093e108141f757c407902a05085e0c328007cb090d56646cdf/grpcio-1.80.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2ed770b4c06984f3b47eb0517b1c69ad0b84ef3f40128f51448433be904634cd", size = 7383811, upload-time = "2026-03-30T08:47:26.517Z" }, + { url = "https://files.pythonhosted.org/packages/7c/ef/f3a77e3dc5b471a0ec86c564c98d6adfa3510d38f8ee99010410858d591e/grpcio-1.80.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:256507e2f524092f1473071a05e65a5b10d84b82e3ff24c5b571513cfaa61e2f", size = 8393860, upload-time = "2026-03-30T08:47:29.439Z" }, + { url = "https://files.pythonhosted.org/packages/9b/8d/9d4d27ed7f33d109c50d6b5ce578a9914aa68edab75d65869a17e630a8d1/grpcio-1.80.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a6284a5d907c37db53350645567c522be314bac859a64a7a5ca63b77bb7958f", size = 7830132, upload-time = "2026-03-30T08:47:33.254Z" }, + { url = "https://files.pythonhosted.org/packages/14/e4/9990b41c6d7a44e1e9dee8ac11d7a9802ba1378b40d77468a7761d1ad288/grpcio-1.80.0-cp312-cp312-win32.whl", hash = "sha256:c71309cfce2f22be26aa4a847357c502db6c621f1a49825ae98aa0907595b193", size = 4140904, upload-time = "2026-03-30T08:47:35.319Z" }, + { url = "https://files.pythonhosted.org/packages/2f/2c/296f6138caca1f4b92a31ace4ae1b87dab692fc16a7a3417af3bb3c805bf/grpcio-1.80.0-cp312-cp312-win_amd64.whl", hash = "sha256:9fe648599c0e37594c4809d81a9e77bd138cc82eb8baa71b6a86af65426723ff", size = 4880944, upload-time = "2026-03-30T08:47:37.831Z" }, +] + +[[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" } +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" }, +] + +[[package]] +name = "h5py" +version = "3.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/db/33/acd0ce6863b6c0d7735007df01815403f5589a21ff8c2e1ee2587a38f548/h5py-3.16.0.tar.gz", hash = "sha256:a0dbaad796840ccaa67a4c144a0d0c8080073c34c76d5a6941d6818678ef2738", size = 446526, upload-time = "2026-03-06T13:49:08.07Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/6b/231413e58a787a89b316bb0d1777da3c62257e4797e09afd8d17ad3549dc/h5py-3.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e06f864bedb2c8e7c1358e6c73af48519e317457c444d6f3d332bb4e8fa6d7d9", size = 3724137, upload-time = "2026-03-06T13:47:35.242Z" }, + { url = "https://files.pythonhosted.org/packages/74/f9/557ce3aad0fe8471fb5279bab0fc56ea473858a022c4ce8a0b8f303d64e9/h5py-3.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ec86d4fffd87a0f4cb3d5796ceb5a50123a2a6d99b43e616e5504e66a953eca3", size = 3090112, upload-time = "2026-03-06T13:47:37.634Z" }, + { url = "https://files.pythonhosted.org/packages/7a/f5/e15b3d0dc8a18e56409a839e6468d6fb589bc5207c917399c2e0706eeb44/h5py-3.16.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:86385ea895508220b8a7e45efa428aeafaa586bd737c7af9ee04661d8d84a10d", size = 4844847, upload-time = "2026-03-06T13:47:39.811Z" }, + { url = "https://files.pythonhosted.org/packages/cb/92/a8851d936547efe30cc0ce5245feac01f3ec6171f7899bc3f775c72030b3/h5py-3.16.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:8975273c2c5921c25700193b408e28d6bdd0111c37468b2d4e25dcec4cd1d84d", size = 5065352, upload-time = "2026-03-06T13:47:41.489Z" }, + { url = "https://files.pythonhosted.org/packages/2b/ae/f2adc5d0ca9626db3277a3d87516e124cbc5d0eea0bd79bc085702d04f2c/h5py-3.16.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1677ad48b703f44efc9ea0c3ab284527f81bc4f318386aaaebc5fede6bbae56f", size = 4839173, upload-time = "2026-03-06T13:47:43.586Z" }, + { url = "https://files.pythonhosted.org/packages/64/0b/e0c8c69da1d8838da023a50cd3080eae5d475691f7636b35eff20bb6ef20/h5py-3.16.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7c4dd4cf5f0a4e36083f73172f6cfc25a5710789269547f132a20975bfe2434c", size = 5076216, upload-time = "2026-03-06T13:47:45.315Z" }, + { url = "https://files.pythonhosted.org/packages/66/35/d88fd6718832133c885004c61ceeeb24dbd6397ef877dbed6b3a64d6a286/h5py-3.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:bdef06507725b455fccba9c16529121a5e1fbf56aa375f7d9713d9e8ff42454d", size = 3183639, upload-time = "2026-03-06T13:47:47.041Z" }, + { url = "https://files.pythonhosted.org/packages/ba/95/a825894f3e45cbac7554c4e97314ce886b233a20033787eda755ca8fecc7/h5py-3.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:719439d14b83f74eeb080e9650a6c7aa6d0d9ea0ca7f804347b05fac6fbf18af", size = 3721663, upload-time = "2026-03-06T13:47:49.599Z" }, + { url = "https://files.pythonhosted.org/packages/bf/3b/38ff88b347c3e346cda1d3fc1b65a7aa75d40632228d8b8a5d7b58508c24/h5py-3.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c3f0a0e136f2e95dd0b67146abb6668af4f1a69c81ef8651a2d316e8e01de447", size = 3087630, upload-time = "2026-03-06T13:47:51.249Z" }, + { url = "https://files.pythonhosted.org/packages/98/a8/2594cef906aee761601eff842c7dc598bea2b394a3e1c00966832b8eeb7c/h5py-3.16.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:a6fbc5367d4046801f9b7db9191b31895f22f1c6df1f9987d667854cac493538", size = 4823472, upload-time = "2026-03-06T13:47:53.085Z" }, + { url = "https://files.pythonhosted.org/packages/52/a0/c1f604538ff6db22a0690be2dc44ab59178e115f63c917794e529356ab23/h5py-3.16.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:fb1720028d99040792bb2fb31facb8da44a6f29df7697e0b84f0d79aff2e9bd3", size = 5027150, upload-time = "2026-03-06T13:47:55.043Z" }, + { url = "https://files.pythonhosted.org/packages/2e/fd/301739083c2fc4fd89950f9bcfce75d6e14b40b0ca3d40e48a8993d1722c/h5py-3.16.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:314b6054fe0b1051c2b0cb2df5cbdab15622fb05e80f202e3b6a5eee0d6fe365", size = 4814544, upload-time = "2026-03-06T13:47:56.893Z" }, + { url = "https://files.pythonhosted.org/packages/4c/42/2193ed41ccee78baba8fcc0cff2c925b8b9ee3793305b23e1f22c20bf4c7/h5py-3.16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ffbab2fedd6581f6aa31cf1639ca2cb86e02779de525667892ebf4cc9fd26434", size = 5034013, upload-time = "2026-03-06T13:47:59.01Z" }, + { url = "https://files.pythonhosted.org/packages/f7/20/e6c0ff62ca2ad1a396a34f4380bafccaaf8791ff8fccf3d995a1fc12d417/h5py-3.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:17d1f1630f92ad74494a9a7392ab25982ce2b469fc62da6074c0ce48366a2999", size = 3191673, upload-time = "2026-03-06T13:48:00.626Z" }, + { url = "https://files.pythonhosted.org/packages/f2/48/239cbe352ac4f2b8243a8e620fa1a2034635f633731493a7ff1ed71e8658/h5py-3.16.0-cp311-cp311-win_arm64.whl", hash = "sha256:85b9c49dd58dc44cf70af944784e2c2038b6f799665d0dcbbc812a26e0faa859", size = 2673834, upload-time = "2026-03-06T13:48:02.579Z" }, + { url = "https://files.pythonhosted.org/packages/c8/c0/5d4119dba94093bbafede500d3defd2f5eab7897732998c04b54021e530b/h5py-3.16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c5313566f4643121a78503a473f0fb1e6dcc541d5115c44f05e037609c565c4d", size = 3685604, upload-time = "2026-03-06T13:48:04.198Z" }, + { url = "https://files.pythonhosted.org/packages/b0/42/c84efcc1d4caebafb1ecd8be4643f39c85c47a80fe254d92b8b43b1eadaf/h5py-3.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:42b012933a83e1a558c673176676a10ce2fd3759976a0fedee1e672d1e04fc9d", size = 3061940, upload-time = "2026-03-06T13:48:05.783Z" }, + { url = "https://files.pythonhosted.org/packages/89/84/06281c82d4d1686fde1ac6b0f307c50918f1c0151062445ab3b6fa5a921d/h5py-3.16.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:ff24039e2573297787c3063df64b60aab0591980ac898329a08b0320e0cf2527", size = 5198852, upload-time = "2026-03-06T13:48:07.482Z" }, + { url = "https://files.pythonhosted.org/packages/9e/e9/1a19e42cd43cc1365e127db6aae85e1c671da1d9a5d746f4d34a50edb577/h5py-3.16.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:dfc21898ff025f1e8e67e194965a95a8d4754f452f83454538f98f8a3fcb207e", size = 5405250, upload-time = "2026-03-06T13:48:09.628Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8e/9790c1655eabeb85b92b1ecab7d7e62a2069e53baefd58c98f0909c7a948/h5py-3.16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:698dd69291272642ffda44a0ecd6cd3bda5faf9621452d255f57ce91487b9794", size = 5190108, upload-time = "2026-03-06T13:48:11.26Z" }, + { url = "https://files.pythonhosted.org/packages/51/d7/ab693274f1bd7e8c5f9fdd6c7003a88d59bedeaf8752716a55f532924fbb/h5py-3.16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2b2c02b0a160faed5fb33f1ba8a264a37ee240b22e049ecc827345d0d9043074", size = 5419216, upload-time = "2026-03-06T13:48:13.322Z" }, + { url = "https://files.pythonhosted.org/packages/03/c1/0976b235cf29ead553e22f2fb6385a8252b533715e00d0ae52ed7b900582/h5py-3.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:96b422019a1c8975c2d5dadcf61d4ba6f01c31f92bbde6e4649607885fe502d6", size = 3182868, upload-time = "2026-03-06T13:48:15.759Z" }, + { url = "https://files.pythonhosted.org/packages/14/d9/866b7e570b39070f92d47b0ff1800f0f8239b6f9e45f02363d7112336c1f/h5py-3.16.0-cp312-cp312-win_arm64.whl", hash = "sha256:39c2838fb1e8d97bcf1755e60ad1f3dd76a7b2a475928dc321672752678b96db", size = 2653286, upload-time = "2026-03-06T13:48:17.279Z" }, +] + +[[package]] +name = "hf-xet" +version = "1.4.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/92/ec9ad04d0b5728dca387a45af7bc98fbb0d73b2118759f5f6038b61a57e8/hf_xet-1.4.3.tar.gz", hash = "sha256:8ddedb73c8c08928c793df2f3401ec26f95be7f7e516a7bee2fbb546f6676113", size = 670477, upload-time = "2026-03-31T22:40:07.874Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ac/9f/9c23e4a447b8f83120798f9279d0297a4d1360bdbf59ef49ebec78fe2545/hf_xet-1.4.3-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:d0da85329eaf196e03e90b84c2d0aca53bd4573d097a75f99609e80775f98025", size = 3805048, upload-time = "2026-03-31T22:39:53.105Z" }, + { url = "https://files.pythonhosted.org/packages/0b/f8/7aacb8e5f4a7899d39c787b5984e912e6c18b11be136ef13947d7a66d265/hf_xet-1.4.3-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:e23717ce4186b265f69afa66e6f0069fe7efbf331546f5c313d00e123dc84583", size = 3562178, upload-time = "2026-03-31T22:39:51.295Z" }, + { url = "https://files.pythonhosted.org/packages/df/9a/a24b26dc8a65f0ecc0fe5be981a19e61e7ca963b85e062c083f3a9100529/hf_xet-1.4.3-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc360b70c815bf340ed56c7b8c63aacf11762a4b099b2fe2c9bd6d6068668c08", size = 4212320, upload-time = "2026-03-31T22:39:42.922Z" }, + { url = "https://files.pythonhosted.org/packages/53/60/46d493db155d2ee2801b71fb1b0fd67696359047fdd8caee2c914cc50c79/hf_xet-1.4.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:39f2d2e9654cd9b4319885733993807aab6de9dfbd34c42f0b78338d6617421f", size = 3991546, upload-time = "2026-03-31T22:39:41.335Z" }, + { url = "https://files.pythonhosted.org/packages/bc/f5/067363e1c96c6b17256910830d1b54099d06287e10f4ec6ec4e7e08371fc/hf_xet-1.4.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:49ad8a8cead2b56051aa84d7fce3e1335efe68df3cf6c058f22a65513885baac", size = 4193200, upload-time = "2026-03-31T22:40:01.936Z" }, + { url = "https://files.pythonhosted.org/packages/42/4b/53951592882d9c23080c7644542fda34a3813104e9e11fa1a7d82d419cb8/hf_xet-1.4.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7716d62015477a70ea272d2d68cd7cad140f61c52ee452e133e139abfe2c17ba", size = 4429392, upload-time = "2026-03-31T22:40:03.492Z" }, + { url = "https://files.pythonhosted.org/packages/8a/21/75a6c175b4e79662ad8e62f46a40ce341d8d6b206b06b4320d07d55b188c/hf_xet-1.4.3-cp37-abi3-win_amd64.whl", hash = "sha256:6b591fcad34e272a5b02607485e4f2a1334aebf1bc6d16ce8eb1eb8978ac2021", size = 3677359, upload-time = "2026-03-31T22:40:13.619Z" }, + { url = "https://files.pythonhosted.org/packages/8a/7c/44314ecd0e89f8b2b51c9d9e5e7a60a9c1c82024ac471d415860557d3cd8/hf_xet-1.4.3-cp37-abi3-win_arm64.whl", hash = "sha256:7c2c7e20bcfcc946dc67187c203463f5e932e395845d098cc2a93f5b67ca0b47", size = 3533664, upload-time = "2026-03-31T22:40:12.152Z" }, +] + +[[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, 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, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[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, 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, upload-time = "2024-12-06T15:37:21.509Z" }, +] + +[[package]] +name = "huggingface-hub" +version = "1.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "fsspec" }, + { name = "hf-xet", marker = "platform_machine == 'AMD64' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" }, + { name = "httpx" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "tqdm" }, + { name = "typer" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/89/e7aa12d8a6b9259bed10671abb25ae6fa437c0f88a86ecbf59617bae7759/huggingface_hub-1.11.0.tar.gz", hash = "sha256:15fb3713c7f9cdff7b808a94fd91664f661ab142796bb48c9cd9493e8d166278", size = 761749, upload-time = "2026-04-16T13:07:39.73Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/02/4f3f8997d1ea7fe0146b343e5e14bd065fa87af790d07e5576d31b31cc18/huggingface_hub-1.11.0-py3-none-any.whl", hash = "sha256:42a6de0afbfeb5e022222d36398f029679db4eb4778801aafda32257ae9131ab", size = 645499, upload-time = "2026-04-16T13:07:37.716Z" }, +] + +[[package]] +name = "hydra-core" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "antlr4-python3-runtime" }, + { name = "omegaconf" }, + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/8e/07e42bc434a847154083b315779b0a81d567154504624e181caf2c71cd98/hydra-core-1.3.2.tar.gz", hash = "sha256:8a878ed67216997c3e9d88a8e72e7b4767e81af37afb4ea3334b269a4390a824", size = 3263494, upload-time = "2023-02-23T18:33:43.03Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/50/e0edd38dcd63fb26a8547f13d28f7a008bc4a3fd4eb4ff030673f22ad41a/hydra_core-1.3.2-py3-none-any.whl", hash = "sha256:fa0238a9e31df3373b35b0bfb672c34cc92718d21f81311d8996a16de1141d8b", size = 154547, upload-time = "2023-02-23T18:33:40.801Z" }, +] + +[[package]] +name = "idna" +version = "3.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ce/cc/762dfb036166873f0059f3b7de4565e1b5bc3d6f28a414c13da27e442f99/idna-3.13.tar.gz", hash = "sha256:585ea8fe5d69b9181ec1afba340451fba6ba764af97026f92a91d4eef164a242", size = 194210, upload-time = "2026-04-22T16:42:42.314Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/13/ad7d7ca3808a898b4612b6fe93cde56b53f3034dcde235acb1f0e1df24c6/idna-3.13-py3-none-any.whl", hash = "sha256:892ea0cde124a99ce773decba204c5552b69c3c67ffd5f232eb7696135bc8bb3", size = 68629, upload-time = "2026-04-22T16:42:40.909Z" }, +] + +[[package]] +name = "imageio" +version = "2.37.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "pillow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/84/93bcd1300216ea50811cee96873b84a1bebf8d0489ffaf7f2a3756bab866/imageio-2.37.3.tar.gz", hash = "sha256:bbb37efbfc4c400fcd534b367b91fcd66d5da639aaa138034431a1c5e0a41451", size = 389673, upload-time = "2026-03-09T11:31:12.573Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/fa/391e437a34e55095173dca5f24070d89cbc233ff85bf1c29c93248c6588d/imageio-2.37.3-py3-none-any.whl", hash = "sha256:46f5bb8522cd421c0f5ae104d8268f569d856b29eb1a13b92829d1970f32c9f0", size = 317646, upload-time = "2026-03-09T11:31:10.771Z" }, +] + +[[package]] +name = "importlib-resources" +version = "7.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/06/b56dfa750b44e86157093bc8fca0ab81dccbf5260510de4eaf1cb69b5b99/importlib_resources-7.1.0.tar.gz", hash = "sha256:0722d4c6212489c530f2a145a34c0a7a3b4721bc96a15fada5930e2a0b760708", size = 44985, upload-time = "2026-04-12T16:36:09.232Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/db/55a262f3606bebcae07cc14095338471ad7c0bbcaa37707e6f0ee49725b7/importlib_resources-7.1.0-py3-none-any.whl", hash = "sha256:1bd7b48b4088eddb2cd16382150bb515af0bd2c70128194392725f82ad2c96a1", size = 37232, upload-time = "2026-04-12T16:36:08.219Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "joblib" +version = "1.5.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/41/f2/d34e8b3a08a9cc79a50b2208a93dce981fe615b64d5a4d4abee421d898df/joblib-1.5.3.tar.gz", hash = "sha256:8561a3269e6801106863fd0d6d84bb737be9e7631e33aaed3fb9ce5953688da3", size = 331603, upload-time = "2025-12-15T08:41:46.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl", hash = "sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713", size = 309071, upload-time = "2025-12-15T08:41:44.973Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.26.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/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326", size = 366583, upload-time = "2026-01-07T13:41:07.246Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce", size = 90630, upload-time = "2026-01-07T13:41:05.306Z" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/67/9c61eccb13f0bdca9307614e782fec49ffdde0f7a2314935d489fa93cd9c/kiwisolver-1.5.0.tar.gz", hash = "sha256:d4193f3d9dc3f6f79aaed0e5637f45d98850ebf01f7ca20e69457f3e8946b66a", size = 103482, upload-time = "2026-03-09T13:15:53.382Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ac/f8/06549565caa026e540b7e7bab5c5a90eb7ca986015f4c48dace243cd24d9/kiwisolver-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:32cc0a5365239a6ea0c6ed461e8838d053b57e397443c0ca894dcc8e388d4374", size = 122802, upload-time = "2026-03-09T13:12:37.515Z" }, + { url = "https://files.pythonhosted.org/packages/84/eb/8476a0818850c563ff343ea7c9c05dcdcbd689a38e01aa31657df01f91fa/kiwisolver-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cc0b66c1eec9021353a4b4483afb12dfd50e3669ffbb9152d6842eb34c7e29fd", size = 66216, upload-time = "2026-03-09T13:12:38.812Z" }, + { url = "https://files.pythonhosted.org/packages/f3/c4/f9c8a6b4c21aed4198566e45923512986d6cef530e7263b3a5f823546561/kiwisolver-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:86e0287879f75621ae85197b0877ed2f8b7aa57b511c7331dce2eb6f4de7d476", size = 63917, upload-time = "2026-03-09T13:12:40.053Z" }, + { url = "https://files.pythonhosted.org/packages/f1/0e/ba4ae25d03722f64de8b2c13e80d82ab537a06b30fc7065183c6439357e3/kiwisolver-1.5.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:62f59da443c4f4849f73a51a193b1d9d258dcad0c41bc4d1b8fb2bcc04bfeb22", size = 1628776, upload-time = "2026-03-09T13:12:41.976Z" }, + { url = "https://files.pythonhosted.org/packages/8a/e4/3f43a011bc8a0860d1c96f84d32fa87439d3feedf66e672fef03bf5e8bac/kiwisolver-1.5.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9190426b7aa26c5229501fa297b8d0653cfd3f5a36f7990c264e157cbf886b3b", size = 1228164, upload-time = "2026-03-09T13:12:44.002Z" }, + { url = "https://files.pythonhosted.org/packages/4b/34/3a901559a1e0c218404f9a61a93be82d45cb8f44453ba43088644980f033/kiwisolver-1.5.0-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c8277104ded0a51e699c8c3aff63ce2c56d4ed5519a5f73e0fd7057f959a2b9e", size = 1246656, upload-time = "2026-03-09T13:12:45.557Z" }, + { url = "https://files.pythonhosted.org/packages/87/9e/f78c466ea20527822b95ad38f141f2de1dcd7f23fb8716b002b0d91bbe59/kiwisolver-1.5.0-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8f9baf6f0a6e7571c45c8863010b45e837c3ee1c2c77fcd6ef423be91b21fedb", size = 1295562, upload-time = "2026-03-09T13:12:47.562Z" }, + { url = "https://files.pythonhosted.org/packages/0a/66/fd0e4a612e3a286c24e6d6f3a5428d11258ed1909bc530ba3b59807fd980/kiwisolver-1.5.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cff8e5383db4989311f99e814feeb90c4723eb4edca425b9d5d9c3fefcdd9537", size = 2178473, upload-time = "2026-03-09T13:12:50.254Z" }, + { url = "https://files.pythonhosted.org/packages/dc/8e/6cac929e0049539e5ee25c1ee937556f379ba5204840d03008363ced662d/kiwisolver-1.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ebae99ed6764f2b5771c522477b311be313e8841d2e0376db2b10922daebbba4", size = 2274035, upload-time = "2026-03-09T13:12:51.785Z" }, + { url = "https://files.pythonhosted.org/packages/ca/d3/9d0c18f1b52ea8074b792452cf17f1f5a56bd0302a85191f405cfbf9da16/kiwisolver-1.5.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:d5cd5189fc2b6a538b75ae45433140c4823463918f7b1617c31e68b085c0022c", size = 2443217, upload-time = "2026-03-09T13:12:53.329Z" }, + { url = "https://files.pythonhosted.org/packages/45/2a/6e19368803a038b2a90857bf4ee9e3c7b667216d045866bf22d3439fd75e/kiwisolver-1.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f42c23db5d1521218a3276bb08666dcb662896a0be7347cba864eca45ff64ede", size = 2249196, upload-time = "2026-03-09T13:12:55.057Z" }, + { url = "https://files.pythonhosted.org/packages/75/2b/3f641dfcbe72e222175d626bacf2f72c3b34312afec949dd1c50afa400f5/kiwisolver-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:94eff26096eb5395136634622515b234ecb6c9979824c1f5004c6e3c3c85ccd2", size = 73389, upload-time = "2026-03-09T13:12:56.496Z" }, + { url = "https://files.pythonhosted.org/packages/da/88/299b137b9e0025d8982e03d2d52c123b0a2b159e84b0ef1501ef446339cf/kiwisolver-1.5.0-cp310-cp310-win_arm64.whl", hash = "sha256:dd952e03bfbb096cfe2dd35cd9e00f269969b67536cb4370994afc20ff2d0875", size = 64782, upload-time = "2026-03-09T13:12:57.609Z" }, + { url = "https://files.pythonhosted.org/packages/12/dd/a495a9c104be1c476f0386e714252caf2b7eca883915422a64c50b88c6f5/kiwisolver-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9eed0f7edbb274413b6ee781cca50541c8c0facd3d6fd289779e494340a2b85c", size = 122798, upload-time = "2026-03-09T13:12:58.963Z" }, + { url = "https://files.pythonhosted.org/packages/11/60/37b4047a2af0cf5ef6d8b4b26e91829ae6fc6a2d1f74524bcb0e7cd28a32/kiwisolver-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c4923e404d6bcd91b6779c009542e5647fef32e4a5d75e115e3bbac6f2335eb", size = 66216, upload-time = "2026-03-09T13:13:00.155Z" }, + { url = "https://files.pythonhosted.org/packages/0a/aa/510dc933d87767584abfe03efa445889996c70c2990f6f87c3ebaa0a18c5/kiwisolver-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0df54df7e686afa55e6f21fb86195224a6d9beb71d637e8d7920c95cf0f89aac", size = 63911, upload-time = "2026-03-09T13:13:01.671Z" }, + { url = "https://files.pythonhosted.org/packages/80/46/bddc13df6c2a40741e0cc7865bb1c9ed4796b6760bd04ce5fae3928ef917/kiwisolver-1.5.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2517e24d7315eb51c10664cdb865195df38ab74456c677df67bb47f12d088a27", size = 1438209, upload-time = "2026-03-09T13:13:03.385Z" }, + { url = "https://files.pythonhosted.org/packages/fd/d6/76621246f5165e5372f02f5e6f3f48ea336a8f9e96e43997d45b240ed8cd/kiwisolver-1.5.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ff710414307fefa903e0d9bdf300972f892c23477829f49504e59834f4195398", size = 1248888, upload-time = "2026-03-09T13:13:05.231Z" }, + { url = "https://files.pythonhosted.org/packages/b2/c1/31559ec6fb39a5b48035ce29bb63ade628f321785f38c384dee3e2c08bc1/kiwisolver-1.5.0-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6176c1811d9d5a04fa391c490cc44f451e240697a16977f11c6f722efb9041db", size = 1266304, upload-time = "2026-03-09T13:13:06.743Z" }, + { url = "https://files.pythonhosted.org/packages/5e/ef/1cb8276f2d29cc6a41e0a042f27946ca347d3a4a75acf85d0a16aa6dcc82/kiwisolver-1.5.0-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:50847dca5d197fcbd389c805aa1a1cf32f25d2e7273dc47ab181a517666b68cc", size = 1319650, upload-time = "2026-03-09T13:13:08.607Z" }, + { url = "https://files.pythonhosted.org/packages/4c/e4/5ba3cecd7ce6236ae4a80f67e5d5531287337d0e1f076ca87a5abe4cd5d0/kiwisolver-1.5.0-cp311-cp311-manylinux_2_39_riscv64.whl", hash = "sha256:01808c6d15f4c3e8559595d6d1fe6411c68e4a3822b4b9972b44473b24f4e679", size = 970949, upload-time = "2026-03-09T13:13:10.299Z" }, + { url = "https://files.pythonhosted.org/packages/5a/69/dc61f7ae9a2f071f26004ced87f078235b5507ab6e5acd78f40365655034/kiwisolver-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f1f9f4121ec58628c96baa3de1a55a4e3a333c5102c8e94b64e23bf7b2083309", size = 2199125, upload-time = "2026-03-09T13:13:11.841Z" }, + { url = "https://files.pythonhosted.org/packages/e5/7b/abbe0f1b5afa85f8d084b73e90e5f801c0939eba16ac2e49af7c61a6c28d/kiwisolver-1.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b7d335370ae48a780c6e6a6bbfa97342f563744c39c35562f3f367665f5c1de2", size = 2293783, upload-time = "2026-03-09T13:13:14.399Z" }, + { url = "https://files.pythonhosted.org/packages/8a/80/5908ae149d96d81580d604c7f8aefd0e98f4fd728cf172f477e9f2a81744/kiwisolver-1.5.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:800ee55980c18545af444d93fdd60c56b580db5cc54867d8cbf8a1dc0829938c", size = 1960726, upload-time = "2026-03-09T13:13:16.047Z" }, + { url = "https://files.pythonhosted.org/packages/84/08/a78cb776f8c085b7143142ce479859cfec086bd09ee638a317040b6ef420/kiwisolver-1.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c438f6ca858697c9ab67eb28246c92508af972e114cac34e57a6d4ba17a3ac08", size = 2464738, upload-time = "2026-03-09T13:13:17.897Z" }, + { url = "https://files.pythonhosted.org/packages/b1/e1/65584da5356ed6cb12c63791a10b208860ac40a83de165cb6a6751a686e3/kiwisolver-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8c63c91f95173f9c2a67c7c526b2cea976828a0e7fced9cdcead2802dc10f8a4", size = 2270718, upload-time = "2026-03-09T13:13:19.421Z" }, + { url = "https://files.pythonhosted.org/packages/be/6c/28f17390b62b8f2f520e2915095b3c94d88681ecf0041e75389d9667f202/kiwisolver-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:beb7f344487cdcb9e1efe4b7a29681b74d34c08f0043a327a74da852a6749e7b", size = 73480, upload-time = "2026-03-09T13:13:20.818Z" }, + { url = "https://files.pythonhosted.org/packages/d8/0e/2ee5debc4f77a625778fec5501ff3e8036fe361b7ee28ae402a485bb9694/kiwisolver-1.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:ad4ae4ffd1ee9cd11357b4c66b612da9888f4f4daf2f36995eda64bd45370cac", size = 64930, upload-time = "2026-03-09T13:13:21.997Z" }, + { url = "https://files.pythonhosted.org/packages/4d/b2/818b74ebea34dabe6d0c51cb1c572e046730e64844da6ed646d5298c40ce/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:4e9750bc21b886308024f8a54ccb9a2cc38ac9fa813bf4348434e3d54f337ff9", size = 123158, upload-time = "2026-03-09T13:13:23.127Z" }, + { url = "https://files.pythonhosted.org/packages/bf/d9/405320f8077e8e1c5c4bd6adc45e1e6edf6d727b6da7f2e2533cf58bff71/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:72ec46b7eba5b395e0a7b63025490d3214c11013f4aacb4f5e8d6c3041829588", size = 66388, upload-time = "2026-03-09T13:13:24.765Z" }, + { url = "https://files.pythonhosted.org/packages/99/9f/795fedf35634f746151ca8839d05681ceb6287fbed6cc1c9bf235f7887c2/kiwisolver-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ed3a984b31da7481b103f68776f7128a89ef26ed40f4dc41a2223cda7fb24819", size = 64068, upload-time = "2026-03-09T13:13:25.878Z" }, + { url = "https://files.pythonhosted.org/packages/c4/13/680c54afe3e65767bed7ec1a15571e1a2f1257128733851ade24abcefbcc/kiwisolver-1.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bb5136fb5352d3f422df33f0c879a1b0c204004324150cc3b5e3c4f310c9049f", size = 1477934, upload-time = "2026-03-09T13:13:27.166Z" }, + { url = "https://files.pythonhosted.org/packages/c8/2f/cebfcdb60fd6a9b0f6b47a9337198bcbad6fbe15e68189b7011fd914911f/kiwisolver-1.5.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b2af221f268f5af85e776a73d62b0845fc8baf8ef0abfae79d29c77d0e776aaf", size = 1278537, upload-time = "2026-03-09T13:13:28.707Z" }, + { url = "https://files.pythonhosted.org/packages/f2/0d/9b782923aada3fafb1d6b84e13121954515c669b18af0c26e7d21f579855/kiwisolver-1.5.0-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b0f172dc8ffaccb8522d7c5d899de00133f2f1ca7b0a49b7da98e901de87bf2d", size = 1296685, upload-time = "2026-03-09T13:13:30.528Z" }, + { url = "https://files.pythonhosted.org/packages/27/70/83241b6634b04fe44e892688d5208332bde130f38e610c0418f9ede47ded/kiwisolver-1.5.0-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6ab8ba9152203feec73758dad83af9a0bbe05001eb4639e547207c40cfb52083", size = 1346024, upload-time = "2026-03-09T13:13:32.818Z" }, + { url = "https://files.pythonhosted.org/packages/e4/db/30ed226fb271ae1a6431fc0fe0edffb2efe23cadb01e798caeb9f2ceae8f/kiwisolver-1.5.0-cp312-cp312-manylinux_2_39_riscv64.whl", hash = "sha256:cdee07c4d7f6d72008d3f73b9bf027f4e11550224c7c50d8df1ae4a37c1402a6", size = 987241, upload-time = "2026-03-09T13:13:34.435Z" }, + { url = "https://files.pythonhosted.org/packages/ec/bd/c314595208e4c9587652d50959ead9e461995389664e490f4dce7ff0f782/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7c60d3c9b06fb23bd9c6139281ccbdc384297579ae037f08ae90c69f6845c0b1", size = 2227742, upload-time = "2026-03-09T13:13:36.4Z" }, + { url = "https://files.pythonhosted.org/packages/c1/43/0499cec932d935229b5543d073c2b87c9c22846aab48881e9d8d6e742a2d/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e315e5ec90d88e140f57696ff85b484ff68bb311e36f2c414aa4286293e6dee0", size = 2323966, upload-time = "2026-03-09T13:13:38.204Z" }, + { url = "https://files.pythonhosted.org/packages/3d/6f/79b0d760907965acfd9d61826a3d41f8f093c538f55cd2633d3f0db269f6/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:1465387ac63576c3e125e5337a6892b9e99e0627d52317f3ca79e6930d889d15", size = 1977417, upload-time = "2026-03-09T13:13:39.966Z" }, + { url = "https://files.pythonhosted.org/packages/ab/31/01d0537c41cb75a551a438c3c7a80d0c60d60b81f694dac83dd436aec0d0/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:530a3fd64c87cffa844d4b6b9768774763d9caa299e9b75d8eca6a4423b31314", size = 2491238, upload-time = "2026-03-09T13:13:41.698Z" }, + { url = "https://files.pythonhosted.org/packages/e4/34/8aefdd0be9cfd00a44509251ba864f5caf2991e36772e61c408007e7f417/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1d9daea4ea6b9be74fe2f01f7fbade8d6ffab263e781274cffca0dba9be9eec9", size = 2294947, upload-time = "2026-03-09T13:13:43.343Z" }, + { url = "https://files.pythonhosted.org/packages/ad/cf/0348374369ca588f8fe9c338fae49fa4e16eeb10ffb3d012f23a54578a9e/kiwisolver-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:f18c2d9782259a6dc132fdc7a63c168cbc74b35284b6d75c673958982a378384", size = 73569, upload-time = "2026-03-09T13:13:45.792Z" }, + { url = "https://files.pythonhosted.org/packages/28/26/192b26196e2316e2bd29deef67e37cdf9870d9af8e085e521afff0fed526/kiwisolver-1.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:f7c7553b13f69c1b29a5bde08ddc6d9d0c8bfb84f9ed01c30db25944aeb852a7", size = 64997, upload-time = "2026-03-09T13:13:46.878Z" }, + { url = "https://files.pythonhosted.org/packages/1c/fa/2910df836372d8761bb6eff7d8bdcb1613b5c2e03f260efe7abe34d388a7/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-macosx_10_13_x86_64.whl", hash = "sha256:5ae8e62c147495b01a0f4765c878e9bfdf843412446a247e28df59936e99e797", size = 130262, upload-time = "2026-03-09T13:15:35.629Z" }, + { url = "https://files.pythonhosted.org/packages/0f/41/c5f71f9f00aabcc71fee8b7475e3f64747282580c2fe748961ba29b18385/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:f6764a4ccab3078db14a632420930f6186058750df066b8ea2a7106df91d3203", size = 138036, upload-time = "2026-03-09T13:15:36.894Z" }, + { url = "https://files.pythonhosted.org/packages/fa/06/7399a607f434119c6e1fdc8ec89a8d51ccccadf3341dee4ead6bd14caaf5/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c31c13da98624f957b0fb1b5bae5383b2333c2c3f6793d9825dd5ce79b525cb7", size = 194295, upload-time = "2026-03-09T13:15:38.22Z" }, + { url = "https://files.pythonhosted.org/packages/b5/91/53255615acd2a1eaca307ede3c90eb550bae9c94581f8c00081b6b1c8f44/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-win_amd64.whl", hash = "sha256:1f1489f769582498610e015a8ef2d36f28f505ab3096d0e16b4858a9ec214f57", size = 75987, upload-time = "2026-03-09T13:15:39.65Z" }, + { url = "https://files.pythonhosted.org/packages/17/6f/6fd4f690a40c2582fa34b97d2678f718acf3706b91d270c65ecb455d0a06/kiwisolver-1.5.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:295d9ffe712caa9f8a3081de8d32fc60191b4b51c76f02f951fd8407253528f4", size = 59606, upload-time = "2026-03-09T13:15:40.81Z" }, + { url = "https://files.pythonhosted.org/packages/82/a0/2355d5e3b338f13ce63f361abb181e3b6ea5fffdb73f739b3e80efa76159/kiwisolver-1.5.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:51e8c4084897de9f05898c2c2a39af6318044ae969d46ff7a34ed3f96274adca", size = 57537, upload-time = "2026-03-09T13:15:42.071Z" }, + { url = "https://files.pythonhosted.org/packages/c8/b9/1d50e610ecadebe205b71d6728fd224ce0e0ca6aba7b9cbe1da049203ac5/kiwisolver-1.5.0-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b83af57bdddef03c01a9138034c6ff03181a3028d9a1003b301eb1a55e161a3f", size = 79888, upload-time = "2026-03-09T13:15:43.317Z" }, + { url = "https://files.pythonhosted.org/packages/cd/ee/b85ffcd75afed0357d74f0e6fc02a4507da441165de1ca4760b9f496390d/kiwisolver-1.5.0-pp310-pypy310_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bf4679a3d71012a7c2bf360e5cd878fbd5e4fcac0896b56393dec239d81529ed", size = 77584, upload-time = "2026-03-09T13:15:44.605Z" }, + { url = "https://files.pythonhosted.org/packages/6b/dd/644d0dde6010a8583b4cd66dd41c5f83f5325464d15c4f490b3340ab73b4/kiwisolver-1.5.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:41024ed50e44ab1a60d3fe0a9d15a4ccc9f5f2b1d814ff283c8d01134d5b81bc", size = 73390, upload-time = "2026-03-09T13:15:45.832Z" }, + { url = "https://files.pythonhosted.org/packages/e9/eb/5fcbbbf9a0e2c3a35effb88831a483345326bbc3a030a3b5b69aee647f84/kiwisolver-1.5.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ec4c85dc4b687c7f7f15f553ff26a98bfe8c58f5f7f0ac8905f0ba4c7be60232", size = 59532, upload-time = "2026-03-09T13:15:47.047Z" }, + { url = "https://files.pythonhosted.org/packages/c3/9b/e17104555bb4db148fd52327feea1e96be4b88e8e008b029002c281a21ab/kiwisolver-1.5.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:12e91c215a96e39f57989c8912ae761286ac5a9584d04030ceb3368a357f017a", size = 57420, upload-time = "2026-03-09T13:15:48.199Z" }, + { url = "https://files.pythonhosted.org/packages/48/44/2b5b95b7aa39fb2d8d9d956e0f3d5d45aef2ae1d942d4c3ffac2f9cfed1a/kiwisolver-1.5.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:be4a51a55833dc29ab5d7503e7bcb3b3af3402d266018137127450005cdfe737", size = 79892, upload-time = "2026-03-09T13:15:49.694Z" }, + { url = "https://files.pythonhosted.org/packages/52/7d/7157f9bba6b455cfb4632ed411e199fc8b8977642c2b12082e1bd9e6d173/kiwisolver-1.5.0-pp311-pypy311_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:daae526907e262de627d8f70058a0f64acc9e2641c164c99c8f594b34a799a16", size = 77603, upload-time = "2026-03-09T13:15:50.945Z" }, + { url = "https://files.pythonhosted.org/packages/0a/dd/8050c947d435c8d4bc94e3252f4d8bb8a76cfb424f043a8680be637a57f1/kiwisolver-1.5.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:59cd8683f575d96df5bb48f6add94afc055012c29e28124fcae2b63661b9efb1", size = 73558, upload-time = "2026-03-09T13:15:52.112Z" }, +] + +[[package]] +name = "kornia" +version = "0.8.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "kornia-rs" }, + { name = "packaging" }, + { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "sys_platform != 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/e6/45e757d4924176e4d4e111e10effaab7db382313243e0188a06805010073/kornia-0.8.2.tar.gz", hash = "sha256:5411b2ce0dd909d1608016308cd68faeef90f88c47f47e8ecd40553fd4d8b937", size = 667151, upload-time = "2025-11-08T12:10:03.042Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/d4/e9bd12b7b4cbd23b4dfb47e744ee1fa54d6d9c3c9bc406ec86c1be8c8307/kornia-0.8.2-py2.py3-none-any.whl", hash = "sha256:32dfe77c9c74a87a2de49395aa3c2c376a1b63c27611a298b394d02d13905819", size = 1095012, upload-time = "2025-11-08T12:10:01.226Z" }, +] + +[[package]] +name = "kornia-rs" +version = "0.1.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/17/8b3518ece01512a575b18f86b346879793d3dea264b314796bbd44d42e11/kornia_rs-0.1.10.tar.gz", hash = "sha256:5fd3fbc65240fa751975f5870b079f98e7fdcaa2885ea577b3da324d8bf01d81", size = 145610, upload-time = "2025-11-08T11:29:32.399Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/40/6a59c5b99e19e1be7fff1d68dd3b3eddc80e5304dab75ebb78d0199e2484/kornia_rs-0.1.10-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:e95ccd4b3f73a0d5cbe16c03fd705fa8d75e9df7b044ba9a6c5957b2591003f3", size = 2815093, upload-time = "2025-11-08T11:30:17.98Z" }, + { url = "https://files.pythonhosted.org/packages/17/aa/77f5882707467a6af0833b3ac1497638352bc391d082713b24a3bd187f73/kornia_rs-0.1.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9bc8d5de7d7611b68746b2feff594a073740c4f915d0ccc37bd1d189029c20fe", size = 2078046, upload-time = "2025-11-08T11:30:04.952Z" }, + { url = "https://files.pythonhosted.org/packages/31/43/cff694d864bf60e1e3853ec98bdabc66433f0eeffb7e7f97d27a0b907a88/kornia_rs-0.1.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb94ce80a614a5f00cb68755d7a182236482584e78388217974ef811f4dbb30", size = 2204974, upload-time = "2025-11-08T11:29:30.626Z" }, + { url = "https://files.pythonhosted.org/packages/f5/5a/907580d1e573bc1862557cb70d1f1888bde1b33240d15cd10ff06c93a57c/kornia_rs-0.1.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:859942c70f503bba813c99a39d3011d3e51f294db8058f87842efa180955cab4", size = 3042947, upload-time = "2025-11-08T11:29:48.431Z" }, + { url = "https://files.pythonhosted.org/packages/5c/13/3d0a45f297b1a3f308893751b62080898ce415c61a3629a3d6b04cf55db7/kornia_rs-0.1.10-cp310-cp310-win_amd64.whl", hash = "sha256:74f17ea9afc0a5312832c32f6670e1a4b2162dcf9a8908fb46bbb56d2c707e9e", size = 2543744, upload-time = "2025-11-08T11:30:30.929Z" }, + { url = "https://files.pythonhosted.org/packages/20/25/ab91a87cefd8d92a10749fa5d923366dfd2a2d240d9e57260e4218e9a5af/kornia_rs-0.1.10-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6757940733f13c52c4f142b9b11e3e9bd12ef9d209e333300602e86e21f5ae2f", size = 2811949, upload-time = "2025-11-08T11:30:19.768Z" }, + { url = "https://files.pythonhosted.org/packages/ae/61/6125a970249e04dd31cf3edf3fb0ceb98ea65269bc416ba48fd70f9a8f5e/kornia_rs-0.1.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:68e90101a34ba2bbce920332b25fd4d25c8c546d9a241b2606a6d886df2dd1ed", size = 2078639, upload-time = "2025-11-08T11:30:06.363Z" }, + { url = "https://files.pythonhosted.org/packages/0a/e4/c3484e5921a08e6368f0565c30646741fd12b46cb45c962d519cac3d12ad/kornia_rs-0.1.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b0adb81858a8963455f2f0da01fcd6ea3296147b918306488edeeaf6bc2a979", size = 2204722, upload-time = "2025-11-08T11:29:33.566Z" }, + { url = "https://files.pythonhosted.org/packages/93/a4/2e6e33da900f19ae6411bfad41d317e56f1ae4f204bd73e61f0881bd5418/kornia_rs-0.1.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c3e237a8428524ad9f86599c0c47b355bc3007669fe297ea3fbd59cd64bc2f7", size = 3042890, upload-time = "2025-11-08T11:29:50.15Z" }, + { url = "https://files.pythonhosted.org/packages/40/48/5e171c98b742139bebd1bd593d768e3c045f824bf0ae14190b63f0ac0acc/kornia_rs-0.1.10-cp311-cp311-win_amd64.whl", hash = "sha256:1d300ea6d4666e47302fba6cc438556d91e37ce41caf291a9a04a8f74c231d0b", size = 2544572, upload-time = "2025-11-08T11:30:32.32Z" }, + { url = "https://files.pythonhosted.org/packages/d8/6c/8248f08c90a10d6b8ca2e74783da8df7fa509f46b64a3b4fbb7dd0ac4e9c/kornia_rs-0.1.10-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f0809277e51156d59be3c39605ba9659e94f7a4cf3b0b6c035ec2f06f6067881", size = 2811606, upload-time = "2025-11-08T11:30:21.346Z" }, + { url = "https://files.pythonhosted.org/packages/83/dc/29e5710cbc5d01c155ee1fd7621db48b94378a7ae394741bb34a6bfb36d9/kornia_rs-0.1.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8ecf2ba0291cc1bb178073d56e46b16296a8864a20272b63af02ee88771cb574", size = 2076141, upload-time = "2025-11-08T11:30:07.527Z" }, + { url = "https://files.pythonhosted.org/packages/68/f7/0b3e90b9d0a25e6211c7ac9fa1dfed4db1306a812c359ee49678390a1bdc/kornia_rs-0.1.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d874ca12dd58871f9849672d9bf9fa998398470a88b52d61223ce2133b196662", size = 2205562, upload-time = "2025-11-08T11:29:35.353Z" }, + { url = "https://files.pythonhosted.org/packages/63/d4/315f358b2a2c29d9af3a73f3d1973c2fd8e0cdeb65a57af98643e66fa7c8/kornia_rs-0.1.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f332a2a034cc791006f25c2d85e342a060887145e9236e8e43562badcadededf", size = 3042197, upload-time = "2025-11-08T11:29:51.614Z" }, + { url = "https://files.pythonhosted.org/packages/d3/b8/0ddbdf1d35fec3ef24f5b8cc29eb633ce5ce16c94c9fb090408c1280abe9/kornia_rs-0.1.10-cp312-cp312-win_amd64.whl", hash = "sha256:34111ce1c8abe930079b4b0aeb8d372f876c621a867ed03f77181de685e71a8f", size = 2539656, upload-time = "2025-11-08T11:30:33.908Z" }, +] + +[[package]] +name = "lazy-loader" +version = "0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/49/ac/21a1f8aa3777f5658576777ea76bfb124b702c520bbe90edf4ae9915eafa/lazy_loader-0.5.tar.gz", hash = "sha256:717f9179a0dbed357012ddad50a5ad3d5e4d9a0b8712680d4e687f5e6e6ed9b3", size = 15294, upload-time = "2026-03-06T15:45:09.054Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/a1/8d812e53a5da1687abb10445275d41a8b13adb781bbf7196ddbcf8d88505/lazy_loader-0.5-py3-none-any.whl", hash = "sha256:ab0ea149e9c554d4ffeeb21105ac60bed7f3b4fd69b1d2360a4add51b170b005", size = 8044, upload-time = "2026-03-06T15:45:07.668Z" }, +] + +[[package]] +name = "lightning-utilities" +version = "0.15.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f1/45/7fa8f56b17dc0f0a41ec70dd307ecd6787254483549843bef4c30ab5adce/lightning_utilities-0.15.3.tar.gz", hash = "sha256:792ae0204c79f6859721ac7f386c237a33b0ed06ba775009cb894e010a842033", size = 33553, upload-time = "2026-02-22T14:48:53.348Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/f4/ead6e0e37209b07c9baa3e984ccdb0348ca370b77cea3aaea8ddbb097e00/lightning_utilities-0.15.3-py3-none-any.whl", hash = "sha256:6c55f1bee70084a1cbeaa41ada96e4b3a0fea5909e844dd335bd80f5a73c5f91", size = 31906, upload-time = "2026-02-22T14:48:52.488Z" }, +] + +[[package]] +name = "markdown" +version = "3.10.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2b/f4/69fa6ed85ae003c2378ffa8f6d2e3234662abd02c10d216c0ba96081a238/markdown-3.10.2.tar.gz", hash = "sha256:994d51325d25ad8aa7ce4ebaec003febcce822c3f8c911e3b17c52f7f589f950", size = 368805, upload-time = "2026-02-09T14:57:26.942Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/de/1f/77fa3081e4f66ca3576c896ae5d31c3002ac6607f9747d2e3aa49227e464/markdown-3.10.2-py3-none-any.whl", hash = "sha256:e91464b71ae3ee7afd3017d9f358ef0baf158fd9a298db92f1d4761133824c36", size = 108180, upload-time = "2026-02-09T14:57:25.787Z" }, +] + +[[package]] +name = "markdown-it-py" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/4b/3541d44f3937ba468b75da9eebcae497dcf67adb65caa16760b0a6807ebb/markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559", size = 11631, upload-time = "2025-09-27T18:36:05.558Z" }, + { url = "https://files.pythonhosted.org/packages/98/1b/fbd8eed11021cabd9226c37342fa6ca4e8a98d8188a8d9b66740494960e4/markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419", size = 12057, upload-time = "2025-09-27T18:36:07.165Z" }, + { url = "https://files.pythonhosted.org/packages/40/01/e560d658dc0bb8ab762670ece35281dec7b6c1b33f5fbc09ebb57a185519/markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695", size = 22050, upload-time = "2025-09-27T18:36:08.005Z" }, + { url = "https://files.pythonhosted.org/packages/af/cd/ce6e848bbf2c32314c9b237839119c5a564a59725b53157c856e90937b7a/markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591", size = 20681, upload-time = "2025-09-27T18:36:08.881Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2a/b5c12c809f1c3045c4d580b035a743d12fcde53cf685dbc44660826308da/markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c", size = 20705, upload-time = "2025-09-27T18:36:10.131Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e3/9427a68c82728d0a88c50f890d0fc072a1484de2f3ac1ad0bfc1a7214fd5/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f", size = 21524, upload-time = "2025-09-27T18:36:11.324Z" }, + { url = "https://files.pythonhosted.org/packages/bc/36/23578f29e9e582a4d0278e009b38081dbe363c5e7165113fad546918a232/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6", size = 20282, upload-time = "2025-09-27T18:36:12.573Z" }, + { url = "https://files.pythonhosted.org/packages/56/21/dca11354e756ebd03e036bd8ad58d6d7168c80ce1fe5e75218e4945cbab7/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1", size = 20745, upload-time = "2025-09-27T18:36:13.504Z" }, + { url = "https://files.pythonhosted.org/packages/87/99/faba9369a7ad6e4d10b6a5fbf71fa2a188fe4a593b15f0963b73859a1bbd/markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa", size = 14571, upload-time = "2025-09-27T18:36:14.779Z" }, + { url = "https://files.pythonhosted.org/packages/d6/25/55dc3ab959917602c96985cb1253efaa4ff42f71194bddeb61eb7278b8be/markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8", size = 15056, upload-time = "2025-09-27T18:36:16.125Z" }, + { url = "https://files.pythonhosted.org/packages/d0/9e/0a02226640c255d1da0b8d12e24ac2aa6734da68bff14c05dd53b94a0fc3/markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1", size = 13932, upload-time = "2025-09-27T18:36:17.311Z" }, + { url = "https://files.pythonhosted.org/packages/08/db/fefacb2136439fc8dd20e797950e749aa1f4997ed584c62cfb8ef7c2be0e/markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad", size = 11631, upload-time = "2025-09-27T18:36:18.185Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2e/5898933336b61975ce9dc04decbc0a7f2fee78c30353c5efba7f2d6ff27a/markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a", size = 12058, upload-time = "2025-09-27T18:36:19.444Z" }, + { url = "https://files.pythonhosted.org/packages/1d/09/adf2df3699d87d1d8184038df46a9c80d78c0148492323f4693df54e17bb/markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50", size = 24287, upload-time = "2025-09-27T18:36:20.768Z" }, + { url = "https://files.pythonhosted.org/packages/30/ac/0273f6fcb5f42e314c6d8cd99effae6a5354604d461b8d392b5ec9530a54/markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf", size = 22940, upload-time = "2025-09-27T18:36:22.249Z" }, + { url = "https://files.pythonhosted.org/packages/19/ae/31c1be199ef767124c042c6c3e904da327a2f7f0cd63a0337e1eca2967a8/markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f", size = 21887, upload-time = "2025-09-27T18:36:23.535Z" }, + { url = "https://files.pythonhosted.org/packages/b2/76/7edcab99d5349a4532a459e1fe64f0b0467a3365056ae550d3bcf3f79e1e/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a", size = 23692, upload-time = "2025-09-27T18:36:24.823Z" }, + { url = "https://files.pythonhosted.org/packages/a4/28/6e74cdd26d7514849143d69f0bf2399f929c37dc2b31e6829fd2045b2765/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115", size = 21471, upload-time = "2025-09-27T18:36:25.95Z" }, + { url = "https://files.pythonhosted.org/packages/62/7e/a145f36a5c2945673e590850a6f8014318d5577ed7e5920a4b3448e0865d/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a", size = 22923, upload-time = "2025-09-27T18:36:27.109Z" }, + { url = "https://files.pythonhosted.org/packages/0f/62/d9c46a7f5c9adbeeeda52f5b8d802e1094e9717705a645efc71b0913a0a8/markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19", size = 14572, upload-time = "2025-09-27T18:36:28.045Z" }, + { url = "https://files.pythonhosted.org/packages/83/8a/4414c03d3f891739326e1783338e48fb49781cc915b2e0ee052aa490d586/markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01", size = 15077, upload-time = "2025-09-27T18:36:29.025Z" }, + { url = "https://files.pythonhosted.org/packages/35/73/893072b42e6862f319b5207adc9ae06070f095b358655f077f69a35601f0/markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c", size = 13876, upload-time = "2025-09-27T18:36:29.954Z" }, + { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" }, + { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload-time = "2025-09-27T18:36:32.813Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload-time = "2025-09-27T18:36:33.86Z" }, + { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload-time = "2025-09-27T18:36:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload-time = "2025-09-27T18:36:36.001Z" }, + { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload-time = "2025-09-27T18:36:36.906Z" }, + { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload-time = "2025-09-27T18:36:37.868Z" }, + { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload-time = "2025-09-27T18:36:38.761Z" }, + { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload-time = "2025-09-27T18:36:39.701Z" }, + { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.10.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy", version = "1.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "contourpy", version = "1.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "kiwisolver" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/76/d3c6e3a13fe484ebe7718d14e269c9569c4eb0020a968a327acb3b9a8fe6/matplotlib-3.10.8.tar.gz", hash = "sha256:2299372c19d56bcd35cf05a2738308758d32b9eaed2371898d8f5bd33f084aa3", size = 34806269, upload-time = "2025-12-10T22:56:51.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/be/a30bd917018ad220c400169fba298f2bb7003c8ccbc0c3e24ae2aacad1e8/matplotlib-3.10.8-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:00270d217d6b20d14b584c521f810d60c5c78406dc289859776550df837dcda7", size = 8239828, upload-time = "2025-12-10T22:55:02.313Z" }, + { url = "https://files.pythonhosted.org/packages/58/27/ca01e043c4841078e82cf6e80a6993dfecd315c3d79f5f3153afbb8e1ec6/matplotlib-3.10.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37b3c1cc42aa184b3f738cfa18c1c1d72fd496d85467a6cf7b807936d39aa656", size = 8128050, upload-time = "2025-12-10T22:55:04.997Z" }, + { url = "https://files.pythonhosted.org/packages/cb/aa/7ab67f2b729ae6a91bcf9dcac0affb95fb8c56f7fd2b2af894ae0b0cf6fa/matplotlib-3.10.8-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ee40c27c795bda6a5292e9cff9890189d32f7e3a0bf04e0e3c9430c4a00c37df", size = 8700452, upload-time = "2025-12-10T22:55:07.47Z" }, + { url = "https://files.pythonhosted.org/packages/73/ae/2d5817b0acee3c49b7e7ccfbf5b273f284957cc8e270adf36375db353190/matplotlib-3.10.8-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a48f2b74020919552ea25d222d5cc6af9ca3f4eb43a93e14d068457f545c2a17", size = 9534928, upload-time = "2025-12-10T22:55:10.566Z" }, + { url = "https://files.pythonhosted.org/packages/c9/5b/8e66653e9f7c39cb2e5cab25fce4810daffa2bff02cbf5f3077cea9e942c/matplotlib-3.10.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f254d118d14a7f99d616271d6c3c27922c092dac11112670b157798b89bf4933", size = 9586377, upload-time = "2025-12-10T22:55:12.362Z" }, + { url = "https://files.pythonhosted.org/packages/e2/e2/fd0bbadf837f81edb0d208ba8f8cb552874c3b16e27cb91a31977d90875d/matplotlib-3.10.8-cp310-cp310-win_amd64.whl", hash = "sha256:f9b587c9c7274c1613a30afabf65a272114cd6cdbe67b3406f818c79d7ab2e2a", size = 8128127, upload-time = "2025-12-10T22:55:14.436Z" }, + { url = "https://files.pythonhosted.org/packages/f8/86/de7e3a1cdcfc941483af70609edc06b83e7c8a0e0dc9ac325200a3f4d220/matplotlib-3.10.8-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6be43b667360fef5c754dda5d25a32e6307a03c204f3c0fc5468b78fa87b4160", size = 8251215, upload-time = "2025-12-10T22:55:16.175Z" }, + { url = "https://files.pythonhosted.org/packages/fd/14/baad3222f424b19ce6ad243c71de1ad9ec6b2e4eb1e458a48fdc6d120401/matplotlib-3.10.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a2b336e2d91a3d7006864e0990c83b216fcdca64b5a6484912902cef87313d78", size = 8139625, upload-time = "2025-12-10T22:55:17.712Z" }, + { url = "https://files.pythonhosted.org/packages/8f/a0/7024215e95d456de5883e6732e708d8187d9753a21d32f8ddb3befc0c445/matplotlib-3.10.8-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:efb30e3baaea72ce5928e32bab719ab4770099079d66726a62b11b1ef7273be4", size = 8712614, upload-time = "2025-12-10T22:55:20.8Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f4/b8347351da9a5b3f41e26cf547252d861f685c6867d179a7c9d60ad50189/matplotlib-3.10.8-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d56a1efd5bfd61486c8bc968fa18734464556f0fb8e51690f4ac25d85cbbbbc2", size = 9540997, upload-time = "2025-12-10T22:55:23.258Z" }, + { url = "https://files.pythonhosted.org/packages/9e/c0/c7b914e297efe0bc36917bf216b2acb91044b91e930e878ae12981e461e5/matplotlib-3.10.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238b7ce5717600615c895050239ec955d91f321c209dd110db988500558e70d6", size = 9596825, upload-time = "2025-12-10T22:55:25.217Z" }, + { url = "https://files.pythonhosted.org/packages/6f/d3/a4bbc01c237ab710a1f22b4da72f4ff6d77eb4c7735ea9811a94ae239067/matplotlib-3.10.8-cp311-cp311-win_amd64.whl", hash = "sha256:18821ace09c763ec93aef5eeff087ee493a24051936d7b9ebcad9662f66501f9", size = 8135090, upload-time = "2025-12-10T22:55:27.162Z" }, + { url = "https://files.pythonhosted.org/packages/89/dd/a0b6588f102beab33ca6f5218b31725216577b2a24172f327eaf6417d5c9/matplotlib-3.10.8-cp311-cp311-win_arm64.whl", hash = "sha256:bab485bcf8b1c7d2060b4fcb6fc368a9e6f4cd754c9c2fea281f4be21df394a2", size = 8012377, upload-time = "2025-12-10T22:55:29.185Z" }, + { url = "https://files.pythonhosted.org/packages/9e/67/f997cdcbb514012eb0d10cd2b4b332667997fb5ebe26b8d41d04962fa0e6/matplotlib-3.10.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:64fcc24778ca0404ce0cb7b6b77ae1f4c7231cdd60e6778f999ee05cbd581b9a", size = 8260453, upload-time = "2025-12-10T22:55:30.709Z" }, + { url = "https://files.pythonhosted.org/packages/7e/65/07d5f5c7f7c994f12c768708bd2e17a4f01a2b0f44a1c9eccad872433e2e/matplotlib-3.10.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b9a5ca4ac220a0cdd1ba6bcba3608547117d30468fefce49bb26f55c1a3d5c58", size = 8148321, upload-time = "2025-12-10T22:55:33.265Z" }, + { url = "https://files.pythonhosted.org/packages/3e/f3/c5195b1ae57ef85339fd7285dfb603b22c8b4e79114bae5f4f0fcf688677/matplotlib-3.10.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3ab4aabc72de4ff77b3ec33a6d78a68227bf1123465887f9905ba79184a1cc04", size = 8716944, upload-time = "2025-12-10T22:55:34.922Z" }, + { url = "https://files.pythonhosted.org/packages/00/f9/7638f5cc82ec8a7aa005de48622eecc3ed7c9854b96ba15bd76b7fd27574/matplotlib-3.10.8-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:24d50994d8c5816ddc35411e50a86ab05f575e2530c02752e02538122613371f", size = 9550099, upload-time = "2025-12-10T22:55:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/57/61/78cd5920d35b29fd2a0fe894de8adf672ff52939d2e9b43cb83cd5ce1bc7/matplotlib-3.10.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:99eefd13c0dc3b3c1b4d561c1169e65fe47aab7b8158754d7c084088e2329466", size = 9613040, upload-time = "2025-12-10T22:55:38.715Z" }, + { url = "https://files.pythonhosted.org/packages/30/4e/c10f171b6e2f44d9e3a2b96efa38b1677439d79c99357600a62cc1e9594e/matplotlib-3.10.8-cp312-cp312-win_amd64.whl", hash = "sha256:dd80ecb295460a5d9d260df63c43f4afbdd832d725a531f008dad1664f458adf", size = 8142717, upload-time = "2025-12-10T22:55:41.103Z" }, + { url = "https://files.pythonhosted.org/packages/f1/76/934db220026b5fef85f45d51a738b91dea7d70207581063cd9bd8fafcf74/matplotlib-3.10.8-cp312-cp312-win_arm64.whl", hash = "sha256:3c624e43ed56313651bc18a47f838b60d7b8032ed348911c54906b130b20071b", size = 8012751, upload-time = "2025-12-10T22:55:42.684Z" }, + { url = "https://files.pythonhosted.org/packages/f5/43/31d59500bb950b0d188e149a2e552040528c13d6e3d6e84d0cccac593dcd/matplotlib-3.10.8-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:f97aeb209c3d2511443f8797e3e5a569aebb040d4f8bc79aa3ee78a8fb9e3dd8", size = 8237252, upload-time = "2025-12-10T22:56:39.529Z" }, + { url = "https://files.pythonhosted.org/packages/0c/2c/615c09984f3c5f907f51c886538ad785cf72e0e11a3225de2c0f9442aecc/matplotlib-3.10.8-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fb061f596dad3a0f52b60dc6a5dec4a0c300dec41e058a7efe09256188d170b7", size = 8124693, upload-time = "2025-12-10T22:56:41.758Z" }, + { url = "https://files.pythonhosted.org/packages/91/e1/2757277a1c56041e1fc104b51a0f7b9a4afc8eb737865d63cababe30bc61/matplotlib-3.10.8-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:12d90df9183093fcd479f4172ac26b322b1248b15729cb57f42f71f24c7e37a3", size = 8702205, upload-time = "2025-12-10T22:56:43.415Z" }, + { url = "https://files.pythonhosted.org/packages/04/30/3afaa31c757f34b7725ab9d2ba8b48b5e89c2019c003e7d0ead143aabc5a/matplotlib-3.10.8-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6da7c2ce169267d0d066adcf63758f0604aa6c3eebf67458930f9d9b79ad1db1", size = 8249198, upload-time = "2025-12-10T22:56:45.584Z" }, + { url = "https://files.pythonhosted.org/packages/48/2f/6334aec331f57485a642a7c8be03cb286f29111ae71c46c38b363230063c/matplotlib-3.10.8-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:9153c3292705be9f9c64498a8872118540c3f4123d1a1c840172edf262c8be4a", size = 8136817, upload-time = "2025-12-10T22:56:47.339Z" }, + { url = "https://files.pythonhosted.org/packages/73/e4/6d6f14b2a759c622f191b2d67e9075a3f56aaccb3be4bb9bb6890030d0a0/matplotlib-3.10.8-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1ae029229a57cd1e8fe542485f27e7ca7b23aa9e8944ddb4985d0bc444f1eca2", size = 8713867, upload-time = "2025-12-10T22:56:48.954Z" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, +] + +[[package]] +name = "mpmath" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106, upload-time = "2023-03-07T16:47:11.061Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" }, +] + +[[package]] +name = "multidict" +version = "6.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1a/c2/c2d94cbe6ac1753f3fc980da97b3d930efe1da3af3c9f5125354436c073d/multidict-6.7.1.tar.gz", hash = "sha256:ec6652a1bee61c53a3e5776b6049172c53b6aaba34f18c9ad04f82712bac623d", size = 102010, upload-time = "2026-01-26T02:46:45.979Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/0b/19348d4c98980c4851d2f943f8ebafdece2ae7ef737adcfa5994ce8e5f10/multidict-6.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c93c3db7ea657dd4637d57e74ab73de31bccefe144d3d4ce370052035bc85fb5", size = 77176, upload-time = "2026-01-26T02:42:59.784Z" }, + { url = "https://files.pythonhosted.org/packages/ef/04/9de3f8077852e3d438215c81e9b691244532d2e05b4270e89ce67b7d103c/multidict-6.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:974e72a2474600827abaeda71af0c53d9ebbc3c2eb7da37b37d7829ae31232d8", size = 44996, upload-time = "2026-01-26T02:43:01.674Z" }, + { url = "https://files.pythonhosted.org/packages/31/5c/08c7f7fe311f32e83f7621cd3f99d805f45519cd06fafb247628b861da7d/multidict-6.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cdea2e7b2456cfb6694fb113066fd0ec7ea4d67e3a35e1f4cbeea0b448bf5872", size = 44631, upload-time = "2026-01-26T02:43:03.169Z" }, + { url = "https://files.pythonhosted.org/packages/b7/7f/0e3b1390ae772f27501199996b94b52ceeb64fe6f9120a32c6c3f6b781be/multidict-6.7.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:17207077e29342fdc2c9a82e4b306f1127bf1ea91f8b71e02d4798a70bb99991", size = 242561, upload-time = "2026-01-26T02:43:04.733Z" }, + { url = "https://files.pythonhosted.org/packages/dd/f4/8719f4f167586af317b69dd3e90f913416c91ca610cac79a45c53f590312/multidict-6.7.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4f49cb5661344764e4c7c7973e92a47a59b8fc19b6523649ec9dc4960e58a03", size = 242223, upload-time = "2026-01-26T02:43:06.695Z" }, + { url = "https://files.pythonhosted.org/packages/47/ab/7c36164cce64a6ad19c6d9a85377b7178ecf3b89f8fd589c73381a5eedfd/multidict-6.7.1-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a9fc4caa29e2e6ae408d1c450ac8bf19892c5fca83ee634ecd88a53332c59981", size = 222322, upload-time = "2026-01-26T02:43:08.472Z" }, + { url = "https://files.pythonhosted.org/packages/f5/79/a25add6fb38035b5337bc5734f296d9afc99163403bbcf56d4170f97eb62/multidict-6.7.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c5f0c21549ab432b57dcc82130f388d84ad8179824cc3f223d5e7cfbfd4143f6", size = 254005, upload-time = "2026-01-26T02:43:10.127Z" }, + { url = "https://files.pythonhosted.org/packages/4a/7b/64a87cf98e12f756fc8bd444b001232ffff2be37288f018ad0d3f0aae931/multidict-6.7.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7dfb78d966b2c906ae1d28ccf6e6712a3cd04407ee5088cd276fe8cb42186190", size = 251173, upload-time = "2026-01-26T02:43:11.731Z" }, + { url = "https://files.pythonhosted.org/packages/4b/ac/b605473de2bb404e742f2cc3583d12aedb2352a70e49ae8fce455b50c5aa/multidict-6.7.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9b0d9b91d1aa44db9c1f1ecd0d9d2ae610b2f4f856448664e01a3b35899f3f92", size = 243273, upload-time = "2026-01-26T02:43:13.063Z" }, + { url = "https://files.pythonhosted.org/packages/03/65/11492d6a0e259783720f3bc1d9ea55579a76f1407e31ed44045c99542004/multidict-6.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:dd96c01a9dcd4889dcfcf9eb5544ca0c77603f239e3ffab0524ec17aea9a93ee", size = 238956, upload-time = "2026-01-26T02:43:14.843Z" }, + { url = "https://files.pythonhosted.org/packages/5f/a7/7ee591302af64e7c196fb63fe856c788993c1372df765102bd0448e7e165/multidict-6.7.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:067343c68cd6612d375710f895337b3a98a033c94f14b9a99eff902f205424e2", size = 233477, upload-time = "2026-01-26T02:43:16.025Z" }, + { url = "https://files.pythonhosted.org/packages/9c/99/c109962d58756c35fd9992fed7f2355303846ea2ff054bb5f5e9d6b888de/multidict-6.7.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5884a04f4ff56c6120f6ccf703bdeb8b5079d808ba604d4d53aec0d55dc33568", size = 243615, upload-time = "2026-01-26T02:43:17.84Z" }, + { url = "https://files.pythonhosted.org/packages/d5/5f/1973e7c771c86e93dcfe1c9cc55a5481b610f6614acfc28c0d326fe6bfad/multidict-6.7.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8affcf1c98b82bc901702eb73b6947a1bfa170823c153fe8a47b5f5f02e48e40", size = 249930, upload-time = "2026-01-26T02:43:19.06Z" }, + { url = "https://files.pythonhosted.org/packages/5d/a5/f170fc2268c3243853580203378cd522446b2df632061e0a5409817854c7/multidict-6.7.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0d17522c37d03e85c8098ec8431636309b2682cf12e58f4dbc76121fb50e4962", size = 243807, upload-time = "2026-01-26T02:43:20.286Z" }, + { url = "https://files.pythonhosted.org/packages/de/01/73856fab6d125e5bc652c3986b90e8699a95e84b48d72f39ade6c0e74a8c/multidict-6.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:24c0cf81544ca5e17cfcb6e482e7a82cd475925242b308b890c9452a074d4505", size = 239103, upload-time = "2026-01-26T02:43:21.508Z" }, + { url = "https://files.pythonhosted.org/packages/e7/46/f1220bd9944d8aa40d8ccff100eeeee19b505b857b6f603d6078cb5315b0/multidict-6.7.1-cp310-cp310-win32.whl", hash = "sha256:d82dd730a95e6643802f4454b8fdecdf08667881a9c5670db85bc5a56693f122", size = 41416, upload-time = "2026-01-26T02:43:22.703Z" }, + { url = "https://files.pythonhosted.org/packages/68/00/9b38e272a770303692fc406c36e1a4c740f401522d5787691eb38a8925a8/multidict-6.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:cf37cbe5ced48d417ba045aca1b21bafca67489452debcde94778a576666a1df", size = 46022, upload-time = "2026-01-26T02:43:23.77Z" }, + { url = "https://files.pythonhosted.org/packages/64/65/d8d42490c02ee07b6bbe00f7190d70bb4738b3cce7629aaf9f213ef730dd/multidict-6.7.1-cp310-cp310-win_arm64.whl", hash = "sha256:59bc83d3f66b41dac1e7460aac1d196edc70c9ba3094965c467715a70ecb46db", size = 43238, upload-time = "2026-01-26T02:43:24.882Z" }, + { url = "https://files.pythonhosted.org/packages/ce/f1/a90635c4f88fb913fbf4ce660b83b7445b7a02615bda034b2f8eb38fd597/multidict-6.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7ff981b266af91d7b4b3793ca3382e53229088d193a85dfad6f5f4c27fc73e5d", size = 76626, upload-time = "2026-01-26T02:43:26.485Z" }, + { url = "https://files.pythonhosted.org/packages/a6/9b/267e64eaf6fc637a15b35f5de31a566634a2740f97d8d094a69d34f524a4/multidict-6.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:844c5bca0b5444adb44a623fb0a1310c2f4cd41f402126bb269cd44c9b3f3e1e", size = 44706, upload-time = "2026-01-26T02:43:27.607Z" }, + { url = "https://files.pythonhosted.org/packages/dd/a4/d45caf2b97b035c57267791ecfaafbd59c68212004b3842830954bb4b02e/multidict-6.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f2a0a924d4c2e9afcd7ec64f9de35fcd96915149b2216e1cb2c10a56df483855", size = 44356, upload-time = "2026-01-26T02:43:28.661Z" }, + { url = "https://files.pythonhosted.org/packages/fd/d2/0a36c8473f0cbaeadd5db6c8b72d15bbceeec275807772bfcd059bef487d/multidict-6.7.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:8be1802715a8e892c784c0197c2ace276ea52702a0ede98b6310c8f255a5afb3", size = 244355, upload-time = "2026-01-26T02:43:31.165Z" }, + { url = "https://files.pythonhosted.org/packages/5d/16/8c65be997fd7dd311b7d39c7b6e71a0cb449bad093761481eccbbe4b42a2/multidict-6.7.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2e2d2ed645ea29f31c4c7ea1552fcfd7cb7ba656e1eafd4134a6620c9f5fdd9e", size = 246433, upload-time = "2026-01-26T02:43:32.581Z" }, + { url = "https://files.pythonhosted.org/packages/01/fb/4dbd7e848d2799c6a026ec88ad39cf2b8416aa167fcc903baa55ecaa045c/multidict-6.7.1-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:95922cee9a778659e91db6497596435777bd25ed116701a4c034f8e46544955a", size = 225376, upload-time = "2026-01-26T02:43:34.417Z" }, + { url = "https://files.pythonhosted.org/packages/b6/8a/4a3a6341eac3830f6053062f8fbc9a9e54407c80755b3f05bc427295c2d0/multidict-6.7.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6b83cabdc375ffaaa15edd97eb7c0c672ad788e2687004990074d7d6c9b140c8", size = 257365, upload-time = "2026-01-26T02:43:35.741Z" }, + { url = "https://files.pythonhosted.org/packages/f7/a2/dd575a69c1aa206e12d27d0770cdf9b92434b48a9ef0cd0d1afdecaa93c4/multidict-6.7.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:38fb49540705369bab8484db0689d86c0a33a0a9f2c1b197f506b71b4b6c19b0", size = 254747, upload-time = "2026-01-26T02:43:36.976Z" }, + { url = "https://files.pythonhosted.org/packages/5a/56/21b27c560c13822ed93133f08aa6372c53a8e067f11fbed37b4adcdac922/multidict-6.7.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:439cbebd499f92e9aa6793016a8acaa161dfa749ae86d20960189f5398a19144", size = 246293, upload-time = "2026-01-26T02:43:38.258Z" }, + { url = "https://files.pythonhosted.org/packages/5a/a4/23466059dc3854763423d0ad6c0f3683a379d97673b1b89ec33826e46728/multidict-6.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6d3bc717b6fe763b8be3f2bee2701d3c8eb1b2a8ae9f60910f1b2860c82b6c49", size = 242962, upload-time = "2026-01-26T02:43:40.034Z" }, + { url = "https://files.pythonhosted.org/packages/1f/67/51dd754a3524d685958001e8fa20a0f5f90a6a856e0a9dcabff69be3dbb7/multidict-6.7.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:619e5a1ac57986dbfec9f0b301d865dddf763696435e2962f6d9cf2fdff2bb71", size = 237360, upload-time = "2026-01-26T02:43:41.752Z" }, + { url = "https://files.pythonhosted.org/packages/64/3f/036dfc8c174934d4b55d86ff4f978e558b0e585cef70cfc1ad01adc6bf18/multidict-6.7.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0b38ebffd9be37c1170d33bc0f36f4f262e0a09bc1aac1c34c7aa51a7293f0b3", size = 245940, upload-time = "2026-01-26T02:43:43.042Z" }, + { url = "https://files.pythonhosted.org/packages/3d/20/6214d3c105928ebc353a1c644a6ef1408bc5794fcb4f170bb524a3c16311/multidict-6.7.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:10ae39c9cfe6adedcdb764f5e8411d4a92b055e35573a2eaa88d3323289ef93c", size = 253502, upload-time = "2026-01-26T02:43:44.371Z" }, + { url = "https://files.pythonhosted.org/packages/b1/e2/c653bc4ae1be70a0f836b82172d643fcf1dade042ba2676ab08ec08bff0f/multidict-6.7.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:25167cc263257660290fba06b9318d2026e3c910be240a146e1f66dd114af2b0", size = 247065, upload-time = "2026-01-26T02:43:45.745Z" }, + { url = "https://files.pythonhosted.org/packages/c8/11/a854b4154cd3bd8b1fd375e8a8ca9d73be37610c361543d56f764109509b/multidict-6.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:128441d052254f42989ef98b7b6a6ecb1e6f708aa962c7984235316db59f50fa", size = 241870, upload-time = "2026-01-26T02:43:47.054Z" }, + { url = "https://files.pythonhosted.org/packages/13/bf/9676c0392309b5fdae322333d22a829715b570edb9baa8016a517b55b558/multidict-6.7.1-cp311-cp311-win32.whl", hash = "sha256:d62b7f64ffde3b99d06b707a280db04fb3855b55f5a06df387236051d0668f4a", size = 41302, upload-time = "2026-01-26T02:43:48.753Z" }, + { url = "https://files.pythonhosted.org/packages/c9/68/f16a3a8ba6f7b6dc92a1f19669c0810bd2c43fc5a02da13b1cbf8e253845/multidict-6.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:bdbf9f3b332abd0cdb306e7c2113818ab1e922dc84b8f8fd06ec89ed2a19ab8b", size = 45981, upload-time = "2026-01-26T02:43:49.921Z" }, + { url = "https://files.pythonhosted.org/packages/ac/ad/9dd5305253fa00cd3c7555dbef69d5bf4133debc53b87ab8d6a44d411665/multidict-6.7.1-cp311-cp311-win_arm64.whl", hash = "sha256:b8c990b037d2fff2f4e33d3f21b9b531c5745b33a49a7d6dbe7a177266af44f6", size = 43159, upload-time = "2026-01-26T02:43:51.635Z" }, + { url = "https://files.pythonhosted.org/packages/8d/9c/f20e0e2cf80e4b2e4b1c365bf5fe104ee633c751a724246262db8f1a0b13/multidict-6.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a90f75c956e32891a4eda3639ce6dd86e87105271f43d43442a3aedf3cddf172", size = 76893, upload-time = "2026-01-26T02:43:52.754Z" }, + { url = "https://files.pythonhosted.org/packages/fe/cf/18ef143a81610136d3da8193da9d80bfe1cb548a1e2d1c775f26b23d024a/multidict-6.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fccb473e87eaa1382689053e4a4618e7ba7b9b9b8d6adf2027ee474597128cd", size = 45456, upload-time = "2026-01-26T02:43:53.893Z" }, + { url = "https://files.pythonhosted.org/packages/a9/65/1caac9d4cd32e8433908683446eebc953e82d22b03d10d41a5f0fefe991b/multidict-6.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b0fa96985700739c4c7853a43c0b3e169360d6855780021bfc6d0f1ce7c123e7", size = 43872, upload-time = "2026-01-26T02:43:55.041Z" }, + { url = "https://files.pythonhosted.org/packages/cf/3b/d6bd75dc4f3ff7c73766e04e705b00ed6dbbaccf670d9e05a12b006f5a21/multidict-6.7.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cb2a55f408c3043e42b40cc8eecd575afa27b7e0b956dfb190de0f8499a57a53", size = 251018, upload-time = "2026-01-26T02:43:56.198Z" }, + { url = "https://files.pythonhosted.org/packages/fd/80/c959c5933adedb9ac15152e4067c702a808ea183a8b64cf8f31af8ad3155/multidict-6.7.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb0ce7b2a32d09892b3dd6cc44877a0d02a33241fafca5f25c8b6b62374f8b75", size = 258883, upload-time = "2026-01-26T02:43:57.499Z" }, + { url = "https://files.pythonhosted.org/packages/86/85/7ed40adafea3d4f1c8b916e3b5cc3a8e07dfcdcb9cd72800f4ed3ca1b387/multidict-6.7.1-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c3a32d23520ee37bf327d1e1a656fec76a2edd5c038bf43eddfa0572ec49c60b", size = 242413, upload-time = "2026-01-26T02:43:58.755Z" }, + { url = "https://files.pythonhosted.org/packages/d2/57/b8565ff533e48595503c785f8361ff9a4fde4d67de25c207cd0ba3befd03/multidict-6.7.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9c90fed18bffc0189ba814749fdcc102b536e83a9f738a9003e569acd540a733", size = 268404, upload-time = "2026-01-26T02:44:00.216Z" }, + { url = "https://files.pythonhosted.org/packages/e0/50/9810c5c29350f7258180dfdcb2e52783a0632862eb334c4896ac717cebcb/multidict-6.7.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:da62917e6076f512daccfbbde27f46fed1c98fee202f0559adec8ee0de67f71a", size = 269456, upload-time = "2026-01-26T02:44:02.202Z" }, + { url = "https://files.pythonhosted.org/packages/f3/8d/5e5be3ced1d12966fefb5c4ea3b2a5b480afcea36406559442c6e31d4a48/multidict-6.7.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bfde23ef6ed9db7eaee6c37dcec08524cb43903c60b285b172b6c094711b3961", size = 256322, upload-time = "2026-01-26T02:44:03.56Z" }, + { url = "https://files.pythonhosted.org/packages/31/6e/d8a26d81ac166a5592782d208dd90dfdc0a7a218adaa52b45a672b46c122/multidict-6.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3758692429e4e32f1ba0df23219cd0b4fc0a52f476726fff9337d1a57676a582", size = 253955, upload-time = "2026-01-26T02:44:04.845Z" }, + { url = "https://files.pythonhosted.org/packages/59/4c/7c672c8aad41534ba619bcd4ade7a0dc87ed6b8b5c06149b85d3dd03f0cd/multidict-6.7.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:398c1478926eca669f2fd6a5856b6de9c0acf23a2cb59a14c0ba5844fa38077e", size = 251254, upload-time = "2026-01-26T02:44:06.133Z" }, + { url = "https://files.pythonhosted.org/packages/7b/bd/84c24de512cbafbdbc39439f74e967f19570ce7924e3007174a29c348916/multidict-6.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c102791b1c4f3ab36ce4101154549105a53dc828f016356b3e3bcae2e3a039d3", size = 252059, upload-time = "2026-01-26T02:44:07.518Z" }, + { url = "https://files.pythonhosted.org/packages/fa/ba/f5449385510825b73d01c2d4087bf6d2fccc20a2d42ac34df93191d3dd03/multidict-6.7.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a088b62bd733e2ad12c50dad01b7d0166c30287c166e137433d3b410add807a6", size = 263588, upload-time = "2026-01-26T02:44:09.382Z" }, + { url = "https://files.pythonhosted.org/packages/d7/11/afc7c677f68f75c84a69fe37184f0f82fce13ce4b92f49f3db280b7e92b3/multidict-6.7.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:3d51ff4785d58d3f6c91bdbffcb5e1f7ddfda557727043aa20d20ec4f65e324a", size = 259642, upload-time = "2026-01-26T02:44:10.73Z" }, + { url = "https://files.pythonhosted.org/packages/2b/17/ebb9644da78c4ab36403739e0e6e0e30ebb135b9caf3440825001a0bddcb/multidict-6.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fc5907494fccf3e7d3f94f95c91d6336b092b5fc83811720fae5e2765890dfba", size = 251377, upload-time = "2026-01-26T02:44:12.042Z" }, + { url = "https://files.pythonhosted.org/packages/ca/a4/840f5b97339e27846c46307f2530a2805d9d537d8b8bd416af031cad7fa0/multidict-6.7.1-cp312-cp312-win32.whl", hash = "sha256:28ca5ce2fd9716631133d0e9a9b9a745ad7f60bac2bccafb56aa380fc0b6c511", size = 41887, upload-time = "2026-01-26T02:44:14.245Z" }, + { url = "https://files.pythonhosted.org/packages/80/31/0b2517913687895f5904325c2069d6a3b78f66cc641a86a2baf75a05dcbb/multidict-6.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcee94dfbd638784645b066074b338bc9cc155d4b4bffa4adce1615c5a426c19", size = 46053, upload-time = "2026-01-26T02:44:15.371Z" }, + { url = "https://files.pythonhosted.org/packages/0c/5b/aba28e4ee4006ae4c7df8d327d31025d760ffa992ea23812a601d226e682/multidict-6.7.1-cp312-cp312-win_arm64.whl", hash = "sha256:ba0a9fb644d0c1a2194cf7ffb043bd852cea63a57f66fbd33959f7dae18517bf", size = 43307, upload-time = "2026-01-26T02:44:16.852Z" }, + { url = "https://files.pythonhosted.org/packages/81/08/7036c080d7117f28a4af526d794aab6a84463126db031b007717c1a6676e/multidict-6.7.1-py3-none-any.whl", hash = "sha256:55d97cc6dae627efa6a6e548885712d4864b81110ac76fa4e534c03819fa4a56", size = 12319, upload-time = "2026-01-26T02:46:44.004Z" }, +] + +[[package]] +name = "neonutilities" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-crc32c" }, + { name = "h5py" }, + { name = "importlib-resources" }, + { name = "pandas", version = "2.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "pandas", version = "3.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "parameterized" }, + { name = "pyarrow" }, + { name = "pyproj", version = "3.7.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "pyproj", version = "3.7.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "requests" }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c8/5e/1d11f0d233eafa69ffb075ed7bec795f4d2a76009f1aee84457b45a6491a/neonutilities-1.2.2.tar.gz", hash = "sha256:bb097d2657b6934b0abdbb70a3235efc1200e2c1b63ef7940b96d5f88b8ad94f", size = 122178, upload-time = "2026-03-24T14:50:01.452Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/45/59a79b29fb86968f331c24c529f8c45b0c56f635a397a3b1662e920d681d/neonutilities-1.2.2-py3-none-any.whl", hash = "sha256:2497a4ac14eb58e0db12641420fb3b1b52bc9a7d649d17c57ff06b5653ad2380", size = 109823, upload-time = "2026-03-24T14:50:00.199Z" }, +] + +[[package]] +name = "networkx" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform != 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368, upload-time = "2024-10-21T12:39:38.695Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263, upload-time = "2024-10-21T12:39:36.247Z" }, +] + +[[package]] +name = "networkx" +version = "3.6.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'win32'", + "python_full_version >= '3.12' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", +] +sdist = { url = "https://files.pythonhosted.org/packages/6a/51/63fe664f3908c97be9d2e4f1158eb633317598cfa6e1fc14af5383f17512/networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509", size = 2517025, upload-time = "2025-12-08T17:02:39.908Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762", size = 2068504, upload-time = "2025-12-08T17:02:38.159Z" }, +] + +[[package]] +name = "numpy" +version = "2.2.6" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform != 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/3e/ed6db5be21ce87955c0cbd3009f2803f59fa08df21b5df06862e2d8e2bdd/numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb", size = 21165245, upload-time = "2025-05-17T21:27:58.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/c2/4b9221495b2a132cc9d2eb862e21d42a009f5a60e45fc44b00118c174bff/numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90", size = 14360048, upload-time = "2025-05-17T21:28:21.406Z" }, + { url = "https://files.pythonhosted.org/packages/fd/77/dc2fcfc66943c6410e2bf598062f5959372735ffda175b39906d54f02349/numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163", size = 5340542, upload-time = "2025-05-17T21:28:30.931Z" }, + { url = "https://files.pythonhosted.org/packages/7a/4f/1cb5fdc353a5f5cc7feb692db9b8ec2c3d6405453f982435efc52561df58/numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf", size = 6878301, upload-time = "2025-05-17T21:28:41.613Z" }, + { url = "https://files.pythonhosted.org/packages/eb/17/96a3acd228cec142fcb8723bd3cc39c2a474f7dcf0a5d16731980bcafa95/numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83", size = 14297320, upload-time = "2025-05-17T21:29:02.78Z" }, + { url = "https://files.pythonhosted.org/packages/b4/63/3de6a34ad7ad6646ac7d2f55ebc6ad439dbbf9c4370017c50cf403fb19b5/numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915", size = 16801050, upload-time = "2025-05-17T21:29:27.675Z" }, + { url = "https://files.pythonhosted.org/packages/07/b6/89d837eddef52b3d0cec5c6ba0456c1bf1b9ef6a6672fc2b7873c3ec4e2e/numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680", size = 15807034, upload-time = "2025-05-17T21:29:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/dc6ae86e3c61cfec1f178e5c9f7858584049b6093f843bca541f94120920/numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289", size = 18614185, upload-time = "2025-05-17T21:30:18.703Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c5/0064b1b7e7c89137b471ccec1fd2282fceaae0ab3a9550f2568782d80357/numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d", size = 6527149, upload-time = "2025-05-17T21:30:29.788Z" }, + { url = "https://files.pythonhosted.org/packages/a3/dd/4b822569d6b96c39d1215dbae0582fd99954dcbcf0c1a13c61783feaca3f/numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3", size = 12904620, upload-time = "2025-05-17T21:30:48.994Z" }, + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, + { url = "https://files.pythonhosted.org/packages/9e/3b/d94a75f4dbf1ef5d321523ecac21ef23a3cd2ac8b78ae2aac40873590229/numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d", size = 21040391, upload-time = "2025-05-17T21:44:35.948Z" }, + { url = "https://files.pythonhosted.org/packages/17/f4/09b2fa1b58f0fb4f7c7963a1649c64c4d315752240377ed74d9cd878f7b5/numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db", size = 6786754, upload-time = "2025-05-17T21:44:47.446Z" }, + { url = "https://files.pythonhosted.org/packages/af/30/feba75f143bdc868a1cc3f44ccfa6c4b9ec522b36458e738cd00f67b573f/numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543", size = 16643476, upload-time = "2025-05-17T21:45:11.871Z" }, + { url = "https://files.pythonhosted.org/packages/37/48/ac2a9584402fb6c0cd5b5d1a91dcf176b15760130dd386bbafdbfe3640bf/numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00", size = 12812666, upload-time = "2025-05-17T21:45:31.426Z" }, +] + +[[package]] +name = "numpy" +version = "2.4.4" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'win32'", + "python_full_version >= '3.12' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", +] +sdist = { url = "https://files.pythonhosted.org/packages/d7/9f/b8cef5bffa569759033adda9481211426f12f53299629b410340795c2514/numpy-2.4.4.tar.gz", hash = "sha256:2d390634c5182175533585cc89f3608a4682ccb173cc9bb940b2881c8d6f8fa0", size = 20731587, upload-time = "2026-03-29T13:22:01.298Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/c6/4218570d8c8ecc9704b5157a3348e486e84ef4be0ed3e38218ab473c83d2/numpy-2.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f983334aea213c99992053ede6168500e5f086ce74fbc4acc3f2b00f5762e9db", size = 16976799, upload-time = "2026-03-29T13:18:15.438Z" }, + { url = "https://files.pythonhosted.org/packages/dd/92/b4d922c4a5f5dab9ed44e6153908a5c665b71acf183a83b93b690996e39b/numpy-2.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:72944b19f2324114e9dc86a159787333b77874143efcf89a5167ef83cfee8af0", size = 14971552, upload-time = "2026-03-29T13:18:18.606Z" }, + { url = "https://files.pythonhosted.org/packages/8a/dc/df98c095978fa6ee7b9a9387d1d58cbb3d232d0e69ad169a4ce784bde4fd/numpy-2.4.4-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:86b6f55f5a352b48d7fbfd2dbc3d5b780b2d79f4d3c121f33eb6efb22e9a2015", size = 5476566, upload-time = "2026-03-29T13:18:21.532Z" }, + { url = "https://files.pythonhosted.org/packages/28/34/b3fdcec6e725409223dd27356bdf5a3c2cc2282e428218ecc9cb7acc9763/numpy-2.4.4-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:ba1f4fc670ed79f876f70082eff4f9583c15fb9a4b89d6188412de4d18ae2f40", size = 6806482, upload-time = "2026-03-29T13:18:23.634Z" }, + { url = "https://files.pythonhosted.org/packages/68/62/63417c13aa35d57bee1337c67446761dc25ea6543130cf868eace6e8157b/numpy-2.4.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a87ec22c87be071b6bdbd27920b129b94f2fc964358ce38f3822635a3e2e03d", size = 15973376, upload-time = "2026-03-29T13:18:26.677Z" }, + { url = "https://files.pythonhosted.org/packages/cf/c5/9fcb7e0e69cef59cf10c746b84f7d58b08bc66a6b7d459783c5a4f6101a6/numpy-2.4.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:df3775294accfdd75f32c74ae39fcba920c9a378a2fc18a12b6820aa8c1fb502", size = 16925137, upload-time = "2026-03-29T13:18:30.14Z" }, + { url = "https://files.pythonhosted.org/packages/7e/43/80020edacb3f84b9efdd1591120a4296462c23fd8db0dde1666f6ef66f13/numpy-2.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0d4e437e295f18ec29bc79daf55e8a47a9113df44d66f702f02a293d93a2d6dd", size = 17329414, upload-time = "2026-03-29T13:18:33.733Z" }, + { url = "https://files.pythonhosted.org/packages/fd/06/af0658593b18a5f73532d377188b964f239eb0894e664a6c12f484472f97/numpy-2.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6aa3236c78803afbcb255045fbef97a9e25a1f6c9888357d205ddc42f4d6eba5", size = 18658397, upload-time = "2026-03-29T13:18:37.511Z" }, + { url = "https://files.pythonhosted.org/packages/e6/ce/13a09ed65f5d0ce5c7dd0669250374c6e379910f97af2c08c57b0608eee4/numpy-2.4.4-cp311-cp311-win32.whl", hash = "sha256:30caa73029a225b2d40d9fae193e008e24b2026b7ee1a867b7ee8d96ca1a448e", size = 6239499, upload-time = "2026-03-29T13:18:40.372Z" }, + { url = "https://files.pythonhosted.org/packages/bd/63/05d193dbb4b5eec1eca73822d80da98b511f8328ad4ae3ca4caf0f4db91d/numpy-2.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:6bbe4eb67390b0a0265a2c25458f6b90a409d5d069f1041e6aff1e27e3d9a79e", size = 12614257, upload-time = "2026-03-29T13:18:42.95Z" }, + { url = "https://files.pythonhosted.org/packages/87/c5/8168052f080c26fa984c413305012be54741c9d0d74abd7fbeeccae3889f/numpy-2.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:fcfe2045fd2e8f3cb0ce9d4ba6dba6333b8fa05bb8a4939c908cd43322d14c7e", size = 10486775, upload-time = "2026-03-29T13:18:45.835Z" }, + { url = "https://files.pythonhosted.org/packages/28/05/32396bec30fb2263770ee910142f49c1476d08e8ad41abf8403806b520ce/numpy-2.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:15716cfef24d3a9762e3acdf87e27f58dc823d1348f765bbea6bef8c639bfa1b", size = 16689272, upload-time = "2026-03-29T13:18:49.223Z" }, + { url = "https://files.pythonhosted.org/packages/c5/f3/a983d28637bfcd763a9c7aafdb6d5c0ebf3d487d1e1459ffdb57e2f01117/numpy-2.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23cbfd4c17357c81021f21540da84ee282b9c8fba38a03b7b9d09ba6b951421e", size = 14699573, upload-time = "2026-03-29T13:18:52.629Z" }, + { url = "https://files.pythonhosted.org/packages/9b/fd/e5ecca1e78c05106d98028114f5c00d3eddb41207686b2b7de3e477b0e22/numpy-2.4.4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:8b3b60bb7cba2c8c81837661c488637eee696f59a877788a396d33150c35d842", size = 5204782, upload-time = "2026-03-29T13:18:55.579Z" }, + { url = "https://files.pythonhosted.org/packages/de/2f/702a4594413c1a8632092beae8aba00f1d67947389369b3777aed783fdca/numpy-2.4.4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:e4a010c27ff6f210ff4c6ef34394cd61470d01014439b192ec22552ee867f2a8", size = 6552038, upload-time = "2026-03-29T13:18:57.769Z" }, + { url = "https://files.pythonhosted.org/packages/7f/37/eed308a8f56cba4d1fdf467a4fc67ef4ff4bf1c888f5fc980481890104b1/numpy-2.4.4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f9e75681b59ddaa5e659898085ae0eaea229d054f2ac0c7e563a62205a700121", size = 15670666, upload-time = "2026-03-29T13:19:00.341Z" }, + { url = "https://files.pythonhosted.org/packages/0a/0d/0e3ecece05b7a7e87ab9fb587855548da437a061326fff64a223b6dcb78a/numpy-2.4.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:81f4a14bee47aec54f883e0cad2d73986640c1590eb9bfaaba7ad17394481e6e", size = 16645480, upload-time = "2026-03-29T13:19:03.63Z" }, + { url = "https://files.pythonhosted.org/packages/34/49/f2312c154b82a286758ee2f1743336d50651f8b5195db18cdb63675ff649/numpy-2.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:62d6b0f03b694173f9fcb1fb317f7222fd0b0b103e784c6549f5e53a27718c44", size = 17020036, upload-time = "2026-03-29T13:19:07.428Z" }, + { url = "https://files.pythonhosted.org/packages/7b/e9/736d17bd77f1b0ec4f9901aaec129c00d59f5d84d5e79bba540ef12c2330/numpy-2.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fbc356aae7adf9e6336d336b9c8111d390a05df88f1805573ebb0807bd06fd1d", size = 18368643, upload-time = "2026-03-29T13:19:10.775Z" }, + { url = "https://files.pythonhosted.org/packages/63/f6/d417977c5f519b17c8a5c3bc9e8304b0908b0e21136fe43bf628a1343914/numpy-2.4.4-cp312-cp312-win32.whl", hash = "sha256:0d35aea54ad1d420c812bfa0385c71cd7cc5bcf7c65fed95fc2cd02fe8c79827", size = 5961117, upload-time = "2026-03-29T13:19:13.464Z" }, + { url = "https://files.pythonhosted.org/packages/2d/5b/e1deebf88ff431b01b7406ca3583ab2bbb90972bbe1c568732e49c844f7e/numpy-2.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:b5f0362dc928a6ecd9db58868fca5e48485205e3855957bdedea308f8672ea4a", size = 12320584, upload-time = "2026-03-29T13:19:16.155Z" }, + { url = "https://files.pythonhosted.org/packages/58/89/e4e856ac82a68c3ed64486a544977d0e7bdd18b8da75b78a577ca31c4395/numpy-2.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:846300f379b5b12cc769334464656bc882e0735d27d9726568bc932fdc49d5ec", size = 10221450, upload-time = "2026-03-29T13:19:18.994Z" }, + { url = "https://files.pythonhosted.org/packages/6b/33/8fae8f964a4f63ed528264ddf25d2b683d0b663e3cba26961eb838a7c1bd/numpy-2.4.4-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:58c8b5929fcb8287cbd6f0a3fae19c6e03a5c48402ae792962ac465224a629a4", size = 16854491, upload-time = "2026-03-29T13:21:38.03Z" }, + { url = "https://files.pythonhosted.org/packages/bc/d0/1aabee441380b981cf8cdda3ae7a46aa827d1b5a8cce84d14598bc94d6d9/numpy-2.4.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:eea7ac5d2dce4189771cedb559c738a71512768210dc4e4753b107a2048b3d0e", size = 14895830, upload-time = "2026-03-29T13:21:41.509Z" }, + { url = "https://files.pythonhosted.org/packages/a5/b8/aafb0d1065416894fccf4df6b49ef22b8db045187949545bced89c034b8e/numpy-2.4.4-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:51fc224f7ca4d92656d5a5eb315f12eb5fe2c97a66249aa7b5f562528a3be38c", size = 5400927, upload-time = "2026-03-29T13:21:44.747Z" }, + { url = "https://files.pythonhosted.org/packages/d6/77/063baa20b08b431038c7f9ff5435540c7b7265c78cf56012a483019ca72d/numpy-2.4.4-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:28a650663f7314afc3e6ec620f44f333c386aad9f6fc472030865dc0ebb26ee3", size = 6715557, upload-time = "2026-03-29T13:21:47.406Z" }, + { url = "https://files.pythonhosted.org/packages/c7/a8/379542d45a14f149444c5c4c4e7714707239ce9cc1de8c2803958889da14/numpy-2.4.4-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:19710a9ca9992d7174e9c52f643d4272dcd1558c5f7af7f6f8190f633bd651a7", size = 15804253, upload-time = "2026-03-29T13:21:50.753Z" }, + { url = "https://files.pythonhosted.org/packages/a2/c8/f0a45426d6d21e7ea3310a15cf90c43a14d9232c31a837702dba437f3373/numpy-2.4.4-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9b2aec6af35c113b05695ebb5749a787acd63cafc83086a05771d1e1cd1e555f", size = 16753552, upload-time = "2026-03-29T13:21:54.344Z" }, + { url = "https://files.pythonhosted.org/packages/04/74/f4c001f4714c3ad9ce037e18cf2b9c64871a84951eaa0baf683a9ca9301c/numpy-2.4.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f2cf083b324a467e1ab358c105f6cad5ea950f50524668a80c486ff1db24e119", size = 12509075, upload-time = "2026-03-29T13:21:57.644Z" }, +] + +[[package]] +name = "nvidia-cublas-cu12" +version = "12.8.4.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/29/99/db44d685f0e257ff0e213ade1964fc459b4a690a73293220e98feb3307cf/nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:b86f6dd8935884615a0683b663891d43781b819ac4f2ba2b0c9604676af346d0", size = 590537124, upload-time = "2025-03-07T01:43:53.556Z" }, + { url = "https://files.pythonhosted.org/packages/dc/61/e24b560ab2e2eaeb3c839129175fb330dfcfc29e5203196e5541a4c44682/nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:8ac4e771d5a348c551b2a426eda6193c19aa630236b418086020df5ba9667142", size = 594346921, upload-time = "2025-03-07T01:44:31.254Z" }, +] + +[[package]] +name = "nvidia-cuda-cupti-cu12" +version = "12.8.90" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/1f/b3bd73445e5cb342727fd24fe1f7b748f690b460acadc27ea22f904502c8/nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4412396548808ddfed3f17a467b104ba7751e6b58678a4b840675c56d21cf7ed", size = 9533318, upload-time = "2025-03-07T01:40:10.421Z" }, + { url = "https://files.pythonhosted.org/packages/f8/02/2adcaa145158bf1a8295d83591d22e4103dbfd821bcaf6f3f53151ca4ffa/nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ea0cb07ebda26bb9b29ba82cda34849e73c166c18162d3913575b0c9db9a6182", size = 10248621, upload-time = "2025-03-07T01:40:21.213Z" }, +] + +[[package]] +name = "nvidia-cuda-nvrtc-cu12" +version = "12.8.93" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/6b/32f747947df2da6994e999492ab306a903659555dddc0fbdeb9d71f75e52/nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:a7756528852ef889772a84c6cd89d41dfa74667e24cca16bb31f8f061e3e9994", size = 88040029, upload-time = "2025-03-07T01:42:13.562Z" }, + { url = "https://files.pythonhosted.org/packages/eb/d1/e50d0acaab360482034b84b6e27ee83c6738f7d32182b987f9c7a4e32962/nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fc1fec1e1637854b4c0a65fb9a8346b51dd9ee69e61ebaccc82058441f15bce8", size = 43106076, upload-time = "2025-03-07T01:41:59.817Z" }, +] + +[[package]] +name = "nvidia-cuda-runtime-cu12" +version = "12.8.90" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/75/f865a3b236e4647605ea34cc450900854ba123834a5f1598e160b9530c3a/nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:52bf7bbee900262ffefe5e9d5a2a69a30d97e2bc5bb6cc866688caa976966e3d", size = 965265, upload-time = "2025-03-07T01:39:43.533Z" }, + { url = "https://files.pythonhosted.org/packages/0d/9b/a997b638fcd068ad6e4d53b8551a7d30fe8b404d6f1804abf1df69838932/nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:adade8dcbd0edf427b7204d480d6066d33902cab2a4707dcfc48a2d0fd44ab90", size = 954765, upload-time = "2025-03-07T01:40:01.615Z" }, +] + +[[package]] +name = "nvidia-cudnn-cu12" +version = "9.19.0.56" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas-cu12", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/09/b8/277c51962ee46fa3e5b203ac5f76107c650f781d6891e681e28e6f3e9fe6/nvidia_cudnn_cu12-9.19.0.56-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:08caaf27fe556aca82a3ee3b5aa49a77e7de0cfcb7ff4e5c29da426387a8267e", size = 656910700, upload-time = "2026-02-03T20:40:25.508Z" }, + { url = "https://files.pythonhosted.org/packages/c5/41/65225d42fba06fb3dd3972485ea258e7dd07a40d6e01c95da6766ad87354/nvidia_cudnn_cu12-9.19.0.56-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:ac6ad90a075bb33a94f2b4cf4622eac13dd4dc65cf6dd9c7572a318516a36625", size = 657906812, upload-time = "2026-02-03T20:44:12.638Z" }, +] + +[[package]] +name = "nvidia-cufft-cu12" +version = "11.3.3.83" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink-cu12", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/bc/7771846d3a0272026c416fbb7e5f4c1f146d6d80704534d0b187dd6f4800/nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:848ef7224d6305cdb2a4df928759dca7b1201874787083b6e7550dd6765ce69a", size = 193109211, upload-time = "2025-03-07T01:44:56.873Z" }, + { url = "https://files.pythonhosted.org/packages/1f/13/ee4e00f30e676b66ae65b4f08cb5bcbb8392c03f54f2d5413ea99a5d1c80/nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d2dd21ec0b88cf61b62e6b43564355e5222e4a3fb394cac0db101f2dd0d4f74", size = 193118695, upload-time = "2025-03-07T01:45:27.821Z" }, +] + +[[package]] +name = "nvidia-cufile-cu12" +version = "1.13.1.3" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/fe/1bcba1dfbfb8d01be8d93f07bfc502c93fa23afa6fd5ab3fc7c1df71038a/nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1d069003be650e131b21c932ec3d8969c1715379251f8d23a1860554b1cb24fc", size = 1197834, upload-time = "2025-03-07T01:45:50.723Z" }, + { url = "https://files.pythonhosted.org/packages/1e/f5/5607710447a6fe9fd9b3283956fceeee8a06cda1d2f56ce31371f595db2a/nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:4beb6d4cce47c1a0f1013d72e02b0994730359e17801d395bdcbf20cfb3bb00a", size = 1120705, upload-time = "2025-03-07T01:45:41.434Z" }, +] + +[[package]] +name = "nvidia-curand-cu12" +version = "10.3.9.90" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/5e/92aa15eca622a388b80fbf8375d4760738df6285b1e92c43d37390a33a9a/nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:dfab99248034673b779bc6decafdc3404a8a6f502462201f2f31f11354204acd", size = 63625754, upload-time = "2025-03-07T01:46:10.735Z" }, + { url = "https://files.pythonhosted.org/packages/fb/aa/6584b56dc84ebe9cf93226a5cde4d99080c8e90ab40f0c27bda7a0f29aa1/nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:b32331d4f4df5d6eefa0554c565b626c7216f87a06a4f56fab27c3b68a830ec9", size = 63619976, upload-time = "2025-03-07T01:46:23.323Z" }, +] + +[[package]] +name = "nvidia-cusolver-cu12" +version = "11.7.3.90" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas-cu12", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" }, + { name = "nvidia-cusparse-cu12", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" }, + { name = "nvidia-nvjitlink-cu12", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/32/f7cd6ce8a7690544d084ea21c26e910a97e077c9b7f07bf5de623ee19981/nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:db9ed69dbef9715071232caa9b69c52ac7de3a95773c2db65bdba85916e4e5c0", size = 267229841, upload-time = "2025-03-07T01:46:54.356Z" }, + { url = "https://files.pythonhosted.org/packages/85/48/9a13d2975803e8cf2777d5ed57b87a0b6ca2cc795f9a4f59796a910bfb80/nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:4376c11ad263152bd50ea295c05370360776f8c3427b30991df774f9fb26c450", size = 267506905, upload-time = "2025-03-07T01:47:16.273Z" }, +] + +[[package]] +name = "nvidia-cusparse-cu12" +version = "12.5.8.93" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink-cu12", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/f7/cd777c4109681367721b00a106f491e0d0d15cfa1fd59672ce580ce42a97/nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9b6c161cb130be1a07a27ea6923df8141f3c295852f4b260c65f18f3e0a091dc", size = 288117129, upload-time = "2025-03-07T01:47:40.407Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f5/e1854cb2f2bcd4280c44736c93550cc300ff4b8c95ebe370d0aa7d2b473d/nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1ec05d76bbbd8b61b06a80e1eaf8cf4959c3d4ce8e711b65ebd0443bb0ebb13b", size = 288216466, upload-time = "2025-03-07T01:48:13.779Z" }, +] + +[[package]] +name = "nvidia-cusparselt-cu12" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/73/b9/598f6ff36faaece4b3c50d26f50e38661499ff34346f00e057760b35cc9d/nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8878dce784d0fac90131b6817b607e803c36e629ba34dc5b433471382196b6a5", size = 283835557, upload-time = "2025-02-26T00:16:54.265Z" }, + { url = "https://files.pythonhosted.org/packages/56/79/12978b96bd44274fe38b5dde5cfb660b1d114f70a65ef962bcbbed99b549/nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f1bb701d6b930d5a7cea44c19ceb973311500847f81b634d802b7b539dc55623", size = 287193691, upload-time = "2025-02-26T00:15:44.104Z" }, +] + +[[package]] +name = "nvidia-nccl-cu12" +version = "2.28.9" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/c4/120d2dfd92dff2c776d68f361ff8705fdea2ca64e20b612fab0fd3f581ac/nvidia_nccl_cu12-2.28.9-py3-none-manylinux_2_18_aarch64.whl", hash = "sha256:50a36e01c4a090b9f9c47d92cec54964de6b9fcb3362d0e19b8ffc6323c21b60", size = 296766525, upload-time = "2025-11-18T05:49:16.094Z" }, + { url = "https://files.pythonhosted.org/packages/4a/4e/44dbb46b3d1b0ec61afda8e84837870f2f9ace33c564317d59b70bc19d3e/nvidia_nccl_cu12-2.28.9-py3-none-manylinux_2_18_x86_64.whl", hash = "sha256:485776daa8447da5da39681af455aa3b2c2586ddcf4af8772495e7c532c7e5ab", size = 296782137, upload-time = "2025-11-18T05:49:34.248Z" }, +] + +[[package]] +name = "nvidia-nvjitlink-cu12" +version = "12.8.93" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/74/86a07f1d0f42998ca31312f998bd3b9a7eff7f52378f4f270c8679c77fb9/nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:81ff63371a7ebd6e6451970684f916be2eab07321b73c9d244dc2b4da7f73b88", size = 39254836, upload-time = "2025-03-07T01:49:55.661Z" }, + { url = "https://files.pythonhosted.org/packages/2a/a2/8cee5da30d13430e87bf99bb33455d2724d0a4a9cb5d7926d80ccb96d008/nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:adccd7161ace7261e01bb91e44e88da350895c270d23f744f0820c818b7229e7", size = 38386204, upload-time = "2025-03-07T01:49:43.612Z" }, +] + +[[package]] +name = "nvidia-nvshmem-cu12" +version = "3.4.5" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/6a/03aa43cc9bd3ad91553a88b5f6fb25ed6a3752ae86ce2180221962bc2aa5/nvidia_nvshmem_cu12-3.4.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0b48363fc6964dede448029434c6abed6c5e37f823cb43c3bcde7ecfc0457e15", size = 138936938, upload-time = "2025-09-06T00:32:05.589Z" }, + { url = "https://files.pythonhosted.org/packages/b5/09/6ea3ea725f82e1e76684f0708bbedd871fc96da89945adeba65c3835a64c/nvidia_nvshmem_cu12-3.4.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:042f2500f24c021db8a06c5eec2539027d57460e1c1a762055a6554f72c369bd", size = 139103095, upload-time = "2025-09-06T00:32:31.266Z" }, +] + +[[package]] +name = "nvidia-nvtx-cu12" +version = "12.8.90" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/c0/1b303feea90d296f6176f32a2a70b5ef230f9bdeb3a72bddb0dc922dc137/nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d7ad891da111ebafbf7e015d34879f7112832fc239ff0d7d776b6cb685274615", size = 91161, upload-time = "2025-03-07T01:42:23.922Z" }, + { url = "https://files.pythonhosted.org/packages/a2/eb/86626c1bbc2edb86323022371c39aa48df6fd8b0a1647bc274577f72e90b/nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5b17e2001cc0d751a5bc2c6ec6d26ad95913324a4adb86788c944f8ce9ba441f", size = 89954, upload-time = "2025-03-07T01:42:44.131Z" }, +] + +[[package]] +name = "omegaconf" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "antlr4-python3-runtime" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/48/6388f1bb9da707110532cb70ec4d2822858ddfb44f1cdf1233c20a80ea4b/omegaconf-2.3.0.tar.gz", hash = "sha256:d5d4b6d29955cc50ad50c46dc269bcd92c6e00f5f90d23ab5fee7bfca4ba4cc7", size = 3298120, upload-time = "2022-12-08T20:59:22.753Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/94/1843518e420fa3ed6919835845df698c7e27e183cb997394e4a670973a65/omegaconf-2.3.0-py3-none-any.whl", hash = "sha256:7b4df175cdb08ba400f45cae3bdcae7ba8365db4d165fc65fd04b050ab63b46b", size = 79500, upload-time = "2022-12-08T20:59:19.686Z" }, +] + +[[package]] +name = "opencv-python" +version = "4.13.0.92" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/6f/5a28fef4c4a382be06afe3938c64cc168223016fa520c5abaf37e8862aa5/opencv_python-4.13.0.92-cp37-abi3-macosx_13_0_arm64.whl", hash = "sha256:caf60c071ec391ba51ed00a4a920f996d0b64e3e46068aac1f646b5de0326a19", size = 46247052, upload-time = "2026-02-05T07:01:25.046Z" }, + { url = "https://files.pythonhosted.org/packages/08/ac/6c98c44c650b8114a0fb901691351cfb3956d502e8e9b5cd27f4ee7fbf2f/opencv_python-4.13.0.92-cp37-abi3-macosx_14_0_x86_64.whl", hash = "sha256:5868a8c028a0b37561579bfb8ac1875babdc69546d236249fff296a8c010ccf9", size = 32568781, upload-time = "2026-02-05T07:01:41.379Z" }, + { url = "https://files.pythonhosted.org/packages/3e/51/82fed528b45173bf629fa44effb76dff8bc9f4eeaee759038362dfa60237/opencv_python-4.13.0.92-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0bc2596e68f972ca452d80f444bc404e08807d021fbba40df26b61b18e01838a", size = 47685527, upload-time = "2026-02-05T06:59:11.24Z" }, + { url = "https://files.pythonhosted.org/packages/db/07/90b34a8e2cf9c50fe8ed25cac9011cde0676b4d9d9c973751ac7616223a2/opencv_python-4.13.0.92-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:402033cddf9d294693094de5ef532339f14ce821da3ad7df7c9f6e8316da32cf", size = 70460872, upload-time = "2026-02-05T06:59:19.162Z" }, + { url = "https://files.pythonhosted.org/packages/02/6d/7a9cc719b3eaf4377b9c2e3edeb7ed3a81de41f96421510c0a169ca3cfd4/opencv_python-4.13.0.92-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:bccaabf9eb7f897ca61880ce2869dcd9b25b72129c28478e7f2a5e8dee945616", size = 46708208, upload-time = "2026-02-05T06:59:15.419Z" }, + { url = "https://files.pythonhosted.org/packages/fd/55/b3b49a1b97aabcfbbd6c7326df9cb0b6fa0c0aefa8e89d500939e04aa229/opencv_python-4.13.0.92-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:620d602b8f7d8b8dab5f4b99c6eb353e78d3fb8b0f53db1bd258bb1aa001c1d5", size = 72927042, upload-time = "2026-02-05T06:59:23.389Z" }, + { url = "https://files.pythonhosted.org/packages/fb/17/de5458312bcb07ddf434d7bfcb24bb52c59635ad58c6e7c751b48949b009/opencv_python-4.13.0.92-cp37-abi3-win32.whl", hash = "sha256:372fe164a3148ac1ca51e5f3ad0541a4a276452273f503441d718fab9c5e5f59", size = 30932638, upload-time = "2026-02-05T07:02:14.98Z" }, + { url = "https://files.pythonhosted.org/packages/e9/a5/1be1516390333ff9be3a9cb648c9f33df79d5096e5884b5df71a588af463/opencv_python-4.13.0.92-cp37-abi3-win_amd64.whl", hash = "sha256:423d934c9fafb91aad38edf26efb46da91ffbc05f3f59c4b0c72e699720706f5", size = 40212062, upload-time = "2026-02-05T07:02:12.724Z" }, +] + +[[package]] +name = "opencv-python-headless" +version = "4.13.0.92" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/42/2310883be3b8826ac58c3f2787b9358a2d46923d61f88fedf930bc59c60c/opencv_python_headless-4.13.0.92-cp37-abi3-macosx_13_0_arm64.whl", hash = "sha256:1a7d040ac656c11b8c38677cc8cccdc149f98535089dbe5b081e80a4e5903209", size = 46247192, upload-time = "2026-02-05T07:01:35.187Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1e/6f9e38005a6f7f22af785df42a43139d0e20f169eb5787ce8be37ee7fcc9/opencv_python_headless-4.13.0.92-cp37-abi3-macosx_14_0_x86_64.whl", hash = "sha256:3e0a6f0a37994ec6ce5f59e936be21d5d6384a4556f2d2da9c2f9c5dc948394c", size = 32568914, upload-time = "2026-02-05T07:01:51.989Z" }, + { url = "https://files.pythonhosted.org/packages/21/76/9417a6aef9def70e467a5bf560579f816148a4c658b7d525581b356eda9e/opencv_python_headless-4.13.0.92-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5c8cfc8e87ed452b5cecb9419473ee5560a989859fe1d10d1ce11ae87b09a2cb", size = 33703709, upload-time = "2026-02-05T10:24:46.469Z" }, + { url = "https://files.pythonhosted.org/packages/92/ce/bd17ff5772938267fd49716e94ca24f616ff4cb1ff4c6be13085108037be/opencv_python_headless-4.13.0.92-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0525a3d2c0b46c611e2130b5fdebc94cf404845d8fa64d2f3a3b679572a5bd22", size = 56016764, upload-time = "2026-02-05T10:26:48.904Z" }, + { url = "https://files.pythonhosted.org/packages/8f/b4/b7bcbf7c874665825a8c8e1097e93ea25d1f1d210a3e20d4451d01da30aa/opencv_python_headless-4.13.0.92-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:eb60e36b237b1ebd40a912da5384b348df8ed534f6f644d8e0b4f103e272ba7d", size = 35010236, upload-time = "2026-02-05T10:28:11.031Z" }, + { url = "https://files.pythonhosted.org/packages/4b/33/b5db29a6c00eb8f50708110d8d453747ca125c8b805bc437b289dbdcc057/opencv_python_headless-4.13.0.92-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:0bd48544f77c68b2941392fcdf9bcd2b9cdf00e98cb8c29b2455d194763cf99e", size = 60391106, upload-time = "2026-02-05T10:30:14.236Z" }, + { url = "https://files.pythonhosted.org/packages/fb/c3/52cfea47cd33e53e8c0fbd6e7c800b457245c1fda7d61660b4ffe9596a7f/opencv_python_headless-4.13.0.92-cp37-abi3-win32.whl", hash = "sha256:a7cf08e5b191f4ebb530791acc0825a7986e0d0dee2a3c491184bd8599848a4b", size = 30812232, upload-time = "2026-02-05T07:02:29.594Z" }, + { url = "https://files.pythonhosted.org/packages/4a/90/b338326131ccb2aaa3c2c85d00f41822c0050139a4bfe723cfd95455bd2d/opencv_python_headless-4.13.0.92-cp37-abi3-win_amd64.whl", hash = "sha256:77a82fe35ddcec0f62c15f2ba8a12ecc2ed4207c17b0902c7a3151ae29f37fb6", size = 40070414, upload-time = "2026-02-05T07:02:26.448Z" }, +] + +[[package]] +name = "packaging" +version = "26.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/df/de/0d2b39fb4af88a0258f3bac87dfcbb48e73fbdea4a2ed0e2213f9a4c2f9a/packaging-26.1.tar.gz", hash = "sha256:f042152b681c4bfac5cae2742a55e103d27ab2ec0f3d88037136b6bfe7c9c5de", size = 215519, upload-time = "2026-04-14T21:12:49.362Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/c2/920ef838e2f0028c8262f16101ec09ebd5969864e5a64c4c05fad0617c56/packaging-26.1-py3-none-any.whl", hash = "sha256:5d9c0669c6285e491e0ced2eee587eaf67b670d94a19e94e3984a481aba6802f", size = 95831, upload-time = "2026-04-14T21:12:47.56Z" }, +] + +[[package]] +name = "pandas" +version = "2.3.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform != 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "python-dateutil", marker = "python_full_version < '3.11'" }, + { name = "pytz", marker = "python_full_version < '3.11'" }, + { name = "tzdata", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", hash = "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b", size = 4495223, upload-time = "2025-09-29T23:34:51.853Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/f7/f425a00df4fcc22b292c6895c6831c0c8ae1d9fac1e024d16f98a9ce8749/pandas-2.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:376c6446ae31770764215a6c937f72d917f214b43560603cd60da6408f183b6c", size = 11555763, upload-time = "2025-09-29T23:16:53.287Z" }, + { url = "https://files.pythonhosted.org/packages/13/4f/66d99628ff8ce7857aca52fed8f0066ce209f96be2fede6cef9f84e8d04f/pandas-2.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e19d192383eab2f4ceb30b412b22ea30690c9e618f78870357ae1d682912015a", size = 10801217, upload-time = "2025-09-29T23:17:04.522Z" }, + { url = "https://files.pythonhosted.org/packages/1d/03/3fc4a529a7710f890a239cc496fc6d50ad4a0995657dccc1d64695adb9f4/pandas-2.3.3-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5caf26f64126b6c7aec964f74266f435afef1c1b13da3b0636c7518a1fa3e2b1", size = 12148791, upload-time = "2025-09-29T23:17:18.444Z" }, + { url = "https://files.pythonhosted.org/packages/40/a8/4dac1f8f8235e5d25b9955d02ff6f29396191d4e665d71122c3722ca83c5/pandas-2.3.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd7478f1463441ae4ca7308a70e90b33470fa593429f9d4c578dd00d1fa78838", size = 12769373, upload-time = "2025-09-29T23:17:35.846Z" }, + { url = "https://files.pythonhosted.org/packages/df/91/82cc5169b6b25440a7fc0ef3a694582418d875c8e3ebf796a6d6470aa578/pandas-2.3.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4793891684806ae50d1288c9bae9330293ab4e083ccd1c5e383c34549c6e4250", size = 13200444, upload-time = "2025-09-29T23:17:49.341Z" }, + { url = "https://files.pythonhosted.org/packages/10/ae/89b3283800ab58f7af2952704078555fa60c807fff764395bb57ea0b0dbd/pandas-2.3.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:28083c648d9a99a5dd035ec125d42439c6c1c525098c58af0fc38dd1a7a1b3d4", size = 13858459, upload-time = "2025-09-29T23:18:03.722Z" }, + { url = "https://files.pythonhosted.org/packages/85/72/530900610650f54a35a19476eca5104f38555afccda1aa11a92ee14cb21d/pandas-2.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:503cf027cf9940d2ceaa1a93cfb5f8c8c7e6e90720a2850378f0b3f3b1e06826", size = 11346086, upload-time = "2025-09-29T23:18:18.505Z" }, + { url = "https://files.pythonhosted.org/packages/c1/fa/7ac648108144a095b4fb6aa3de1954689f7af60a14cf25583f4960ecb878/pandas-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:602b8615ebcc4a0c1751e71840428ddebeb142ec02c786e8ad6b1ce3c8dec523", size = 11578790, upload-time = "2025-09-29T23:18:30.065Z" }, + { url = "https://files.pythonhosted.org/packages/9b/35/74442388c6cf008882d4d4bdfc4109be87e9b8b7ccd097ad1e7f006e2e95/pandas-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8fe25fc7b623b0ef6b5009149627e34d2a4657e880948ec3c840e9402e5c1b45", size = 10833831, upload-time = "2025-09-29T23:38:56.071Z" }, + { url = "https://files.pythonhosted.org/packages/fe/e4/de154cbfeee13383ad58d23017da99390b91d73f8c11856f2095e813201b/pandas-2.3.3-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b468d3dad6ff947df92dcb32ede5b7bd41a9b3cceef0a30ed925f6d01fb8fa66", size = 12199267, upload-time = "2025-09-29T23:18:41.627Z" }, + { url = "https://files.pythonhosted.org/packages/bf/c9/63f8d545568d9ab91476b1818b4741f521646cbdd151c6efebf40d6de6f7/pandas-2.3.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b98560e98cb334799c0b07ca7967ac361a47326e9b4e5a7dfb5ab2b1c9d35a1b", size = 12789281, upload-time = "2025-09-29T23:18:56.834Z" }, + { url = "https://files.pythonhosted.org/packages/f2/00/a5ac8c7a0e67fd1a6059e40aa08fa1c52cc00709077d2300e210c3ce0322/pandas-2.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37b5848ba49824e5c30bedb9c830ab9b7751fd049bc7914533e01c65f79791", size = 13240453, upload-time = "2025-09-29T23:19:09.247Z" }, + { url = "https://files.pythonhosted.org/packages/27/4d/5c23a5bc7bd209231618dd9e606ce076272c9bc4f12023a70e03a86b4067/pandas-2.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:db4301b2d1f926ae677a751eb2bd0e8c5f5319c9cb3f88b0becbbb0b07b34151", size = 13890361, upload-time = "2025-09-29T23:19:25.342Z" }, + { url = "https://files.pythonhosted.org/packages/8e/59/712db1d7040520de7a4965df15b774348980e6df45c129b8c64d0dbe74ef/pandas-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:f086f6fe114e19d92014a1966f43a3e62285109afe874f067f5abbdcbb10e59c", size = 11348702, upload-time = "2025-09-29T23:19:38.296Z" }, + { url = "https://files.pythonhosted.org/packages/9c/fb/231d89e8637c808b997d172b18e9d4a4bc7bf31296196c260526055d1ea0/pandas-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53", size = 11597846, upload-time = "2025-09-29T23:19:48.856Z" }, + { url = "https://files.pythonhosted.org/packages/5c/bd/bf8064d9cfa214294356c2d6702b716d3cf3bb24be59287a6a21e24cae6b/pandas-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35", size = 10729618, upload-time = "2025-09-29T23:39:08.659Z" }, + { url = "https://files.pythonhosted.org/packages/57/56/cf2dbe1a3f5271370669475ead12ce77c61726ffd19a35546e31aa8edf4e/pandas-2.3.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908", size = 11737212, upload-time = "2025-09-29T23:19:59.765Z" }, + { url = "https://files.pythonhosted.org/packages/e5/63/cd7d615331b328e287d8233ba9fdf191a9c2d11b6af0c7a59cfcec23de68/pandas-2.3.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89", size = 12362693, upload-time = "2025-09-29T23:20:14.098Z" }, + { url = "https://files.pythonhosted.org/packages/a6/de/8b1895b107277d52f2b42d3a6806e69cfef0d5cf1d0ba343470b9d8e0a04/pandas-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98", size = 12771002, upload-time = "2025-09-29T23:20:26.76Z" }, + { url = "https://files.pythonhosted.org/packages/87/21/84072af3187a677c5893b170ba2c8fbe450a6ff911234916da889b698220/pandas-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084", size = 13450971, upload-time = "2025-09-29T23:20:41.344Z" }, + { url = "https://files.pythonhosted.org/packages/86/41/585a168330ff063014880a80d744219dbf1dd7a1c706e75ab3425a987384/pandas-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b", size = 10992722, upload-time = "2025-09-29T23:20:54.139Z" }, +] + +[[package]] +name = "pandas" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'win32'", + "python_full_version >= '3.12' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "python-dateutil", marker = "python_full_version >= '3.11'" }, + { name = "tzdata", marker = "(python_full_version >= '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.11' and sys_platform == 'win32')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/da/99/b342345300f13440fe9fe385c3c481e2d9a595ee3bab4d3219247ac94e9a/pandas-3.0.2.tar.gz", hash = "sha256:f4753e73e34c8d83221ba58f232433fca2748be8b18dbca02d242ed153945043", size = 4645855, upload-time = "2026-03-31T06:48:30.816Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/35/6411db530c618e0e0005187e35aa02ce60ae4c4c4d206964a2f978217c27/pandas-3.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a727a73cbdba2f7458dc82449e2315899d5140b449015d822f515749a46cbbe0", size = 10326926, upload-time = "2026-03-31T06:46:08.29Z" }, + { url = "https://files.pythonhosted.org/packages/c4/d3/b7da1d5d7dbdc5ef52ed7debd2b484313b832982266905315dad5a0bf0b1/pandas-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dbbd4aa20ca51e63b53bbde6a0fa4254b1aaabb74d2f542df7a7959feb1d760c", size = 9926987, upload-time = "2026-03-31T06:46:11.724Z" }, + { url = "https://files.pythonhosted.org/packages/52/77/9b1c2d6070b5dbe239a7bc889e21bfa58720793fb902d1e070695d87c6d0/pandas-3.0.2-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:339dda302bd8369dedeae979cb750e484d549b563c3f54f3922cb8ff4978c5eb", size = 10757067, upload-time = "2026-03-31T06:46:14.903Z" }, + { url = "https://files.pythonhosted.org/packages/20/17/ec40d981705654853726e7ac9aea9ddbb4a5d9cf54d8472222f4f3de06c2/pandas-3.0.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:61c2fd96d72b983a9891b2598f286befd4ad262161a609c92dc1652544b46b76", size = 11258787, upload-time = "2026-03-31T06:46:17.683Z" }, + { url = "https://files.pythonhosted.org/packages/90/e3/3f1126d43d3702ca8773871a81c9f15122a1f412342cc56284ffda5b1f70/pandas-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c934008c733b8bbea273ea308b73b3156f0181e5b72960790b09c18a2794fe1e", size = 11771616, upload-time = "2026-03-31T06:46:20.532Z" }, + { url = "https://files.pythonhosted.org/packages/2e/cf/0f4e268e1f5062e44a6bda9f925806721cd4c95c2b808a4c82ebe914f96b/pandas-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:60a80bb4feacbef5e1447a3f82c33209c8b7e07f28d805cfd1fb951e5cb443aa", size = 12337623, upload-time = "2026-03-31T06:46:23.754Z" }, + { url = "https://files.pythonhosted.org/packages/44/a0/97a6339859d4acb2536efb24feb6708e82f7d33b2ed7e036f2983fcced82/pandas-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:ed72cb3f45190874eb579c64fa92d9df74e98fd63e2be7f62bce5ace0ade61df", size = 9897372, upload-time = "2026-03-31T06:46:26.703Z" }, + { url = "https://files.pythonhosted.org/packages/8f/eb/781516b808a99ddf288143cec46b342b3016c3414d137da1fdc3290d8860/pandas-3.0.2-cp311-cp311-win_arm64.whl", hash = "sha256:f12b1a9e332c01e09510586f8ca9b108fd631fd656af82e452d7315ef6df5f9f", size = 9154922, upload-time = "2026-03-31T06:46:30.284Z" }, + { url = "https://files.pythonhosted.org/packages/f3/b0/c20bd4d6d3f736e6bd6b55794e9cd0a617b858eaad27c8f410ea05d953b7/pandas-3.0.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:232a70ebb568c0c4d2db4584f338c1577d81e3af63292208d615907b698a0f18", size = 10347921, upload-time = "2026-03-31T06:46:33.36Z" }, + { url = "https://files.pythonhosted.org/packages/35/d0/4831af68ce30cc2d03c697bea8450e3225a835ef497d0d70f31b8cdde965/pandas-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:970762605cff1ca0d3f71ed4f3a769ea8f85fc8e6348f6e110b8fea7e6eb5a14", size = 9888127, upload-time = "2026-03-31T06:46:36.253Z" }, + { url = "https://files.pythonhosted.org/packages/61/a9/16ea9346e1fc4a96e2896242d9bc674764fb9049b0044c0132502f7a771e/pandas-3.0.2-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aff4e6f4d722e0652707d7bcb190c445fe58428500c6d16005b02401764b1b3d", size = 10399577, upload-time = "2026-03-31T06:46:39.224Z" }, + { url = "https://files.pythonhosted.org/packages/c4/a8/3a61a721472959ab0ce865ef05d10b0d6bfe27ce8801c99f33d4fa996e65/pandas-3.0.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ef8b27695c3d3dc78403c9a7d5e59a62d5464a7e1123b4e0042763f7104dc74f", size = 10880030, upload-time = "2026-03-31T06:46:42.412Z" }, + { url = "https://files.pythonhosted.org/packages/da/65/7225c0ea4d6ce9cb2160a7fb7f39804871049f016e74782e5dade4d14109/pandas-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f8d68083e49e16b84734eb1a4dcae4259a75c90fb6e2251ab9a00b61120c06ab", size = 11409468, upload-time = "2026-03-31T06:46:45.2Z" }, + { url = "https://files.pythonhosted.org/packages/fa/5b/46e7c76032639f2132359b5cf4c785dd8cf9aea5ea64699eac752f02b9db/pandas-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:32cc41f310ebd4a296d93515fcac312216adfedb1894e879303987b8f1e2b97d", size = 11936381, upload-time = "2026-03-31T06:46:48.293Z" }, + { url = "https://files.pythonhosted.org/packages/7b/8b/721a9cff6fa6a91b162eb51019c6243b82b3226c71bb6c8ef4a9bd65cbc6/pandas-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:a4785e1d6547d8427c5208b748ae2efb64659a21bd82bf440d4262d02bfa02a4", size = 9744993, upload-time = "2026-03-31T06:46:51.488Z" }, + { url = "https://files.pythonhosted.org/packages/d5/18/7f0bd34ae27b28159aa80f2a6799f47fda34f7fb938a76e20c7b7fe3b200/pandas-3.0.2-cp312-cp312-win_arm64.whl", hash = "sha256:08504503f7101300107ecdc8df73658e4347586db5cfdadabc1592e9d7e7a0fd", size = 9056118, upload-time = "2026-03-31T06:46:54.548Z" }, +] + +[[package]] +name = "parameterized" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ea/49/00c0c0cc24ff4266025a53e41336b79adaa5a4ebfad214f433d623f9865e/parameterized-0.9.0.tar.gz", hash = "sha256:7fc905272cefa4f364c1a3429cbbe9c0f98b793988efb5bf90aac80f08db09b1", size = 24351, upload-time = "2023-03-27T02:01:11.592Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/2f/804f58f0b856ab3bf21617cccf5b39206e6c4c94c2cd227bde125ea6105f/parameterized-0.9.0-py2.py3-none-any.whl", hash = "sha256:4e0758e3d41bea3bbd05ec14fc2c24736723f243b28d702081aef438c9372b1b", size = 20475, upload-time = "2023-03-27T02:01:09.31Z" }, +] + +[[package]] +name = "pillow" +version = "12.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/21/c2bcdd5906101a30244eaffc1b6e6ce71a31bd0742a01eb89e660ebfac2d/pillow-12.2.0.tar.gz", hash = "sha256:a830b1a40919539d07806aa58e1b114df53ddd43213d9c8b75847eee6c0182b5", size = 46987819, upload-time = "2026-04-01T14:46:17.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/aa/d0b28e1c811cd4d5f5c2bfe2e022292bd255ae5744a3b9ac7d6c8f72dd75/pillow-12.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:a4e8f36e677d3336f35089648c8955c51c6d386a13cf6ee9c189c5f5bd713a9f", size = 5354355, upload-time = "2026-04-01T14:42:15.402Z" }, + { url = "https://files.pythonhosted.org/packages/27/8e/1d5b39b8ae2bd7650d0c7b6abb9602d16043ead9ebbfef4bc4047454da2a/pillow-12.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e589959f10d9824d39b350472b92f0ce3b443c0a3442ebf41c40cb8361c5b97", size = 4695871, upload-time = "2026-04-01T14:42:18.234Z" }, + { url = "https://files.pythonhosted.org/packages/f0/c5/dcb7a6ca6b7d3be41a76958e90018d56c8462166b3ef223150360850c8da/pillow-12.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a52edc8bfff4429aaabdf4d9ee0daadbbf8562364f940937b941f87a4290f5ff", size = 6269734, upload-time = "2026-04-01T14:42:20.608Z" }, + { url = "https://files.pythonhosted.org/packages/ea/f1/aa1bb13b2f4eba914e9637893c73f2af8e48d7d4023b9d3750d4c5eb2d0c/pillow-12.2.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:975385f4776fafde056abb318f612ef6285b10a1f12b8570f3647ad0d74b48ec", size = 8076080, upload-time = "2026-04-01T14:42:23.095Z" }, + { url = "https://files.pythonhosted.org/packages/a1/2a/8c79d6a53169937784604a8ae8d77e45888c41537f7f6f65ed1f407fe66d/pillow-12.2.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bd9c0c7a0c681a347b3194c500cb1e6ca9cab053ea4d82a5cf45b6b754560136", size = 6382236, upload-time = "2026-04-01T14:42:25.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/42/bbcb6051030e1e421d103ce7a8ecadf837aa2f39b8f82ef1a8d37c3d4ebc/pillow-12.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:88d387ff40b3ff7c274947ed3125dedf5262ec6919d83946753b5f3d7c67ea4c", size = 7070220, upload-time = "2026-04-01T14:42:28.68Z" }, + { url = "https://files.pythonhosted.org/packages/3f/e1/c2a7d6dd8cfa6b231227da096fd2d58754bab3603b9d73bf609d3c18b64f/pillow-12.2.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:51c4167c34b0d8ba05b547a3bb23578d0ba17b80a5593f93bd8ecb123dd336a3", size = 6493124, upload-time = "2026-04-01T14:42:31.579Z" }, + { url = "https://files.pythonhosted.org/packages/5f/41/7c8617da5d32e1d2f026e509484fdb6f3ad7efaef1749a0c1928adbb099e/pillow-12.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:34c0d99ecccea270c04882cb3b86e7b57296079c9a4aff88cb3b33563d95afaa", size = 7194324, upload-time = "2026-04-01T14:42:34.615Z" }, + { url = "https://files.pythonhosted.org/packages/2d/de/a777627e19fd6d62f84070ee1521adde5eeda4855b5cf60fe0b149118bca/pillow-12.2.0-cp310-cp310-win32.whl", hash = "sha256:b85f66ae9eb53e860a873b858b789217ba505e5e405a24b85c0464822fe88032", size = 6376363, upload-time = "2026-04-01T14:42:37.19Z" }, + { url = "https://files.pythonhosted.org/packages/e7/34/fc4cb5204896465842767b96d250c08410f01f2f28afc43b257de842eed5/pillow-12.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:673aa32138f3e7531ccdbca7b3901dba9b70940a19ccecc6a37c77d5fdeb05b5", size = 7083523, upload-time = "2026-04-01T14:42:39.62Z" }, + { url = "https://files.pythonhosted.org/packages/2d/a0/32852d36bc7709f14dc3f64f929a275e958ad8c19a6deba9610d458e28b3/pillow-12.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:3e080565d8d7c671db5802eedfb438e5565ffa40115216eabb8cd52d0ecce024", size = 2463318, upload-time = "2026-04-01T14:42:42.063Z" }, + { url = "https://files.pythonhosted.org/packages/68/e1/748f5663efe6edcfc4e74b2b93edfb9b8b99b67f21a854c3ae416500a2d9/pillow-12.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:8be29e59487a79f173507c30ddf57e733a357f67881430449bb32614075a40ab", size = 5354347, upload-time = "2026-04-01T14:42:44.255Z" }, + { url = "https://files.pythonhosted.org/packages/47/a1/d5ff69e747374c33a3b53b9f98cca7889fce1fd03d79cdc4e1bccc6c5a87/pillow-12.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:71cde9a1e1551df7d34a25462fc60325e8a11a82cc2e2f54578e5e9a1e153d65", size = 4695873, upload-time = "2026-04-01T14:42:46.452Z" }, + { url = "https://files.pythonhosted.org/packages/df/21/e3fbdf54408a973c7f7f89a23b2cb97a7ef30c61ab4142af31eee6aebc88/pillow-12.2.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f490f9368b6fc026f021db16d7ec2fbf7d89e2edb42e8ec09d2c60505f5729c7", size = 6280168, upload-time = "2026-04-01T14:42:49.228Z" }, + { url = "https://files.pythonhosted.org/packages/d3/f1/00b7278c7dd52b17ad4329153748f87b6756ec195ff786c2bdf12518337d/pillow-12.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8bd7903a5f2a4545f6fd5935c90058b89d30045568985a71c79f5fd6edf9b91e", size = 8088188, upload-time = "2026-04-01T14:42:51.735Z" }, + { url = "https://files.pythonhosted.org/packages/ad/cf/220a5994ef1b10e70e85748b75649d77d506499352be135a4989c957b701/pillow-12.2.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3997232e10d2920a68d25191392e3a4487d8183039e1c74c2297f00ed1c50705", size = 6394401, upload-time = "2026-04-01T14:42:54.343Z" }, + { url = "https://files.pythonhosted.org/packages/e9/bd/e51a61b1054f09437acfbc2ff9106c30d1eb76bc1453d428399946781253/pillow-12.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e74473c875d78b8e9d5da2a70f7099549f9eb37ded4e2f6a463e60125bccd176", size = 7079655, upload-time = "2026-04-01T14:42:56.954Z" }, + { url = "https://files.pythonhosted.org/packages/6b/3d/45132c57d5fb4b5744567c3817026480ac7fc3ce5d4c47902bc0e7f6f853/pillow-12.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:56a3f9c60a13133a98ecff6197af34d7824de9b7b38c3654861a725c970c197b", size = 6503105, upload-time = "2026-04-01T14:42:59.847Z" }, + { url = "https://files.pythonhosted.org/packages/7d/2e/9df2fc1e82097b1df3dce58dc43286aa01068e918c07574711fcc53e6fb4/pillow-12.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:90e6f81de50ad6b534cab6e5aef77ff6e37722b2f5d908686f4a5c9eba17a909", size = 7203402, upload-time = "2026-04-01T14:43:02.664Z" }, + { url = "https://files.pythonhosted.org/packages/bd/2e/2941e42858ebb67e50ae741473de81c2984e6eff7b397017623c676e2e8d/pillow-12.2.0-cp311-cp311-win32.whl", hash = "sha256:8c984051042858021a54926eb597d6ee3012393ce9c181814115df4c60b9a808", size = 6378149, upload-time = "2026-04-01T14:43:05.274Z" }, + { url = "https://files.pythonhosted.org/packages/69/42/836b6f3cd7f3e5fa10a1f1a5420447c17966044c8fbf589cc0452d5502db/pillow-12.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:6e6b2a0c538fc200b38ff9eb6628228b77908c319a005815f2dde585a0664b60", size = 7082626, upload-time = "2026-04-01T14:43:08.557Z" }, + { url = "https://files.pythonhosted.org/packages/c2/88/549194b5d6f1f494b485e493edc6693c0a16f4ada488e5bd974ed1f42fad/pillow-12.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:9a8a34cc89c67a65ea7437ce257cea81a9dad65b29805f3ecee8c8fe8ff25ffe", size = 2463531, upload-time = "2026-04-01T14:43:10.743Z" }, + { url = "https://files.pythonhosted.org/packages/58/be/7482c8a5ebebbc6470b3eb791812fff7d5e0216c2be3827b30b8bb6603ed/pillow-12.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2d192a155bbcec180f8564f693e6fd9bccff5a7af9b32e2e4bf8c9c69dbad6b5", size = 5308279, upload-time = "2026-04-01T14:43:13.246Z" }, + { url = "https://files.pythonhosted.org/packages/d8/95/0a351b9289c2b5cbde0bacd4a83ebc44023e835490a727b2a3bd60ddc0f4/pillow-12.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f3f40b3c5a968281fd507d519e444c35f0ff171237f4fdde090dd60699458421", size = 4695490, upload-time = "2026-04-01T14:43:15.584Z" }, + { url = "https://files.pythonhosted.org/packages/de/af/4e8e6869cbed569d43c416fad3dc4ecb944cb5d9492defaed89ddd6fe871/pillow-12.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:03e7e372d5240cc23e9f07deca4d775c0817bffc641b01e9c3af208dbd300987", size = 6284462, upload-time = "2026-04-01T14:43:18.268Z" }, + { url = "https://files.pythonhosted.org/packages/e9/9e/c05e19657fd57841e476be1ab46c4d501bffbadbafdc31a6d665f8b737b6/pillow-12.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b86024e52a1b269467a802258c25521e6d742349d760728092e1bc2d135b4d76", size = 8094744, upload-time = "2026-04-01T14:43:20.716Z" }, + { url = "https://files.pythonhosted.org/packages/2b/54/1789c455ed10176066b6e7e6da1b01e50e36f94ba584dc68d9eebfe9156d/pillow-12.2.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7371b48c4fa448d20d2714c9a1f775a81155050d383333e0a6c15b1123dda005", size = 6398371, upload-time = "2026-04-01T14:43:23.443Z" }, + { url = "https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:62f5409336adb0663b7caa0da5c7d9e7bdbaae9ce761d34669420c2a801b2780", size = 7087215, upload-time = "2026-04-01T14:43:26.758Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f8/2f6825e441d5b1959d2ca5adec984210f1ec086435b0ed5f52c19b3b8a6e/pillow-12.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:01afa7cf67f74f09523699b4e88c73fb55c13346d212a59a2db1f86b0a63e8c5", size = 6509783, upload-time = "2026-04-01T14:43:29.56Z" }, + { url = "https://files.pythonhosted.org/packages/67/f9/029a27095ad20f854f9dba026b3ea6428548316e057e6fc3545409e86651/pillow-12.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fc3d34d4a8fbec3e88a79b92e5465e0f9b842b628675850d860b8bd300b159f5", size = 7212112, upload-time = "2026-04-01T14:43:32.091Z" }, + { url = "https://files.pythonhosted.org/packages/be/42/025cfe05d1be22dbfdb4f264fe9de1ccda83f66e4fc3aac94748e784af04/pillow-12.2.0-cp312-cp312-win32.whl", hash = "sha256:58f62cc0f00fd29e64b29f4fd923ffdb3859c9f9e6105bfc37ba1d08994e8940", size = 6378489, upload-time = "2026-04-01T14:43:34.601Z" }, + { url = "https://files.pythonhosted.org/packages/5d/7b/25a221d2c761c6a8ae21bfa3874988ff2583e19cf8a27bf2fee358df7942/pillow-12.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:7f84204dee22a783350679a0333981df803dac21a0190d706a50475e361c93f5", size = 7084129, upload-time = "2026-04-01T14:43:37.213Z" }, + { url = "https://files.pythonhosted.org/packages/10/e1/542a474affab20fd4a0f1836cb234e8493519da6b76899e30bcc5d990b8b/pillow-12.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:af73337013e0b3b46f175e79492d96845b16126ddf79c438d7ea7ff27783a414", size = 2463612, upload-time = "2026-04-01T14:43:39.421Z" }, + { url = "https://files.pythonhosted.org/packages/4e/b7/2437044fb910f499610356d1352e3423753c98e34f915252aafecc64889f/pillow-12.2.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0538bd5e05efec03ae613fd89c4ce0368ecd2ba239cc25b9f9be7ed426b0af1f", size = 5273969, upload-time = "2026-04-01T14:45:55.538Z" }, + { url = "https://files.pythonhosted.org/packages/f6/f4/8316e31de11b780f4ac08ef3654a75555e624a98db1056ecb2122d008d5a/pillow-12.2.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:394167b21da716608eac917c60aa9b969421b5dcbbe02ae7f013e7b85811c69d", size = 4659674, upload-time = "2026-04-01T14:45:58.093Z" }, + { url = "https://files.pythonhosted.org/packages/d4/37/664fca7201f8bb2aa1d20e2c3d5564a62e6ae5111741966c8319ca802361/pillow-12.2.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5d04bfa02cc2d23b497d1e90a0f927070043f6cbf303e738300532379a4b4e0f", size = 5288479, upload-time = "2026-04-01T14:46:01.141Z" }, + { url = "https://files.pythonhosted.org/packages/49/62/5b0ed78fce87346be7a5cfcfaaad91f6a1f98c26f86bdbafa2066c647ef6/pillow-12.2.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0c838a5125cee37e68edec915651521191cef1e6aa336b855f495766e77a366e", size = 7032230, upload-time = "2026-04-01T14:46:03.874Z" }, + { url = "https://files.pythonhosted.org/packages/c3/28/ec0fc38107fc32536908034e990c47914c57cd7c5a3ece4d8d8f7ffd7e27/pillow-12.2.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a6c9fa44005fa37a91ebfc95d081e8079757d2e904b27103f4f5fa6f0bf78c0", size = 5355404, upload-time = "2026-04-01T14:46:06.33Z" }, + { url = "https://files.pythonhosted.org/packages/5e/8b/51b0eddcfa2180d60e41f06bd6d0a62202b20b59c68f5a132e615b75aecf/pillow-12.2.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:25373b66e0dd5905ed63fa3cae13c82fbddf3079f2c8bf15c6fb6a35586324c1", size = 6002215, upload-time = "2026-04-01T14:46:08.83Z" }, + { url = "https://files.pythonhosted.org/packages/bc/60/5382c03e1970de634027cee8e1b7d39776b778b81812aaf45b694dfe9e28/pillow-12.2.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:bfa9c230d2fe991bed5318a5f119bd6780cda2915cca595393649fc118ab895e", size = 7080946, upload-time = "2026-04-01T14:46:11.734Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "propcache" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9e/da/e9fc233cf63743258bff22b3dfa7ea5baef7b5bc324af47a0ad89b8ffc6f/propcache-0.4.1.tar.gz", hash = "sha256:f48107a8c637e80362555f37ecf49abe20370e557cc4ab374f04ec4423c97c3d", size = 46442, upload-time = "2025-10-08T19:49:02.291Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/0e/934b541323035566a9af292dba85a195f7b78179114f2c6ebb24551118a9/propcache-0.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c2d1fa3201efaf55d730400d945b5b3ab6e672e100ba0f9a409d950ab25d7db", size = 79534, upload-time = "2025-10-08T19:46:02.083Z" }, + { url = "https://files.pythonhosted.org/packages/a1/6b/db0d03d96726d995dc7171286c6ba9d8d14251f37433890f88368951a44e/propcache-0.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1eb2994229cc8ce7fe9b3db88f5465f5fd8651672840b2e426b88cdb1a30aac8", size = 45526, upload-time = "2025-10-08T19:46:03.884Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c3/82728404aea669e1600f304f2609cde9e665c18df5a11cdd57ed73c1dceb/propcache-0.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:66c1f011f45a3b33d7bcb22daed4b29c0c9e2224758b6be00686731e1b46f925", size = 47263, upload-time = "2025-10-08T19:46:05.405Z" }, + { url = "https://files.pythonhosted.org/packages/df/1b/39313ddad2bf9187a1432654c38249bab4562ef535ef07f5eb6eb04d0b1b/propcache-0.4.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9a52009f2adffe195d0b605c25ec929d26b36ef986ba85244891dee3b294df21", size = 201012, upload-time = "2025-10-08T19:46:07.165Z" }, + { url = "https://files.pythonhosted.org/packages/5b/01/f1d0b57d136f294a142acf97f4ed58c8e5b974c21e543000968357115011/propcache-0.4.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5d4e2366a9c7b837555cf02fb9be2e3167d333aff716332ef1b7c3a142ec40c5", size = 209491, upload-time = "2025-10-08T19:46:08.909Z" }, + { url = "https://files.pythonhosted.org/packages/a1/c8/038d909c61c5bb039070b3fb02ad5cccdb1dde0d714792e251cdb17c9c05/propcache-0.4.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:9d2b6caef873b4f09e26ea7e33d65f42b944837563a47a94719cc3544319a0db", size = 215319, upload-time = "2025-10-08T19:46:10.7Z" }, + { url = "https://files.pythonhosted.org/packages/08/57/8c87e93142b2c1fa2408e45695205a7ba05fb5db458c0bf5c06ba0e09ea6/propcache-0.4.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2b16ec437a8c8a965ecf95739448dd938b5c7f56e67ea009f4300d8df05f32b7", size = 196856, upload-time = "2025-10-08T19:46:12.003Z" }, + { url = "https://files.pythonhosted.org/packages/42/df/5615fec76aa561987a534759b3686008a288e73107faa49a8ae5795a9f7a/propcache-0.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:296f4c8ed03ca7476813fe666c9ea97869a8d7aec972618671b33a38a5182ef4", size = 193241, upload-time = "2025-10-08T19:46:13.495Z" }, + { url = "https://files.pythonhosted.org/packages/d5/21/62949eb3a7a54afe8327011c90aca7e03547787a88fb8bd9726806482fea/propcache-0.4.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:1f0978529a418ebd1f49dad413a2b68af33f85d5c5ca5c6ca2a3bed375a7ac60", size = 190552, upload-time = "2025-10-08T19:46:14.938Z" }, + { url = "https://files.pythonhosted.org/packages/30/ee/ab4d727dd70806e5b4de96a798ae7ac6e4d42516f030ee60522474b6b332/propcache-0.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fd138803047fb4c062b1c1dd95462f5209456bfab55c734458f15d11da288f8f", size = 200113, upload-time = "2025-10-08T19:46:16.695Z" }, + { url = "https://files.pythonhosted.org/packages/8a/0b/38b46208e6711b016aa8966a3ac793eee0d05c7159d8342aa27fc0bc365e/propcache-0.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8c9b3cbe4584636d72ff556d9036e0c9317fa27b3ac1f0f558e7e84d1c9c5900", size = 200778, upload-time = "2025-10-08T19:46:18.023Z" }, + { url = "https://files.pythonhosted.org/packages/cf/81/5abec54355ed344476bee711e9f04815d4b00a311ab0535599204eecc257/propcache-0.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f93243fdc5657247533273ac4f86ae106cc6445a0efacb9a1bfe982fcfefd90c", size = 193047, upload-time = "2025-10-08T19:46:19.449Z" }, + { url = "https://files.pythonhosted.org/packages/ec/b6/1f237c04e32063cb034acd5f6ef34ef3a394f75502e72703545631ab1ef6/propcache-0.4.1-cp310-cp310-win32.whl", hash = "sha256:a0ee98db9c5f80785b266eb805016e36058ac72c51a064040f2bc43b61101cdb", size = 38093, upload-time = "2025-10-08T19:46:20.643Z" }, + { url = "https://files.pythonhosted.org/packages/a6/67/354aac4e0603a15f76439caf0427781bcd6797f370377f75a642133bc954/propcache-0.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:1cdb7988c4e5ac7f6d175a28a9aa0c94cb6f2ebe52756a3c0cda98d2809a9e37", size = 41638, upload-time = "2025-10-08T19:46:21.935Z" }, + { url = "https://files.pythonhosted.org/packages/e0/e1/74e55b9fd1a4c209ff1a9a824bf6c8b3d1fc5a1ac3eabe23462637466785/propcache-0.4.1-cp310-cp310-win_arm64.whl", hash = "sha256:d82ad62b19645419fe79dd63b3f9253e15b30e955c0170e5cebc350c1844e581", size = 38229, upload-time = "2025-10-08T19:46:23.368Z" }, + { url = "https://files.pythonhosted.org/packages/8c/d4/4e2c9aaf7ac2242b9358f98dccd8f90f2605402f5afeff6c578682c2c491/propcache-0.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:60a8fda9644b7dfd5dece8c61d8a85e271cb958075bfc4e01083c148b61a7caf", size = 80208, upload-time = "2025-10-08T19:46:24.597Z" }, + { url = "https://files.pythonhosted.org/packages/c2/21/d7b68e911f9c8e18e4ae43bdbc1e1e9bbd971f8866eb81608947b6f585ff/propcache-0.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c30b53e7e6bda1d547cabb47c825f3843a0a1a42b0496087bb58d8fedf9f41b5", size = 45777, upload-time = "2025-10-08T19:46:25.733Z" }, + { url = "https://files.pythonhosted.org/packages/d3/1d/11605e99ac8ea9435651ee71ab4cb4bf03f0949586246476a25aadfec54a/propcache-0.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6918ecbd897443087a3b7cd978d56546a812517dcaaca51b49526720571fa93e", size = 47647, upload-time = "2025-10-08T19:46:27.304Z" }, + { url = "https://files.pythonhosted.org/packages/58/1a/3c62c127a8466c9c843bccb503d40a273e5cc69838805f322e2826509e0d/propcache-0.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3d902a36df4e5989763425a8ab9e98cd8ad5c52c823b34ee7ef307fd50582566", size = 214929, upload-time = "2025-10-08T19:46:28.62Z" }, + { url = "https://files.pythonhosted.org/packages/56/b9/8fa98f850960b367c4b8fe0592e7fc341daa7a9462e925228f10a60cf74f/propcache-0.4.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a9695397f85973bb40427dedddf70d8dc4a44b22f1650dd4af9eedf443d45165", size = 221778, upload-time = "2025-10-08T19:46:30.358Z" }, + { url = "https://files.pythonhosted.org/packages/46/a6/0ab4f660eb59649d14b3d3d65c439421cf2f87fe5dd68591cbe3c1e78a89/propcache-0.4.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2bb07ffd7eaad486576430c89f9b215f9e4be68c4866a96e97db9e97fead85dc", size = 228144, upload-time = "2025-10-08T19:46:32.607Z" }, + { url = "https://files.pythonhosted.org/packages/52/6a/57f43e054fb3d3a56ac9fc532bc684fc6169a26c75c353e65425b3e56eef/propcache-0.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fd6f30fdcf9ae2a70abd34da54f18da086160e4d7d9251f81f3da0ff84fc5a48", size = 210030, upload-time = "2025-10-08T19:46:33.969Z" }, + { url = "https://files.pythonhosted.org/packages/40/e2/27e6feebb5f6b8408fa29f5efbb765cd54c153ac77314d27e457a3e993b7/propcache-0.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fc38cba02d1acba4e2869eef1a57a43dfbd3d49a59bf90dda7444ec2be6a5570", size = 208252, upload-time = "2025-10-08T19:46:35.309Z" }, + { url = "https://files.pythonhosted.org/packages/9e/f8/91c27b22ccda1dbc7967f921c42825564fa5336a01ecd72eb78a9f4f53c2/propcache-0.4.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:67fad6162281e80e882fb3ec355398cf72864a54069d060321f6cd0ade95fe85", size = 202064, upload-time = "2025-10-08T19:46:36.993Z" }, + { url = "https://files.pythonhosted.org/packages/f2/26/7f00bd6bd1adba5aafe5f4a66390f243acab58eab24ff1a08bebb2ef9d40/propcache-0.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f10207adf04d08bec185bae14d9606a1444715bc99180f9331c9c02093e1959e", size = 212429, upload-time = "2025-10-08T19:46:38.398Z" }, + { url = "https://files.pythonhosted.org/packages/84/89/fd108ba7815c1117ddca79c228f3f8a15fc82a73bca8b142eb5de13b2785/propcache-0.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e9b0d8d0845bbc4cfcdcbcdbf5086886bc8157aa963c31c777ceff7846c77757", size = 216727, upload-time = "2025-10-08T19:46:39.732Z" }, + { url = "https://files.pythonhosted.org/packages/79/37/3ec3f7e3173e73f1d600495d8b545b53802cbf35506e5732dd8578db3724/propcache-0.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:981333cb2f4c1896a12f4ab92a9cc8f09ea664e9b7dbdc4eff74627af3a11c0f", size = 205097, upload-time = "2025-10-08T19:46:41.025Z" }, + { url = "https://files.pythonhosted.org/packages/61/b0/b2631c19793f869d35f47d5a3a56fb19e9160d3c119f15ac7344fc3ccae7/propcache-0.4.1-cp311-cp311-win32.whl", hash = "sha256:f1d2f90aeec838a52f1c1a32fe9a619fefd5e411721a9117fbf82aea638fe8a1", size = 38084, upload-time = "2025-10-08T19:46:42.693Z" }, + { url = "https://files.pythonhosted.org/packages/f4/78/6cce448e2098e9f3bfc91bb877f06aa24b6ccace872e39c53b2f707c4648/propcache-0.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:364426a62660f3f699949ac8c621aad6977be7126c5807ce48c0aeb8e7333ea6", size = 41637, upload-time = "2025-10-08T19:46:43.778Z" }, + { url = "https://files.pythonhosted.org/packages/9c/e9/754f180cccd7f51a39913782c74717c581b9cc8177ad0e949f4d51812383/propcache-0.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:e53f3a38d3510c11953f3e6a33f205c6d1b001129f972805ca9b42fc308bc239", size = 38064, upload-time = "2025-10-08T19:46:44.872Z" }, + { url = "https://files.pythonhosted.org/packages/a2/0f/f17b1b2b221d5ca28b4b876e8bb046ac40466513960646bda8e1853cdfa2/propcache-0.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e153e9cd40cc8945138822807139367f256f89c6810c2634a4f6902b52d3b4e2", size = 80061, upload-time = "2025-10-08T19:46:46.075Z" }, + { url = "https://files.pythonhosted.org/packages/76/47/8ccf75935f51448ba9a16a71b783eb7ef6b9ee60f5d14c7f8a8a79fbeed7/propcache-0.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cd547953428f7abb73c5ad82cbb32109566204260d98e41e5dfdc682eb7f8403", size = 46037, upload-time = "2025-10-08T19:46:47.23Z" }, + { url = "https://files.pythonhosted.org/packages/0a/b6/5c9a0e42df4d00bfb4a3cbbe5cf9f54260300c88a0e9af1f47ca5ce17ac0/propcache-0.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f048da1b4f243fc44f205dfd320933a951b8d89e0afd4c7cacc762a8b9165207", size = 47324, upload-time = "2025-10-08T19:46:48.384Z" }, + { url = "https://files.pythonhosted.org/packages/9e/d3/6c7ee328b39a81ee877c962469f1e795f9db87f925251efeb0545e0020d0/propcache-0.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ec17c65562a827bba85e3872ead335f95405ea1674860d96483a02f5c698fa72", size = 225505, upload-time = "2025-10-08T19:46:50.055Z" }, + { url = "https://files.pythonhosted.org/packages/01/5d/1c53f4563490b1d06a684742cc6076ef944bc6457df6051b7d1a877c057b/propcache-0.4.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:405aac25c6394ef275dee4c709be43745d36674b223ba4eb7144bf4d691b7367", size = 230242, upload-time = "2025-10-08T19:46:51.815Z" }, + { url = "https://files.pythonhosted.org/packages/20/e1/ce4620633b0e2422207c3cb774a0ee61cac13abc6217763a7b9e2e3f4a12/propcache-0.4.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0013cb6f8dde4b2a2f66903b8ba740bdfe378c943c4377a200551ceb27f379e4", size = 238474, upload-time = "2025-10-08T19:46:53.208Z" }, + { url = "https://files.pythonhosted.org/packages/46/4b/3aae6835b8e5f44ea6a68348ad90f78134047b503765087be2f9912140ea/propcache-0.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15932ab57837c3368b024473a525e25d316d8353016e7cc0e5ba9eb343fbb1cf", size = 221575, upload-time = "2025-10-08T19:46:54.511Z" }, + { url = "https://files.pythonhosted.org/packages/6e/a5/8a5e8678bcc9d3a1a15b9a29165640d64762d424a16af543f00629c87338/propcache-0.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:031dce78b9dc099f4c29785d9cf5577a3faf9ebf74ecbd3c856a7b92768c3df3", size = 216736, upload-time = "2025-10-08T19:46:56.212Z" }, + { url = "https://files.pythonhosted.org/packages/f1/63/b7b215eddeac83ca1c6b934f89d09a625aa9ee4ba158338854c87210cc36/propcache-0.4.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ab08df6c9a035bee56e31af99be621526bd237bea9f32def431c656b29e41778", size = 213019, upload-time = "2025-10-08T19:46:57.595Z" }, + { url = "https://files.pythonhosted.org/packages/57/74/f580099a58c8af587cac7ba19ee7cb418506342fbbe2d4a4401661cca886/propcache-0.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4d7af63f9f93fe593afbf104c21b3b15868efb2c21d07d8732c0c4287e66b6a6", size = 220376, upload-time = "2025-10-08T19:46:59.067Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ee/542f1313aff7eaf19c2bb758c5d0560d2683dac001a1c96d0774af799843/propcache-0.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cfc27c945f422e8b5071b6e93169679e4eb5bf73bbcbf1ba3ae3a83d2f78ebd9", size = 226988, upload-time = "2025-10-08T19:47:00.544Z" }, + { url = "https://files.pythonhosted.org/packages/8f/18/9c6b015dd9c6930f6ce2229e1f02fb35298b847f2087ea2b436a5bfa7287/propcache-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:35c3277624a080cc6ec6f847cbbbb5b49affa3598c4535a0a4682a697aaa5c75", size = 215615, upload-time = "2025-10-08T19:47:01.968Z" }, + { url = "https://files.pythonhosted.org/packages/80/9e/e7b85720b98c45a45e1fca6a177024934dc9bc5f4d5dd04207f216fc33ed/propcache-0.4.1-cp312-cp312-win32.whl", hash = "sha256:671538c2262dadb5ba6395e26c1731e1d52534bfe9ae56d0b5573ce539266aa8", size = 38066, upload-time = "2025-10-08T19:47:03.503Z" }, + { url = "https://files.pythonhosted.org/packages/54/09/d19cff2a5aaac632ec8fc03737b223597b1e347416934c1b3a7df079784c/propcache-0.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:cb2d222e72399fcf5890d1d5cc1060857b9b236adff2792ff48ca2dfd46c81db", size = 41655, upload-time = "2025-10-08T19:47:04.973Z" }, + { url = "https://files.pythonhosted.org/packages/68/ab/6b5c191bb5de08036a8c697b265d4ca76148efb10fa162f14af14fb5f076/propcache-0.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:204483131fb222bdaaeeea9f9e6c6ed0cac32731f75dfc1d4a567fc1926477c1", size = 37789, upload-time = "2025-10-08T19:47:06.077Z" }, + { url = "https://files.pythonhosted.org/packages/5b/5a/bc7b4a4ef808fa59a816c17b20c4bef6884daebbdf627ff2a161da67da19/propcache-0.4.1-py3-none-any.whl", hash = "sha256:af2a6052aeb6cf17d3e46ee169099044fd8224cbaf75c76a2ef596e8163e2237", size = 13305, upload-time = "2025-10-08T19:49:00.792Z" }, +] + +[[package]] +name = "protobuf" +version = "7.34.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/6b/a0e95cad1ad7cc3f2c6821fcab91671bd5b78bd42afb357bb4765f29bc41/protobuf-7.34.1.tar.gz", hash = "sha256:9ce42245e704cc5027be797c1db1eb93184d44d1cdd71811fb2d9b25ad541280", size = 454708, upload-time = "2026-03-20T17:34:47.036Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/11/3325d41e6ee15bf1125654301211247b042563bcc898784351252549a8ad/protobuf-7.34.1-cp310-abi3-macosx_10_9_universal2.whl", hash = "sha256:d8b2cc79c4d8f62b293ad9b11ec3aebce9af481fa73e64556969f7345ebf9fc7", size = 429247, upload-time = "2026-03-20T17:34:37.024Z" }, + { url = "https://files.pythonhosted.org/packages/eb/9d/aa69df2724ff63efa6f72307b483ce0827f4347cc6d6df24b59e26659fef/protobuf-7.34.1-cp310-abi3-manylinux2014_aarch64.whl", hash = "sha256:5185e0e948d07abe94bb76ec9b8416b604cfe5da6f871d67aad30cbf24c3110b", size = 325753, upload-time = "2026-03-20T17:34:38.751Z" }, + { url = "https://files.pythonhosted.org/packages/92/e8/d174c91fd48e50101943f042b09af9029064810b734e4160bbe282fa1caa/protobuf-7.34.1-cp310-abi3-manylinux2014_s390x.whl", hash = "sha256:403b093a6e28a960372b44e5eb081775c9b056e816a8029c61231743d63f881a", size = 340198, upload-time = "2026-03-20T17:34:39.871Z" }, + { url = "https://files.pythonhosted.org/packages/53/1b/3b431694a4dc6d37b9f653f0c64b0a0d9ec074ee810710c0c3da21d67ba7/protobuf-7.34.1-cp310-abi3-manylinux2014_x86_64.whl", hash = "sha256:8ff40ce8cd688f7265326b38d5a1bed9bfdf5e6723d49961432f83e21d5713e4", size = 324267, upload-time = "2026-03-20T17:34:41.1Z" }, + { url = "https://files.pythonhosted.org/packages/85/29/64de04a0ac142fb685fd09999bc3d337943fb386f3a0ec57f92fd8203f97/protobuf-7.34.1-cp310-abi3-win32.whl", hash = "sha256:34b84ce27680df7cca9f231043ada0daa55d0c44a2ddfaa58ec1d0d89d8bf60a", size = 426628, upload-time = "2026-03-20T17:34:42.536Z" }, + { url = "https://files.pythonhosted.org/packages/4d/87/cb5e585192a22b8bd457df5a2c16a75ea0db9674c3a0a39fc9347d84e075/protobuf-7.34.1-cp310-abi3-win_amd64.whl", hash = "sha256:e97b55646e6ce5cbb0954a8c28cd39a5869b59090dfaa7df4598a7fba869468c", size = 437901, upload-time = "2026-03-20T17:34:44.112Z" }, + { url = "https://files.pythonhosted.org/packages/88/95/608f665226bca68b736b79e457fded9a2a38c4f4379a4a7614303d9db3bc/protobuf-7.34.1-py3-none-any.whl", hash = "sha256:bb3812cd53aefea2b028ef42bd780f5b96407247f20c6ef7c679807e9d188f11", size = 170715, upload-time = "2026-03-20T17:34:45.384Z" }, +] + +[[package]] +name = "psutil" +version = "7.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/c6/d1ddf4abb55e93cebc4f2ed8b5d6dbad109ecb8d63748dd2b20ab5e57ebe/psutil-7.2.2.tar.gz", hash = "sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372", size = 493740, upload-time = "2026-01-28T18:14:54.428Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486", size = 129090, upload-time = "2026-01-28T18:15:22.168Z" }, + { url = "https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979", size = 129859, upload-time = "2026-01-28T18:15:23.795Z" }, + { url = "https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9", size = 155560, upload-time = "2026-01-28T18:15:25.976Z" }, + { url = "https://files.pythonhosted.org/packages/63/65/37648c0c158dc222aba51c089eb3bdfa238e621674dc42d48706e639204f/psutil-7.2.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e", size = 156997, upload-time = "2026-01-28T18:15:27.794Z" }, + { url = "https://files.pythonhosted.org/packages/8e/13/125093eadae863ce03c6ffdbae9929430d116a246ef69866dad94da3bfbc/psutil-7.2.2-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8", size = 148972, upload-time = "2026-01-28T18:15:29.342Z" }, + { url = "https://files.pythonhosted.org/packages/04/78/0acd37ca84ce3ddffaa92ef0f571e073faa6d8ff1f0559ab1272188ea2be/psutil-7.2.2-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc", size = 148266, upload-time = "2026-01-28T18:15:31.597Z" }, + { url = "https://files.pythonhosted.org/packages/b4/90/e2159492b5426be0c1fef7acba807a03511f97c5f86b3caeda6ad92351a7/psutil-7.2.2-cp37-abi3-win_amd64.whl", hash = "sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988", size = 137737, upload-time = "2026-01-28T18:15:33.849Z" }, + { url = "https://files.pythonhosted.org/packages/8c/c7/7bb2e321574b10df20cbde462a94e2b71d05f9bbda251ef27d104668306a/psutil-7.2.2-cp37-abi3-win_arm64.whl", hash = "sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee", size = 134617, upload-time = "2026-01-28T18:15:36.514Z" }, +] + +[[package]] +name = "pyarrow" +version = "24.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/91/13/13e1069b351bdc3881266e11147ffccf687505dbb0ea74036237f5d454a5/pyarrow-24.0.0.tar.gz", hash = "sha256:85fe721a14dd823aca09127acbb06c3ca723efbd436c004f16bca601b04dcc83", size = 1180261, upload-time = "2026-04-21T10:51:25.837Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/bf/a34fee1d624152124fa8355c42f34195ad5fe5233ce5bb87946432047d52/pyarrow-24.0.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:7c2b98645d576a0b9616892ead22b64a83a5f043c5e2ca15ebcefcb5b70c80cb", size = 35076681, upload-time = "2026-04-21T08:51:46.845Z" }, + { url = "https://files.pythonhosted.org/packages/1d/41/64180033d7027afce12dc96d0fe1f504c6fa112190582b458acea2399530/pyarrow-24.0.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:644a246325b8c69c595ad1dd4b463eba4b0cdb731370e4a86137d433208d6147", size = 36684260, upload-time = "2026-04-21T08:51:53.642Z" }, + { url = "https://files.pythonhosted.org/packages/57/02/9b9320e673dd8a99411fac78690f3df92f6dd6f59754c750110bca66d64e/pyarrow-24.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:3a577bd840ca83f646f0a625dbc571dba7044c43c2d1503afc378b570954345c", size = 45698566, upload-time = "2026-04-21T10:46:02.133Z" }, + { url = "https://files.pythonhosted.org/packages/67/33/f75e91b9a64c3f33c787e263c93b871ad91b8a4a68c1d5cebddd9840e835/pyarrow-24.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:e3268e43984d0b1a185c89b4cfff282a7ead12fc93f56cfd7088bdbcbe727041", size = 48835562, upload-time = "2026-04-21T10:46:10.278Z" }, + { url = "https://files.pythonhosted.org/packages/a5/63/097510448e47e4091faa41c43ba92f97cecaab8f4535b56a3d149578f634/pyarrow-24.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2392d954fcb920f42d230284b677605e4e2fbb11f2821e823e642abd67fbb491", size = 49394997, upload-time = "2026-04-21T10:46:18.08Z" }, + { url = "https://files.pythonhosted.org/packages/60/6b/c047d6222ab279024a062742d1807e2fbaf27bba88a98637299ff47b9236/pyarrow-24.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bec9373df11544592b0ba7ec2af0e35059e5f0e7647c6183a854dedd193298f1", size = 51911424, upload-time = "2026-04-21T10:46:25.347Z" }, + { url = "https://files.pythonhosted.org/packages/3a/ba/464cc70761c2a525d97ebd84e21c31ebd47f3ef4bdcee117009f51c46f24/pyarrow-24.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:c42ab9439498270139cc63e18847a02afe5c8b3ed9c931266533cfe378bd3591", size = 27251730, upload-time = "2026-04-21T10:46:30.913Z" }, + { url = "https://files.pythonhosted.org/packages/62/c9/a47ab7ece0d86cbe6678418a0fbd1ac4bb493b9184a3891dfa0e7f287ae0/pyarrow-24.0.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:b0e131f880cda8d04e076cee175a46fc0e8bc8b65c99c6c09dff6669335fde74", size = 35068898, upload-time = "2026-04-21T10:46:36.599Z" }, + { url = "https://files.pythonhosted.org/packages/d1/bc/8db86617a9a58008acf8913d6fed68ea2a46acb6de928db28d724c891a68/pyarrow-24.0.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:1b2fe7f9a5566401a0ef2571f197eb92358925c1f0c8dba305d6e43ea0871bb3", size = 36679915, upload-time = "2026-04-21T10:46:42.602Z" }, + { url = "https://files.pythonhosted.org/packages/eb/8e/fb178720400ef69db251eb4a9c3ccf4af269bc1feb5055529b8fc87170d1/pyarrow-24.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:0b3537c00fb8d384f15ac1e79b6eb6db04a16514c8c1d22e59a9b95c8ba42868", size = 45697931, upload-time = "2026-04-21T10:46:48.403Z" }, + { url = "https://files.pythonhosted.org/packages/f3/27/99c42abe8e21b44f4917f62631f3aa31404882a2c41d8a4cd5c110e13d52/pyarrow-24.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:14e31a3c9e35f1ab6356c6378f6f72830e6d2d5f1791df3774a7b097d18a6a1e", size = 48837449, upload-time = "2026-04-21T10:46:55.329Z" }, + { url = "https://files.pythonhosted.org/packages/36/b6/333749e2666e9032891125bf9c691146e92901bece62030ac1430e2e7c88/pyarrow-24.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b7d9a514e73bc42711e6a35aaccf3587c520024fe0a25d830a1a8a27c15f4f57", size = 49395949, upload-time = "2026-04-21T10:47:01.869Z" }, + { url = "https://files.pythonhosted.org/packages/17/25/c5201706a2dd374e8ba6ee3fd7a8c89fb7ffc16eed5217a91fd2bd7f7626/pyarrow-24.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b196eb3f931862af3fa84c2a253514d859c08e0d8fe020e07be12e75a5a9780c", size = 51912986, upload-time = "2026-04-21T10:47:09.872Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d2/4d1bbba65320b21a49678d6fbdc6ff7c649251359fdcfc03568c4136231d/pyarrow-24.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:35405aecb474e683fb36af650618fd5340ee5471fc65a21b36076a18bbc6c981", size = 27255371, upload-time = "2026-04-21T10:47:15.943Z" }, + { url = "https://files.pythonhosted.org/packages/b4/a9/9686d9f07837f91f775e8932659192e02c74f9d8920524b480b85212cc68/pyarrow-24.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:6233c9ed9ab9d1db47de57d9753256d9dcffbf42db341576099f0fd9f6bf4810", size = 34981559, upload-time = "2026-04-21T10:47:22.17Z" }, + { url = "https://files.pythonhosted.org/packages/80/b6/0ddf0e9b6ead3474ab087ae598c76b031fc45532bf6a63f3a553440fb258/pyarrow-24.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:f7616236ec1bc2b15bfdec22a71ab38851c86f8f05ff64f379e1278cf20c634a", size = 36663654, upload-time = "2026-04-21T10:47:28.315Z" }, + { url = "https://files.pythonhosted.org/packages/7c/3b/926382efe8ce27ba729071d3566ade6dfb86bdf112f366000196b2f5780a/pyarrow-24.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:1617043b99bd33e5318ae18eb2919af09c71322ef1ca46566cdafc6e6712fb66", size = 45679394, upload-time = "2026-04-21T10:47:34.821Z" }, + { url = "https://files.pythonhosted.org/packages/b3/7a/829f7d9dfd37c207206081d6dad474d81dde29952401f07f2ba507814818/pyarrow-24.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6165461f55ef6314f026de6638d661188e3455d3ec49834556a0ebbdbace18bb", size = 48863122, upload-time = "2026-04-21T10:47:42.056Z" }, + { url = "https://files.pythonhosted.org/packages/5f/e8/f88ce625fe8babaae64e8db2d417c7653adb3019b08aae85c5ed787dc816/pyarrow-24.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3b13dedfe76a0ad2d1d859b0811b53827a4e9d93a0bcb05cf59333ab4980cc7e", size = 49376032, upload-time = "2026-04-21T10:47:48.967Z" }, + { url = "https://files.pythonhosted.org/packages/36/7a/82c363caa145fff88fb475da50d3bf52bb024f61917be5424c3392eaf878/pyarrow-24.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:25ea65d868eb04015cd18e6df2fbe98f07e5bda2abefabcb88fce39a947716f6", size = 51929490, upload-time = "2026-04-21T10:47:55.981Z" }, + { url = "https://files.pythonhosted.org/packages/66/1c/e3e72c8014ad2743ca64a701652c733cc5cbcee15c0463a32a8c55518d9e/pyarrow-24.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:295f0a7f2e242dabd513737cf076007dc5b2d59237e3eca37b05c0c6446f3826", size = 27355660, upload-time = "2026-04-21T10:48:01.718Z" }, +] + +[[package]] +name = "pydeprecate" +version = "0.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/8c/a2b828824b6a5d7826a3af3948b8a312064c28ef2a3312a86b003bbbe21f/pydeprecate-0.5.0.tar.gz", hash = "sha256:d4dad1a44673257385674276e08415da626f002ea12fe73cf1d70d391b63f936", size = 61364, upload-time = "2026-02-23T22:35:49.723Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4a/40/ff4ca100d6d698ce17cdc82799a4b365c3f73c1746a440bba543a1c8a4db/pydeprecate-0.5.0-py3-none-any.whl", hash = "sha256:1668d1e152f6ec6127a8ce8bd501215a4c3d756e46ced542d0222f1df2c78eca", size = 38022, upload-time = "2026-02-23T22:35:48.512Z" }, +] + +[[package]] +name = "pygments" +version = "2.20.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, +] + +[[package]] +name = "pyogrio" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/49/d4/12f86b1ed09721363da4c09622464b604c851a9223fc0c6b393fb2012208/pyogrio-0.12.1.tar.gz", hash = "sha256:e548ab705bb3e5383693717de1e6c76da97f3762ab92522cb310f93128a75ff1", size = 303289, upload-time = "2025-11-28T19:04:53.341Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/04/e69f476c4cc279adc6d26194da4d3497f5d9efdd46777a6c0ad59c09233f/pyogrio-0.12.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:5c4735235ca0d8dcdb4ecd69bd73e66762d161bce913b10d4458a18137cc7062", size = 23672707, upload-time = "2025-11-28T19:02:54.87Z" }, + { url = "https://files.pythonhosted.org/packages/a3/9e/805d640f050fc4a064ee5ba3289457f47d7f3464b57140caa8ddac039a67/pyogrio-0.12.1-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:3249d06c2520857b622f3ff0f1b7b4849291ee1fb72f21587825f5fd0f24b787", size = 25247903, upload-time = "2025-11-28T19:02:57.756Z" }, + { url = "https://files.pythonhosted.org/packages/05/c3/65577611485bc3e53a466ffbcd2407f89e8bd7e1c4554e8a0d23a4b8a636/pyogrio-0.12.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f4011b63f9d6c278ee6605971ffabe30b0e8f5992ec2c6df8c70ecfa68a5d02b", size = 31279563, upload-time = "2025-11-28T19:03:00.344Z" }, + { url = "https://files.pythonhosted.org/packages/b1/a6/5c03dffaf02542e8bae6c785d3e302bf4b890cd2ab281336b3c4dc867f84/pyogrio-0.12.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:940857c45051e1e19608ebfe8338bcdf7dd005389057431a3c7b5bff5beb0a5f", size = 30831678, upload-time = "2025-11-28T19:03:03.234Z" }, + { url = "https://files.pythonhosted.org/packages/c8/aa/0e484c13cf14bbe46c366ad363ab2406242a0fba85a7561d42bbd34c35dd/pyogrio-0.12.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0fd86bcd69126739325a543a489f312b5fd86db092d2dead682772ae4ee434f3", size = 32380362, upload-time = "2025-11-28T19:03:06.098Z" }, + { url = "https://files.pythonhosted.org/packages/7a/7c/cc515005780235d9ab14a29d33868bcaa1d5b423cee7995dda94735c41dd/pyogrio-0.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:dcf9cca273ead32beba7c002dd3db8a304105f52dd66200d48fa1ef30d0676af", size = 22940628, upload-time = "2025-11-28T19:03:08.568Z" }, + { url = "https://files.pythonhosted.org/packages/02/46/b2c2dcdfd88759b56f103365905fffb85e8b08c1db1ec7c8f8b4c4c26016/pyogrio-0.12.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:01b322dac2a258d24b024d1028dcaa03c9bb6d9c3988b86d298a64873d10dc65", size = 23670744, upload-time = "2025-11-28T19:03:11.299Z" }, + { url = "https://files.pythonhosted.org/packages/d9/21/b69f1bc51d805c00dd7c484a18e1fd2e75b41da1d9f5b8591d7d9d4a7d2f/pyogrio-0.12.1-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:e10087abcbd6b7e8212560a7002984e5078ac7b3a969ddc2c9929044dbb0d403", size = 25246184, upload-time = "2025-11-28T19:03:13.997Z" }, + { url = "https://files.pythonhosted.org/packages/19/8c/b6aae08e8fcc4f2a903da5f6bd8f888d2b6d7290e54dde5abe15b4cca8df/pyogrio-0.12.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1f6c621972b09fd81a32317e742c69ff4a7763a803da211361a78317f9577765", size = 31434449, upload-time = "2025-11-28T19:03:16.777Z" }, + { url = "https://files.pythonhosted.org/packages/70/f9/9538fa893c29a3fdfeddf3b4c9f8db77f2d4134bc766587929fec8405ebf/pyogrio-0.12.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:c38253427b688464caad5316d4ebcec116b5e13f1f02cc4e3588502f136ca1b4", size = 30987586, upload-time = "2025-11-28T19:03:19.586Z" }, + { url = "https://files.pythonhosted.org/packages/89/a4/0aef5837b4e11840f501e48e01c31242838476c4f4aff9c05e228a083982/pyogrio-0.12.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:5f47787251de7ce13cc06038da93a1214dc283cbccf816be6e03c080358226c8", size = 32534386, upload-time = "2025-11-28T19:03:22.292Z" }, + { url = "https://files.pythonhosted.org/packages/34/97/e8f2ed8a339152b86f8403c258ae5d5f23ab32d690eeb0545bb3473d0c69/pyogrio-0.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:c1d756cf2da4cdf5609779f260d1e1e89be023184225855d6f3dcd33bbe17cb0", size = 22941718, upload-time = "2025-11-28T19:03:24.82Z" }, + { url = "https://files.pythonhosted.org/packages/ad/e0/656b6536549d41b5aec57e0deca1f269b4f17532f0636836f587e581603a/pyogrio-0.12.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:7a0d5ca39184030aec4cde30f4258f75b227a854530d2659babc8189d76e657d", size = 23661857, upload-time = "2025-11-28T19:03:27.744Z" }, + { url = "https://files.pythonhosted.org/packages/14/78/313259e40da728bdb60106ffdc7ea8224d164498cb838ecb79b634aab967/pyogrio-0.12.1-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:feaff42bbe8087ca0b30e33b09d1ce049ca55fe83ad83db1139ef37d1d04f30c", size = 25237106, upload-time = "2025-11-28T19:03:30.018Z" }, + { url = "https://files.pythonhosted.org/packages/8f/ca/5368571a8b00b941ccfbe6ea29a5566aaffd45d4eb1553b956f7755af43e/pyogrio-0.12.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:81096a5139532de5a8003ef02b41d5d2444cb382a9aecd1165b447eb549180d3", size = 31417048, upload-time = "2025-11-28T19:03:32.572Z" }, + { url = "https://files.pythonhosted.org/packages/ef/85/6eeb875f27bf498d657eb5dab9f58e4c48b36c9037122787abee9a1ba4ba/pyogrio-0.12.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:41b78863f782f7a113ed0d36a5dc74d59735bd3a82af53510899bb02a18b06bb", size = 30952115, upload-time = "2025-11-28T19:03:35.332Z" }, + { url = "https://files.pythonhosted.org/packages/36/f7/cf8bec9024625947e1a71441906f60a5fa6f9e4c441c4428037e73b1fcc8/pyogrio-0.12.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:8b65be8c4258b27cc8f919b21929cecdadda4c353e3637fa30850339ef4d15c5", size = 32537246, upload-time = "2025-11-28T19:03:37.969Z" }, + { url = "https://files.pythonhosted.org/packages/ab/10/7c9f5e428273574e69f217eba3a6c0c42936188ad4dcd9e2c41ebb711188/pyogrio-0.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:1291b866c2c81d991bda15021b08b3621709b40ee3a85689229929e9465788bf", size = 22933980, upload-time = "2025-11-28T19:03:41.047Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/91/9c6ee907786a473bf81c5f53cf703ba0957b23ab84c264080fb5a450416f/pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc", size = 6851574, upload-time = "2026-01-21T03:57:59.36Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d", size = 122781, upload-time = "2026-01-21T03:57:55.912Z" }, +] + +[[package]] +name = "pyproj" +version = "3.7.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform != 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "certifi", marker = "python_full_version < '3.11'" }, +] +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]] +name = "pyproj" +version = "3.7.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'win32'", + "python_full_version >= '3.12' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "certifi", marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/90/67bd7260b4ea9b8b20b4f58afef6c223ecb3abf368eb4ec5bc2cdef81b49/pyproj-3.7.2.tar.gz", hash = "sha256:39a0cf1ecc7e282d1d30f36594ebd55c9fae1fda8a2622cee5d100430628f88c", size = 226279, upload-time = "2025-08-14T12:05:42.18Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/bd/f205552cd1713b08f93b09e39a3ec99edef0b3ebbbca67b486fdf1abe2de/pyproj-3.7.2-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:2514d61f24c4e0bb9913e2c51487ecdaeca5f8748d8313c933693416ca41d4d5", size = 6227022, upload-time = "2025-08-14T12:03:51.474Z" }, + { url = "https://files.pythonhosted.org/packages/75/4c/9a937e659b8b418ab573c6d340d27e68716928953273e0837e7922fcac34/pyproj-3.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:8693ca3892d82e70de077701ee76dd13d7bca4ae1c9d1e739d72004df015923a", size = 4625810, upload-time = "2025-08-14T12:03:53.808Z" }, + { url = "https://files.pythonhosted.org/packages/c0/7d/a9f41e814dc4d1dc54e95b2ccaf0b3ebe3eb18b1740df05fe334724c3d89/pyproj-3.7.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5e26484d80fea56273ed1555abaea161e9661d81a6c07815d54b8e883d4ceb25", size = 9638694, upload-time = "2025-08-14T12:03:55.669Z" }, + { url = "https://files.pythonhosted.org/packages/ad/ab/9bdb4a6216b712a1f9aab1c0fcbee5d3726f34a366f29c3e8c08a78d6b70/pyproj-3.7.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:281cb92847814e8018010c48b4069ff858a30236638631c1a91dd7bfa68f8a8a", size = 9493977, upload-time = "2025-08-14T12:03:57.937Z" }, + { url = "https://files.pythonhosted.org/packages/c9/db/2db75b1b6190f1137b1c4e8ef6a22e1c338e46320f6329bfac819143e063/pyproj-3.7.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9c8577f0b7bb09118ec2e57e3babdc977127dd66326d6c5d755c76b063e6d9dc", size = 10841151, upload-time = "2025-08-14T12:04:00.271Z" }, + { url = "https://files.pythonhosted.org/packages/89/f7/989643394ba23a286e9b7b3f09981496172f9e0d4512457ffea7dc47ffc7/pyproj-3.7.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a23f59904fac3a5e7364b3aa44d288234af267ca041adb2c2b14a903cd5d3ac5", size = 10751585, upload-time = "2025-08-14T12:04:02.228Z" }, + { url = "https://files.pythonhosted.org/packages/53/6d/ad928fe975a6c14a093c92e6a319ca18f479f3336bb353a740bdba335681/pyproj-3.7.2-cp311-cp311-win32.whl", hash = "sha256:f2af4ed34b2cf3e031a2d85b067a3ecbd38df073c567e04b52fa7a0202afde8a", size = 5908533, upload-time = "2025-08-14T12:04:04.821Z" }, + { url = "https://files.pythonhosted.org/packages/79/e0/b95584605cec9ed50b7ebaf7975d1c4ddeec5a86b7a20554ed8b60042bd7/pyproj-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:0b7cb633565129677b2a183c4d807c727d1c736fcb0568a12299383056e67433", size = 6320742, upload-time = "2025-08-14T12:04:06.357Z" }, + { url = "https://files.pythonhosted.org/packages/b7/4d/536e8f93bca808175c2d0a5ac9fdf69b960d8ab6b14f25030dccb07464d7/pyproj-3.7.2-cp311-cp311-win_arm64.whl", hash = "sha256:38b08d85e3a38e455625b80e9eb9f78027c8e2649a21dec4df1f9c3525460c71", size = 6245772, upload-time = "2025-08-14T12:04:08.365Z" }, + { url = "https://files.pythonhosted.org/packages/8d/ab/9893ea9fb066be70ed9074ae543914a618c131ed8dff2da1e08b3a4df4db/pyproj-3.7.2-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:0a9bb26a6356fb5b033433a6d1b4542158fb71e3c51de49b4c318a1dff3aeaab", size = 6219832, upload-time = "2025-08-14T12:04:10.264Z" }, + { url = "https://files.pythonhosted.org/packages/53/78/4c64199146eed7184eb0e85bedec60a4aa8853b6ffe1ab1f3a8b962e70a0/pyproj-3.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:567caa03021178861fad27fabde87500ec6d2ee173dd32f3e2d9871e40eebd68", size = 4620650, upload-time = "2025-08-14T12:04:11.978Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ac/14a78d17943898a93ef4f8c6a9d4169911c994e3161e54a7cedeba9d8dde/pyproj-3.7.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:c203101d1dc3c038a56cff0447acc515dd29d6e14811406ac539c21eed422b2a", size = 9667087, upload-time = "2025-08-14T12:04:13.964Z" }, + { url = "https://files.pythonhosted.org/packages/b8/be/212882c450bba74fc8d7d35cbd57e4af84792f0a56194819d98106b075af/pyproj-3.7.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1edc34266c0c23ced85f95a1ee8b47c9035eae6aca5b6b340327250e8e281630", size = 9552797, upload-time = "2025-08-14T12:04:16.624Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c0/c0f25c87b5d2a8686341c53c1792a222a480d6c9caf60311fec12c99ec26/pyproj-3.7.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aa9f26c21bc0e2dc3d224cb1eb4020cf23e76af179a7c66fea49b828611e4260", size = 10837036, upload-time = "2025-08-14T12:04:18.733Z" }, + { url = "https://files.pythonhosted.org/packages/5d/37/5cbd6772addde2090c91113332623a86e8c7d583eccb2ad02ea634c4a89f/pyproj-3.7.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9428b318530625cb389b9ddc9c51251e172808a4af79b82809376daaeabe5e9", size = 10775952, upload-time = "2025-08-14T12:04:20.709Z" }, + { url = "https://files.pythonhosted.org/packages/69/a1/dc250e3cf83eb4b3b9a2cf86fdb5e25288bd40037ae449695550f9e96b2f/pyproj-3.7.2-cp312-cp312-win32.whl", hash = "sha256:b3d99ed57d319da042f175f4554fc7038aa4bcecc4ac89e217e350346b742c9d", size = 5898872, upload-time = "2025-08-14T12:04:22.485Z" }, + { url = "https://files.pythonhosted.org/packages/4a/a6/6fe724b72b70f2b00152d77282e14964d60ab092ec225e67c196c9b463e5/pyproj-3.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:11614a054cd86a2ed968a657d00987a86eeb91fdcbd9ad3310478685dc14a128", size = 6312176, upload-time = "2025-08-14T12:04:24.736Z" }, + { url = "https://files.pythonhosted.org/packages/5d/68/915cc32c02a91e76d02c8f55d5a138d6ef9e47a0d96d259df98f4842e558/pyproj-3.7.2-cp312-cp312-win_arm64.whl", hash = "sha256:509a146d1398bafe4f53273398c3bb0b4732535065fa995270e52a9d3676bca3", size = 6233452, upload-time = "2025-08-14T12:04:27.287Z" }, +] + +[[package]] +name = "pytest" +version = "9.0.3" +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 = "pygments" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 1572165, upload-time = "2026-04-07T17:16:18.027Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9", size = 375249, upload-time = "2026-04-07T17:16:16.13Z" }, +] + +[[package]] +name = "python-box" +version = "6.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/85/b02b80d74bdb95bfe491d49ad1627e9833c73d331edbe6eed0bdfe170361/python-box-6.1.0.tar.gz", hash = "sha256:6e7c243b356cb36e2c0f0e5ed7850969fede6aa812a7f501de7768996c7744d7", size = 41443, upload-time = "2022-10-29T22:30:45.515Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/c7/5d18ef4960a67b8d8dad9a6aa6c739da15a92b6f1e550ab7ebe040493957/python_box-6.1.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:c14aa4e72bf30f4d573e62ff8030a86548603a100c3fb534561dbedf4a83f454", size = 1120226, upload-time = "2022-10-29T22:31:54.345Z" }, + { url = "https://files.pythonhosted.org/packages/6f/32/3c865e7d62e481c46abffef3303db0d27bf2ca72e4f497d05d66939bfd4a/python_box-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab13208b053525ef154a36a4a52873b98a12b18b946edd4c939a4d5080e9a218", size = 3327115, upload-time = "2022-10-29T22:35:03.26Z" }, + { url = "https://files.pythonhosted.org/packages/69/97/e43a8ab4487f923356a0ab8b0e540448aa453a8ec9314d49dd2098952185/python_box-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:d199cd289b4f4d053770eadd70217c76214aac30b92a23adfb9627fd8558d300", size = 962296, upload-time = "2022-10-29T22:32:41.274Z" }, + { url = "https://files.pythonhosted.org/packages/d4/16/48bcaacf750fa2cc78882a53eef953c28a42e4a84f5e0b27e05d7188a92a/python_box-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ac44b3b85714a4575cc273b5dbd39ef739f938ef6c522d6757704a29e7797d16", size = 1571634, upload-time = "2022-10-29T22:32:40.118Z" }, + { url = "https://files.pythonhosted.org/packages/8b/b4/ae3736cfc3970fe6ee348620780811c016fe4c01d2d0ff4a3a19f4eff5f7/python_box-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f0036f91e13958d2b37d2bc74c1197aa36ffd66755342eb64910f63d8a2990f", size = 3546030, upload-time = "2022-10-29T22:35:05.688Z" }, + { url = "https://files.pythonhosted.org/packages/f3/7d/5cc1f3145792b803ee6debc82d1faf791659baa15c2de7b1d9318adbcd68/python_box-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:af6bcee7e1abe9251e9a41ca9ab677e1f679f6059321cfbae7e78a3831e0b736", size = 957417, upload-time = "2022-10-29T22:33:41.542Z" }, + { url = "https://files.pythonhosted.org/packages/88/c6/6d1e368710cb6c458ed692d179d7e101ebce80a3e640b2e74cc7ae886d6f/python_box-6.1.0-py3-none-any.whl", hash = "sha256:bdec0a5f5a17b01fc538d292602a077aa8c641fb121e1900dff0591791af80e8", size = 27277, upload-time = "2022-10-29T22:30:43.645Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + +[[package]] +name = "pytorch-lightning" +version = "2.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fsspec", extra = ["http"] }, + { name = "lightning-utilities" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "sys_platform != 'darwin'" }, + { name = "torchmetrics" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8b/ac/ebd5f6f58691cbd4f73836e43e1727f3814311b960c41f88e259606ca2b2/pytorch_lightning-2.6.1.tar.gz", hash = "sha256:ba08f8901cf226fcca473046ad9346f414e99117762dc869c76e650d5b3d7bdc", size = 665563, upload-time = "2026-01-30T14:59:11.636Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/93/c8c361bf0a2fe50f828f32def460e8b8a14b93955d3fd302b1a9b63b19e4/pytorch_lightning-2.6.1-py3-none-any.whl", hash = "sha256:1f8118567ec829e3055f16cf1aa320883a86a47c836951bfd9dcfa34ec7ffd59", size = 857273, upload-time = "2026-01-30T14:59:10.141Z" }, +] + +[[package]] +name = "pytz" +version = "2026.1.post1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/56/db/b8721d71d945e6a8ac63c0fc900b2067181dbb50805958d4d4661cf7d277/pytz-2026.1.post1.tar.gz", hash = "sha256:3378dde6a0c3d26719182142c56e60c7f9af7e968076f31aae569d72a0358ee1", size = 321088, upload-time = "2026-03-03T07:47:50.683Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/99/781fe0c827be2742bcc775efefccb3b048a3a9c6ce9aec0cbf4a101677e5/pytz-2026.1.post1-py2.py3-none-any.whl", hash = "sha256:f2fd16142fda348286a75e1a524be810bb05d444e5a081f37f7affc635035f7a", size = 510489, upload-time = "2026-03-03T07:47:49.167Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" }, + { url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" }, + { url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" }, + { url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" }, + { url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" }, + { url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" }, + { url = "https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size = 185826, upload-time = "2025-09-25T21:31:58.655Z" }, + { url = "https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size = 175577, upload-time = "2025-09-25T21:32:00.088Z" }, + { url = "https://files.pythonhosted.org/packages/0c/62/d2eb46264d4b157dae1275b573017abec435397aa59cbcdab6fc978a8af4/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", size = 775556, upload-time = "2025-09-25T21:32:01.31Z" }, + { url = "https://files.pythonhosted.org/packages/10/cb/16c3f2cf3266edd25aaa00d6c4350381c8b012ed6f5276675b9eba8d9ff4/pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", size = 882114, upload-time = "2025-09-25T21:32:03.376Z" }, + { url = "https://files.pythonhosted.org/packages/71/60/917329f640924b18ff085ab889a11c763e0b573da888e8404ff486657602/pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", size = 806638, upload-time = "2025-09-25T21:32:04.553Z" }, + { url = "https://files.pythonhosted.org/packages/dd/6f/529b0f316a9fd167281a6c3826b5583e6192dba792dd55e3203d3f8e655a/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", size = 767463, upload-time = "2025-09-25T21:32:06.152Z" }, + { url = "https://files.pythonhosted.org/packages/f2/6a/b627b4e0c1dd03718543519ffb2f1deea4a1e6d42fbab8021936a4d22589/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", size = 794986, upload-time = "2025-09-25T21:32:07.367Z" }, + { url = "https://files.pythonhosted.org/packages/45/91/47a6e1c42d9ee337c4839208f30d9f09caa9f720ec7582917b264defc875/pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b", size = 142543, upload-time = "2025-09-25T21:32:08.95Z" }, + { url = "https://files.pythonhosted.org/packages/da/e3/ea007450a105ae919a72393cb06f122f288ef60bba2dc64b26e2646fa315/pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", size = 158763, upload-time = "2025-09-25T21:32:09.96Z" }, + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, +] + +[[package]] +name = "rasterio" +version = "1.4.4" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version < '3.11' and sys_platform != 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "affine", marker = "python_full_version < '3.12'" }, + { name = "attrs", marker = "python_full_version < '3.12'" }, + { name = "certifi", marker = "python_full_version < '3.12'" }, + { name = "click", marker = "python_full_version < '3.12'" }, + { name = "click-plugins", marker = "python_full_version < '3.12'" }, + { name = "cligj", marker = "python_full_version < '3.12'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, + { name = "pyparsing", marker = "python_full_version < '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ec/fa/fce8dc9f09e5bc6520b6fc1b4ecfa510af9ca06eb42ad7bdff9c9b8989d0/rasterio-1.4.4.tar.gz", hash = "sha256:c95424e2c7f009b8f7df1095d645c52895cd332c0c2e1b4c2e073ea28b930320", size = 445004, upload-time = "2025-12-12T18:01:08.971Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/24/eedb9dfed1706c696b4f43ba9b85e830ce332f4f57ffcb7b6a4c4e66ade9/rasterio-1.4.4-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:35401e84d4d0b239bd62b33d4ee68d7bb13b47c3b41078f4aad7ad7964e61c73", size = 21127567, upload-time = "2025-12-12T17:58:42.664Z" }, + { url = "https://files.pythonhosted.org/packages/67/5f/482a24bf75bcd48236cd223d037f22abc6c08da6961e390e6a35249a9f58/rasterio-1.4.4-cp310-cp310-macosx_15_0_x86_64.whl", hash = "sha256:1f17fc9608b6b6666894a04e0118d3329e831a6347bc3650584d247a9d476fdd", size = 25735929, upload-time = "2025-12-12T17:58:46.503Z" }, + { url = "https://files.pythonhosted.org/packages/b0/da/b988ffb1bb37cc4cb8a028447ab654a16dbac0b339d977fb9c8adc5bd995/rasterio-1.4.4-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:1f0edb8cb30ff8f5be341583f69c115b7c36ad52bbbe7582345d32af115bc6b3", size = 34040467, upload-time = "2025-12-12T17:58:50.109Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0a/2eace22e990203d47a8fed4b174b87be50281bf3f5b2509cf3700036cbcc/rasterio-1.4.4-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:5197da0e3dd09907bdb343717a49e8fb5229ffdbff0e583b874959ec41fa9558", size = 35339947, upload-time = "2025-12-12T17:58:53.269Z" }, + { url = "https://files.pythonhosted.org/packages/40/e5/16acecbbaedd820c5d71f99f3bab73c00455078a414b511f6854364d3e1e/rasterio-1.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:15109134c7b4770e6aeb8d45dc52c2603824805ba734323268a44f5a81756a7a", size = 25708679, upload-time = "2025-12-12T17:58:56.661Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0d/d3859e49ab94464de2623fec82c6798d8d7c8bea2473cd2696fc5e09f717/rasterio-1.4.4-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:b8eea428b5f0c78a963f6003a19b60777df83a0aba8c28231d65431e32ac160e", size = 21144125, upload-time = "2025-12-12T17:58:59.511Z" }, + { url = "https://files.pythonhosted.org/packages/aa/3c/97ba4b146309cdc0e36f289b02ac69465b026a21afc828e4e4e1dc39466a/rasterio-1.4.4-cp311-cp311-macosx_15_0_x86_64.whl", hash = "sha256:1cc0ea5aa0d22f5f349aa221674481de689b7b3a99607ce6bb58a29e5be54d17", size = 25746406, upload-time = "2025-12-12T17:59:02.902Z" }, + { url = "https://files.pythonhosted.org/packages/ce/33/75f81bd837ac2336b24456fdb249597a4b9af2a212b7151f64d09022be36/rasterio-1.4.4-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:7eb25b23666b29dadfc49a59206cead62c99190584b61771bba0e95f7da06801", size = 34587242, upload-time = "2025-12-12T17:59:05.848Z" }, + { url = "https://files.pythonhosted.org/packages/f9/77/3869a426f6e752dde13f3868cdf16253ca0214f92107db79c1583c9aa07b/rasterio-1.4.4-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:e24b7b8c2df801dde2a1dffb44c58902bd76b5cab740dc11de4ff9963992a71a", size = 35881871, upload-time = "2025-12-12T17:59:09.779Z" }, + { url = "https://files.pythonhosted.org/packages/66/d0/3818859ddbd3750d0ef5a6580a3272e81764286d943c689dd41e49b8b786/rasterio-1.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:0718630f607be2f5742d8e4b34b434746fd788a192d77eefc9bb924399fea802", size = 25716477, upload-time = "2025-12-12T17:59:13.519Z" }, + { url = "https://files.pythonhosted.org/packages/4b/02/039eb4970c93aaef4c9eb1ee159abad18e6e7f932c2eed575c95f78d94f6/rasterio-1.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:0308ff4762ae9eb40a991f12d758626b59af4376b13675480391dd7295d17bbf", size = 24075993, upload-time = "2025-12-12T17:59:16.407Z" }, + { url = "https://files.pythonhosted.org/packages/4c/fc/63d89ddfcb4643730553683ee322566b9b15fe56d026e4c21c4f4f5d9d26/rasterio-1.4.4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f3c4f0cbd188f893011f2a0a6dc2852b3892799b3a0d79eddf92f2b115ec7ed7", size = 21120715, upload-time = "2025-12-12T17:59:19.35Z" }, + { url = "https://files.pythonhosted.org/packages/43/70/2c003f76a23dbb078fdee35c8e2ec490d2ad8982f4dc956ba08b56027b87/rasterio-1.4.4-cp312-cp312-macosx_15_0_x86_64.whl", hash = "sha256:6fce26090b9f509eab337228420145947c491a13628965410f25bc3e6e05cf75", size = 25732944, upload-time = "2025-12-12T17:59:22.533Z" }, + { url = "https://files.pythonhosted.org/packages/f6/cc/4a8e92362c0ff496dd1007c3dcba66e9ededf1a45eca8ad1db302b071c49/rasterio-1.4.4-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:c1c722da390dc264aeccdc0dc200ca37923875d910ca4cd5bec0fec351bb818e", size = 34295209, upload-time = "2025-12-12T17:59:26.035Z" }, + { url = "https://files.pythonhosted.org/packages/e6/6d/717d2dec47fbefad33ca0d27bd5f0d543b1d1bc9fcab5ef82a13adaaf38d/rasterio-1.4.4-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:98b6dfb8282b2a54b9d75c3dc8d2520a69bbc66916c7d43de8e0bbf6e0240ca1", size = 35661866, upload-time = "2025-12-12T17:59:29.928Z" }, + { url = "https://files.pythonhosted.org/packages/ed/60/ae3351fba2726ec0976974ce2eb030c159edd3363b8771e832b8db571c24/rasterio-1.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:9513f4c7a6d93b45098f8dff2421fa9516604e3bfbf35aa144484a88d36a321f", size = 25682853, upload-time = "2025-12-12T17:59:35.869Z" }, + { url = "https://files.pythonhosted.org/packages/38/ee/35387296bbacfc5cbbb4273228b1b959793d3ce38b0402a07f11a248420b/rasterio-1.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:60b49a482e0f12f12ce9d2cc3090add02f89f3d422e85f2cffaa9207adb83c04", size = 24043249, upload-time = "2025-12-12T17:59:39.915Z" }, +] + +[[package]] +name = "rasterio" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'win32'", + "python_full_version >= '3.12' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "affine", marker = "python_full_version >= '3.12'" }, + { name = "attrs", marker = "python_full_version >= '3.12'" }, + { name = "certifi", marker = "python_full_version >= '3.12'" }, + { name = "click", marker = "python_full_version >= '3.12'" }, + { name = "cligj", marker = "python_full_version >= '3.12'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "pyparsing", marker = "python_full_version >= '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f6/88/edb4b66b6cb2c13f123af5a3896bf70c0cbe73ab3cd4243cb4eb0212a0f6/rasterio-1.5.0.tar.gz", hash = "sha256:1e0ea56b02eea4989b36edf8e58a5a3ef40e1b7edcb04def2603accd5ab3ee7b", size = 452184, upload-time = "2026-01-05T16:06:47.169Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ac/de/ba1cd11d7d1182bfb26e758bf07016d04e5442f4f5fea35b0d7279b72399/rasterio-1.5.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:420656074897a460f5ef46f657b3061d2e004f9d99e613914b0671643e69d92c", size = 22787192, upload-time = "2026-01-05T16:05:19.779Z" }, + { url = "https://files.pythonhosted.org/packages/e6/42/efaeb6dc531dbcd02fec01c791a853bb5a139a5126ecec579ac0f735eeb9/rasterio-1.5.0-cp312-cp312-macosx_15_0_x86_64.whl", hash = "sha256:c5c3597a783857e760550e8f26365d928b0377ac5ffc3e12ba447ac65ca5406d", size = 24412221, upload-time = "2026-01-05T16:05:22.526Z" }, + { url = "https://files.pythonhosted.org/packages/a2/14/89645988424c40cbcb8334f94305ffe094dd28d85c643341d9690704c9f0/rasterio-1.5.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:e14d07a09833b6df6024ce7a57aee1e1977b3aec682e30b1e58ce773462f2382", size = 36128020, upload-time = "2026-01-05T16:05:25.556Z" }, + { url = "https://files.pythonhosted.org/packages/85/23/5a52319a98451ff910f42e5f7f4804bfb39f9327933a89daab685d1ce2dd/rasterio-1.5.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:26dbcffcf0d01fc121cbb92186bc1cb78e16efe62b17be45ad7494446b325cf8", size = 37634010, upload-time = "2026-01-05T16:05:28.673Z" }, + { url = "https://files.pythonhosted.org/packages/57/d6/fe8826f813c98b046d8d4c3bc83053c89c71f367f89257d211fe5dd0b0ba/rasterio-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:ac8d04eee66ca8060763ead607800e5611d857dd005905d920365e24a16ba20a", size = 30142328, upload-time = "2026-01-05T16:05:31.357Z" }, + { url = "https://files.pythonhosted.org/packages/af/62/6397379271d5628ed65ef781bf2d3a8f56094a86e6d8479c6ca506a1b960/rasterio-1.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:31f1edc45c781ebd087e60cc00a4fc37028dd3fe25cff4098e4139fc9d0565be", size = 28500710, upload-time = "2026-01-05T16:05:33.906Z" }, +] + +[[package]] +name = "rasterstats" +version = "0.20.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "affine" }, + { name = "click" }, + { name = "cligj" }, + { name = "fiona" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "rasterio", version = "1.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "rasterio", version = "1.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "shapely" }, + { name = "simplejson" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/3d/6a32a149e494b9b3f17edc4243843563a899b1ab4feb680f22bf688bd189/rasterstats-0.20.0.tar.gz", hash = "sha256:5b8ee775e815727767e0d359c03f3dd1c7840876d1d1d0c7a5a88ecf3e492938", size = 24017, upload-time = "2024-09-27T17:42:55.355Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/0b/bd73621d2a5f87da97158c5c77a4bf31e27d60cf6bcc6ddea532043cc21d/rasterstats-0.20.0-py3-none-any.whl", hash = "sha256:a7015e99f42807842b8638d489157639ff0cbf8e35aac9647aa3e079982b18ee", size = 17280, upload-time = "2024-09-27T17:42:53.889Z" }, +] + +[[package]] +name = "referencing" +version = "0.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766, upload-time = "2025-10-13T15:30:47.625Z" }, +] + +[[package]] +name = "regex" +version = "2026.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/0e/3a246dbf05666918bd3664d9d787f84a9108f6f43cc953a077e4a7dfdb7e/regex-2026.4.4.tar.gz", hash = "sha256:e08270659717f6973523ce3afbafa53515c4dc5dcad637dc215b6fd50f689423", size = 416000, upload-time = "2026-04-03T20:56:28.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/59/fd98f8fd54b3feaa76a855324c676c17668c5a1121ec91b7ec96b01bf865/regex-2026.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:74fa82dcc8143386c7c0392e18032009d1db715c25f4ba22d23dc2e04d02a20f", size = 489403, upload-time = "2026-04-03T20:52:39.742Z" }, + { url = "https://files.pythonhosted.org/packages/6c/64/d0f222f68e3579d50babf0e4fcc9c9639ef0587fecc00b15e1e46bfc32fa/regex-2026.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a85b620a388d6c9caa12189233109e236b3da3deffe4ff11b84ae84e218a274f", size = 291208, upload-time = "2026-04-03T20:52:42.943Z" }, + { url = "https://files.pythonhosted.org/packages/16/7f/3fab9709b0b0060ba81a04b8a107b34147cd14b9c5551b772154d6505504/regex-2026.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2895506ebe32cc63eeed8f80e6eae453171cfccccab35b70dc3129abec35a5b8", size = 289214, upload-time = "2026-04-03T20:52:44.648Z" }, + { url = "https://files.pythonhosted.org/packages/14/bc/f5dcf04fd462139dcd75495c02eee22032ef741cfa151386a39c3f5fc9b5/regex-2026.4.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6780f008ee81381c737634e75c24e5a6569cc883c4f8e37a37917ee79efcafd9", size = 785505, upload-time = "2026-04-03T20:52:46.35Z" }, + { url = "https://files.pythonhosted.org/packages/37/36/8a906e216d5b4de7ec3788c1d589b45db40c1c9580cd7b326835cfc976d4/regex-2026.4.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:88e9b048345c613f253bea4645b2fe7e579782b82cac99b1daad81e29cc2ed8e", size = 852129, upload-time = "2026-04-03T20:52:48.661Z" }, + { url = "https://files.pythonhosted.org/packages/a5/bb/bad2d79be0917a6ef31f5e0f161d9265cb56fd90a3ae1d2e8d991882a48b/regex-2026.4.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:be061028481186ba62a0f4c5f1cc1e3d5ab8bce70c89236ebe01023883bc903b", size = 899578, upload-time = "2026-04-03T20:52:50.61Z" }, + { url = "https://files.pythonhosted.org/packages/1a/b9/7cd0ceb58cd99c70806241636640ae15b4a3fe62e22e9b99afa67a0d7965/regex-2026.4.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d2228c02b368d69b724c36e96d3d1da721561fb9cc7faa373d7bf65e07d75cb5", size = 793634, upload-time = "2026-04-03T20:52:53Z" }, + { url = "https://files.pythonhosted.org/packages/2c/fb/c58e3ea40ed183806ccbac05c29a3e8c2f88c1d3a66ed27860d5cad7c62d/regex-2026.4.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0540e5b733618a2f84e9cb3e812c8afa82e151ca8e19cf6c4e95c5a65198236f", size = 786210, upload-time = "2026-04-03T20:52:54.713Z" }, + { url = "https://files.pythonhosted.org/packages/54/a9/53790fc7a6c948a7be2bc7214fd9cabdd0d1ba561b0f401c91f4ff0357f0/regex-2026.4.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cf9b1b2e692d4877880388934ac746c99552ce6bf40792a767fd42c8c99f136d", size = 769930, upload-time = "2026-04-03T20:52:56.825Z" }, + { url = "https://files.pythonhosted.org/packages/e3/3c/29ca44729191c79f5476538cd0fa04fa2553b3c45508519ecea4c7afa8f6/regex-2026.4.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:011bb48bffc1b46553ac704c975b3348717f4e4aa7a67522b51906f99da1820c", size = 774892, upload-time = "2026-04-03T20:52:58.934Z" }, + { url = "https://files.pythonhosted.org/packages/3e/db/6ae74ef8a4cfead341c367e4eed45f71fb1aaba35827a775eed4f1ba4f74/regex-2026.4.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8512fcdb43f1bf18582698a478b5ab73f9c1667a5b7548761329ef410cd0a760", size = 848816, upload-time = "2026-04-03T20:53:00.684Z" }, + { url = "https://files.pythonhosted.org/packages/53/9a/f7f2c1c6b610d7c6de1c3dc5951effd92c324b1fde761af2044b4721020f/regex-2026.4.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:867bddc63109a0276f5a31999e4c8e0eb7bbbad7d6166e28d969a2c1afeb97f9", size = 758363, upload-time = "2026-04-03T20:53:02.155Z" }, + { url = "https://files.pythonhosted.org/packages/dd/55/e5386d393bbf8b43c8b084703a46d635e7b2bdc6e0f5909a2619ea1125f1/regex-2026.4.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1b9a00b83f3a40e09859c78920571dcb83293c8004079653dd22ec14bbfa98c7", size = 837122, upload-time = "2026-04-03T20:53:03.727Z" }, + { url = "https://files.pythonhosted.org/packages/01/da/cc78710ea2e60b10bacfcc9beb18c67514200ab03597b3b2b319995785c2/regex-2026.4.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e355be718caf838aa089870259cf1776dc2a4aa980514af9d02c59544d9a8b22", size = 782140, upload-time = "2026-04-03T20:53:05.608Z" }, + { url = "https://files.pythonhosted.org/packages/a2/5f/c7bcba41529105d6c2ca7080ecab7184cd00bee2e1ad1fdea80e618704ea/regex-2026.4.4-cp310-cp310-win32.whl", hash = "sha256:33bfda9684646d323414df7abe5692c61d297dbb0530b28ec66442e768813c59", size = 266225, upload-time = "2026-04-03T20:53:07.342Z" }, + { url = "https://files.pythonhosted.org/packages/eb/26/a745729c2c49354ec4f4bce168f29da932ca01b4758227686cc16c7dde1b/regex-2026.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:0709f22a56798457ae317bcce42aacee33c680068a8f14097430d9f9ba364bee", size = 278393, upload-time = "2026-04-03T20:53:08.65Z" }, + { url = "https://files.pythonhosted.org/packages/87/8b/4327eeb9dbb4b098ebecaf02e9f82b79b6077beeb54c43d9a0660cf7c44c/regex-2026.4.4-cp310-cp310-win_arm64.whl", hash = "sha256:ee9627de8587c1a22201cb16d0296ab92b4df5cdcb5349f4e9744d61db7c7c98", size = 270470, upload-time = "2026-04-03T20:53:10.018Z" }, + { url = "https://files.pythonhosted.org/packages/e0/7a/617356cbecdb452812a5d42f720d6d5096b360d4a4c1073af700ea140ad2/regex-2026.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b4c36a85b00fadb85db9d9e90144af0a980e1a3d2ef9cd0f8a5bef88054657c6", size = 489415, upload-time = "2026-04-03T20:53:11.645Z" }, + { url = "https://files.pythonhosted.org/packages/20/e6/bf057227144d02e3ba758b66649e87531d744dda5f3254f48660f18ae9d8/regex-2026.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dcb5453ecf9cd58b562967badd1edbf092b0588a3af9e32ee3d05c985077ce87", size = 291205, upload-time = "2026-04-03T20:53:13.289Z" }, + { url = "https://files.pythonhosted.org/packages/eb/3b/637181b787dd1a820ba1c712cee2b4144cd84a32dc776ca067b12b2d70c8/regex-2026.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6aa809ed4dc3706cc38594d67e641601bd2f36d5555b2780ff074edfcb136cf8", size = 289225, upload-time = "2026-04-03T20:53:16.002Z" }, + { url = "https://files.pythonhosted.org/packages/05/21/bac05d806ed02cd4b39d9c8e5b5f9a2998c94c3a351b7792e80671fa5315/regex-2026.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:33424f5188a7db12958246a54f59a435b6cb62c5cf9c8d71f7cc49475a5fdada", size = 792434, upload-time = "2026-04-03T20:53:17.414Z" }, + { url = "https://files.pythonhosted.org/packages/d9/17/c65d1d8ae90b772d5758eb4014e1e011bb2db353fc4455432e6cc9100df7/regex-2026.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7d346fccdde28abba117cc9edc696b9518c3307fbfcb689e549d9b5979018c6d", size = 861730, upload-time = "2026-04-03T20:53:18.903Z" }, + { url = "https://files.pythonhosted.org/packages/ad/64/933321aa082a2c6ee2785f22776143ba89840189c20d3b6b1d12b6aae16b/regex-2026.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:415a994b536440f5011aa77e50a4274d15da3245e876e5c7f19da349caaedd87", size = 906495, upload-time = "2026-04-03T20:53:20.561Z" }, + { url = "https://files.pythonhosted.org/packages/01/ea/4c8d306e9c36ac22417336b1e02e7b358152c34dc379673f2d331143725f/regex-2026.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:21e5eb86179b4c67b5759d452ea7c48eb135cd93308e7a260aa489ed2eb423a4", size = 799810, upload-time = "2026-04-03T20:53:22.961Z" }, + { url = "https://files.pythonhosted.org/packages/29/ce/7605048f00e1379eba89d610c7d644d8f695dc9b26d3b6ecfa3132b872ff/regex-2026.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:312ec9dd1ae7d96abd8c5a36a552b2139931914407d26fba723f9e53c8186f86", size = 774242, upload-time = "2026-04-03T20:53:25.015Z" }, + { url = "https://files.pythonhosted.org/packages/e9/77/283e0d5023fde22cd9e86190d6d9beb21590a452b195ffe00274de470691/regex-2026.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0d2b28aa1354c7cd7f71b7658c4326f7facac106edd7f40eda984424229fd59", size = 781257, upload-time = "2026-04-03T20:53:26.918Z" }, + { url = "https://files.pythonhosted.org/packages/8b/fb/7f3b772be101373c8626ed34c5d727dcbb8abd42a7b1219bc25fd9a3cc04/regex-2026.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:349d7310eddff40429a099c08d995c6d4a4bfaf3ff40bd3b5e5cb5a5a3c7d453", size = 854490, upload-time = "2026-04-03T20:53:29.065Z" }, + { url = "https://files.pythonhosted.org/packages/85/30/56547b80f34f4dd2986e1cdd63b1712932f63b6c4ce2f79c50a6cd79d1c2/regex-2026.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:e7ab63e9fe45a9ec3417509e18116b367e89c9ceb6219222a3396fa30b147f80", size = 763544, upload-time = "2026-04-03T20:53:30.917Z" }, + { url = "https://files.pythonhosted.org/packages/ac/2f/ce060fdfea8eff34a8997603532e44cdb7d1f35e3bc253612a8707a90538/regex-2026.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fe896e07a5a2462308297e515c0054e9ec2dd18dfdc9427b19900b37dfe6f40b", size = 844442, upload-time = "2026-04-03T20:53:32.463Z" }, + { url = "https://files.pythonhosted.org/packages/e5/44/810cb113096a1dacbe82789fbfab2823f79d19b7f1271acecb7009ba9b88/regex-2026.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:eb59c65069498dbae3c0ef07bbe224e1eaa079825a437fb47a479f0af11f774f", size = 789162, upload-time = "2026-04-03T20:53:34.039Z" }, + { url = "https://files.pythonhosted.org/packages/20/96/9647dd7f2ecf6d9ce1fb04dfdb66910d094e10d8fe53e9c15096d8aa0bd2/regex-2026.4.4-cp311-cp311-win32.whl", hash = "sha256:2a5d273181b560ef8397c8825f2b9d57013de744da9e8257b8467e5da8599351", size = 266227, upload-time = "2026-04-03T20:53:35.601Z" }, + { url = "https://files.pythonhosted.org/packages/33/80/74e13262460530c3097ff343a17de9a34d040a5dc4de9cf3a8241faab51c/regex-2026.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:9542ccc1e689e752594309444081582f7be2fdb2df75acafea8a075108566735", size = 278399, upload-time = "2026-04-03T20:53:37.021Z" }, + { url = "https://files.pythonhosted.org/packages/1c/3c/39f19f47f19dcefa3403f09d13562ca1c0fd07ab54db2bc03148f3f6b46a/regex-2026.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:b5f9fb784824a042be3455b53d0b112655686fdb7a91f88f095f3fee1e2a2a54", size = 270473, upload-time = "2026-04-03T20:53:38.633Z" }, + { url = "https://files.pythonhosted.org/packages/e5/28/b972a4d3df61e1d7bcf1b59fdb3cddef22f88b6be43f161bb41ebc0e4081/regex-2026.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c07ab8794fa929e58d97a0e1796b8b76f70943fa39df225ac9964615cf1f9d52", size = 490434, upload-time = "2026-04-03T20:53:40.219Z" }, + { url = "https://files.pythonhosted.org/packages/84/20/30041446cf6dc3e0eab344fc62770e84c23b6b68a3b657821f9f80cb69b4/regex-2026.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2c785939dc023a1ce4ec09599c032cc9933d258a998d16ca6f2b596c010940eb", size = 292061, upload-time = "2026-04-03T20:53:41.862Z" }, + { url = "https://files.pythonhosted.org/packages/62/c8/3baa06d75c98c46d4cc4262b71fd2edb9062b5665e868bca57859dadf93a/regex-2026.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b1ce5c81c9114f1ce2f9288a51a8fd3aeea33a0cc440c415bf02da323aa0a76", size = 289628, upload-time = "2026-04-03T20:53:43.701Z" }, + { url = "https://files.pythonhosted.org/packages/31/87/3accf55634caad8c0acab23f5135ef7d4a21c39f28c55c816ae012931408/regex-2026.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:760ef21c17d8e6a4fe8cf406a97cf2806a4df93416ccc82fc98d25b1c20425be", size = 796651, upload-time = "2026-04-03T20:53:45.379Z" }, + { url = "https://files.pythonhosted.org/packages/f6/0c/aaa2c83f34efedbf06f61cb1942c25f6cf1ee3b200f832c4d05f28306c2e/regex-2026.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7088fcdcb604a4417c208e2169715800d28838fefd7455fbe40416231d1d47c1", size = 865916, upload-time = "2026-04-03T20:53:47.064Z" }, + { url = "https://files.pythonhosted.org/packages/d9/f6/8c6924c865124643e8f37823eca845dc27ac509b2ee58123685e71cd0279/regex-2026.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:07edca1ba687998968f7db5bc355288d0c6505caa7374f013d27356d93976d13", size = 912287, upload-time = "2026-04-03T20:53:49.422Z" }, + { url = "https://files.pythonhosted.org/packages/11/0e/a9f6f81013e0deaf559b25711623864970fe6a098314e374ccb1540a4152/regex-2026.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:993f657a7c1c6ec51b5e0ba97c9817d06b84ea5fa8d82e43b9405de0defdc2b9", size = 801126, upload-time = "2026-04-03T20:53:51.096Z" }, + { url = "https://files.pythonhosted.org/packages/71/61/3a0cc8af2dc0c8deb48e644dd2521f173f7e6513c6e195aad9aa8dd77ac5/regex-2026.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:2b69102a743e7569ebee67e634a69c4cb7e59d6fa2e1aa7d3bdbf3f61435f62d", size = 776788, upload-time = "2026-04-03T20:53:52.889Z" }, + { url = "https://files.pythonhosted.org/packages/64/0b/8bb9cbf21ef7dee58e49b0fdb066a7aded146c823202e16494a36777594f/regex-2026.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dac006c8b6dda72d86ea3d1333d45147de79a3a3f26f10c1cf9287ca4ca0ac3", size = 785184, upload-time = "2026-04-03T20:53:55.627Z" }, + { url = "https://files.pythonhosted.org/packages/99/c2/d3e80e8137b25ee06c92627de4e4d98b94830e02b3e6f81f3d2e3f504cf5/regex-2026.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:50a766ee2010d504554bfb5f578ed2e066898aa26411d57e6296230627cdefa0", size = 859913, upload-time = "2026-04-03T20:53:57.249Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e6/9d5d876157d969c804622456ef250017ac7a8f83e0e14f903b9e6df5ce95/regex-2026.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:9e2f5217648f68e3028c823df58663587c1507a5ba8419f4fdfc8a461be76043", size = 765732, upload-time = "2026-04-03T20:53:59.428Z" }, + { url = "https://files.pythonhosted.org/packages/82/80/b568935b4421388561c8ed42aff77247285d3ae3bb2a6ca22af63bae805e/regex-2026.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:39d8de85a08e32632974151ba59c6e9140646dcc36c80423962b1c5c0a92e244", size = 852152, upload-time = "2026-04-03T20:54:01.505Z" }, + { url = "https://files.pythonhosted.org/packages/39/29/f0f81217e21cd998245da047405366385d5c6072048038a3d33b37a79dc0/regex-2026.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:55d9304e0e7178dfb1e106c33edf834097ddf4a890e2f676f6c5118f84390f73", size = 789076, upload-time = "2026-04-03T20:54:03.323Z" }, + { url = "https://files.pythonhosted.org/packages/49/1d/1d957a61976ab9d4e767dd4f9d04b66cc0c41c5e36cf40e2d43688b5ae6f/regex-2026.4.4-cp312-cp312-win32.whl", hash = "sha256:04bb679bc0bde8a7bfb71e991493d47314e7b98380b083df2447cda4b6edb60f", size = 266700, upload-time = "2026-04-03T20:54:05.639Z" }, + { url = "https://files.pythonhosted.org/packages/c5/5c/bf575d396aeb58ea13b06ef2adf624f65b70fafef6950a80fc3da9cae3bc/regex-2026.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:db0ac18435a40a2543dbb3d21e161a6c78e33e8159bd2e009343d224bb03bb1b", size = 277768, upload-time = "2026-04-03T20:54:07.312Z" }, + { url = "https://files.pythonhosted.org/packages/c9/27/049df16ec6a6828ccd72add3c7f54b4df029669bea8e9817df6fff58be90/regex-2026.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:4ce255cc05c1947a12989c6db801c96461947adb7a59990f1360b5983fab4983", size = 270568, upload-time = "2026-04-03T20:54:09.484Z" }, +] + +[[package]] +name = "requests" +version = "2.33.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5f/a4/98b9c7c6428a668bf7e42ebb7c79d576a1c3c1e3ae2d47e674b468388871/requests-2.33.1.tar.gz", hash = "sha256:18817f8c57c6263968bc123d237e3b8b08ac046f5456bd1e307ee8f4250d3517", size = 134120, upload-time = "2026-03-30T16:09:15.531Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl", hash = "sha256:4e6d1ef462f3626a1f0a0a9c42dd93c63bad33f9f1c1937509b8c5c8718ab56a", size = 64947, upload-time = "2026-03-30T16:09:13.83Z" }, +] + +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888, upload-time = "2023-05-01T04:11:33.229Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481, upload-time = "2023-05-01T04:11:28.427Z" }, +] + +[[package]] +name = "rich" +version = "15.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/0722ca900cc807c13a6a0c696dacf35430f72e0ec571c4275d2371fca3e9/rich-15.0.0.tar.gz", hash = "sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36", size = 230680, upload-time = "2026-04-12T08:24:00.75Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl", hash = "sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb", size = 310654, upload-time = "2026-04-12T08:24:02.83Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.30.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/af/3f2f423103f1113b36230496629986e0ef7e199d2aa8392452b484b38ced/rpds_py-0.30.0.tar.gz", hash = "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84", size = 69469, upload-time = "2025-11-30T20:24:38.837Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/0c/0c411a0ec64ccb6d104dcabe0e713e05e153a9a2c3c2bd2b32ce412166fe/rpds_py-0.30.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:679ae98e00c0e8d68a7fda324e16b90fd5260945b45d3b824c892cec9eea3288", size = 370490, upload-time = "2025-11-30T20:21:33.256Z" }, + { url = "https://files.pythonhosted.org/packages/19/6a/4ba3d0fb7297ebae71171822554abe48d7cab29c28b8f9f2c04b79988c05/rpds_py-0.30.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4cc2206b76b4f576934f0ed374b10d7ca5f457858b157ca52064bdfc26b9fc00", size = 359751, upload-time = "2025-11-30T20:21:34.591Z" }, + { url = "https://files.pythonhosted.org/packages/cd/7c/e4933565ef7f7a0818985d87c15d9d273f1a649afa6a52ea35ad011195ea/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:389a2d49eded1896c3d48b0136ead37c48e221b391c052fba3f4055c367f60a6", size = 389696, upload-time = "2025-11-30T20:21:36.122Z" }, + { url = "https://files.pythonhosted.org/packages/5e/01/6271a2511ad0815f00f7ed4390cf2567bec1d4b1da39e2c27a41e6e3b4de/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:32c8528634e1bf7121f3de08fa85b138f4e0dc47657866630611b03967f041d7", size = 403136, upload-time = "2025-11-30T20:21:37.728Z" }, + { url = "https://files.pythonhosted.org/packages/55/64/c857eb7cd7541e9b4eee9d49c196e833128a55b89a9850a9c9ac33ccf897/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f207f69853edd6f6700b86efb84999651baf3789e78a466431df1331608e5324", size = 524699, upload-time = "2025-11-30T20:21:38.92Z" }, + { url = "https://files.pythonhosted.org/packages/9c/ed/94816543404078af9ab26159c44f9e98e20fe47e2126d5d32c9d9948d10a/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:67b02ec25ba7a9e8fa74c63b6ca44cf5707f2fbfadae3ee8e7494297d56aa9df", size = 412022, upload-time = "2025-11-30T20:21:40.407Z" }, + { url = "https://files.pythonhosted.org/packages/61/b5/707f6cf0066a6412aacc11d17920ea2e19e5b2f04081c64526eb35b5c6e7/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0e95f6819a19965ff420f65578bacb0b00f251fefe2c8b23347c37174271f3", size = 390522, upload-time = "2025-11-30T20:21:42.17Z" }, + { url = "https://files.pythonhosted.org/packages/13/4e/57a85fda37a229ff4226f8cbcf09f2a455d1ed20e802ce5b2b4a7f5ed053/rpds_py-0.30.0-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:a452763cc5198f2f98898eb98f7569649fe5da666c2dc6b5ddb10fde5a574221", size = 404579, upload-time = "2025-11-30T20:21:43.769Z" }, + { url = "https://files.pythonhosted.org/packages/f9/da/c9339293513ec680a721e0e16bf2bac3db6e5d7e922488de471308349bba/rpds_py-0.30.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e0b65193a413ccc930671c55153a03ee57cecb49e6227204b04fae512eb657a7", size = 421305, upload-time = "2025-11-30T20:21:44.994Z" }, + { url = "https://files.pythonhosted.org/packages/f9/be/522cb84751114f4ad9d822ff5a1aa3c98006341895d5f084779b99596e5c/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:858738e9c32147f78b3ac24dc0edb6610000e56dc0f700fd5f651d0a0f0eb9ff", size = 572503, upload-time = "2025-11-30T20:21:46.91Z" }, + { url = "https://files.pythonhosted.org/packages/a2/9b/de879f7e7ceddc973ea6e4629e9b380213a6938a249e94b0cdbcc325bb66/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:da279aa314f00acbb803da1e76fa18666778e8a8f83484fba94526da5de2cba7", size = 598322, upload-time = "2025-11-30T20:21:48.709Z" }, + { url = "https://files.pythonhosted.org/packages/48/ac/f01fc22efec3f37d8a914fc1b2fb9bcafd56a299edbe96406f3053edea5a/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7c64d38fb49b6cdeda16ab49e35fe0da2e1e9b34bc38bd78386530f218b37139", size = 560792, upload-time = "2025-11-30T20:21:50.024Z" }, + { url = "https://files.pythonhosted.org/packages/e2/da/4e2b19d0f131f35b6146425f846563d0ce036763e38913d917187307a671/rpds_py-0.30.0-cp310-cp310-win32.whl", hash = "sha256:6de2a32a1665b93233cde140ff8b3467bdb9e2af2b91079f0333a0974d12d464", size = 221901, upload-time = "2025-11-30T20:21:51.32Z" }, + { url = "https://files.pythonhosted.org/packages/96/cb/156d7a5cf4f78a7cc571465d8aec7a3c447c94f6749c5123f08438bcf7bc/rpds_py-0.30.0-cp310-cp310-win_amd64.whl", hash = "sha256:1726859cd0de969f88dc8673bdd954185b9104e05806be64bcd87badbe313169", size = 235823, upload-time = "2025-11-30T20:21:52.505Z" }, + { url = "https://files.pythonhosted.org/packages/4d/6e/f964e88b3d2abee2a82c1ac8366da848fce1c6d834dc2132c3fda3970290/rpds_py-0.30.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a2bffea6a4ca9f01b3f8e548302470306689684e61602aa3d141e34da06cf425", size = 370157, upload-time = "2025-11-30T20:21:53.789Z" }, + { url = "https://files.pythonhosted.org/packages/94/ba/24e5ebb7c1c82e74c4e4f33b2112a5573ddc703915b13a073737b59b86e0/rpds_py-0.30.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dc4f992dfe1e2bc3ebc7444f6c7051b4bc13cd8e33e43511e8ffd13bf407010d", size = 359676, upload-time = "2025-11-30T20:21:55.475Z" }, + { url = "https://files.pythonhosted.org/packages/84/86/04dbba1b087227747d64d80c3b74df946b986c57af0a9f0c98726d4d7a3b/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:422c3cb9856d80b09d30d2eb255d0754b23e090034e1deb4083f8004bd0761e4", size = 389938, upload-time = "2025-11-30T20:21:57.079Z" }, + { url = "https://files.pythonhosted.org/packages/42/bb/1463f0b1722b7f45431bdd468301991d1328b16cffe0b1c2918eba2c4eee/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07ae8a593e1c3c6b82ca3292efbe73c30b61332fd612e05abee07c79359f292f", size = 402932, upload-time = "2025-11-30T20:21:58.47Z" }, + { url = "https://files.pythonhosted.org/packages/99/ee/2520700a5c1f2d76631f948b0736cdf9b0acb25abd0ca8e889b5c62ac2e3/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12f90dd7557b6bd57f40abe7747e81e0c0b119bef015ea7726e69fe550e394a4", size = 525830, upload-time = "2025-11-30T20:21:59.699Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ad/bd0331f740f5705cc555a5e17fdf334671262160270962e69a2bdef3bf76/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99b47d6ad9a6da00bec6aabe5a6279ecd3c06a329d4aa4771034a21e335c3a97", size = 412033, upload-time = "2025-11-30T20:22:00.991Z" }, + { url = "https://files.pythonhosted.org/packages/f8/1e/372195d326549bb51f0ba0f2ecb9874579906b97e08880e7a65c3bef1a99/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33f559f3104504506a44bb666b93a33f5d33133765b0c216a5bf2f1e1503af89", size = 390828, upload-time = "2025-11-30T20:22:02.723Z" }, + { url = "https://files.pythonhosted.org/packages/ab/2b/d88bb33294e3e0c76bc8f351a3721212713629ffca1700fa94979cb3eae8/rpds_py-0.30.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:946fe926af6e44f3697abbc305ea168c2c31d3e3ef1058cf68f379bf0335a78d", size = 404683, upload-time = "2025-11-30T20:22:04.367Z" }, + { url = "https://files.pythonhosted.org/packages/50/32/c759a8d42bcb5289c1fac697cd92f6fe01a018dd937e62ae77e0e7f15702/rpds_py-0.30.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:495aeca4b93d465efde585977365187149e75383ad2684f81519f504f5c13038", size = 421583, upload-time = "2025-11-30T20:22:05.814Z" }, + { url = "https://files.pythonhosted.org/packages/2b/81/e729761dbd55ddf5d84ec4ff1f47857f4374b0f19bdabfcf929164da3e24/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9a0ca5da0386dee0655b4ccdf46119df60e0f10da268d04fe7cc87886872ba7", size = 572496, upload-time = "2025-11-30T20:22:07.713Z" }, + { url = "https://files.pythonhosted.org/packages/14/f6/69066a924c3557c9c30baa6ec3a0aa07526305684c6f86c696b08860726c/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8d6d1cc13664ec13c1b84241204ff3b12f9bb82464b8ad6e7a5d3486975c2eed", size = 598669, upload-time = "2025-11-30T20:22:09.312Z" }, + { url = "https://files.pythonhosted.org/packages/5f/48/905896b1eb8a05630d20333d1d8ffd162394127b74ce0b0784ae04498d32/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3896fa1be39912cf0757753826bc8bdc8ca331a28a7c4ae46b7a21280b06bb85", size = 561011, upload-time = "2025-11-30T20:22:11.309Z" }, + { url = "https://files.pythonhosted.org/packages/22/16/cd3027c7e279d22e5eb431dd3c0fbc677bed58797fe7581e148f3f68818b/rpds_py-0.30.0-cp311-cp311-win32.whl", hash = "sha256:55f66022632205940f1827effeff17c4fa7ae1953d2b74a8581baaefb7d16f8c", size = 221406, upload-time = "2025-11-30T20:22:13.101Z" }, + { url = "https://files.pythonhosted.org/packages/fa/5b/e7b7aa136f28462b344e652ee010d4de26ee9fd16f1bfd5811f5153ccf89/rpds_py-0.30.0-cp311-cp311-win_amd64.whl", hash = "sha256:a51033ff701fca756439d641c0ad09a41d9242fa69121c7d8769604a0a629825", size = 236024, upload-time = "2025-11-30T20:22:14.853Z" }, + { url = "https://files.pythonhosted.org/packages/14/a6/364bba985e4c13658edb156640608f2c9e1d3ea3c81b27aa9d889fff0e31/rpds_py-0.30.0-cp311-cp311-win_arm64.whl", hash = "sha256:47b0ef6231c58f506ef0b74d44e330405caa8428e770fec25329ed2cb971a229", size = 229069, upload-time = "2025-11-30T20:22:16.577Z" }, + { url = "https://files.pythonhosted.org/packages/03/e7/98a2f4ac921d82f33e03f3835f5bf3a4a40aa1bfdc57975e74a97b2b4bdd/rpds_py-0.30.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a161f20d9a43006833cd7068375a94d035714d73a172b681d8881820600abfad", size = 375086, upload-time = "2025-11-30T20:22:17.93Z" }, + { url = "https://files.pythonhosted.org/packages/4d/a1/bca7fd3d452b272e13335db8d6b0b3ecde0f90ad6f16f3328c6fb150c889/rpds_py-0.30.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6abc8880d9d036ecaafe709079969f56e876fcf107f7a8e9920ba6d5a3878d05", size = 359053, upload-time = "2025-11-30T20:22:19.297Z" }, + { url = "https://files.pythonhosted.org/packages/65/1c/ae157e83a6357eceff62ba7e52113e3ec4834a84cfe07fa4b0757a7d105f/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca28829ae5f5d569bb62a79512c842a03a12576375d5ece7d2cadf8abe96ec28", size = 390763, upload-time = "2025-11-30T20:22:21.661Z" }, + { url = "https://files.pythonhosted.org/packages/d4/36/eb2eb8515e2ad24c0bd43c3ee9cd74c33f7ca6430755ccdb240fd3144c44/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1010ed9524c73b94d15919ca4d41d8780980e1765babf85f9a2f90d247153dd", size = 408951, upload-time = "2025-11-30T20:22:23.408Z" }, + { url = "https://files.pythonhosted.org/packages/d6/65/ad8dc1784a331fabbd740ef6f71ce2198c7ed0890dab595adb9ea2d775a1/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8d1736cfb49381ba528cd5baa46f82fdc65c06e843dab24dd70b63d09121b3f", size = 514622, upload-time = "2025-11-30T20:22:25.16Z" }, + { url = "https://files.pythonhosted.org/packages/63/8e/0cfa7ae158e15e143fe03993b5bcd743a59f541f5952e1546b1ac1b5fd45/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d948b135c4693daff7bc2dcfc4ec57237a29bd37e60c2fabf5aff2bbacf3e2f1", size = 414492, upload-time = "2025-11-30T20:22:26.505Z" }, + { url = "https://files.pythonhosted.org/packages/60/1b/6f8f29f3f995c7ffdde46a626ddccd7c63aefc0efae881dc13b6e5d5bb16/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47f236970bccb2233267d89173d3ad2703cd36a0e2a6e92d0560d333871a3d23", size = 394080, upload-time = "2025-11-30T20:22:27.934Z" }, + { url = "https://files.pythonhosted.org/packages/6d/d5/a266341051a7a3ca2f4b750a3aa4abc986378431fc2da508c5034d081b70/rpds_py-0.30.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:2e6ecb5a5bcacf59c3f912155044479af1d0b6681280048b338b28e364aca1f6", size = 408680, upload-time = "2025-11-30T20:22:29.341Z" }, + { url = "https://files.pythonhosted.org/packages/10/3b/71b725851df9ab7a7a4e33cf36d241933da66040d195a84781f49c50490c/rpds_py-0.30.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a8fa71a2e078c527c3e9dc9fc5a98c9db40bcc8a92b4e8858e36d329f8684b51", size = 423589, upload-time = "2025-11-30T20:22:31.469Z" }, + { url = "https://files.pythonhosted.org/packages/00/2b/e59e58c544dc9bd8bd8384ecdb8ea91f6727f0e37a7131baeff8d6f51661/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:73c67f2db7bc334e518d097c6d1e6fed021bbc9b7d678d6cc433478365d1d5f5", size = 573289, upload-time = "2025-11-30T20:22:32.997Z" }, + { url = "https://files.pythonhosted.org/packages/da/3e/a18e6f5b460893172a7d6a680e86d3b6bc87a54c1f0b03446a3c8c7b588f/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5ba103fb455be00f3b1c2076c9d4264bfcb037c976167a6047ed82f23153f02e", size = 599737, upload-time = "2025-11-30T20:22:34.419Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e2/714694e4b87b85a18e2c243614974413c60aa107fd815b8cbc42b873d1d7/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7cee9c752c0364588353e627da8a7e808a66873672bcb5f52890c33fd965b394", size = 563120, upload-time = "2025-11-30T20:22:35.903Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ab/d5d5e3bcedb0a77f4f613706b750e50a5a3ba1c15ccd3665ecc636c968fd/rpds_py-0.30.0-cp312-cp312-win32.whl", hash = "sha256:1ab5b83dbcf55acc8b08fc62b796ef672c457b17dbd7820a11d6c52c06839bdf", size = 223782, upload-time = "2025-11-30T20:22:37.271Z" }, + { url = "https://files.pythonhosted.org/packages/39/3b/f786af9957306fdc38a74cef405b7b93180f481fb48453a114bb6465744a/rpds_py-0.30.0-cp312-cp312-win_amd64.whl", hash = "sha256:a090322ca841abd453d43456ac34db46e8b05fd9b3b4ac0c78bcde8b089f959b", size = 240463, upload-time = "2025-11-30T20:22:39.021Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d2/b91dc748126c1559042cfe41990deb92c4ee3e2b415f6b5234969ffaf0cc/rpds_py-0.30.0-cp312-cp312-win_arm64.whl", hash = "sha256:669b1805bd639dd2989b281be2cfd951c6121b65e729d9b843e9639ef1fd555e", size = 230868, upload-time = "2025-11-30T20:22:40.493Z" }, + { url = "https://files.pythonhosted.org/packages/69/71/3f34339ee70521864411f8b6992e7ab13ac30d8e4e3309e07c7361767d91/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c2262bdba0ad4fc6fb5545660673925c2d2a5d9e2e0fb603aad545427be0fc58", size = 372292, upload-time = "2025-11-30T20:24:16.537Z" }, + { url = "https://files.pythonhosted.org/packages/57/09/f183df9b8f2d66720d2ef71075c59f7e1b336bec7ee4c48f0a2b06857653/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ee6af14263f25eedc3bb918a3c04245106a42dfd4f5c2285ea6f997b1fc3f89a", size = 362128, upload-time = "2025-11-30T20:24:18.086Z" }, + { url = "https://files.pythonhosted.org/packages/7a/68/5c2594e937253457342e078f0cc1ded3dd7b2ad59afdbf2d354869110a02/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3adbb8179ce342d235c31ab8ec511e66c73faa27a47e076ccc92421add53e2bb", size = 391542, upload-time = "2025-11-30T20:24:20.092Z" }, + { url = "https://files.pythonhosted.org/packages/49/5c/31ef1afd70b4b4fbdb2800249f34c57c64beb687495b10aec0365f53dfc4/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:250fa00e9543ac9b97ac258bd37367ff5256666122c2d0f2bc97577c60a1818c", size = 404004, upload-time = "2025-11-30T20:24:22.231Z" }, + { url = "https://files.pythonhosted.org/packages/e3/63/0cfbea38d05756f3440ce6534d51a491d26176ac045e2707adc99bb6e60a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9854cf4f488b3d57b9aaeb105f06d78e5529d3145b1e4a41750167e8c213c6d3", size = 527063, upload-time = "2025-11-30T20:24:24.302Z" }, + { url = "https://files.pythonhosted.org/packages/42/e6/01e1f72a2456678b0f618fc9a1a13f882061690893c192fcad9f2926553a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:993914b8e560023bc0a8bf742c5f303551992dcb85e247b1e5c7f4a7d145bda5", size = 413099, upload-time = "2025-11-30T20:24:25.916Z" }, + { url = "https://files.pythonhosted.org/packages/b8/25/8df56677f209003dcbb180765520c544525e3ef21ea72279c98b9aa7c7fb/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58edca431fb9b29950807e301826586e5bbf24163677732429770a697ffe6738", size = 392177, upload-time = "2025-11-30T20:24:27.834Z" }, + { url = "https://files.pythonhosted.org/packages/4a/b4/0a771378c5f16f8115f796d1f437950158679bcd2a7c68cf251cfb00ed5b/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:dea5b552272a944763b34394d04577cf0f9bd013207bc32323b5a89a53cf9c2f", size = 406015, upload-time = "2025-11-30T20:24:29.457Z" }, + { url = "https://files.pythonhosted.org/packages/36/d8/456dbba0af75049dc6f63ff295a2f92766b9d521fa00de67a2bd6427d57a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ba3af48635eb83d03f6c9735dfb21785303e73d22ad03d489e88adae6eab8877", size = 423736, upload-time = "2025-11-30T20:24:31.22Z" }, + { url = "https://files.pythonhosted.org/packages/13/64/b4d76f227d5c45a7e0b796c674fd81b0a6c4fbd48dc29271857d8219571c/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:dff13836529b921e22f15cb099751209a60009731a68519630a24d61f0b1b30a", size = 573981, upload-time = "2025-11-30T20:24:32.934Z" }, + { url = "https://files.pythonhosted.org/packages/20/91/092bacadeda3edf92bf743cc96a7be133e13a39cdbfd7b5082e7ab638406/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1b151685b23929ab7beec71080a8889d4d6d9fa9a983d213f07121205d48e2c4", size = 599782, upload-time = "2025-11-30T20:24:35.169Z" }, + { url = "https://files.pythonhosted.org/packages/d1/b7/b95708304cd49b7b6f82fdd039f1748b66ec2b21d6a45180910802f1abf1/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ac37f9f516c51e5753f27dfdef11a88330f04de2d564be3991384b2f3535d02e", size = 562191, upload-time = "2025-11-30T20:24:36.853Z" }, +] + +[[package]] +name = "ruff" +version = "0.15.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/8d/192f3d7103816158dfd5ea50d098ef2aec19194e6cbccd4b3485bdb2eb2d/ruff-0.15.11.tar.gz", hash = "sha256:f092b21708bf0e7437ce9ada249dfe688ff9a0954fc94abab05dcea7dcd29c33", size = 4637264, upload-time = "2026-04-16T18:46:26.58Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/1e/6aca3427f751295ab011828e15e9bf452200ac74484f1db4be0197b8170b/ruff-0.15.11-py3-none-linux_armv6l.whl", hash = "sha256:e927cfff503135c558eb581a0c9792264aae9507904eb27809cdcff2f2c847b7", size = 10607943, upload-time = "2026-04-16T18:46:05.967Z" }, + { url = "https://files.pythonhosted.org/packages/e7/26/1341c262e74f36d4e84f3d6f4df0ac68cd53331a66bfc5080daa17c84c0b/ruff-0.15.11-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:7a1b5b2938d8f890b76084d4fa843604d787a912541eae85fd7e233398bbb73e", size = 10988592, upload-time = "2026-04-16T18:46:00.742Z" }, + { url = "https://files.pythonhosted.org/packages/03/71/850b1d6ffa9564fbb6740429bad53df1094082fe515c8c1e74b6d8d05f18/ruff-0.15.11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d4176f3d194afbdaee6e41b9ccb1a2c287dba8700047df474abfbe773825d1cb", size = 10338501, upload-time = "2026-04-16T18:46:03.723Z" }, + { url = "https://files.pythonhosted.org/packages/f2/11/cc1284d3e298c45a817a6aadb6c3e1d70b45c9b36d8d9cce3387b495a03a/ruff-0.15.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b17c886fb88203ced3afe7f14e8d5ae96e9d2f4ccc0ee66aa19f2c2675a27e4", size = 10670693, upload-time = "2026-04-16T18:46:41.941Z" }, + { url = "https://files.pythonhosted.org/packages/ce/9e/f8288b034ab72b371513c13f9a41d9ba3effac54e24bfb467b007daee2ca/ruff-0.15.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:49fafa220220afe7758a487b048de4c8f9f767f37dfefad46b9dd06759d003eb", size = 10416177, upload-time = "2026-04-16T18:46:21.717Z" }, + { url = "https://files.pythonhosted.org/packages/85/71/504d79abfd3d92532ba6bbe3d1c19fada03e494332a59e37c7c2dabae427/ruff-0.15.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2ab8427e74a00d93b8bda1307b1e60970d40f304af38bccb218e056c220120d", size = 11221886, upload-time = "2026-04-16T18:46:15.086Z" }, + { url = "https://files.pythonhosted.org/packages/43/5a/947e6ab7a5ad603d65b474be15a4cbc6d29832db5d762cd142e4e3a74164/ruff-0.15.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:195072c0c8e1fc8f940652073df082e37a5d9cb43b4ab1e4d0566ab8977a13b7", size = 12075183, upload-time = "2026-04-16T18:46:07.944Z" }, + { url = "https://files.pythonhosted.org/packages/9f/a1/0b7bb6268775fdd3a0818aee8efd8f5b4e231d24dd4d528ced2534023182/ruff-0.15.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a3a0996d486af3920dec930a2e7daed4847dfc12649b537a9335585ada163e9e", size = 11516575, upload-time = "2026-04-16T18:46:31.687Z" }, + { url = "https://files.pythonhosted.org/packages/30/c3/bb5168fc4d233cc06e95f482770d0f3c87945a0cd9f614b90ea8dc2f2833/ruff-0.15.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bef2cb556d509259f1fe440bb9cd33c756222cf0a7afe90d15edf0866702431", size = 11306537, upload-time = "2026-04-16T18:46:36.988Z" }, + { url = "https://files.pythonhosted.org/packages/e4/92/4cfae6441f3967317946f3b788136eecf093729b94d6561f963ed810c82e/ruff-0.15.11-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:030d921a836d7d4a12cf6e8d984a88b66094ccb0e0f17ddd55067c331191bf19", size = 11296813, upload-time = "2026-04-16T18:46:24.182Z" }, + { url = "https://files.pythonhosted.org/packages/43/26/972784c5dde8313acde8ac71ba8ac65475b85db4a2352a76c9934361f9bc/ruff-0.15.11-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:0e783b599b4577788dbbb66b9addcef87e9a8832f4ce0c19e34bf55543a2f890", size = 10633136, upload-time = "2026-04-16T18:46:39.802Z" }, + { url = "https://files.pythonhosted.org/packages/5b/53/3985a4f185020c2f367f2e08a103032e12564829742a1b417980ce1514a0/ruff-0.15.11-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:ae90592246625ba4a34349d68ec28d4400d75182b71baa196ddb9f82db025ef5", size = 10424701, upload-time = "2026-04-16T18:46:10.381Z" }, + { url = "https://files.pythonhosted.org/packages/d3/57/bf0dfb32241b56c83bb663a826133da4bf17f682ba8c096973065f6e6a68/ruff-0.15.11-py3-none-musllinux_1_2_i686.whl", hash = "sha256:1f111d62e3c983ed20e0ca2e800f8d77433a5b1161947df99a5c2a3fb60514f0", size = 10873887, upload-time = "2026-04-16T18:46:29.157Z" }, + { url = "https://files.pythonhosted.org/packages/02/05/e48076b2a57dc33ee8c7a957296f97c744ca891a8ffb4ffb1aaa3b3f517d/ruff-0.15.11-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:06f483d6646f59eaffba9ae30956370d3a886625f511a3108994000480621d1c", size = 11404316, upload-time = "2026-04-16T18:46:19.462Z" }, + { url = "https://files.pythonhosted.org/packages/88/27/0195d15fe7a897cbcba0904792c4b7c9fdd958456c3a17d2ea6093716a9a/ruff-0.15.11-py3-none-win32.whl", hash = "sha256:476a2aa56b7da0b73a3ee80b6b2f0e19cce544245479adde7baa65466664d5f3", size = 10655535, upload-time = "2026-04-16T18:46:12.47Z" }, + { url = "https://files.pythonhosted.org/packages/3a/5e/c927b325bd4c1d3620211a4b96f47864633199feed60fa936025ab27e090/ruff-0.15.11-py3-none-win_amd64.whl", hash = "sha256:8b6756d88d7e234fb0c98c91511aae3cd519d5e3ed271cae31b20f39cb2a12a3", size = 11779692, upload-time = "2026-04-16T18:46:17.268Z" }, + { url = "https://files.pythonhosted.org/packages/63/b6/aeadee5443e49baa2facd51131159fd6301cc4ccfc1541e4df7b021c37dd/ruff-0.15.11-py3-none-win_arm64.whl", hash = "sha256:063fed18cc1bbe0ee7393957284a6fe8b588c6a406a285af3ee3f46da2391ee4", size = 11032614, upload-time = "2026-04-16T18:46:34.487Z" }, +] + +[[package]] +name = "safetensors" +version = "0.5.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/71/7e/2d5d6ee7b40c0682315367ec7475693d110f512922d582fef1bd4a63adc3/safetensors-0.5.3.tar.gz", hash = "sha256:b6b0d6ecacec39a4fdd99cc19f4576f5219ce858e6fd8dbe7609df0b8dc56965", size = 67210, upload-time = "2025-02-26T09:15:13.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/ae/88f6c49dbd0cc4da0e08610019a3c78a7d390879a919411a410a1876d03a/safetensors-0.5.3-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:bd20eb133db8ed15b40110b7c00c6df51655a2998132193de2f75f72d99c7073", size = 436917, upload-time = "2025-02-26T09:15:03.702Z" }, + { url = "https://files.pythonhosted.org/packages/b8/3b/11f1b4a2f5d2ab7da34ecc062b0bc301f2be024d110a6466726bec8c055c/safetensors-0.5.3-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:21d01c14ff6c415c485616b8b0bf961c46b3b343ca59110d38d744e577f9cce7", size = 418419, upload-time = "2025-02-26T09:15:01.765Z" }, + { url = "https://files.pythonhosted.org/packages/5d/9a/add3e6fef267658075c5a41573c26d42d80c935cdc992384dfae435feaef/safetensors-0.5.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11bce6164887cd491ca75c2326a113ba934be596e22b28b1742ce27b1d076467", size = 459493, upload-time = "2025-02-26T09:14:51.812Z" }, + { url = "https://files.pythonhosted.org/packages/df/5c/bf2cae92222513cc23b3ff85c4a1bb2811a2c3583ac0f8e8d502751de934/safetensors-0.5.3-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4a243be3590bc3301c821da7a18d87224ef35cbd3e5f5727e4e0728b8172411e", size = 472400, upload-time = "2025-02-26T09:14:53.549Z" }, + { url = "https://files.pythonhosted.org/packages/58/11/7456afb740bd45782d0f4c8e8e1bb9e572f1bf82899fb6ace58af47b4282/safetensors-0.5.3-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8bd84b12b1670a6f8e50f01e28156422a2bc07fb16fc4e98bded13039d688a0d", size = 522891, upload-time = "2025-02-26T09:14:55.717Z" }, + { url = "https://files.pythonhosted.org/packages/57/3d/fe73a9d2ace487e7285f6e157afee2383bd1ddb911b7cb44a55cf812eae3/safetensors-0.5.3-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:391ac8cab7c829452175f871fcaf414aa1e292b5448bd02620f675a7f3e7abb9", size = 537694, upload-time = "2025-02-26T09:14:57.036Z" }, + { url = "https://files.pythonhosted.org/packages/a6/f8/dae3421624fcc87a89d42e1898a798bc7ff72c61f38973a65d60df8f124c/safetensors-0.5.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cead1fa41fc54b1e61089fa57452e8834f798cb1dc7a09ba3524f1eb08e0317a", size = 471642, upload-time = "2025-02-26T09:15:00.544Z" }, + { url = "https://files.pythonhosted.org/packages/ce/20/1fbe16f9b815f6c5a672f5b760951e20e17e43f67f231428f871909a37f6/safetensors-0.5.3-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1077f3e94182d72618357b04b5ced540ceb71c8a813d3319f1aba448e68a770d", size = 502241, upload-time = "2025-02-26T09:14:58.303Z" }, + { url = "https://files.pythonhosted.org/packages/5f/18/8e108846b506487aa4629fe4116b27db65c3dde922de2c8e0cc1133f3f29/safetensors-0.5.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:799021e78287bac619c7b3f3606730a22da4cda27759ddf55d37c8db7511c74b", size = 638001, upload-time = "2025-02-26T09:15:05.79Z" }, + { url = "https://files.pythonhosted.org/packages/82/5a/c116111d8291af6c8c8a8b40628fe833b9db97d8141c2a82359d14d9e078/safetensors-0.5.3-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:df26da01aaac504334644e1b7642fa000bfec820e7cef83aeac4e355e03195ff", size = 734013, upload-time = "2025-02-26T09:15:07.892Z" }, + { url = "https://files.pythonhosted.org/packages/7d/ff/41fcc4d3b7de837963622e8610d998710705bbde9a8a17221d85e5d0baad/safetensors-0.5.3-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:32c3ef2d7af8b9f52ff685ed0bc43913cdcde135089ae322ee576de93eae5135", size = 670687, upload-time = "2025-02-26T09:15:09.979Z" }, + { url = "https://files.pythonhosted.org/packages/40/ad/2b113098e69c985a3d8fbda4b902778eae4a35b7d5188859b4a63d30c161/safetensors-0.5.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:37f1521be045e56fc2b54c606d4455573e717b2d887c579ee1dbba5f868ece04", size = 643147, upload-time = "2025-02-26T09:15:11.185Z" }, + { url = "https://files.pythonhosted.org/packages/0a/0c/95aeb51d4246bd9a3242d3d8349c1112b4ee7611a4b40f0c5c93b05f001d/safetensors-0.5.3-cp38-abi3-win32.whl", hash = "sha256:cfc0ec0846dcf6763b0ed3d1846ff36008c6e7290683b61616c4b040f6a54ace", size = 296677, upload-time = "2025-02-26T09:15:16.554Z" }, + { url = "https://files.pythonhosted.org/packages/69/e2/b011c38e5394c4c18fb5500778a55ec43ad6106126e74723ffaee246f56e/safetensors-0.5.3-cp38-abi3-win_amd64.whl", hash = "sha256:836cbbc320b47e80acd40e44c8682db0e8ad7123209f69b093def21ec7cafd11", size = 308878, upload-time = "2025-02-26T09:15:14.99Z" }, +] + +[[package]] +name = "scikit-image" +version = "0.25.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform != 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "imageio", marker = "python_full_version < '3.11'" }, + { name = "lazy-loader", marker = "python_full_version < '3.11'" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "packaging", marker = "python_full_version < '3.11'" }, + { name = "pillow", marker = "python_full_version < '3.11'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "tifffile", version = "2025.5.10", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/a8/3c0f256012b93dd2cb6fda9245e9f4bff7dc0486880b248005f15ea2255e/scikit_image-0.25.2.tar.gz", hash = "sha256:e5a37e6cd4d0c018a7a55b9d601357e3382826d3888c10d0213fc63bff977dde", size = 22693594, upload-time = "2025-02-18T18:05:24.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/cb/016c63f16065c2d333c8ed0337e18a5cdf9bc32d402e4f26b0db362eb0e2/scikit_image-0.25.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d3278f586793176599df6a4cf48cb6beadae35c31e58dc01a98023af3dc31c78", size = 13988922, upload-time = "2025-02-18T18:04:11.069Z" }, + { url = "https://files.pythonhosted.org/packages/30/ca/ff4731289cbed63c94a0c9a5b672976603118de78ed21910d9060c82e859/scikit_image-0.25.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:5c311069899ce757d7dbf1d03e32acb38bb06153236ae77fcd820fd62044c063", size = 13192698, upload-time = "2025-02-18T18:04:15.362Z" }, + { url = "https://files.pythonhosted.org/packages/39/6d/a2aadb1be6d8e149199bb9b540ccde9e9622826e1ab42fe01de4c35ab918/scikit_image-0.25.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be455aa7039a6afa54e84f9e38293733a2622b8c2fb3362b822d459cc5605e99", size = 14153634, upload-time = "2025-02-18T18:04:18.496Z" }, + { url = "https://files.pythonhosted.org/packages/96/08/916e7d9ee4721031b2f625db54b11d8379bd51707afaa3e5a29aecf10bc4/scikit_image-0.25.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4c464b90e978d137330be433df4e76d92ad3c5f46a22f159520ce0fdbea8a09", size = 14767545, upload-time = "2025-02-18T18:04:22.556Z" }, + { url = "https://files.pythonhosted.org/packages/5f/ee/c53a009e3997dda9d285402f19226fbd17b5b3cb215da391c4ed084a1424/scikit_image-0.25.2-cp310-cp310-win_amd64.whl", hash = "sha256:60516257c5a2d2f74387c502aa2f15a0ef3498fbeaa749f730ab18f0a40fd054", size = 12812908, upload-time = "2025-02-18T18:04:26.364Z" }, + { url = "https://files.pythonhosted.org/packages/c4/97/3051c68b782ee3f1fb7f8f5bb7d535cf8cb92e8aae18fa9c1cdf7e15150d/scikit_image-0.25.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f4bac9196fb80d37567316581c6060763b0f4893d3aca34a9ede3825bc035b17", size = 14003057, upload-time = "2025-02-18T18:04:30.395Z" }, + { url = "https://files.pythonhosted.org/packages/19/23/257fc696c562639826065514d551b7b9b969520bd902c3a8e2fcff5b9e17/scikit_image-0.25.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:d989d64ff92e0c6c0f2018c7495a5b20e2451839299a018e0e5108b2680f71e0", size = 13180335, upload-time = "2025-02-18T18:04:33.449Z" }, + { url = "https://files.pythonhosted.org/packages/ef/14/0c4a02cb27ca8b1e836886b9ec7c9149de03053650e9e2ed0625f248dd92/scikit_image-0.25.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2cfc96b27afe9a05bc92f8c6235321d3a66499995675b27415e0d0c76625173", size = 14144783, upload-time = "2025-02-18T18:04:36.594Z" }, + { url = "https://files.pythonhosted.org/packages/dd/9b/9fb556463a34d9842491d72a421942c8baff4281025859c84fcdb5e7e602/scikit_image-0.25.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24cc986e1f4187a12aa319f777b36008764e856e5013666a4a83f8df083c2641", size = 14785376, upload-time = "2025-02-18T18:04:39.856Z" }, + { url = "https://files.pythonhosted.org/packages/de/ec/b57c500ee85885df5f2188f8bb70398481393a69de44a00d6f1d055f103c/scikit_image-0.25.2-cp311-cp311-win_amd64.whl", hash = "sha256:b4f6b61fc2db6340696afe3db6b26e0356911529f5f6aee8c322aa5157490c9b", size = 12791698, upload-time = "2025-02-18T18:04:42.868Z" }, + { url = "https://files.pythonhosted.org/packages/35/8c/5df82881284459f6eec796a5ac2a0a304bb3384eec2e73f35cfdfcfbf20c/scikit_image-0.25.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8db8dd03663112783221bf01ccfc9512d1cc50ac9b5b0fe8f4023967564719fb", size = 13986000, upload-time = "2025-02-18T18:04:47.156Z" }, + { url = "https://files.pythonhosted.org/packages/ce/e6/93bebe1abcdce9513ffec01d8af02528b4c41fb3c1e46336d70b9ed4ef0d/scikit_image-0.25.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:483bd8cc10c3d8a7a37fae36dfa5b21e239bd4ee121d91cad1f81bba10cfb0ed", size = 13235893, upload-time = "2025-02-18T18:04:51.049Z" }, + { url = "https://files.pythonhosted.org/packages/53/4b/eda616e33f67129e5979a9eb33c710013caa3aa8a921991e6cc0b22cea33/scikit_image-0.25.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d1e80107bcf2bf1291acfc0bf0425dceb8890abe9f38d8e94e23497cbf7ee0d", size = 14178389, upload-time = "2025-02-18T18:04:54.245Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b5/b75527c0f9532dd8a93e8e7cd8e62e547b9f207d4c11e24f0006e8646b36/scikit_image-0.25.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a17e17eb8562660cc0d31bb55643a4da996a81944b82c54805c91b3fe66f4824", size = 15003435, upload-time = "2025-02-18T18:04:57.586Z" }, + { url = "https://files.pythonhosted.org/packages/34/e3/49beb08ebccda3c21e871b607c1cb2f258c3fa0d2f609fed0a5ba741b92d/scikit_image-0.25.2-cp312-cp312-win_amd64.whl", hash = "sha256:bdd2b8c1de0849964dbc54037f36b4e9420157e67e45a8709a80d727f52c7da2", size = 12899474, upload-time = "2025-02-18T18:05:01.166Z" }, +] + +[[package]] +name = "scikit-image" +version = "0.26.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'win32'", + "python_full_version >= '3.12' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "imageio", marker = "python_full_version >= '3.11'" }, + { name = "lazy-loader", marker = "python_full_version >= '3.11'" }, + { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging", marker = "python_full_version >= '3.11'" }, + { name = "pillow", marker = "python_full_version >= '3.11'" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "tifffile", version = "2026.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, + { name = "tifffile", version = "2026.4.11", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/b4/2528bb43c67d48053a7a649a9666432dc307d66ba02e3a6d5c40f46655df/scikit_image-0.26.0.tar.gz", hash = "sha256:f5f970ab04efad85c24714321fcc91613fcb64ef2a892a13167df2f3e59199fa", size = 22729739, upload-time = "2025-12-20T17:12:21.824Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/16/8a407688b607f86f81f8c649bf0d68a2a6d67375f18c2d660aba20f5b648/scikit_image-0.26.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b1ede33a0fb3731457eaf53af6361e73dd510f449dac437ab54573b26788baf0", size = 12355510, upload-time = "2025-12-20T17:10:31.628Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f9/7efc088ececb6f6868fd4475e16cfafc11f242ce9ab5fc3557d78b5da0d4/scikit_image-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7af7aa331c6846bd03fa28b164c18d0c3fd419dbb888fb05e958ac4257a78fdd", size = 12056334, upload-time = "2025-12-20T17:10:34.559Z" }, + { url = "https://files.pythonhosted.org/packages/9f/1e/bc7fb91fb5ff65ef42346c8b7ee8b09b04eabf89235ab7dbfdfd96cbd1ea/scikit_image-0.26.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9ea6207d9e9d21c3f464efe733121c0504e494dbdc7728649ff3e23c3c5a4953", size = 13297768, upload-time = "2025-12-20T17:10:37.733Z" }, + { url = "https://files.pythonhosted.org/packages/a5/2a/e71c1a7d90e70da67b88ccc609bd6ae54798d5847369b15d3a8052232f9d/scikit_image-0.26.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:74aa5518ccea28121f57a95374581d3b979839adc25bb03f289b1bc9b99c58af", size = 13711217, upload-time = "2025-12-20T17:10:40.935Z" }, + { url = "https://files.pythonhosted.org/packages/d4/59/9637ee12c23726266b91296791465218973ce1ad3e4c56fc81e4d8e7d6e1/scikit_image-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d5c244656de905e195a904e36dbc18585e06ecf67d90f0482cbde63d7f9ad59d", size = 14337782, upload-time = "2025-12-20T17:10:43.452Z" }, + { url = "https://files.pythonhosted.org/packages/e7/5c/a3e1e0860f9294663f540c117e4bf83d55e5b47c281d475cc06227e88411/scikit_image-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:21a818ee6ca2f2131b9e04d8eb7637b5c18773ebe7b399ad23dcc5afaa226d2d", size = 14805997, upload-time = "2025-12-20T17:10:45.93Z" }, + { url = "https://files.pythonhosted.org/packages/d3/c6/2eeacf173da041a9e388975f54e5c49df750757fcfc3ee293cdbbae1ea0a/scikit_image-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:9490360c8d3f9a7e85c8de87daf7c0c66507960cf4947bb9610d1751928721c7", size = 11878486, upload-time = "2025-12-20T17:10:48.246Z" }, + { url = "https://files.pythonhosted.org/packages/c3/a4/a852c4949b9058d585e762a66bf7e9a2cd3be4795cd940413dfbfbb0ce79/scikit_image-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:0baa0108d2d027f34d748e84e592b78acc23e965a5de0e4bb03cf371de5c0581", size = 11346518, upload-time = "2025-12-20T17:10:50.575Z" }, + { url = "https://files.pythonhosted.org/packages/99/e8/e13757982264b33a1621628f86b587e9a73a13f5256dad49b19ba7dc9083/scikit_image-0.26.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d454b93a6fa770ac5ae2d33570f8e7a321bb80d29511ce4b6b78058ebe176e8c", size = 12376452, upload-time = "2025-12-20T17:10:52.796Z" }, + { url = "https://files.pythonhosted.org/packages/e3/be/f8dd17d0510f9911f9f17ba301f7455328bf13dae416560126d428de9568/scikit_image-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3409e89d66eff5734cd2b672d1c48d2759360057e714e1d92a11df82c87cba37", size = 12061567, upload-time = "2025-12-20T17:10:55.207Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/c70120a6880579fb42b91567ad79feb4772f7be72e8d52fec403a3dde0c6/scikit_image-0.26.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c717490cec9e276afb0438dd165b7c3072d6c416709cc0f9f5a4c1070d23a44", size = 13084214, upload-time = "2025-12-20T17:10:57.468Z" }, + { url = "https://files.pythonhosted.org/packages/f4/a2/70401a107d6d7466d64b466927e6b96fcefa99d57494b972608e2f8be50f/scikit_image-0.26.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7df650e79031634ac90b11e64a9eedaf5a5e06fcd09bcd03a34be01745744466", size = 13561683, upload-time = "2025-12-20T17:10:59.49Z" }, + { url = "https://files.pythonhosted.org/packages/13/a5/48bdfd92794c5002d664e0910a349d0a1504671ef5ad358150f21643c79a/scikit_image-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cefd85033e66d4ea35b525bb0937d7f42d4cdcfed2d1888e1570d5ce450d3932", size = 14112147, upload-time = "2025-12-20T17:11:02.083Z" }, + { url = "https://files.pythonhosted.org/packages/ee/b5/ac71694da92f5def5953ca99f18a10fe98eac2dd0a34079389b70b4d0394/scikit_image-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3f5bf622d7c0435884e1e141ebbe4b2804e16b2dd23ae4c6183e2ea99233be70", size = 14661625, upload-time = "2025-12-20T17:11:04.528Z" }, + { url = "https://files.pythonhosted.org/packages/23/4d/a3cc1e96f080e253dad2251bfae7587cf2b7912bcd76fd43fd366ff35a87/scikit_image-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:abed017474593cd3056ae0fe948d07d0747b27a085e92df5474f4955dd65aec0", size = 11911059, upload-time = "2025-12-20T17:11:06.61Z" }, + { url = "https://files.pythonhosted.org/packages/35/8a/d1b8055f584acc937478abf4550d122936f420352422a1a625eef2c605d8/scikit_image-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d57e39ef67a95d26860c8caf9b14b8fb130f83b34c6656a77f191fa6d1d04d8", size = 11348740, upload-time = "2025-12-20T17:11:09.118Z" }, +] + +[[package]] +name = "scikit-learn" +version = "1.7.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform != 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "joblib", marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "threadpoolctl", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/c2/a7855e41c9d285dfe86dc50b250978105dce513d6e459ea66a6aeb0e1e0c/scikit_learn-1.7.2.tar.gz", hash = "sha256:20e9e49ecd130598f1ca38a1d85090e1a600147b9c02fa6f15d69cb53d968fda", size = 7193136, upload-time = "2025-09-09T08:21:29.075Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/3e/daed796fd69cce768b8788401cc464ea90b306fb196ae1ffed0b98182859/scikit_learn-1.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b33579c10a3081d076ab403df4a4190da4f4432d443521674637677dc91e61f", size = 9336221, upload-time = "2025-09-09T08:20:19.328Z" }, + { url = "https://files.pythonhosted.org/packages/1c/ce/af9d99533b24c55ff4e18d9b7b4d9919bbc6cd8f22fe7a7be01519a347d5/scikit_learn-1.7.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:36749fb62b3d961b1ce4fedf08fa57a1986cd409eff2d783bca5d4b9b5fce51c", size = 8653834, upload-time = "2025-09-09T08:20:22.073Z" }, + { url = "https://files.pythonhosted.org/packages/58/0e/8c2a03d518fb6bd0b6b0d4b114c63d5f1db01ff0f9925d8eb10960d01c01/scikit_learn-1.7.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7a58814265dfc52b3295b1900cfb5701589d30a8bb026c7540f1e9d3499d5ec8", size = 9660938, upload-time = "2025-09-09T08:20:24.327Z" }, + { url = "https://files.pythonhosted.org/packages/2b/75/4311605069b5d220e7cf5adabb38535bd96f0079313cdbb04b291479b22a/scikit_learn-1.7.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a847fea807e278f821a0406ca01e387f97653e284ecbd9750e3ee7c90347f18", size = 9477818, upload-time = "2025-09-09T08:20:26.845Z" }, + { url = "https://files.pythonhosted.org/packages/7f/9b/87961813c34adbca21a6b3f6b2bea344c43b30217a6d24cc437c6147f3e8/scikit_learn-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:ca250e6836d10e6f402436d6463d6c0e4d8e0234cfb6a9a47835bd392b852ce5", size = 8886969, upload-time = "2025-09-09T08:20:29.329Z" }, + { url = "https://files.pythonhosted.org/packages/43/83/564e141eef908a5863a54da8ca342a137f45a0bfb71d1d79704c9894c9d1/scikit_learn-1.7.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7509693451651cd7361d30ce4e86a1347493554f172b1c72a39300fa2aea79e", size = 9331967, upload-time = "2025-09-09T08:20:32.421Z" }, + { url = "https://files.pythonhosted.org/packages/18/d6/ba863a4171ac9d7314c4d3fc251f015704a2caeee41ced89f321c049ed83/scikit_learn-1.7.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:0486c8f827c2e7b64837c731c8feff72c0bd2b998067a8a9cbc10643c31f0fe1", size = 8648645, upload-time = "2025-09-09T08:20:34.436Z" }, + { url = "https://files.pythonhosted.org/packages/ef/0e/97dbca66347b8cf0ea8b529e6bb9367e337ba2e8be0ef5c1a545232abfde/scikit_learn-1.7.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:89877e19a80c7b11a2891a27c21c4894fb18e2c2e077815bcade10d34287b20d", size = 9715424, upload-time = "2025-09-09T08:20:36.776Z" }, + { url = "https://files.pythonhosted.org/packages/f7/32/1f3b22e3207e1d2c883a7e09abb956362e7d1bd2f14458c7de258a26ac15/scikit_learn-1.7.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8da8bf89d4d79aaec192d2bda62f9b56ae4e5b4ef93b6a56b5de4977e375c1f1", size = 9509234, upload-time = "2025-09-09T08:20:38.957Z" }, + { url = "https://files.pythonhosted.org/packages/9f/71/34ddbd21f1da67c7a768146968b4d0220ee6831e4bcbad3e03dd3eae88b6/scikit_learn-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:9b7ed8d58725030568523e937c43e56bc01cadb478fc43c042a9aca1dacb3ba1", size = 8894244, upload-time = "2025-09-09T08:20:41.166Z" }, + { url = "https://files.pythonhosted.org/packages/a7/aa/3996e2196075689afb9fce0410ebdb4a09099d7964d061d7213700204409/scikit_learn-1.7.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8d91a97fa2b706943822398ab943cde71858a50245e31bc71dba62aab1d60a96", size = 9259818, upload-time = "2025-09-09T08:20:43.19Z" }, + { url = "https://files.pythonhosted.org/packages/43/5d/779320063e88af9c4a7c2cf463ff11c21ac9c8bd730c4a294b0000b666c9/scikit_learn-1.7.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:acbc0f5fd2edd3432a22c69bed78e837c70cf896cd7993d71d51ba6708507476", size = 8636997, upload-time = "2025-09-09T08:20:45.468Z" }, + { url = "https://files.pythonhosted.org/packages/5c/d0/0c577d9325b05594fdd33aa970bf53fb673f051a45496842caee13cfd7fe/scikit_learn-1.7.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e5bf3d930aee75a65478df91ac1225ff89cd28e9ac7bd1196853a9229b6adb0b", size = 9478381, upload-time = "2025-09-09T08:20:47.982Z" }, + { url = "https://files.pythonhosted.org/packages/82/70/8bf44b933837ba8494ca0fc9a9ab60f1c13b062ad0197f60a56e2fc4c43e/scikit_learn-1.7.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4d6e9deed1a47aca9fe2f267ab8e8fe82ee20b4526b2c0cd9e135cea10feb44", size = 9300296, upload-time = "2025-09-09T08:20:50.366Z" }, + { url = "https://files.pythonhosted.org/packages/c6/99/ed35197a158f1fdc2fe7c3680e9c70d0128f662e1fee4ed495f4b5e13db0/scikit_learn-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:6088aa475f0785e01bcf8529f55280a3d7d298679f50c0bb70a2364a82d0b290", size = 8731256, upload-time = "2025-09-09T08:20:52.627Z" }, +] + +[[package]] +name = "scikit-learn" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'win32'", + "python_full_version >= '3.12' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "joblib", marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "threadpoolctl", marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/d4/40988bf3b8e34feec1d0e6a051446b1f66225f8529b9309becaeef62b6c4/scikit_learn-1.8.0.tar.gz", hash = "sha256:9bccbb3b40e3de10351f8f5068e105d0f4083b1a65fa07b6634fbc401a6287fd", size = 7335585, upload-time = "2025-12-10T07:08:53.618Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/92/53ea2181da8ac6bf27170191028aee7251f8f841f8d3edbfdcaf2008fde9/scikit_learn-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:146b4d36f800c013d267b29168813f7a03a43ecd2895d04861f1240b564421da", size = 8595835, upload-time = "2025-12-10T07:07:39.385Z" }, + { url = "https://files.pythonhosted.org/packages/01/18/d154dc1638803adf987910cdd07097d9c526663a55666a97c124d09fb96a/scikit_learn-1.8.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:f984ca4b14914e6b4094c5d52a32ea16b49832c03bd17a110f004db3c223e8e1", size = 8080381, upload-time = "2025-12-10T07:07:41.93Z" }, + { url = "https://files.pythonhosted.org/packages/8a/44/226142fcb7b7101e64fdee5f49dbe6288d4c7af8abf593237b70fca080a4/scikit_learn-1.8.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e30adb87f0cc81c7690a84f7932dd66be5bac57cfe16b91cb9151683a4a2d3b", size = 8799632, upload-time = "2025-12-10T07:07:43.899Z" }, + { url = "https://files.pythonhosted.org/packages/36/4d/4a67f30778a45d542bbea5db2dbfa1e9e100bf9ba64aefe34215ba9f11f6/scikit_learn-1.8.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ada8121bcb4dac28d930febc791a69f7cb1673c8495e5eee274190b73a4559c1", size = 9103788, upload-time = "2025-12-10T07:07:45.982Z" }, + { url = "https://files.pythonhosted.org/packages/89/3c/45c352094cfa60050bcbb967b1faf246b22e93cb459f2f907b600f2ceda5/scikit_learn-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:c57b1b610bd1f40ba43970e11ce62821c2e6569e4d74023db19c6b26f246cb3b", size = 8081706, upload-time = "2025-12-10T07:07:48.111Z" }, + { url = "https://files.pythonhosted.org/packages/3d/46/5416595bb395757f754feb20c3d776553a386b661658fb21b7c814e89efe/scikit_learn-1.8.0-cp311-cp311-win_arm64.whl", hash = "sha256:2838551e011a64e3053ad7618dda9310175f7515f1742fa2d756f7c874c05961", size = 7688451, upload-time = "2025-12-10T07:07:49.873Z" }, + { url = "https://files.pythonhosted.org/packages/90/74/e6a7cc4b820e95cc38cf36cd74d5aa2b42e8ffc2d21fe5a9a9c45c1c7630/scikit_learn-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5fb63362b5a7ddab88e52b6dbb47dac3fd7dafeee740dc6c8d8a446ddedade8e", size = 8548242, upload-time = "2025-12-10T07:07:51.568Z" }, + { url = "https://files.pythonhosted.org/packages/49/d8/9be608c6024d021041c7f0b3928d4749a706f4e2c3832bbede4fb4f58c95/scikit_learn-1.8.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:5025ce924beccb28298246e589c691fe1b8c1c96507e6d27d12c5fadd85bfd76", size = 8079075, upload-time = "2025-12-10T07:07:53.697Z" }, + { url = "https://files.pythonhosted.org/packages/dd/47/f187b4636ff80cc63f21cd40b7b2d177134acaa10f6bb73746130ee8c2e5/scikit_learn-1.8.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4496bb2cf7a43ce1a2d7524a79e40bc5da45cf598dbf9545b7e8316ccba47bb4", size = 8660492, upload-time = "2025-12-10T07:07:55.574Z" }, + { url = "https://files.pythonhosted.org/packages/97/74/b7a304feb2b49df9fafa9382d4d09061a96ee9a9449a7cbea7988dda0828/scikit_learn-1.8.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0bcfe4d0d14aec44921545fd2af2338c7471de9cb701f1da4c9d85906ab847a", size = 8931904, upload-time = "2025-12-10T07:07:57.666Z" }, + { url = "https://files.pythonhosted.org/packages/9f/c4/0ab22726a04ede56f689476b760f98f8f46607caecff993017ac1b64aa5d/scikit_learn-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:35c007dedb2ffe38fe3ee7d201ebac4a2deccd2408e8621d53067733e3c74809", size = 8019359, upload-time = "2025-12-10T07:07:59.838Z" }, + { url = "https://files.pythonhosted.org/packages/24/90/344a67811cfd561d7335c1b96ca21455e7e472d281c3c279c4d3f2300236/scikit_learn-1.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:8c497fff237d7b4e07e9ef1a640887fa4fb765647f86fbe00f969ff6280ce2bb", size = 7641898, upload-time = "2025-12-10T07:08:01.36Z" }, +] + +[[package]] +name = "scipy" +version = "1.15.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform != 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, +] +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/78/2f/4966032c5f8cc7e6a60f1b2e0ad686293b9474b65246b0c642e3ef3badd0/scipy-1.15.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:a345928c86d535060c9c2b25e71e87c39ab2f22fc96e9636bd74d1dbf9de448c", size = 38702770, upload-time = "2025-05-08T16:04:20.849Z" }, + { url = "https://files.pythonhosted.org/packages/a0/6e/0c3bf90fae0e910c274db43304ebe25a6b391327f3f10b5dcc638c090795/scipy-1.15.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:ad3432cb0f9ed87477a8d97f03b763fd1d57709f1bbde3c9369b1dff5503b253", size = 30094511, upload-time = "2025-05-08T16:04:27.103Z" }, + { url = "https://files.pythonhosted.org/packages/ea/b1/4deb37252311c1acff7f101f6453f0440794f51b6eacb1aad4459a134081/scipy-1.15.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:aef683a9ae6eb00728a542b796f52a5477b78252edede72b8327a886ab63293f", size = 22368151, upload-time = "2025-05-08T16:04:31.731Z" }, + { url = "https://files.pythonhosted.org/packages/38/7d/f457626e3cd3c29b3a49ca115a304cebb8cc6f31b04678f03b216899d3c6/scipy-1.15.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:1c832e1bd78dea67d5c16f786681b28dd695a8cb1fb90af2e27580d3d0967e92", size = 25121732, upload-time = "2025-05-08T16:04:36.596Z" }, + { url = "https://files.pythonhosted.org/packages/db/0a/92b1de4a7adc7a15dcf5bddc6e191f6f29ee663b30511ce20467ef9b82e4/scipy-1.15.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:263961f658ce2165bbd7b99fa5135195c3a12d9bef045345016b8b50c315cb82", size = 35547617, upload-time = "2025-05-08T16:04:43.546Z" }, + { url = "https://files.pythonhosted.org/packages/8e/6d/41991e503e51fc1134502694c5fa7a1671501a17ffa12716a4a9151af3df/scipy-1.15.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2abc762b0811e09a0d3258abee2d98e0c703eee49464ce0069590846f31d40", size = 37662964, upload-time = "2025-05-08T16:04:49.431Z" }, + { url = "https://files.pythonhosted.org/packages/25/e1/3df8f83cb15f3500478c889be8fb18700813b95e9e087328230b98d547ff/scipy-1.15.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed7284b21a7a0c8f1b6e5977ac05396c0d008b89e05498c8b7e8f4a1423bba0e", size = 37238749, upload-time = "2025-05-08T16:04:55.215Z" }, + { url = "https://files.pythonhosted.org/packages/93/3e/b3257cf446f2a3533ed7809757039016b74cd6f38271de91682aa844cfc5/scipy-1.15.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5380741e53df2c566f4d234b100a484b420af85deb39ea35a1cc1be84ff53a5c", size = 40022383, upload-time = "2025-05-08T16:05:01.914Z" }, + { url = "https://files.pythonhosted.org/packages/d1/84/55bc4881973d3f79b479a5a2e2df61c8c9a04fcb986a213ac9c02cfb659b/scipy-1.15.3-cp310-cp310-win_amd64.whl", hash = "sha256:9d61e97b186a57350f6d6fd72640f9e99d5a4a2b8fbf4b9ee9a841eab327dc13", size = 41259201, upload-time = "2025-05-08T16:05:08.166Z" }, + { 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 = "scipy" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'win32'", + "python_full_version >= '3.12' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/97/5a3609c4f8d58b039179648e62dd220f89864f56f7357f5d4f45c29eb2cc/scipy-1.17.1.tar.gz", hash = "sha256:95d8e012d8cb8816c226aef832200b1d45109ed4464303e997c5b13122b297c0", size = 30573822, upload-time = "2026-02-23T00:26:24.851Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/75/b4ce781849931fef6fd529afa6b63711d5a733065722d0c3e2724af9e40a/scipy-1.17.1-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:1f95b894f13729334fb990162e911c9e5dc1ab390c58aa6cbecb389c5b5e28ec", size = 31613675, upload-time = "2026-02-23T00:16:00.13Z" }, + { url = "https://files.pythonhosted.org/packages/f7/58/bccc2861b305abdd1b8663d6130c0b3d7cc22e8d86663edbc8401bfd40d4/scipy-1.17.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:e18f12c6b0bc5a592ed23d3f7b891f68fd7f8241d69b7883769eb5d5dfb52696", size = 28162057, upload-time = "2026-02-23T00:16:09.456Z" }, + { url = "https://files.pythonhosted.org/packages/6d/ee/18146b7757ed4976276b9c9819108adbc73c5aad636e5353e20746b73069/scipy-1.17.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:a3472cfbca0a54177d0faa68f697d8ba4c80bbdc19908c3465556d9f7efce9ee", size = 20334032, upload-time = "2026-02-23T00:16:17.358Z" }, + { url = "https://files.pythonhosted.org/packages/ec/e6/cef1cf3557f0c54954198554a10016b6a03b2ec9e22a4e1df734936bd99c/scipy-1.17.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:766e0dc5a616d026a3a1cffa379af959671729083882f50307e18175797b3dfd", size = 22709533, upload-time = "2026-02-23T00:16:25.791Z" }, + { url = "https://files.pythonhosted.org/packages/4d/60/8804678875fc59362b0fb759ab3ecce1f09c10a735680318ac30da8cd76b/scipy-1.17.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:744b2bf3640d907b79f3fd7874efe432d1cf171ee721243e350f55234b4cec4c", size = 33062057, upload-time = "2026-02-23T00:16:36.931Z" }, + { url = "https://files.pythonhosted.org/packages/09/7d/af933f0f6e0767995b4e2d705a0665e454d1c19402aa7e895de3951ebb04/scipy-1.17.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43af8d1f3bea642559019edfe64e9b11192a8978efbd1539d7bc2aaa23d92de4", size = 35349300, upload-time = "2026-02-23T00:16:49.108Z" }, + { url = "https://files.pythonhosted.org/packages/b4/3d/7ccbbdcbb54c8fdc20d3b6930137c782a163fa626f0aef920349873421ba/scipy-1.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cd96a1898c0a47be4520327e01f874acfd61fb48a9420f8aa9f6483412ffa444", size = 35127333, upload-time = "2026-02-23T00:17:01.293Z" }, + { url = "https://files.pythonhosted.org/packages/e8/19/f926cb11c42b15ba08e3a71e376d816ac08614f769b4f47e06c3580c836a/scipy-1.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4eb6c25dd62ee8d5edf68a8e1c171dd71c292fdae95d8aeb3dd7d7de4c364082", size = 37741314, upload-time = "2026-02-23T00:17:12.576Z" }, + { url = "https://files.pythonhosted.org/packages/95/da/0d1df507cf574b3f224ccc3d45244c9a1d732c81dcb26b1e8a766ae271a8/scipy-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:d30e57c72013c2a4fe441c2fcb8e77b14e152ad48b5464858e07e2ad9fbfceff", size = 36607512, upload-time = "2026-02-23T00:17:23.424Z" }, + { url = "https://files.pythonhosted.org/packages/68/7f/bdd79ceaad24b671543ffe0ef61ed8e659440eb683b66f033454dcee90eb/scipy-1.17.1-cp311-cp311-win_arm64.whl", hash = "sha256:9ecb4efb1cd6e8c4afea0daa91a87fbddbce1b99d2895d151596716c0b2e859d", size = 24599248, upload-time = "2026-02-23T00:17:34.561Z" }, + { url = "https://files.pythonhosted.org/packages/35/48/b992b488d6f299dbe3f11a20b24d3dda3d46f1a635ede1c46b5b17a7b163/scipy-1.17.1-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:35c3a56d2ef83efc372eaec584314bd0ef2e2f0d2adb21c55e6ad5b344c0dcb8", size = 31610954, upload-time = "2026-02-23T00:17:49.855Z" }, + { url = "https://files.pythonhosted.org/packages/b2/02/cf107b01494c19dc100f1d0b7ac3cc08666e96ba2d64db7626066cee895e/scipy-1.17.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:fcb310ddb270a06114bb64bbe53c94926b943f5b7f0842194d585c65eb4edd76", size = 28172662, upload-time = "2026-02-23T00:18:01.64Z" }, + { url = "https://files.pythonhosted.org/packages/cf/a9/599c28631bad314d219cf9ffd40e985b24d603fc8a2f4ccc5ae8419a535b/scipy-1.17.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:cc90d2e9c7e5c7f1a482c9875007c095c3194b1cfedca3c2f3291cdc2bc7c086", size = 20344366, upload-time = "2026-02-23T00:18:12.015Z" }, + { url = "https://files.pythonhosted.org/packages/35/f5/906eda513271c8deb5af284e5ef0206d17a96239af79f9fa0aebfe0e36b4/scipy-1.17.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:c80be5ede8f3f8eded4eff73cc99a25c388ce98e555b17d31da05287015ffa5b", size = 22704017, upload-time = "2026-02-23T00:18:21.502Z" }, + { url = "https://files.pythonhosted.org/packages/da/34/16f10e3042d2f1d6b66e0428308ab52224b6a23049cb2f5c1756f713815f/scipy-1.17.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e19ebea31758fac5893a2ac360fedd00116cbb7628e650842a6691ba7ca28a21", size = 32927842, upload-time = "2026-02-23T00:18:35.367Z" }, + { url = "https://files.pythonhosted.org/packages/01/8e/1e35281b8ab6d5d72ebe9911edcdffa3f36b04ed9d51dec6dd140396e220/scipy-1.17.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:02ae3b274fde71c5e92ac4d54bc06c42d80e399fec704383dcd99b301df37458", size = 35235890, upload-time = "2026-02-23T00:18:49.188Z" }, + { url = "https://files.pythonhosted.org/packages/c5/5c/9d7f4c88bea6e0d5a4f1bc0506a53a00e9fcb198de372bfe4d3652cef482/scipy-1.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8a604bae87c6195d8b1045eddece0514d041604b14f2727bbc2b3020172045eb", size = 35003557, upload-time = "2026-02-23T00:18:54.74Z" }, + { url = "https://files.pythonhosted.org/packages/65/94/7698add8f276dbab7a9de9fb6b0e02fc13ee61d51c7c3f85ac28b65e1239/scipy-1.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f590cd684941912d10becc07325a3eeb77886fe981415660d9265c4c418d0bea", size = 37625856, upload-time = "2026-02-23T00:19:00.307Z" }, + { url = "https://files.pythonhosted.org/packages/a2/84/dc08d77fbf3d87d3ee27f6a0c6dcce1de5829a64f2eae85a0ecc1f0daa73/scipy-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:41b71f4a3a4cab9d366cd9065b288efc4d4f3c0b37a91a8e0947fb5bd7f31d87", size = 36549682, upload-time = "2026-02-23T00:19:07.67Z" }, + { url = "https://files.pythonhosted.org/packages/bc/98/fe9ae9ffb3b54b62559f52dedaebe204b408db8109a8c66fdd04869e6424/scipy-1.17.1-cp312-cp312-win_arm64.whl", hash = "sha256:f4115102802df98b2b0db3cce5cb9b92572633a1197c77b7553e5203f284a5b3", size = 24547340, upload-time = "2026-02-23T00:19:12.024Z" }, +] + +[[package]] +name = "semantic-version" +version = "2.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/31/f2289ce78b9b473d582568c234e104d2a342fd658cc288a7553d83bb8595/semantic_version-2.10.0.tar.gz", hash = "sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c", size = 52289, upload-time = "2022-05-26T13:35:23.454Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/23/8146aad7d88f4fcb3a6218f41a60f6c2d4e3a72de72da1825dc7c8f7877c/semantic_version-2.10.0-py2.py3-none-any.whl", hash = "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177", size = 15552, upload-time = "2022-05-26T13:35:21.206Z" }, +] + +[[package]] +name = "sentry-sdk" +version = "2.58.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/26/b3/fb8291170d0e844173164709fc0fa0c221ed75a5da740c8746f2a83b4eb1/sentry_sdk-2.58.0.tar.gz", hash = "sha256:c1144d947352d54e5b7daa63596d9f848adf684989c06c4f5a659f0c85a18f6f", size = 438764, upload-time = "2026-04-13T17:23:26.265Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/eb/d875669993b762556ae8b2efd86219943b4c0864d22204d622a9aee3052b/sentry_sdk-2.58.0-py2.py3-none-any.whl", hash = "sha256:688d1c704ddecf382ea3326f21a67453d4caa95592d722b7c780a36a9d23109e", size = 460919, upload-time = "2026-04-13T17:23:24.675Z" }, +] + +[[package]] +name = "setuptools" +version = "81.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/1c/73e719955c59b8e424d015ab450f51c0af856ae46ea2da83eba51cc88de1/setuptools-81.0.0.tar.gz", hash = "sha256:487b53915f52501f0a79ccfd0c02c165ffe06631443a886740b91af4b7a5845a", size = 1198299, upload-time = "2026-02-06T21:10:39.601Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/e3/c164c88b2e5ce7b24d667b9bd83589cf4f3520d97cad01534cd3c4f55fdb/setuptools-81.0.0-py3-none-any.whl", hash = "sha256:fdd925d5c5d9f62e4b74b30d6dd7828ce236fd6ed998a08d81de62ce5a6310d6", size = 1062021, upload-time = "2026-02-06T21:10:37.175Z" }, +] + +[[package]] +name = "shapely" +version = "2.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4d/bc/0989043118a27cccb4e906a46b7565ce36ca7b57f5a18b78f4f1b0f72d9d/shapely-2.1.2.tar.gz", hash = "sha256:2ed4ecb28320a433db18a5bf029986aa8afcfd740745e78847e330d5d94922a9", size = 315489, upload-time = "2025-09-24T13:51:41.432Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/89/c3548aa9b9812a5d143986764dededfa48d817714e947398bdda87c77a72/shapely-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7ae48c236c0324b4e139bea88a306a04ca630f49be66741b340729d380d8f52f", size = 1825959, upload-time = "2025-09-24T13:50:00.682Z" }, + { url = "https://files.pythonhosted.org/packages/ce/8a/7ebc947080442edd614ceebe0ce2cdbd00c25e832c240e1d1de61d0e6b38/shapely-2.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eba6710407f1daa8e7602c347dfc94adc02205ec27ed956346190d66579eb9ea", size = 1629196, upload-time = "2025-09-24T13:50:03.447Z" }, + { url = "https://files.pythonhosted.org/packages/c8/86/c9c27881c20d00fc409e7e059de569d5ed0abfcec9c49548b124ebddea51/shapely-2.1.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ef4a456cc8b7b3d50ccec29642aa4aeda959e9da2fe9540a92754770d5f0cf1f", size = 2951065, upload-time = "2025-09-24T13:50:05.266Z" }, + { url = "https://files.pythonhosted.org/packages/50/8a/0ab1f7433a2a85d9e9aea5b1fbb333f3b09b309e7817309250b4b7b2cc7a/shapely-2.1.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e38a190442aacc67ff9f75ce60aec04893041f16f97d242209106d502486a142", size = 3058666, upload-time = "2025-09-24T13:50:06.872Z" }, + { url = "https://files.pythonhosted.org/packages/bb/c6/5a30ffac9c4f3ffd5b7113a7f5299ccec4713acd5ee44039778a7698224e/shapely-2.1.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:40d784101f5d06a1fd30b55fc11ea58a61be23f930d934d86f19a180909908a4", size = 3966905, upload-time = "2025-09-24T13:50:09.417Z" }, + { url = "https://files.pythonhosted.org/packages/9c/72/e92f3035ba43e53959007f928315a68fbcf2eeb4e5ededb6f0dc7ff1ecc3/shapely-2.1.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f6f6cd5819c50d9bcf921882784586aab34a4bd53e7553e175dece6db513a6f0", size = 4129260, upload-time = "2025-09-24T13:50:11.183Z" }, + { url = "https://files.pythonhosted.org/packages/42/24/605901b73a3d9f65fa958e63c9211f4be23d584da8a1a7487382fac7fdc5/shapely-2.1.2-cp310-cp310-win32.whl", hash = "sha256:fe9627c39c59e553c90f5bc3128252cb85dc3b3be8189710666d2f8bc3a5503e", size = 1544301, upload-time = "2025-09-24T13:50:12.521Z" }, + { url = "https://files.pythonhosted.org/packages/e1/89/6db795b8dd3919851856bd2ddd13ce434a748072f6fdee42ff30cbd3afa3/shapely-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:1d0bfb4b8f661b3b4ec3565fa36c340bfb1cda82087199711f86a88647d26b2f", size = 1722074, upload-time = "2025-09-24T13:50:13.909Z" }, + { url = "https://files.pythonhosted.org/packages/8f/8d/1ff672dea9ec6a7b5d422eb6d095ed886e2e523733329f75fdcb14ee1149/shapely-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:91121757b0a36c9aac3427a651a7e6567110a4a67c97edf04f8d55d4765f6618", size = 1820038, upload-time = "2025-09-24T13:50:15.628Z" }, + { url = "https://files.pythonhosted.org/packages/4f/ce/28fab8c772ce5db23a0d86bf0adaee0c4c79d5ad1db766055fa3dab442e2/shapely-2.1.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:16a9c722ba774cf50b5d4541242b4cce05aafd44a015290c82ba8a16931ff63d", size = 1626039, upload-time = "2025-09-24T13:50:16.881Z" }, + { url = "https://files.pythonhosted.org/packages/70/8b/868b7e3f4982f5006e9395c1e12343c66a8155c0374fdc07c0e6a1ab547d/shapely-2.1.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cc4f7397459b12c0b196c9efe1f9d7e92463cbba142632b4cc6d8bbbbd3e2b09", size = 3001519, upload-time = "2025-09-24T13:50:18.606Z" }, + { url = "https://files.pythonhosted.org/packages/13/02/58b0b8d9c17c93ab6340edd8b7308c0c5a5b81f94ce65705819b7416dba5/shapely-2.1.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:136ab87b17e733e22f0961504d05e77e7be8c9b5a8184f685b4a91a84efe3c26", size = 3110842, upload-time = "2025-09-24T13:50:21.77Z" }, + { url = "https://files.pythonhosted.org/packages/af/61/8e389c97994d5f331dcffb25e2fa761aeedfb52b3ad9bcdd7b8671f4810a/shapely-2.1.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:16c5d0fc45d3aa0a69074979f4f1928ca2734fb2e0dde8af9611e134e46774e7", size = 4021316, upload-time = "2025-09-24T13:50:23.626Z" }, + { url = "https://files.pythonhosted.org/packages/d3/d4/9b2a9fe6039f9e42ccf2cb3e84f219fd8364b0c3b8e7bbc857b5fbe9c14c/shapely-2.1.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6ddc759f72b5b2b0f54a7e7cde44acef680a55019eb52ac63a7af2cf17cb9cd2", size = 4178586, upload-time = "2025-09-24T13:50:25.443Z" }, + { url = "https://files.pythonhosted.org/packages/16/f6/9840f6963ed4decf76b08fd6d7fed14f8779fb7a62cb45c5617fa8ac6eab/shapely-2.1.2-cp311-cp311-win32.whl", hash = "sha256:2fa78b49485391224755a856ed3b3bd91c8455f6121fee0db0e71cefb07d0ef6", size = 1543961, upload-time = "2025-09-24T13:50:26.968Z" }, + { url = "https://files.pythonhosted.org/packages/38/1e/3f8ea46353c2a33c1669eb7327f9665103aa3a8dfe7f2e4ef714c210b2c2/shapely-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:c64d5c97b2f47e3cd9b712eaced3b061f2b71234b3fc263e0fcf7d889c6559dc", size = 1722856, upload-time = "2025-09-24T13:50:28.497Z" }, + { url = "https://files.pythonhosted.org/packages/24/c0/f3b6453cf2dfa99adc0ba6675f9aaff9e526d2224cbd7ff9c1a879238693/shapely-2.1.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fe2533caae6a91a543dec62e8360fe86ffcdc42a7c55f9dfd0128a977a896b94", size = 1833550, upload-time = "2025-09-24T13:50:30.019Z" }, + { url = "https://files.pythonhosted.org/packages/86/07/59dee0bc4b913b7ab59ab1086225baca5b8f19865e6101db9ebb7243e132/shapely-2.1.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ba4d1333cc0bc94381d6d4308d2e4e008e0bd128bdcff5573199742ee3634359", size = 1643556, upload-time = "2025-09-24T13:50:32.291Z" }, + { url = "https://files.pythonhosted.org/packages/26/29/a5397e75b435b9895cd53e165083faed5d12fd9626eadec15a83a2411f0f/shapely-2.1.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0bd308103340030feef6c111d3eb98d50dc13feea33affc8a6f9fa549e9458a3", size = 2988308, upload-time = "2025-09-24T13:50:33.862Z" }, + { url = "https://files.pythonhosted.org/packages/b9/37/e781683abac55dde9771e086b790e554811a71ed0b2b8a1e789b7430dd44/shapely-2.1.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1e7d4d7ad262a48bb44277ca12c7c78cb1b0f56b32c10734ec9a1d30c0b0c54b", size = 3099844, upload-time = "2025-09-24T13:50:35.459Z" }, + { url = "https://files.pythonhosted.org/packages/d8/f3/9876b64d4a5a321b9dc482c92bb6f061f2fa42131cba643c699f39317cb9/shapely-2.1.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e9eddfe513096a71896441a7c37db72da0687b34752c4e193577a145c71736fc", size = 3988842, upload-time = "2025-09-24T13:50:37.478Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a0/704c7292f7014c7e74ec84eddb7b109e1fbae74a16deae9c1504b1d15565/shapely-2.1.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:980c777c612514c0cf99bc8a9de6d286f5e186dcaf9091252fcd444e5638193d", size = 4152714, upload-time = "2025-09-24T13:50:39.9Z" }, + { url = "https://files.pythonhosted.org/packages/53/46/319c9dc788884ad0785242543cdffac0e6530e4d0deb6c4862bc4143dcf3/shapely-2.1.2-cp312-cp312-win32.whl", hash = "sha256:9111274b88e4d7b54a95218e243282709b330ef52b7b86bc6aaf4f805306f454", size = 1542745, upload-time = "2025-09-24T13:50:41.414Z" }, + { url = "https://files.pythonhosted.org/packages/ec/bf/cb6c1c505cb31e818e900b9312d514f381fbfa5c4363edfce0fcc4f8c1a4/shapely-2.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:743044b4cfb34f9a67205cee9279feaf60ba7d02e69febc2afc609047cb49179", size = 1722861, upload-time = "2025-09-24T13:50:43.35Z" }, +] + +[[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" } +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" }, +] + +[[package]] +name = "simplejson" +version = "4.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/9e/0ad4f6db7b15683759f7863381c9ec73b15db426d6c01981e87716051535/simplejson-4.1.0.tar.gz", hash = "sha256:7b3ce1e8f13ec3cd41e31c45c2172caa4c66299c7002d3e0871b49a85683157e", size = 118653, upload-time = "2026-04-22T20:27:42.191Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/d3/ebb005c874fd3b531ede0773dbdaaa834357f0a09f3c232560398801bde6/simplejson-4.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2363c01a4cbbe297d4cbaff0d1ecd0be5413e6d095a7ccfffd63d030c2db379b", size = 111682, upload-time = "2026-04-22T20:25:15.659Z" }, + { url = "https://files.pythonhosted.org/packages/64/bc/ee06a8d1ed6de15e2a63ce5deb8cb99b2e0823035b58fd119c2964de48a0/simplejson-4.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:825298cd1b1d7c364845674cbd399049e15ac4f5178fb75efec995245ad689e0", size = 90542, upload-time = "2026-04-22T20:25:16.972Z" }, + { url = "https://files.pythonhosted.org/packages/dc/29/77bad9aab102c8576e79605e4a9570c9d8ff426dd3a27072fbb0eda51929/simplejson-4.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ef02cbda463b0de9cc6f825e56923df685a9fd2eb164640ca5b2ffb5e2e68e3", size = 90897, upload-time = "2026-04-22T20:25:18.581Z" }, + { url = "https://files.pythonhosted.org/packages/f2/ae/9d6701f40b1662cce330a686cb94915ceaa20991db35fb641e5ee5b1256c/simplejson-4.1.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:faf8c285672fc20f2e08ec0feb61804ea4f61c977b5154576ab1d93d2b5bbb5b", size = 168660, upload-time = "2026-04-22T20:25:20.023Z" }, + { url = "https://files.pythonhosted.org/packages/e5/36/3a3c8a44311ecfdcae1bc462546a4966aa8d232816b2856295ae8816c463/simplejson-4.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7134ef913d1f40dd797582f285c5f507298877768cc47b2616d7ec63f31ccc0f", size = 167265, upload-time = "2026-04-22T20:25:21.474Z" }, + { url = "https://files.pythonhosted.org/packages/b7/56/098823d112c42f03d6c44a2ebff302ccf9fbf4dcd933984f513f4b643e07/simplejson-4.1.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:598a8371d52c93508f4da1fdac7b200eb3bdd09691b8ad2ab3b42c2cc432f12e", size = 176911, upload-time = "2026-04-22T20:25:23.011Z" }, + { url = "https://files.pythonhosted.org/packages/d9/e7/db0e67dd0c61d778aef0832f563381f429c62a0329b9251138d3f5e0acd6/simplejson-4.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2a7a950cc21ad389c4b46ff383a66b8dad2f5b20a5880533055fe38569d3d010", size = 165930, upload-time = "2026-04-22T20:25:24.7Z" }, + { url = "https://files.pythonhosted.org/packages/ee/27/6cc9651194d83d1e685393e02619407a3a102e5345aabbeeb2b55a5468c9/simplejson-4.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e7084373d0dc656cd3d06a11b7de039ef8f200aee1c07db164a125252d248bb5", size = 174711, upload-time = "2026-04-22T20:25:26.13Z" }, + { url = "https://files.pythonhosted.org/packages/a0/a0/3153f6d830d4c6013dae8c6ca06b096539c69d04c1e53f42828695db9638/simplejson-4.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:04f30ab3dfb471d3aafd97ce0184bde769ce384684df5c2022c640a4a9501448", size = 167686, upload-time = "2026-04-22T20:25:27.916Z" }, + { url = "https://files.pythonhosted.org/packages/3f/6c/101841442ebb8630b03a6449ef3fbaa6e8e9ce61e6b7536d8efd01f5d1fe/simplejson-4.1.0-cp310-cp310-win32.whl", hash = "sha256:3935929fba56c5c8918c9b1d8b4e51240d9f9c86bc7870cc7b7a908cb78b3582", size = 88320, upload-time = "2026-04-22T20:25:29.785Z" }, + { url = "https://files.pythonhosted.org/packages/30/bb/e725542529c7c7b9c22c0e9db493525454782d81f28de3128cf9190cb02d/simplejson-4.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:8e0c146661eb49efdffd8a52ef596ab02b99070d5d131fd10ecbc7f1c50c5c70", size = 90465, upload-time = "2026-04-22T20:25:31.07Z" }, + { url = "https://files.pythonhosted.org/packages/c8/b2/a164046ebce06b3b258085465a3ff78c33f1809574bd66cf0646658cca7e/simplejson-4.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:220effc4fd48127bbf902303169a914b2291e6c0c828d2e0366a6b5e30ba9f9d", size = 111541, upload-time = "2026-04-22T20:25:32.778Z" }, + { url = "https://files.pythonhosted.org/packages/eb/95/bb8217eaf92feb6f5c5bfd5695762f5fed9fff61f5b4e2c3e2553dee93fe/simplejson-4.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d685840ad2e48eeeec5cf60f98af20fe39777bb7c6fbff89da52b9530a8a21d0", size = 90593, upload-time = "2026-04-22T20:25:34.524Z" }, + { url = "https://files.pythonhosted.org/packages/ad/c3/e58823e279b0c4a62660ab4aeca403bf839127714efaebc1ab5b7cf4569b/simplejson-4.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c87e999c30cbb487ffc0a44c4f48d42597b62cd37f4abb64f76d6abbe0f90683", size = 90720, upload-time = "2026-04-22T20:25:35.852Z" }, + { url = "https://files.pythonhosted.org/packages/ff/38/7597b1cf602a15b4dad75b416cacef23a3ec5a5ca30c2174efd3caf81d67/simplejson-4.1.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ccb22824870c4826566d9ec879adfebdeb887f5af6379eeb383f427789988418", size = 180903, upload-time = "2026-04-22T20:25:37.236Z" }, + { url = "https://files.pythonhosted.org/packages/15/4d/565d2a49564785c5bc32af0c5d2282ec3f77619eef1d5d78afa66362bfa5/simplejson-4.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f22e4b442d869d25757d550e7ddc8ccde7d0055a6ca03de285cb390e1e2259e3", size = 178133, upload-time = "2026-04-22T20:25:38.927Z" }, + { url = "https://files.pythonhosted.org/packages/c8/66/3c23f75939e97cdc01f3ffb011fdf903b0043f9005fa7864be33bcc4435a/simplejson-4.1.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0e476892da049f7be62c580d52926f0e16307251c1e151bf27c814c9f649a4b6", size = 188158, upload-time = "2026-04-22T20:25:40.606Z" }, + { url = "https://files.pythonhosted.org/packages/58/5c/6c9dae6ec0cdf63eca065a08a1f0e8de95ae0a40611d355e768f3e9b5348/simplejson-4.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c53010f1f1bad816cf6e3d15141b11cca27d5774f537012896e58db44a82e538", size = 176227, upload-time = "2026-04-22T20:25:42.281Z" }, + { url = "https://files.pythonhosted.org/packages/16/ea/41589b4d5f970d5b23434e0bf69b3736a8585f248eec88a0fae74a220b39/simplejson-4.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8d41dbdf4f770b123bfc671cb835332baa376e39c5e302e7c1e6343276eff8cf", size = 185536, upload-time = "2026-04-22T20:25:43.754Z" }, + { url = "https://files.pythonhosted.org/packages/1c/a3/a606f6ec79b7cbd7addae942ae8c37379da7e3c1697d601ff417524d6b59/simplejson-4.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:fc3d0db7842d62a6a157fb74e91d0a9e4c29cbdf8229f21e00fe01dde94c1ea5", size = 179303, upload-time = "2026-04-22T20:25:45.119Z" }, + { url = "https://files.pythonhosted.org/packages/66/f1/ff041f233d1b51f9b0df70c4df767a5c456fdb9bc7c53addf76b833c4ee6/simplejson-4.1.0-cp311-cp311-win32.whl", hash = "sha256:dab9fe6896ef0889b39a1de6d5493d1b61f87461c00d05147ec2d5c642457e14", size = 88411, upload-time = "2026-04-22T20:25:46.674Z" }, + { url = "https://files.pythonhosted.org/packages/1f/d8/cbcf9ba34fff865a92d8ea8cedf7f06a55a1595385655c4d645cc3a97433/simplejson-4.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fef923f1c6022d55140cf635a5b01fd27f61edd07470abb58f158480faef81a2", size = 90526, upload-time = "2026-04-22T20:25:48.007Z" }, + { url = "https://files.pythonhosted.org/packages/7e/a8/9222b52505b96c137de9327a0b42a9fb08f3d4e74f116d3991cb209d5562/simplejson-4.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:5e115dad456b6a269ba0c960d19c4969bf5560ace82e66df2bd2379e6c89a44d", size = 112416, upload-time = "2026-04-22T20:25:49.568Z" }, + { url = "https://files.pythonhosted.org/packages/08/a8/5a89daada43b9d20201cc483d5e9636ccffe3c9d766706ec6a6eea3263a2/simplejson-4.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:95940b02d0d367c4408c3650466a23f207011cf1973ab2e22e66c2d324120fe3", size = 91121, upload-time = "2026-04-22T20:25:51.075Z" }, + { url = "https://files.pythonhosted.org/packages/87/5e/15c256163366e47db20052716a72864af647cc9a2fdbe25a7888befd738a/simplejson-4.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ea0c1e0d6f1a6f49d607c486e63406eefb35403aac7f0df3f00f53acfb85b5e8", size = 91059, upload-time = "2026-04-22T20:25:52.829Z" }, + { url = "https://files.pythonhosted.org/packages/cd/a1/6b704bb83d4d61610008e6751f1a433ccc82d154c6e1146ec99523102fe0/simplejson-4.1.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:be83ece9e9b877b9896b87aafb32d1bf68d930ecf0c96a93b4524ea4449e4db9", size = 190298, upload-time = "2026-04-22T20:25:54.434Z" }, + { url = "https://files.pythonhosted.org/packages/3b/ed/5cf7e5d7dcabe63517e30e643d03d6085bac5e333e98d606c688991eb94a/simplejson-4.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2a9d39a1466113d0be2a490c1d0322f5230f3929ccd58dd379c6c26b9850c8db", size = 187002, upload-time = "2026-04-22T20:25:56.744Z" }, + { url = "https://files.pythonhosted.org/packages/40/e1/a4e2b0c1e76b81e9bcfa9bd01b07bca6896b231733180dcd2690d74c68d3/simplejson-4.1.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9dd183e5be26b24e4cde589e24c6a422457360c90cccab05df134a37a017f469", size = 195147, upload-time = "2026-04-22T20:25:58.215Z" }, + { url = "https://files.pythonhosted.org/packages/35/d7/968cb60d9430c8fab996796ad65e019a02daf7bfda64f12eb17a278d7aef/simplejson-4.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9aa72415ed30cd21a268b0934cc24eee9ccc1603694b6fe7908b471803bdffa7", size = 183931, upload-time = "2026-04-22T20:25:59.789Z" }, + { url = "https://files.pythonhosted.org/packages/a1/21/c57947fed85a24881151f74d2af12778283e8f770e317a32b5b9997baad9/simplejson-4.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0ee907e5ae3e06bfba869684d0045e39c918a1b03b8883dce3dc7f86b941c0a0", size = 192230, upload-time = "2026-04-22T20:26:01.57Z" }, + { url = "https://files.pythonhosted.org/packages/5b/a8/3d47994bfa888d82695b4e1a38aa32eff029134aeb4fe4b4b4eafda85aa4/simplejson-4.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d264fc26d2fc13d255596a151fa0a272eb8988348c9436567d16717e524a72c", size = 187811, upload-time = "2026-04-22T20:26:02.977Z" }, + { url = "https://files.pythonhosted.org/packages/0c/61/ceee4f997778830b8bd62afcd93e244793068573a3beaaf69fdaa66e403d/simplejson-4.1.0-cp312-cp312-win32.whl", hash = "sha256:a63b84e500a8948912ef9a554b1c18fb35c29cb8ad96faa7806a5a64fc94f055", size = 88516, upload-time = "2026-04-22T20:26:04.384Z" }, + { url = "https://files.pythonhosted.org/packages/85/34/e7b7abe1489b7017ed5959842e227b8bc8dc6b1e6999689a211ec8e4faac/simplejson-4.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:2697fc8488246e56cc9caf84b0ecc31d30a4ae6a1f6704fa61c59c6694b79745", size = 90751, upload-time = "2026-04-22T20:26:05.718Z" }, + { url = "https://files.pythonhosted.org/packages/df/b3/b64baae671e9037b2a9c6df96d9dcfd22cf0f6dd9fb3e3dbbeb87553f2c9/simplejson-4.1.0-py3-none-any.whl", hash = "sha256:16dacdf30d7d406c5035a0fa104df08248356e30f8aad4c3aa1e6be38751b031", size = 69196, upload-time = "2026-04-22T20:27:40.672Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "slidingwindow" +version = "0.0.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "psutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3e/d6/e1a62e9f3d49d70b61e5c4623fb8de3773aa896d4e54fb80aca20f131042/slidingwindow-0.0.14.tar.gz", hash = "sha256:4c52adf24e2dd6786b9c1c49144083254d9bd9de655b4f2f17bd78cc41a01e49", size = 7216, upload-time = "2020-06-23T09:20:34.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/80/ce3b1a3a6f940a89da6fcacc20cad3cd9520456fdf85fc18328026973f30/slidingwindow-0.0.14-py3-none-any.whl", hash = "sha256:1eeb2f4841b0bd7e687f19097c5b9f8cef7f6c4fc647b6aa8764e7a79b58f8c5", size = 9001, upload-time = "2020-06-23T09:20:33.879Z" }, +] + +[[package]] +name = "supervision" +version = "0.27.0.post2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "defusedxml" }, + { name = "matplotlib" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "opencv-python" }, + { name = "pillow" }, + { name = "pydeprecate" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c5/9c/46d056999c5ea6cf8dc10451163601867247bc1378b69b64c987bd44a336/supervision-0.27.0.post2.tar.gz", hash = "sha256:be1283ef2000a593a4568d83289344af95befb8b847a954d5f099a43cb253dc9", size = 186135, upload-time = "2026-03-14T08:12:10.973Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/34/a138692ced038c135d1a45b73a433c89c57cad2eac9dd55bb38d9de89783/supervision-0.27.0.post2-py3-none-any.whl", hash = "sha256:713a341a563774d6a4b017787baa94f8698a9ea1de57155093d70de3a5007941", size = 217448, upload-time = "2026-03-14T08:12:09.279Z" }, +] + +[[package]] +name = "sympy" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpmath" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" }, +] + +[[package]] +name = "tensorboard" +version = "2.20.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "absl-py" }, + { name = "grpcio" }, + { name = "markdown" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "protobuf" }, + { name = "setuptools" }, + { name = "tensorboard-data-server" }, + { name = "werkzeug" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/d9/a5db55f88f258ac669a92858b70a714bbbd5acd993820b41ec4a96a4d77f/tensorboard-2.20.0-py3-none-any.whl", hash = "sha256:9dc9f978cb84c0723acf9a345d96c184f0293d18f166bb8d59ee098e6cfaaba6", size = 5525680, upload-time = "2025-07-17T19:20:49.638Z" }, +] + +[[package]] +name = "tensorboard-data-server" +version = "0.7.2" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/13/e503968fefabd4c6b2650af21e110aa8466fe21432cd7c43a84577a89438/tensorboard_data_server-0.7.2-py3-none-any.whl", hash = "sha256:7e0610d205889588983836ec05dc098e80f97b7e7bbff7e994ebb78f578d0ddb", size = 2356, upload-time = "2023-10-23T21:23:32.16Z" }, + { url = "https://files.pythonhosted.org/packages/b7/85/dabeaf902892922777492e1d253bb7e1264cadce3cea932f7ff599e53fea/tensorboard_data_server-0.7.2-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:9fe5d24221b29625dbc7328b0436ca7fc1c23de4acf4d272f1180856e32f9f60", size = 4823598, upload-time = "2023-10-23T21:23:33.714Z" }, + { url = "https://files.pythonhosted.org/packages/73/c6/825dab04195756cf8ff2e12698f22513b3db2f64925bdd41671bfb33aaa5/tensorboard_data_server-0.7.2-py3-none-manylinux_2_31_x86_64.whl", hash = "sha256:ef687163c24185ae9754ed5650eb5bc4d84ff257aabdc33f0cc6f74d8ba54530", size = 6590363, upload-time = "2023-10-23T21:23:35.583Z" }, +] + +[[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, upload-time = "2025-03-13T13:49:23.031Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" }, +] + +[[package]] +name = "tifffile" +version = "2025.5.10" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform != 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/44/d0/18fed0fc0916578a4463f775b0fbd9c5fed2392152d039df2fb533bfdd5d/tifffile-2025.5.10.tar.gz", hash = "sha256:018335d34283aa3fd8c263bae5c3c2b661ebc45548fde31504016fcae7bf1103", size = 365290, upload-time = "2025-05-10T19:22:34.386Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/06/bd0a6097da704a7a7c34a94cfd771c3ea3c2f405dd214e790d22c93f6be1/tifffile-2025.5.10-py3-none-any.whl", hash = "sha256:e37147123c0542d67bc37ba5cdd67e12ea6fbe6e86c52bee037a9eb6a064e5ad", size = 226533, upload-time = "2025-05-10T19:22:27.279Z" }, +] + +[[package]] +name = "tifffile" +version = "2026.3.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c5/cb/2f6d79c7576e22c116352a801f4c3c8ace5957e9aced862012430b62e14f/tifffile-2026.3.3.tar.gz", hash = "sha256:d9a1266bed6f2ee1dd0abde2018a38b4f8b2935cb843df381d70ac4eac5458b7", size = 388745, upload-time = "2026-03-03T19:14:38.134Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/e4/e804505f87627cd8cdae9c010c47c4485fd8c1ce31a7dd0ab7fcc4707377/tifffile-2026.3.3-py3-none-any.whl", hash = "sha256:e8be15c94273113d31ecb7aa3a39822189dd11c4967e3cc88c178f1ad2fd1170", size = 243960, upload-time = "2026-03-03T19:14:35.808Z" }, +] + +[[package]] +name = "tifffile" +version = "2026.4.11" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'win32'", + "python_full_version >= '3.12' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d7/4a/e687f5957fead200faad58dbf9c9431a2bbb118040e96f5fb8a55f7ebc50/tifffile-2026.4.11.tar.gz", hash = "sha256:17758ff0c0d4db385792a083ad3ca51fcb0f4d942642f4d8f8bc1287fdcf17bc", size = 394956, upload-time = "2026-04-12T01:57:28.793Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/9f/74f110b4271ded519c7add4341cbabc824de26817ff1c345b3109df9e99c/tifffile-2026.4.11-py3-none-any.whl", hash = "sha256:9b94ffeddb39e97601af646345e8808f885773de01b299e480ed6d3a41509ec9", size = 248227, upload-time = "2026-04-12T01:57:26.969Z" }, +] + +[[package]] +name = "timm" +version = "1.0.26" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "huggingface-hub" }, + { name = "pyyaml" }, + { name = "safetensors" }, + { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "sys_platform != 'darwin'" }, + { name = "torchvision", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torchvision", version = "0.26.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "sys_platform != 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7b/1e/e924b3b2326a856aaf68586f9c52a5fc81ef45715eca408393b68c597e0e/timm-1.0.26.tar.gz", hash = "sha256:f66f082f2f381cf68431c22714c8b70f723837fa2a185b155961eab90f2d5b10", size = 2419859, upload-time = "2026-03-23T18:12:10.272Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6f/e9/bebf3d50e3fc847378988235f87c37ad3ac26d386041ab915d15e92025cd/timm-1.0.26-py3-none-any.whl", hash = "sha256:985c330de5ccc3a2aa0224eb7272e6a336084702390bb7e3801f3c91603d3683", size = 2568766, upload-time = "2026-03-23T18:12:08.062Z" }, +] + +[[package]] +name = "tokenizers" +version = "0.22.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "huggingface-hub" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/73/6f/f80cfef4a312e1fb34baf7d85c72d4411afde10978d4657f8cdd811d3ccc/tokenizers-0.22.2.tar.gz", hash = "sha256:473b83b915e547aa366d1eee11806deaf419e17be16310ac0a14077f1e28f917", size = 372115, upload-time = "2026-01-05T10:45:15.988Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/97/5dbfabf04c7e348e655e907ed27913e03db0923abb5dfdd120d7b25630e1/tokenizers-0.22.2-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:544dd704ae7238755d790de45ba8da072e9af3eea688f698b137915ae959281c", size = 3100275, upload-time = "2026-01-05T10:41:02.158Z" }, + { url = "https://files.pythonhosted.org/packages/2e/47/174dca0502ef88b28f1c9e06b73ce33500eedfac7a7692108aec220464e7/tokenizers-0.22.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:1e418a55456beedca4621dbab65a318981467a2b188e982a23e117f115ce5001", size = 2981472, upload-time = "2026-01-05T10:41:00.276Z" }, + { url = "https://files.pythonhosted.org/packages/d6/84/7990e799f1309a8b87af6b948f31edaa12a3ed22d11b352eaf4f4b2e5753/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2249487018adec45d6e3554c71d46eb39fa8ea67156c640f7513eb26f318cec7", size = 3290736, upload-time = "2026-01-05T10:40:32.165Z" }, + { url = "https://files.pythonhosted.org/packages/78/59/09d0d9ba94dcd5f4f1368d4858d24546b4bdc0231c2354aa31d6199f0399/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25b85325d0815e86e0bac263506dd114578953b7b53d7de09a6485e4a160a7dd", size = 3168835, upload-time = "2026-01-05T10:40:38.847Z" }, + { url = "https://files.pythonhosted.org/packages/47/50/b3ebb4243e7160bda8d34b731e54dd8ab8b133e50775872e7a434e524c28/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfb88f22a209ff7b40a576d5324bf8286b519d7358663db21d6246fb17eea2d5", size = 3521673, upload-time = "2026-01-05T10:40:56.614Z" }, + { url = "https://files.pythonhosted.org/packages/e0/fa/89f4cb9e08df770b57adb96f8cbb7e22695a4cb6c2bd5f0c4f0ebcf33b66/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c774b1276f71e1ef716e5486f21e76333464f47bece56bbd554485982a9e03e", size = 3724818, upload-time = "2026-01-05T10:40:44.507Z" }, + { url = "https://files.pythonhosted.org/packages/64/04/ca2363f0bfbe3b3d36e95bf67e56a4c88c8e3362b658e616d1ac185d47f2/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df6c4265b289083bf710dff49bc51ef252f9d5be33a45ee2bed151114a56207b", size = 3379195, upload-time = "2026-01-05T10:40:51.139Z" }, + { url = "https://files.pythonhosted.org/packages/2e/76/932be4b50ef6ccedf9d3c6639b056a967a86258c6d9200643f01269211ca/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:369cc9fc8cc10cb24143873a0d95438bb8ee257bb80c71989e3ee290e8d72c67", size = 3274982, upload-time = "2026-01-05T10:40:58.331Z" }, + { url = "https://files.pythonhosted.org/packages/1d/28/5f9f5a4cc211b69e89420980e483831bcc29dade307955cc9dc858a40f01/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:29c30b83d8dcd061078b05ae0cb94d3c710555fbb44861139f9f83dcca3dc3e4", size = 9478245, upload-time = "2026-01-05T10:41:04.053Z" }, + { url = "https://files.pythonhosted.org/packages/6c/fb/66e2da4704d6aadebf8cb39f1d6d1957df667ab24cff2326b77cda0dcb85/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:37ae80a28c1d3265bb1f22464c856bd23c02a05bb211e56d0c5301a435be6c1a", size = 9560069, upload-time = "2026-01-05T10:45:10.673Z" }, + { url = "https://files.pythonhosted.org/packages/16/04/fed398b05caa87ce9b1a1bb5166645e38196081b225059a6edaff6440fac/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:791135ee325f2336f498590eb2f11dc5c295232f288e75c99a36c5dbce63088a", size = 9899263, upload-time = "2026-01-05T10:45:12.559Z" }, + { url = "https://files.pythonhosted.org/packages/05/a1/d62dfe7376beaaf1394917e0f8e93ee5f67fea8fcf4107501db35996586b/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:38337540fbbddff8e999d59970f3c6f35a82de10053206a7562f1ea02d046fa5", size = 10033429, upload-time = "2026-01-05T10:45:14.333Z" }, + { url = "https://files.pythonhosted.org/packages/fd/18/a545c4ea42af3df6effd7d13d250ba77a0a86fb20393143bbb9a92e434d4/tokenizers-0.22.2-cp39-abi3-win32.whl", hash = "sha256:a6bf3f88c554a2b653af81f3204491c818ae2ac6fbc09e76ef4773351292bc92", size = 2502363, upload-time = "2026-01-05T10:45:20.593Z" }, + { url = "https://files.pythonhosted.org/packages/65/71/0670843133a43d43070abeb1949abfdef12a86d490bea9cd9e18e37c5ff7/tokenizers-0.22.2-cp39-abi3-win_amd64.whl", hash = "sha256:c9ea31edff2968b44a88f97d784c2f16dc0729b8b143ed004699ebca91f05c48", size = 2747786, upload-time = "2026-01-05T10:45:18.411Z" }, + { url = "https://files.pythonhosted.org/packages/72/f4/0de46cfa12cdcbcd464cc59fde36912af405696f687e53a091fb432f694c/tokenizers-0.22.2-cp39-abi3-win_arm64.whl", hash = "sha256:9ce725d22864a1e965217204946f830c37876eee3b2ba6fc6255e8e903d5fcbc", size = 2612133, upload-time = "2026-01-05T10:45:17.232Z" }, + { url = "https://files.pythonhosted.org/packages/84/04/655b79dbcc9b3ac5f1479f18e931a344af67e5b7d3b251d2dcdcd7558592/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:753d47ebd4542742ef9261d9da92cd545b2cacbb48349a1225466745bb866ec4", size = 3282301, upload-time = "2026-01-05T10:40:34.858Z" }, + { url = "https://files.pythonhosted.org/packages/46/cd/e4851401f3d8f6f45d8480262ab6a5c8cb9c4302a790a35aa14eeed6d2fd/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e10bf9113d209be7cd046d40fbabbaf3278ff6d18eb4da4c500443185dc1896c", size = 3161308, upload-time = "2026-01-05T10:40:40.737Z" }, + { url = "https://files.pythonhosted.org/packages/6f/6e/55553992a89982cd12d4a66dddb5e02126c58677ea3931efcbe601d419db/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64d94e84f6660764e64e7e0b22baa72f6cd942279fdbb21d46abd70d179f0195", size = 3718964, upload-time = "2026-01-05T10:40:46.56Z" }, + { url = "https://files.pythonhosted.org/packages/59/8c/b1c87148aa15e099243ec9f0cf9d0e970cc2234c3257d558c25a2c5304e6/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f01a9c019878532f98927d2bacb79bbb404b43d3437455522a00a30718cdedb5", size = 3373542, upload-time = "2026-01-05T10:40:52.803Z" }, +] + +[[package]] +name = "tomli" +version = "2.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/22/de/48c59722572767841493b26183a0d1cc411d54fd759c5607c4590b6563a6/tomli-2.4.1.tar.gz", hash = "sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f", size = 17543, upload-time = "2026-03-25T20:22:03.828Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/11/db3d5885d8528263d8adc260bb2d28ebf1270b96e98f0e0268d32b8d9900/tomli-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d652285c30", size = 154704, upload-time = "2026-03-25T20:21:10.473Z" }, + { url = "https://files.pythonhosted.org/packages/6d/f7/675db52c7e46064a9aa928885a9b20f4124ecb9bc2e1ce74c9106648d202/tomli-2.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a53a", size = 149454, upload-time = "2026-03-25T20:21:12.036Z" }, + { url = "https://files.pythonhosted.org/packages/61/71/81c50943cf953efa35bce7646caab3cf457a7d8c030b27cfb40d7235f9ee/tomli-2.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96481a5786729fd470164b47cdb3e0e58062a496f455ee41b4403be77cb5a076", size = 237561, upload-time = "2026-03-25T20:21:13.098Z" }, + { url = "https://files.pythonhosted.org/packages/48/c1/f41d9cb618acccca7df82aaf682f9b49013c9397212cb9f53219e3abac37/tomli-2.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a881ab208c0baf688221f8cecc5401bd291d67e38a1ac884d6736cbcd8247e9", size = 243824, upload-time = "2026-03-25T20:21:14.569Z" }, + { url = "https://files.pythonhosted.org/packages/22/e4/5a816ecdd1f8ca51fb756ef684b90f2780afc52fc67f987e3c61d800a46d/tomli-2.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47149d5bd38761ac8be13a84864bf0b7b70bc051806bc3669ab1cbc56216b23c", size = 242227, upload-time = "2026-03-25T20:21:15.712Z" }, + { url = "https://files.pythonhosted.org/packages/6b/49/2b2a0ef529aa6eec245d25f0c703e020a73955ad7edf73e7f54ddc608aa5/tomli-2.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ec9bfaf3ad2df51ace80688143a6a4ebc09a248f6ff781a9945e51937008fcbc", size = 247859, upload-time = "2026-03-25T20:21:17.001Z" }, + { url = "https://files.pythonhosted.org/packages/83/bd/6c1a630eaca337e1e78c5903104f831bda934c426f9231429396ce3c3467/tomli-2.4.1-cp311-cp311-win32.whl", hash = "sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049", size = 97204, upload-time = "2026-03-25T20:21:18.079Z" }, + { url = "https://files.pythonhosted.org/packages/42/59/71461df1a885647e10b6bb7802d0b8e66480c61f3f43079e0dcd315b3954/tomli-2.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ee18d9ebdb417e384b58fe414e8d6af9f4e7a0ae761519fb50f721de398dd4e", size = 108084, upload-time = "2026-03-25T20:21:18.978Z" }, + { url = "https://files.pythonhosted.org/packages/b8/83/dceca96142499c069475b790e7913b1044c1a4337e700751f48ed723f883/tomli-2.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:c2541745709bad0264b7d4705ad453b76ccd191e64aa6f0fc66b69a293a45ece", size = 95285, upload-time = "2026-03-25T20:21:20.309Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ba/42f134a3fe2b370f555f44b1d72feebb94debcab01676bf918d0cb70e9aa/tomli-2.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c742f741d58a28940ce01d58f0ab2ea3ced8b12402f162f4d534dfe18ba1cd6a", size = 155924, upload-time = "2026-03-25T20:21:21.626Z" }, + { url = "https://files.pythonhosted.org/packages/dc/c7/62d7a17c26487ade21c5422b646110f2162f1fcc95980ef7f63e73c68f14/tomli-2.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7f86fd587c4ed9dd76f318225e7d9b29cfc5a9d43de44e5754db8d1128487085", size = 150018, upload-time = "2026-03-25T20:21:23.002Z" }, + { url = "https://files.pythonhosted.org/packages/5c/05/79d13d7c15f13bdef410bdd49a6485b1c37d28968314eabee452c22a7fda/tomli-2.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9", size = 244948, upload-time = "2026-03-25T20:21:24.04Z" }, + { url = "https://files.pythonhosted.org/packages/10/90/d62ce007a1c80d0b2c93e02cab211224756240884751b94ca72df8a875ca/tomli-2.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5", size = 253341, upload-time = "2026-03-25T20:21:25.177Z" }, + { url = "https://files.pythonhosted.org/packages/1a/7e/caf6496d60152ad4ed09282c1885cca4eea150bfd007da84aea07bcc0a3e/tomli-2.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e262d41726bc187e69af7825504c933b6794dc3fbd5945e41a79bb14c31f585", size = 248159, upload-time = "2026-03-25T20:21:26.364Z" }, + { url = "https://files.pythonhosted.org/packages/99/e7/c6f69c3120de34bbd882c6fba7975f3d7a746e9218e56ab46a1bc4b42552/tomli-2.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5cb41aa38891e073ee49d55fbc7839cfdb2bc0e600add13874d048c94aadddd1", size = 253290, upload-time = "2026-03-25T20:21:27.46Z" }, + { url = "https://files.pythonhosted.org/packages/d6/2f/4a3c322f22c5c66c4b836ec58211641a4067364f5dcdd7b974b4c5da300c/tomli-2.4.1-cp312-cp312-win32.whl", hash = "sha256:da25dc3563bff5965356133435b757a795a17b17d01dbc0f42fb32447ddfd917", size = 98141, upload-time = "2026-03-25T20:21:28.492Z" }, + { url = "https://files.pythonhosted.org/packages/24/22/4daacd05391b92c55759d55eaee21e1dfaea86ce5c571f10083360adf534/tomli-2.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:52c8ef851d9a240f11a88c003eacb03c31fc1c9c4ec64a99a0f922b93874fda9", size = 108847, upload-time = "2026-03-25T20:21:29.386Z" }, + { url = "https://files.pythonhosted.org/packages/68/fd/70e768887666ddd9e9f5d85129e84910f2db2796f9096aa02b721a53098d/tomli-2.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:f758f1b9299d059cc3f6546ae2af89670cb1c4d48ea29c3cacc4fe7de3058257", size = 95088, upload-time = "2026-03-25T20:21:30.677Z" }, + { url = "https://files.pythonhosted.org/packages/7b/61/cceae43728b7de99d9b847560c262873a1f6c98202171fd5ed62640b494b/tomli-2.4.1-py3-none-any.whl", hash = "sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe", size = 14583, upload-time = "2026-03-25T20:22:03.012Z" }, +] + +[[package]] +name = "torch" +version = "2.11.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "filelock", marker = "sys_platform == 'darwin'" }, + { name = "fsspec", marker = "sys_platform == 'darwin'" }, + { name = "jinja2", marker = "sys_platform == 'darwin'" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "setuptools", marker = "sys_platform == 'darwin'" }, + { name = "sympy", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/ac/f2/c1690994afe461aae2d0cac62251e6802a703dec0a6c549c02ecd0de92a9/torch-2.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2c0d7fcfbc0c4e8bb5ebc3907cbc0c6a0da1b8f82b1fc6e14e914fa0b9baf74e", size = 80526521, upload-time = "2026-03-23T18:12:06.86Z" }, + { url = "https://files.pythonhosted.org/packages/ae/0d/98b410492609e34a155fa8b121b55c7dca229f39636851c3a9ec20edea21/torch-2.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7b6a60d48062809f58595509c524b88e6ddec3ebe25833d6462eeab81e5f2ce4", size = 80529712, upload-time = "2026-03-23T18:12:02.608Z" }, + { url = "https://files.pythonhosted.org/packages/6f/8b/69e3008d78e5cee2b30183340cc425081b78afc5eff3d080daab0adda9aa/torch-2.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4b5866312ee6e52ea625cd211dcb97d6a2cdc1131a5f15cc0d87eec948f6dd34", size = 80606338, upload-time = "2026-03-23T18:11:34.781Z" }, +] + +[[package]] +name = "torch" +version = "2.11.0+cu128" +source = { registry = "https://download.pytorch.org/whl/cu128" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'win32'", + "python_full_version >= '3.12' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version < '3.11' and sys_platform != 'darwin'", +] +dependencies = [ + { name = "cuda-bindings", marker = "sys_platform == 'linux'" }, + { name = "cuda-toolkit", extra = ["cublas", "cudart", "cufft", "cufile", "cupti", "curand", "cusolver", "cusparse", "nvjitlink", "nvrtc", "nvtx"], marker = "sys_platform == 'linux'" }, + { name = "filelock", marker = "sys_platform != 'darwin'" }, + { name = "fsspec", marker = "sys_platform != 'darwin'" }, + { name = "jinja2", marker = "sys_platform != 'darwin'" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform != 'darwin'" }, + { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform != 'darwin'" }, + { name = "nvidia-cudnn-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cusparselt-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nccl-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nvshmem-cu12", marker = "sys_platform == 'linux'" }, + { name = "setuptools", marker = "sys_platform != 'darwin'" }, + { name = "sympy", marker = "sys_platform != 'darwin'" }, + { name = "triton", marker = "sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform != 'darwin'" }, +] +wheels = [ + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp310-cp310-manylinux_2_28_aarch64.whl", upload-time = "2026-03-23T15:00:45Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp310-cp310-manylinux_2_28_x86_64.whl", upload-time = "2026-03-23T15:00:56Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp310-cp310-win_amd64.whl", upload-time = "2026-03-23T15:00:59Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp311-cp311-manylinux_2_28_aarch64.whl", upload-time = "2026-03-23T15:01:03Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp311-cp311-manylinux_2_28_x86_64.whl", upload-time = "2026-03-23T15:01:15Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp311-cp311-win_amd64.whl", upload-time = "2026-03-23T15:01:15Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp312-cp312-manylinux_2_28_aarch64.whl", upload-time = "2026-03-23T15:01:24Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp312-cp312-manylinux_2_28_x86_64.whl", upload-time = "2026-03-23T15:01:33Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp312-cp312-win_amd64.whl", upload-time = "2026-03-23T15:01:36Z" }, +] + +[[package]] +name = "torchmetrics" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lightning-utilities" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging" }, + { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "sys_platform != 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/81/34/39b8b749333db56c0585d7a11fa62a283c087bb1dfc897d69fb8cedbefb1/torchmetrics-1.9.0.tar.gz", hash = "sha256:a488609948600df52d3db4fcdab02e62aab2a85ef34da67037dc3e65b8512faa", size = 581765, upload-time = "2026-03-09T17:41:22.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/a2/c7f6ebf546f8f644edf0f999aa98ece106986a77a7b922316bf6414ff825/torchmetrics-1.9.0-py3-none-any.whl", hash = "sha256:bfdcbff3dd1d96b3374bb2496eb39f23c4b28b8a845b6a18c313688e0d2d9ca1", size = 983384, upload-time = "2026-03-09T17:41:19.756Z" }, +] + +[[package]] +name = "torchvision" +version = "0.26.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "pillow", marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/74/b4/cdfee31e0402ea035135462cb0ab496e974d56fab6b4e7a1f0cbccb8cd28/torchvision-0.26.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a06d4772a8e13e772906ed736cc53ec6639e5e60554f8e5fa6ca165aabebc464", size = 1863503, upload-time = "2026-03-23T18:13:01.384Z" }, + { url = "https://files.pythonhosted.org/packages/b4/bd/d552a2521bade3295b2c6e7a4a0d1022261cab7ca7011f4e2a330dbb3caa/torchvision-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:55bd6ad4ae77be01ba67a410b05b51f53b0d0ee45f146eb6a0dfb9007e70ab3c", size = 1863499, upload-time = "2026-03-23T18:12:58.696Z" }, + { url = "https://files.pythonhosted.org/packages/ae/e7/56b47cc3b132aea90ccce22bcb8975dec688b002150012acc842846039d0/torchvision-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c409e1c3fdebec7a3834465086dbda8bf7680eff79abf7fd2f10c6b59520a7a4", size = 1863502, upload-time = "2026-03-23T18:12:57.326Z" }, +] + +[[package]] +name = "torchvision" +version = "0.26.0+cu128" +source = { registry = "https://download.pytorch.org/whl/cu128" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'win32'", + "python_full_version >= '3.12' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version < '3.11' and sys_platform != 'darwin'", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform != 'darwin'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform != 'darwin'" }, + { name = "pillow", marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "sys_platform != 'darwin'" }, +] +wheels = [ + { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:2a04bf491eb22e6487defe6cead6ffaabbce13fb5981b8eb3540050f96cb0599", upload-time = "2026-04-09T23:21:33Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:f44bfc61b9be80bcf52a762d34da363cea3125d10c01f37e271583803c7bb97b", upload-time = "2026-03-23T15:36:21Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp310-cp310-win_amd64.whl", hash = "sha256:ed0770e00b96d8aa675718e20db69c740c927f027c9c8b1330251f8a973221b6", upload-time = "2026-04-09T23:21:33Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:ed1324dbbbecb5a0149ed4ce8f9308465a1eef85ca2d2370dbb14805bf1c90aa", upload-time = "2026-04-09T23:21:34Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f2629d056570c929b0a1d5473d9cb0320b90bda1764bda353553a72cc6b2069", upload-time = "2026-03-23T15:36:22Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp311-cp311-win_amd64.whl", hash = "sha256:d26091b15cd6e3c74c148d9b68c9a901ad6fb9b0f66fa3ea3ab09f04132a07d3", upload-time = "2026-04-09T23:21:35Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:63e35234aed13b6edda37056f417b5c281249669db631e706811917af36b21d7", upload-time = "2026-04-09T23:21:35Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ccf26b4b659cfce6f2208cb8326071d51c70219a34856dfdf468d1e19af52c0d", upload-time = "2026-03-23T15:36:22Z" }, + { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp312-cp312-win_amd64.whl", hash = "sha256:8c0d1c4fbb2c9a4d5d41d0aaa87da20e525bcb2a154ce405725b0be59456804b", upload-time = "2026-04-09T23:21:36Z" }, +] + +[[package]] +name = "tqdm" +version = "4.67.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/a9/6ba95a270c6f1fbcd8dac228323f2777d886cb206987444e4bce66338dd4/tqdm-4.67.3.tar.gz", hash = "sha256:7d825f03f89244ef73f1d4ce193cb1774a8179fd96f31d7e1dcde62092b960bb", size = 169598, upload-time = "2026-02-03T17:35:53.048Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/16/e1/3079a9ff9b8e11b846c6ac5c8b5bfb7ff225eee721825310c91b3b50304f/tqdm-4.67.3-py3-none-any.whl", hash = "sha256:ee1e4c0e59148062281c49d80b25b67771a127c85fc9676d3be5f243206826bf", size = 78374, upload-time = "2026-02-03T17:35:50.982Z" }, +] + +[[package]] +name = "transformers" +version = "5.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "huggingface-hub" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "regex" }, + { name = "safetensors" }, + { name = "tokenizers" }, + { name = "tqdm" }, + { name = "typer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/88/14/e3eb58bd4c9df45af154f9de59a6e66a2ece30dd64434c710e40e5a4b1f1/transformers-5.6.0.tar.gz", hash = "sha256:291951976b79a6f93ec06d6ab14489a99aecdbc8f05aaabab538ea1d508c9a97", size = 8311711, upload-time = "2026-04-22T15:42:03.393Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/80/ac700df26a83969d2cf8d09d3dd191bb9bbe8156fa4607e614438b1da8c8/transformers-5.6.0-py3-none-any.whl", hash = "sha256:def5aac47b28e2f1386fa64f2f458a5474ba7733ab74c1765e7c67a79d1f1cbd", size = 10364790, upload-time = "2026-04-22T15:41:58.723Z" }, +] + +[[package]] +name = "triton" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/ba/b1b04f4b291a3205d95ebd24465de0e5bf010a2df27a4e58a9b5f039d8f2/triton-3.6.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c723cfb12f6842a0ae94ac307dba7e7a44741d720a40cf0e270ed4a4e3be781", size = 175972180, upload-time = "2026-01-20T16:15:53.664Z" }, + { url = "https://files.pythonhosted.org/packages/8c/f7/f1c9d3424ab199ac53c2da567b859bcddbb9c9e7154805119f8bd95ec36f/triton-3.6.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a6550fae429e0667e397e5de64b332d1e5695b73650ee75a6146e2e902770bea", size = 188105201, upload-time = "2026-01-20T16:00:29.272Z" }, + { url = "https://files.pythonhosted.org/packages/0f/2c/96f92f3c60387e14cc45aed49487f3486f89ea27106c1b1376913c62abe4/triton-3.6.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49df5ef37379c0c2b5c0012286f80174fcf0e073e5ade1ca9a86c36814553651", size = 176081190, upload-time = "2026-01-20T16:16:00.523Z" }, + { url = "https://files.pythonhosted.org/packages/e0/12/b05ba554d2c623bffa59922b94b0775673de251f468a9609bc9e45de95e9/triton-3.6.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8e323d608e3a9bfcc2d9efcc90ceefb764a82b99dea12a86d643c72539ad5d3", size = 188214640, upload-time = "2026-01-20T16:00:35.869Z" }, + { url = "https://files.pythonhosted.org/packages/17/5d/08201db32823bdf77a0e2b9039540080b2e5c23a20706ddba942924ebcd6/triton-3.6.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:374f52c11a711fd062b4bfbb201fd9ac0a5febd28a96fb41b4a0f51dde3157f4", size = 176128243, upload-time = "2026-01-20T16:16:07.857Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a8/cdf8b3e4c98132f965f88c2313a4b493266832ad47fb52f23d14d4f86bb5/triton-3.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:74caf5e34b66d9f3a429af689c1c7128daba1d8208df60e81106b115c00d6fca", size = 188266850, upload-time = "2026-01-20T16:00:43.041Z" }, +] + +[[package]] +name = "typer" +version = "0.24.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-doc" }, + { name = "click" }, + { name = "rich" }, + { name = "shellingham" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/b8/9ebb531b6c2d377af08ac6746a5df3425b21853a5d2260876919b58a2a4a/typer-0.24.2.tar.gz", hash = "sha256:ec070dcfca1408e85ee203c6365001e818c3b7fffe686fd07ff2d68095ca0480", size = 119849, upload-time = "2026-04-22T17:45:34.413Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/d1/9484b497e0a0410b901c12b8251c3e746e1e863f7d28419ffe06f7892fda/typer-0.24.2-py3-none-any.whl", hash = "sha256:b618bc3d721f9a8d30f3e05565be26416d06e9bcc29d49bc491dc26aba674fa8", size = 55977, upload-time = "2026-04-22T17:45:33.055Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "tzdata" +version = "2026.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/19/f5/cd531b2d15a671a40c0f66cf06bc3570a12cd56eef98960068ebbad1bf5a/tzdata-2026.1.tar.gz", hash = "sha256:67658a1903c75917309e753fdc349ac0efd8c27db7a0cb406a25be4840f87f98", size = 197639, upload-time = "2026-04-03T11:25:22.002Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/70/d460bd685a170790ec89317e9bd33047988e4bce507b831f5db771e142de/tzdata-2026.1-py2.py3-none-any.whl", hash = "sha256:4b1d2be7ac37ceafd7327b961aa3a54e467efbdb563a23655fbfe0d39cfc42a9", size = 348952, upload-time = "2026-04-03T11:25:20.313Z" }, +] + +[[package]] +name = "urllib3" +version = "2.6.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, +] + +[[package]] +name = "werkzeug" +version = "3.1.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dd/b2/381be8cfdee792dd117872481b6e378f85c957dd7c5bca38897b08f765fd/werkzeug-3.1.8.tar.gz", hash = "sha256:9bad61a4268dac112f1c5cd4630a56ede601b6ed420300677a869083d70a4c44", size = 875852, upload-time = "2026-04-02T18:49:14.268Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/8c/2e650f2afeb7ee576912636c23ddb621c91ac6a98e66dc8d29c3c69446e1/werkzeug-3.1.8-py3-none-any.whl", hash = "sha256:63a77fb8892bf28ebc3178683445222aa500e48ebad5ec77b0ad80f8726b1f50", size = 226459, upload-time = "2026-04-02T18:49:12.72Z" }, +] + +[[package]] +name = "wrapt" +version = "2.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2e/64/925f213fdcbb9baeb1530449ac71a4d57fc361c053d06bf78d0c5c7cd80c/wrapt-2.1.2.tar.gz", hash = "sha256:3996a67eecc2c68fd47b4e3c564405a5777367adfd9b8abb58387b63ee83b21e", size = 81678, upload-time = "2026-03-06T02:53:25.134Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/d2/387594fb592d027366645f3d7cc9b4d7ca7be93845fbaba6d835a912ef3c/wrapt-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4b7a86d99a14f76facb269dc148590c01aaf47584071809a70da30555228158c", size = 60669, upload-time = "2026-03-06T02:52:40.671Z" }, + { url = "https://files.pythonhosted.org/packages/c9/18/3f373935bc5509e7ac444c8026a56762e50c1183e7061797437ca96c12ce/wrapt-2.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a819e39017f95bf7aede768f75915635aa8f671f2993c036991b8d3bfe8dbb6f", size = 61603, upload-time = "2026-03-06T02:54:21.032Z" }, + { url = "https://files.pythonhosted.org/packages/c2/7a/32758ca2853b07a887a4574b74e28843919103194bb47001a304e24af62f/wrapt-2.1.2-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5681123e60aed0e64c7d44f72bbf8b4ce45f79d81467e2c4c728629f5baf06eb", size = 113632, upload-time = "2026-03-06T02:53:54.121Z" }, + { url = "https://files.pythonhosted.org/packages/1d/d5/eeaa38f670d462e97d978b3b0d9ce06d5b91e54bebac6fbed867809216e7/wrapt-2.1.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2b8b28e97a44d21836259739ae76284e180b18abbb4dcfdff07a415cf1016c3e", size = 115644, upload-time = "2026-03-06T02:54:53.33Z" }, + { url = "https://files.pythonhosted.org/packages/e3/09/2a41506cb17affb0bdf9d5e2129c8c19e192b388c4c01d05e1b14db23c00/wrapt-2.1.2-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cef91c95a50596fcdc31397eb6955476f82ae8a3f5a8eabdc13611b60ee380ba", size = 112016, upload-time = "2026-03-06T02:54:43.274Z" }, + { url = "https://files.pythonhosted.org/packages/64/15/0e6c3f5e87caadc43db279724ee36979246d5194fa32fed489c73643ba59/wrapt-2.1.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:dad63212b168de8569b1c512f4eac4b57f2c6934b30df32d6ee9534a79f1493f", size = 114823, upload-time = "2026-03-06T02:54:29.392Z" }, + { url = "https://files.pythonhosted.org/packages/56/b2/0ad17c8248f4e57bedf44938c26ec3ee194715f812d2dbbd9d7ff4be6c06/wrapt-2.1.2-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d307aa6888d5efab2c1cde09843d48c843990be13069003184b67d426d145394", size = 111244, upload-time = "2026-03-06T02:54:02.149Z" }, + { url = "https://files.pythonhosted.org/packages/ff/04/bcdba98c26f2c6522c7c09a726d5d9229120163493620205b2f76bd13c01/wrapt-2.1.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c87cf3f0c85e27b3ac7d9ad95da166bf8739ca215a8b171e8404a2d739897a45", size = 113307, upload-time = "2026-03-06T02:54:12.428Z" }, + { url = "https://files.pythonhosted.org/packages/0e/1b/5e2883c6bc14143924e465a6fc5a92d09eeabe35310842a481fb0581f832/wrapt-2.1.2-cp310-cp310-win32.whl", hash = "sha256:d1c5fea4f9fe3762e2b905fdd67df51e4be7a73b7674957af2d2ade71a5c075d", size = 57986, upload-time = "2026-03-06T02:54:26.823Z" }, + { url = "https://files.pythonhosted.org/packages/42/5a/4efc997bccadd3af5749c250b49412793bc41e13a83a486b2b54a33e240c/wrapt-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:d8f7740e1af13dff2684e4d56fe604a7e04d6c94e737a60568d8d4238b9a0c71", size = 60336, upload-time = "2026-03-06T02:54:18Z" }, + { url = "https://files.pythonhosted.org/packages/c1/f5/a2bb833e20181b937e87c242645ed5d5aa9c373006b0467bfe1a35c727d0/wrapt-2.1.2-cp310-cp310-win_arm64.whl", hash = "sha256:1c6cc827c00dc839350155f316f1f8b4b0c370f52b6a19e782e2bda89600c7dc", size = 58757, upload-time = "2026-03-06T02:53:51.545Z" }, + { url = "https://files.pythonhosted.org/packages/c7/81/60c4471fce95afa5922ca09b88a25f03c93343f759aae0f31fb4412a85c7/wrapt-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:96159a0ee2b0277d44201c3b5be479a9979cf154e8c82fa5df49586a8e7679bb", size = 60666, upload-time = "2026-03-06T02:52:58.934Z" }, + { url = "https://files.pythonhosted.org/packages/6b/be/80e80e39e7cb90b006a0eaf11c73ac3a62bbfb3068469aec15cc0bc795de/wrapt-2.1.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:98ba61833a77b747901e9012072f038795de7fc77849f1faa965464f3f87ff2d", size = 61601, upload-time = "2026-03-06T02:53:00.487Z" }, + { url = "https://files.pythonhosted.org/packages/b0/be/d7c88cd9293c859fc74b232abdc65a229bb953997995d6912fc85af18323/wrapt-2.1.2-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:767c0dbbe76cae2a60dd2b235ac0c87c9cccf4898aef8062e57bead46b5f6894", size = 114057, upload-time = "2026-03-06T02:52:44.08Z" }, + { url = "https://files.pythonhosted.org/packages/ea/25/36c04602831a4d685d45a93b3abea61eca7fe35dab6c842d6f5d570ef94a/wrapt-2.1.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c691a6bc752c0cc4711cc0c00896fcd0f116abc253609ef64ef930032821842", size = 116099, upload-time = "2026-03-06T02:54:56.74Z" }, + { url = "https://files.pythonhosted.org/packages/5c/4e/98a6eb417ef551dc277bec1253d5246b25003cf36fdf3913b65cb7657a56/wrapt-2.1.2-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f3b7d73012ea75aee5844de58c88f44cf62d0d62711e39da5a82824a7c4626a8", size = 112457, upload-time = "2026-03-06T02:53:52.842Z" }, + { url = "https://files.pythonhosted.org/packages/cb/a6/a6f7186a5297cad8ec53fd7578533b28f795fdf5372368c74bd7e6e9841c/wrapt-2.1.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:577dff354e7acd9d411eaf4bfe76b724c89c89c8fc9b7e127ee28c5f7bcb25b6", size = 115351, upload-time = "2026-03-06T02:53:32.684Z" }, + { url = "https://files.pythonhosted.org/packages/97/6f/06e66189e721dbebd5cf20e138acc4d1150288ce118462f2fcbff92d38db/wrapt-2.1.2-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:3d7b6fd105f8b24e5bd23ccf41cb1d1099796524bcc6f7fbb8fe576c44befbc9", size = 111748, upload-time = "2026-03-06T02:53:08.455Z" }, + { url = "https://files.pythonhosted.org/packages/ef/43/4808b86f499a51370fbdbdfa6cb91e9b9169e762716456471b619fca7a70/wrapt-2.1.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:866abdbf4612e0b34764922ef8b1c5668867610a718d3053d59e24a5e5fcfc15", size = 113783, upload-time = "2026-03-06T02:53:02.02Z" }, + { url = "https://files.pythonhosted.org/packages/91/2c/a3f28b8fa7ac2cefa01cfcaca3471f9b0460608d012b693998cd61ef43df/wrapt-2.1.2-cp311-cp311-win32.whl", hash = "sha256:5a0a0a3a882393095573344075189eb2d566e0fd205a2b6414e9997b1b800a8b", size = 57977, upload-time = "2026-03-06T02:53:27.844Z" }, + { url = "https://files.pythonhosted.org/packages/3f/c3/2b1c7bd07a27b1db885a2fab469b707bdd35bddf30a113b4917a7e2139d2/wrapt-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:64a07a71d2730ba56f11d1a4b91f7817dc79bc134c11516b75d1921a7c6fcda1", size = 60336, upload-time = "2026-03-06T02:54:28.104Z" }, + { url = "https://files.pythonhosted.org/packages/ec/5c/76ece7b401b088daa6503d6264dd80f9a727df3e6042802de9a223084ea2/wrapt-2.1.2-cp311-cp311-win_arm64.whl", hash = "sha256:b89f095fe98bc12107f82a9f7d570dc83a0870291aeb6b1d7a7d35575f55d98a", size = 58756, upload-time = "2026-03-06T02:53:16.319Z" }, + { url = "https://files.pythonhosted.org/packages/4c/b6/1db817582c49c7fcbb7df6809d0f515af29d7c2fbf57eb44c36e98fb1492/wrapt-2.1.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ff2aad9c4cda28a8f0653fc2d487596458c2a3f475e56ba02909e950a9efa6a9", size = 61255, upload-time = "2026-03-06T02:52:45.663Z" }, + { url = "https://files.pythonhosted.org/packages/a2/16/9b02a6b99c09227c93cd4b73acc3678114154ec38da53043c0ddc1fba0dc/wrapt-2.1.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6433ea84e1cfacf32021d2a4ee909554ade7fd392caa6f7c13f1f4bf7b8e8748", size = 61848, upload-time = "2026-03-06T02:53:48.728Z" }, + { url = "https://files.pythonhosted.org/packages/af/aa/ead46a88f9ec3a432a4832dfedb84092fc35af2d0ba40cd04aea3889f247/wrapt-2.1.2-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c20b757c268d30d6215916a5fa8461048d023865d888e437fab451139cad6c8e", size = 121433, upload-time = "2026-03-06T02:54:40.328Z" }, + { url = "https://files.pythonhosted.org/packages/3a/9f/742c7c7cdf58b59085a1ee4b6c37b013f66ac33673a7ef4aaed5e992bc33/wrapt-2.1.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:79847b83eb38e70d93dc392c7c5b587efe65b3e7afcc167aa8abd5d60e8761c8", size = 123013, upload-time = "2026-03-06T02:53:26.58Z" }, + { url = "https://files.pythonhosted.org/packages/e8/44/2c3dd45d53236b7ed7c646fcf212251dc19e48e599debd3926b52310fafb/wrapt-2.1.2-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f8fba1bae256186a83d1875b2b1f4e2d1242e8fac0f58ec0d7e41b26967b965c", size = 117326, upload-time = "2026-03-06T02:53:11.547Z" }, + { url = "https://files.pythonhosted.org/packages/74/e2/b17d66abc26bd96f89dec0ecd0ef03da4a1286e6ff793839ec431b9fae57/wrapt-2.1.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e3d3b35eedcf5f7d022291ecd7533321c4775f7b9cd0050a31a68499ba45757c", size = 121444, upload-time = "2026-03-06T02:54:09.5Z" }, + { url = "https://files.pythonhosted.org/packages/3c/62/e2977843fdf9f03daf1586a0ff49060b1b2fc7ff85a7ea82b6217c1ae36e/wrapt-2.1.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:6f2c5390460de57fa9582bc8a1b7a6c86e1a41dfad74c5225fc07044c15cc8d1", size = 116237, upload-time = "2026-03-06T02:54:03.884Z" }, + { url = "https://files.pythonhosted.org/packages/88/dd/27fc67914e68d740bce512f11734aec08696e6b17641fef8867c00c949fc/wrapt-2.1.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7dfa9f2cf65d027b951d05c662cc99ee3bd01f6e4691ed39848a7a5fffc902b2", size = 120563, upload-time = "2026-03-06T02:53:20.412Z" }, + { url = "https://files.pythonhosted.org/packages/ec/9f/b750b3692ed2ef4705cb305bd68858e73010492b80e43d2a4faa5573cbe7/wrapt-2.1.2-cp312-cp312-win32.whl", hash = "sha256:eba8155747eb2cae4a0b913d9ebd12a1db4d860fc4c829d7578c7b989bd3f2f0", size = 58198, upload-time = "2026-03-06T02:53:37.732Z" }, + { url = "https://files.pythonhosted.org/packages/8e/b2/feecfe29f28483d888d76a48f03c4c4d8afea944dbee2b0cd3380f9df032/wrapt-2.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:1c51c738d7d9faa0b3601708e7e2eda9bf779e1b601dce6c77411f2a1b324a63", size = 60441, upload-time = "2026-03-06T02:52:47.138Z" }, + { url = "https://files.pythonhosted.org/packages/44/e1/e328f605d6e208547ea9fd120804fcdec68536ac748987a68c47c606eea8/wrapt-2.1.2-cp312-cp312-win_arm64.whl", hash = "sha256:c8e46ae8e4032792eb2f677dbd0d557170a8e5524d22acc55199f43efedd39bf", size = 58836, upload-time = "2026-03-06T02:53:22.053Z" }, + { url = "https://files.pythonhosted.org/packages/1a/c7/8528ac2dfa2c1e6708f647df7ae144ead13f0a31146f43c7264b4942bf12/wrapt-2.1.2-py3-none-any.whl", hash = "sha256:b8fd6fa2b2c4e7621808f8c62e8317f4aae56e59721ad933bac5239d913cf0e8", size = 43993, upload-time = "2026-03-06T02:53:12.905Z" }, +] + +[[package]] +name = "wurlitzer" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/33/90/623f99c55c7d0727a58eb2b7dfb65cb406c561a5c2e9a95b0d6a450c473d/wurlitzer-3.1.1.tar.gz", hash = "sha256:bfb9144ab9f02487d802b9ff89dbd3fa382d08f73e12db8adc4c2fb00cd39bd9", size = 11867, upload-time = "2024-06-12T10:27:30.089Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/24/93ce54550a9dd3fd996ed477f00221f215bf6da3580397fbc138d6036e2e/wurlitzer-3.1.1-py3-none-any.whl", hash = "sha256:0b2749c2cde3ef640bf314a9f94b24d929fe1ca476974719a6909dfc568c3aac", size = 8590, upload-time = "2024-06-12T10:27:28.787Z" }, +] + +[[package]] +name = "xmltodict" +version = "1.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/19/70/80f3b7c10d2630aa66414bf23d210386700aa390547278c789afa994fd7e/xmltodict-1.0.4.tar.gz", hash = "sha256:6d94c9f834dd9e44514162799d344d815a3a4faec913717a9ecbfa5be1bb8e61", size = 26124, upload-time = "2026-02-22T02:21:22.074Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/34/98a2f52245f4d47be93b580dae5f9861ef58977d73a79eb47c58f1ad1f3a/xmltodict-1.0.4-py3-none-any.whl", hash = "sha256:a4a00d300b0e1c59fc2bfccb53d7b2e88c32f200df138a0dd2229f842497026a", size = 13580, upload-time = "2026-02-22T02:21:21.039Z" }, +] + +[[package]] +name = "yarl" +version = "1.23.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "multidict" }, + { name = "propcache" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/23/6e/beb1beec874a72f23815c1434518bfc4ed2175065173fb138c3705f658d4/yarl-1.23.0.tar.gz", hash = "sha256:53b1ea6ca88ebd4420379c330aea57e258408dd0df9af0992e5de2078dc9f5d5", size = 194676, upload-time = "2026-03-01T22:07:53.373Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/0d/9cc638702f6fc3c7a3685bcc8cf2a9ed7d6206e932a49f5242658047ef51/yarl-1.23.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cff6d44cb13d39db2663a22b22305d10855efa0fa8015ddeacc40bc59b9d8107", size = 123764, upload-time = "2026-03-01T22:04:09.7Z" }, + { url = "https://files.pythonhosted.org/packages/7a/35/5a553687c5793df5429cd1db45909d4f3af7eee90014888c208d086a44f0/yarl-1.23.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e4c53f8347cd4200f0d70a48ad059cabaf24f5adc6ba08622a23423bc7efa10d", size = 86282, upload-time = "2026-03-01T22:04:11.892Z" }, + { url = "https://files.pythonhosted.org/packages/68/2e/c5a2234238f8ce37a8312b52801ee74117f576b1539eec8404a480434acc/yarl-1.23.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2a6940a074fb3c48356ed0158a3ca5699c955ee4185b4d7d619be3c327143e05", size = 86053, upload-time = "2026-03-01T22:04:13.292Z" }, + { url = "https://files.pythonhosted.org/packages/74/3f/bbd8ff36fb038622797ffbaf7db314918bb4d76f1cc8a4f9ca7a55fe5195/yarl-1.23.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ed5f69ce7be7902e5c70ea19eb72d20abf7d725ab5d49777d696e32d4fc1811d", size = 99395, upload-time = "2026-03-01T22:04:15.133Z" }, + { url = "https://files.pythonhosted.org/packages/77/04/9516bc4e269d2a3ec9c6779fcdeac51ce5b3a9b0156f06ac7152e5bba864/yarl-1.23.0-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:389871e65468400d6283c0308e791a640b5ab5c83bcee02a2f51295f95e09748", size = 92143, upload-time = "2026-03-01T22:04:16.829Z" }, + { url = "https://files.pythonhosted.org/packages/c7/63/88802d1f6b1cb1fc67d67a58cd0cf8a1790de4ce7946e434240f1d60ab4a/yarl-1.23.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dda608c88cf709b1d406bdfcd84d8d63cff7c9e577a403c6108ce8ce9dcc8764", size = 107643, upload-time = "2026-03-01T22:04:18.519Z" }, + { url = "https://files.pythonhosted.org/packages/8e/db/4f9b838f4d8bdd6f0f385aed8bbf21c71ed11a0b9983305c302cbd557815/yarl-1.23.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8c4fe09e0780c6c3bf2b7d4af02ee2394439d11a523bbcf095cf4747c2932007", size = 108700, upload-time = "2026-03-01T22:04:20.373Z" }, + { url = "https://files.pythonhosted.org/packages/50/12/95a1d33f04a79c402664070d43b8b9f72dc18914e135b345b611b0b1f8cc/yarl-1.23.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:31c9921eb8bd12633b41ad27686bbb0b1a2a9b8452bfdf221e34f311e9942ed4", size = 102769, upload-time = "2026-03-01T22:04:23.055Z" }, + { url = "https://files.pythonhosted.org/packages/86/65/91a0285f51321369fd1a8308aa19207520c5f0587772cfc2e03fc2467e90/yarl-1.23.0-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:5f10fd85e4b75967468af655228fbfd212bdf66db1c0d135065ce288982eda26", size = 101114, upload-time = "2026-03-01T22:04:25.031Z" }, + { url = "https://files.pythonhosted.org/packages/58/80/c7c8244fc3e5bc483dc71a09560f43b619fab29301a0f0a8f936e42865c7/yarl-1.23.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:dbf507e9ef5688bada447a24d68b4b58dd389ba93b7afc065a2ba892bea54769", size = 98883, upload-time = "2026-03-01T22:04:27.281Z" }, + { url = "https://files.pythonhosted.org/packages/86/e7/71ca9cc9ca79c0b7d491216177d1aed559d632947b8ffb0ee60f7d8b23e3/yarl-1.23.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:85e9beda1f591bc73e77ea1c51965c68e98dafd0fec72cdd745f77d727466716", size = 94172, upload-time = "2026-03-01T22:04:28.554Z" }, + { url = "https://files.pythonhosted.org/packages/6a/3f/6c6c8a0fe29c26fb2db2e8d32195bb84ec1bfb8f1d32e7f73b787fcf349b/yarl-1.23.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:0e1fdaa14ef51366d7757b45bde294e95f6c8c049194e793eedb8387c86d5993", size = 107010, upload-time = "2026-03-01T22:04:30.385Z" }, + { url = "https://files.pythonhosted.org/packages/56/38/12730c05e5ad40a76374d440ed8b0899729a96c250516d91c620a6e38fc2/yarl-1.23.0-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:75e3026ab649bf48f9a10c0134512638725b521340293f202a69b567518d94e0", size = 100285, upload-time = "2026-03-01T22:04:31.752Z" }, + { url = "https://files.pythonhosted.org/packages/34/92/6a7be9239f2347234e027284e7a5f74b1140cc86575e7b469d13fba1ebfe/yarl-1.23.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:80e6d33a3d42a7549b409f199857b4fb54e2103fc44fb87605b6663b7a7ff750", size = 108230, upload-time = "2026-03-01T22:04:33.844Z" }, + { url = "https://files.pythonhosted.org/packages/5e/81/4aebccfa9376bd98b9d8bfad20621a57d3e8cfc5b8631c1fa5f62cdd03f4/yarl-1.23.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5ec2f42d41ccbd5df0270d7df31618a8ee267bfa50997f5d720ddba86c4a83a6", size = 103008, upload-time = "2026-03-01T22:04:35.856Z" }, + { url = "https://files.pythonhosted.org/packages/38/0f/0b4e3edcec794a86b853b0c6396c0a888d72dfce19b2d88c02ac289fb6c1/yarl-1.23.0-cp310-cp310-win32.whl", hash = "sha256:debe9c4f41c32990771be5c22b56f810659f9ddf3d63f67abfdcaa2c6c9c5c1d", size = 83073, upload-time = "2026-03-01T22:04:38.268Z" }, + { url = "https://files.pythonhosted.org/packages/a0/71/ad95c33da18897e4c636528bbc24a1dd23fe16797de8bc4ec667b8db0ba4/yarl-1.23.0-cp310-cp310-win_amd64.whl", hash = "sha256:ab5f043cb8a2d71c981c09c510da013bc79fd661f5c60139f00dd3c3cc4f2ffb", size = 87328, upload-time = "2026-03-01T22:04:39.558Z" }, + { url = "https://files.pythonhosted.org/packages/e2/14/dfa369523c79bccf9c9c746b0a63eb31f65db9418ac01275f7950962e504/yarl-1.23.0-cp310-cp310-win_arm64.whl", hash = "sha256:263cd4f47159c09b8b685890af949195b51d1aa82ba451c5847ca9bc6413c220", size = 82463, upload-time = "2026-03-01T22:04:41.454Z" }, + { url = "https://files.pythonhosted.org/packages/a2/aa/60da938b8f0997ba3a911263c40d82b6f645a67902a490b46f3355e10fae/yarl-1.23.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b35d13d549077713e4414f927cdc388d62e543987c572baee613bf82f11a4b99", size = 123641, upload-time = "2026-03-01T22:04:42.841Z" }, + { url = "https://files.pythonhosted.org/packages/24/84/e237607faf4e099dbb8a4f511cfd5efcb5f75918baad200ff7380635631b/yarl-1.23.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cbb0fef01f0c6b38cb0f39b1f78fc90b807e0e3c86a7ff3ce74ad77ce5c7880c", size = 86248, upload-time = "2026-03-01T22:04:44.757Z" }, + { url = "https://files.pythonhosted.org/packages/b2/0d/71ceabc14c146ba8ee3804ca7b3d42b1664c8440439de5214d366fec7d3a/yarl-1.23.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dc52310451fc7c629e13c4e061cbe2dd01684d91f2f8ee2821b083c58bd72432", size = 85988, upload-time = "2026-03-01T22:04:46.365Z" }, + { url = "https://files.pythonhosted.org/packages/8c/6c/4a90d59c572e46b270ca132aca66954f1175abd691f74c1ef4c6711828e2/yarl-1.23.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b2c6b50c7b0464165472b56b42d4c76a7b864597007d9c085e8b63e185cf4a7a", size = 100566, upload-time = "2026-03-01T22:04:47.639Z" }, + { url = "https://files.pythonhosted.org/packages/49/fb/c438fb5108047e629f6282a371e6e91cf3f97ee087c4fb748a1f32ceef55/yarl-1.23.0-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:aafe5dcfda86c8af00386d7781d4c2181b5011b7be3f2add5e99899ea925df05", size = 92079, upload-time = "2026-03-01T22:04:48.925Z" }, + { url = "https://files.pythonhosted.org/packages/d9/13/d269aa1aed3e4f50a5a103f96327210cc5fa5dd2d50882778f13c7a14606/yarl-1.23.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9ee33b875f0b390564c1fb7bc528abf18c8ee6073b201c6ae8524aca778e2d83", size = 108741, upload-time = "2026-03-01T22:04:50.838Z" }, + { url = "https://files.pythonhosted.org/packages/85/fb/115b16f22c37ea4437d323e472945bea97301c8ec6089868fa560abab590/yarl-1.23.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4c41e021bc6d7affb3364dc1e1e5fa9582b470f283748784bd6ea0558f87f42c", size = 108099, upload-time = "2026-03-01T22:04:52.499Z" }, + { url = "https://files.pythonhosted.org/packages/9a/64/c53487d9f4968045b8afa51aed7ca44f58b2589e772f32745f3744476c82/yarl-1.23.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:99c8a9ed30f4164bc4c14b37a90208836cbf50d4ce2a57c71d0f52c7fb4f7598", size = 102678, upload-time = "2026-03-01T22:04:55.176Z" }, + { url = "https://files.pythonhosted.org/packages/85/59/cd98e556fbb2bf8fab29c1a722f67ad45c5f3447cac798ab85620d1e70af/yarl-1.23.0-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f2af5c81a1f124609d5f33507082fc3f739959d4719b56877ab1ee7e7b3d602b", size = 100803, upload-time = "2026-03-01T22:04:56.588Z" }, + { url = "https://files.pythonhosted.org/packages/9e/c0/b39770b56d4a9f0bb5f77e2f1763cd2d75cc2f6c0131e3b4c360348fcd65/yarl-1.23.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6b41389c19b07c760c7e427a3462e8ab83c4bb087d127f0e854c706ce1b9215c", size = 100163, upload-time = "2026-03-01T22:04:58.492Z" }, + { url = "https://files.pythonhosted.org/packages/e7/64/6980f99ab00e1f0ff67cb84766c93d595b067eed07439cfccfc8fb28c1a6/yarl-1.23.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:1dc702e42d0684f42d6519c8d581e49c96cefaaab16691f03566d30658ee8788", size = 93859, upload-time = "2026-03-01T22:05:00.268Z" }, + { url = "https://files.pythonhosted.org/packages/38/69/912e6c5e146793e5d4b5fe39ff5b00f4d22463dfd5a162bec565ac757673/yarl-1.23.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:0e40111274f340d32ebcc0a5668d54d2b552a6cca84c9475859d364b380e3222", size = 108202, upload-time = "2026-03-01T22:05:02.273Z" }, + { url = "https://files.pythonhosted.org/packages/59/97/35ca6767524687ad64e5f5c31ad54bc76d585585a9fcb40f649e7e82ffed/yarl-1.23.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:4764a6a7588561a9aef92f65bda2c4fb58fe7c675c0883862e6df97559de0bfb", size = 99866, upload-time = "2026-03-01T22:05:03.597Z" }, + { url = "https://files.pythonhosted.org/packages/d3/1c/1a3387ee6d73589f6f2a220ae06f2984f6c20b40c734989b0a44f5987308/yarl-1.23.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:03214408cfa590df47728b84c679ae4ef00be2428e11630277be0727eba2d7cc", size = 107852, upload-time = "2026-03-01T22:05:04.986Z" }, + { url = "https://files.pythonhosted.org/packages/a4/b8/35c0750fcd5a3f781058bfd954515dd4b1eab45e218cbb85cf11132215f1/yarl-1.23.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:170e26584b060879e29fac213e4228ef063f39128723807a312e5c7fec28eff2", size = 102919, upload-time = "2026-03-01T22:05:06.397Z" }, + { url = "https://files.pythonhosted.org/packages/e5/1c/9a1979aec4a81896d597bcb2177827f2dbee3f5b7cc48b2d0dadb644b41d/yarl-1.23.0-cp311-cp311-win32.whl", hash = "sha256:51430653db848d258336cfa0244427b17d12db63d42603a55f0d4546f50f25b5", size = 82602, upload-time = "2026-03-01T22:05:08.444Z" }, + { url = "https://files.pythonhosted.org/packages/93/22/b85eca6fa2ad9491af48c973e4c8cf6b103a73dbb271fe3346949449fca0/yarl-1.23.0-cp311-cp311-win_amd64.whl", hash = "sha256:bf49a3ae946a87083ef3a34c8f677ae4243f5b824bfc4c69672e72b3d6719d46", size = 87461, upload-time = "2026-03-01T22:05:10.145Z" }, + { url = "https://files.pythonhosted.org/packages/93/95/07e3553fe6f113e6864a20bdc53a78113cda3b9ced8784ee52a52c9f80d8/yarl-1.23.0-cp311-cp311-win_arm64.whl", hash = "sha256:b39cb32a6582750b6cc77bfb3c49c0f8760dc18dc96ec9fb55fbb0f04e08b928", size = 82336, upload-time = "2026-03-01T22:05:11.554Z" }, + { url = "https://files.pythonhosted.org/packages/88/8a/94615bc31022f711add374097ad4144d569e95ff3c38d39215d07ac153a0/yarl-1.23.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1932b6b8bba8d0160a9d1078aae5838a66039e8832d41d2992daa9a3a08f7860", size = 124737, upload-time = "2026-03-01T22:05:12.897Z" }, + { url = "https://files.pythonhosted.org/packages/e3/6f/c6554045d59d64052698add01226bc867b52fe4a12373415d7991fdca95d/yarl-1.23.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:411225bae281f114067578891bc75534cfb3d92a3b4dfef7a6ca78ba354e6069", size = 87029, upload-time = "2026-03-01T22:05:14.376Z" }, + { url = "https://files.pythonhosted.org/packages/19/2a/725ecc166d53438bc88f76822ed4b1e3b10756e790bafd7b523fe97c322d/yarl-1.23.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:13a563739ae600a631c36ce096615fe307f131344588b0bc0daec108cdb47b25", size = 86310, upload-time = "2026-03-01T22:05:15.71Z" }, + { url = "https://files.pythonhosted.org/packages/99/30/58260ed98e6ff7f90ba84442c1ddd758c9170d70327394a6227b310cd60f/yarl-1.23.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9cbf44c5cb4a7633d078788e1b56387e3d3cf2b8139a3be38040b22d6c3221c8", size = 97587, upload-time = "2026-03-01T22:05:17.384Z" }, + { url = "https://files.pythonhosted.org/packages/76/0a/8b08aac08b50682e65759f7f8dde98ae8168f72487e7357a5d684c581ef9/yarl-1.23.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:53ad387048f6f09a8969631e4de3f1bf70c50e93545d64af4f751b2498755072", size = 92528, upload-time = "2026-03-01T22:05:18.804Z" }, + { url = "https://files.pythonhosted.org/packages/52/07/0b7179101fe5f8385ec6c6bb5d0cb9f76bd9fb4a769591ab6fb5cdbfc69a/yarl-1.23.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4a59ba56f340334766f3a4442e0efd0af895fae9e2b204741ef885c446b3a1a8", size = 105339, upload-time = "2026-03-01T22:05:20.235Z" }, + { url = "https://files.pythonhosted.org/packages/d3/8a/36d82869ab5ec829ca8574dfcb92b51286fcfb1e9c7a73659616362dc880/yarl-1.23.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:803a3c3ce4acc62eaf01eaca1208dcf0783025ef27572c3336502b9c232005e7", size = 105061, upload-time = "2026-03-01T22:05:22.268Z" }, + { url = "https://files.pythonhosted.org/packages/66/3e/868e5c3364b6cee19ff3e1a122194fa4ce51def02c61023970442162859e/yarl-1.23.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a3d2bff8f37f8d0f96c7ec554d16945050d54462d6e95414babaa18bfafc7f51", size = 100132, upload-time = "2026-03-01T22:05:23.638Z" }, + { url = "https://files.pythonhosted.org/packages/cf/26/9c89acf82f08a52cb52d6d39454f8d18af15f9d386a23795389d1d423823/yarl-1.23.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c75eb09e8d55bceb4367e83496ff8ef2bc7ea6960efb38e978e8073ea59ecb67", size = 99289, upload-time = "2026-03-01T22:05:25.749Z" }, + { url = "https://files.pythonhosted.org/packages/6f/54/5b0db00d2cb056922356104468019c0a132e89c8d3ab67d8ede9f4483d2a/yarl-1.23.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:877b0738624280e34c55680d6054a307aa94f7d52fa0e3034a9cc6e790871da7", size = 96950, upload-time = "2026-03-01T22:05:27.318Z" }, + { url = "https://files.pythonhosted.org/packages/f6/40/10fa93811fd439341fad7e0718a86aca0de9548023bbb403668d6555acab/yarl-1.23.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b5405bb8f0e783a988172993cfc627e4d9d00432d6bbac65a923041edacf997d", size = 93960, upload-time = "2026-03-01T22:05:28.738Z" }, + { url = "https://files.pythonhosted.org/packages/bc/d2/8ae2e6cd77d0805f4526e30ec43b6f9a3dfc542d401ac4990d178e4bf0cf/yarl-1.23.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:1c3a3598a832590c5a3ce56ab5576361b5688c12cb1d39429cf5dba30b510760", size = 104703, upload-time = "2026-03-01T22:05:30.438Z" }, + { url = "https://files.pythonhosted.org/packages/2f/0c/b3ceacf82c3fe21183ce35fa2acf5320af003d52bc1fcf5915077681142e/yarl-1.23.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:8419ebd326430d1cbb7efb5292330a2cf39114e82df5cc3d83c9a0d5ebeaf2f2", size = 98325, upload-time = "2026-03-01T22:05:31.835Z" }, + { url = "https://files.pythonhosted.org/packages/9d/e0/12900edd28bdab91a69bd2554b85ad7b151f64e8b521fe16f9ad2f56477a/yarl-1.23.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:be61f6fff406ca40e3b1d84716fde398fc08bc63dd96d15f3a14230a0973ed86", size = 105067, upload-time = "2026-03-01T22:05:33.358Z" }, + { url = "https://files.pythonhosted.org/packages/15/61/74bb1182cf79c9bbe4eb6b1f14a57a22d7a0be5e9cedf8e2d5c2086474c3/yarl-1.23.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ceb13c5c858d01321b5d9bb65e4cf37a92169ea470b70fec6f236b2c9dd7e34", size = 100285, upload-time = "2026-03-01T22:05:35.4Z" }, + { url = "https://files.pythonhosted.org/packages/69/7f/cd5ef733f2550de6241bd8bd8c3febc78158b9d75f197d9c7baa113436af/yarl-1.23.0-cp312-cp312-win32.whl", hash = "sha256:fffc45637bcd6538de8b85f51e3df3223e4ad89bccbfca0481c08c7fc8b7ed7d", size = 82359, upload-time = "2026-03-01T22:05:36.811Z" }, + { url = "https://files.pythonhosted.org/packages/f5/be/25216a49daeeb7af2bec0db22d5e7df08ed1d7c9f65d78b14f3b74fd72fc/yarl-1.23.0-cp312-cp312-win_amd64.whl", hash = "sha256:f69f57305656a4852f2a7203efc661d8c042e6cc67f7acd97d8667fb448a426e", size = 87674, upload-time = "2026-03-01T22:05:38.171Z" }, + { url = "https://files.pythonhosted.org/packages/d2/35/aeab955d6c425b227d5b7247eafb24f2653fedc32f95373a001af5dfeb9e/yarl-1.23.0-cp312-cp312-win_arm64.whl", hash = "sha256:6e87a6e8735b44816e7db0b2fbc9686932df473c826b0d9743148432e10bb9b9", size = 81879, upload-time = "2026-03-01T22:05:40.006Z" }, + { url = "https://files.pythonhosted.org/packages/69/68/c8739671f5699c7dc470580a4f821ef37c32c4cb0b047ce223a7f115757f/yarl-1.23.0-py3-none-any.whl", hash = "sha256:a2df6afe50dea8ae15fa34c9f824a3ee958d785fd5d089063d960bae1daa0a3f", size = 48288, upload-time = "2026-03-01T22:07:51.388Z" }, +]