diff --git a/.env b/.env new file mode 100644 index 0000000..6aaeb64 --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +ICECHUNK_STORE_DIRECT="s3://nasa-veda-scratch/jbusecke/icechunk/mursst-testing/MUR_test_deployed" +ICECHUNK_STORE_PROD="s3://nasa-eodc-public/icechunk/MUR-JPL-L4-GLOB-v4.1-virtual-v2-p2" \ No newline at end of file diff --git a/.github/workflows/check-requirements.yml b/.github/workflows/check-requirements.yml new file mode 100644 index 0000000..0ecab38 --- /dev/null +++ b/.github/workflows/check-requirements.yml @@ -0,0 +1,17 @@ +name: Check requirements sync +on: [push, pull_request] + +jobs: + check-requirements: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: astral-sh/setup-uv@v3 + - name: Check requirements.txt is in sync + run: | + uv export --format=requirements.txt --no-hashes --no-annotate --no-header > temp-requirements.txt + diff temp-requirements.txt cdk/lambda/requirements.txt || ( + echo "requirements.txt is out of sync with pyproject.toml" + echo "Run: uv export --format=requirements.txt --no-hashes --no-annotate --no-header > cdk/lambda/requirements.txt or use pre-commit" + exit 1 + ) \ No newline at end of file diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..2025187 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,28 @@ +name: Integration Tests + +on: + push: + branches: [main] + pull_request: + +jobs: + test: + runs-on: ubuntu-latest + env: # Set them here for all steps in the job + EARTHDATA_USERNAME: ${{ secrets.EARTHDATA_USERNAME }} + EARTHDATA_PASSWORD: ${{ secrets.EARTHDATA_PASSWORD }} + OUT_OF_REGION: true + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Install uv + run: pip install uv + + - name: Run pytest + run: uv run pytest --ignore=test_integration_in_region.py diff --git a/.gitignore b/.gitignore index 1f7eb0f..e3fbe81 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,13 @@ cdk.out queue_arn.txt config.py *.ipynb_checkpoints/ +cdk/lambda/temp_requirements +temp-requirements.txt +cdk/env.json +.gitignore +cdk/events/event.json +test_export + +# don't commit dotenv files +.env* +.DS_Store diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..5ef0f00 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,27 @@ +default_install_hook_types: [pre-commit, post-commit] +repos: + - repo: local + hooks: + - id: sync-requirements + name: Sync requirements.txt with uv before commit + entry: ./scripts/sync_requirements.sh + language: system + always_run: false + pass_filenames: false + stages: [pre-commit] + - repo: https://github.com/astral-sh/uv-pre-commit + # uv version. + rev: 0.8.4 + hooks: + - id: uv-lock + - repo: https://github.com/astral-sh/ruff-pre-commit + # Ruff version. + rev: v0.12.7 + hooks: + # Run the linter. + - id: ruff + types_or: [ python, pyi ] + args: [ --fix ] + # Run the formatter. + - id: ruff-format + types_or: [ python, pyi ] \ No newline at end of file diff --git a/.python-version b/.python-version new file mode 100644 index 0000000..e4fba21 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.12 diff --git a/README.md b/README.md index f67e32b..6ba86fe 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,70 @@ Code for writing to an Icechunk store using CMR subscriptions and other AWS services. +## Example + +This snippet shows how to open the store and make a first plot + +```python +import icechunk as ic +from icechunk.credentials import S3StaticCredentials +from datetime import datetime +from urllib.parse import urlparse +import earthaccess +import xarray as xr + +store_url = "s3://nasa-eodc-public/icechunk/MUR-JPL-L4-GLOB-v4.1-virtual-v2-p2" +store_url_parsed = urlparse(store_url) + +storage = ic.s3_storage( + bucket = store_url_parsed.netloc, + prefix = store_url_parsed.path, + from_env=True, +) + +def get_icechunk_creds(daac: str = None) -> S3StaticCredentials: + if daac is None: + daac = "PODAAC" # TODO: Might want to change this for a more general version + # https://github.com/nsidc/earthaccess/discussions/1051 could help here. + # assumes that username and password are available in the environment + # TODO: accomodate rc file? + auth = earthaccess.login(strategy="environment") + if not auth.authenticated: + raise PermissionError("Could not authenticate using environment variables") + creds = auth.get_s3_credentials(daac=daac) + return S3StaticCredentials( + access_key_id=creds["accessKeyId"], + secret_access_key=creds["secretAccessKey"], + expires_after=datetime.fromisoformat(creds["expiration"]), + session_token=creds["sessionToken"], + ) + + + +# TODO: Is there a way to avoid double opening? Maybe not super important +repo = ic.Repository.open( + storage=storage, +) +# see if reopening works +repo = ic.Repository.open( + storage=storage, + authorize_virtual_chunk_access = ic.containers_credentials( + { + k: ic.s3_refreshable_credentials( + get_credentials=get_icechunk_creds + ) for k in repo.config.virtual_chunk_containers.keys() + } + ) +) + +session = repo.readonly_session('main') +ds = xr.open_zarr(session.store, zarr_format=3, consolidated=False) +ds['analysed_sst'].isel(time=0, lon=slice(10000, 12000), lat=slice(10000, 12000)).plot() +``` + +> This has been tested on the NASA VEDA hub only for now. + + ## Background https://wiki.earthdata.nasa.gov/display/CMR/CMR+Ingest+Subscriptions @@ -20,41 +84,49 @@ source .venv/bin/activate uv pip install -r requirements.txt ``` -## Set configuration variables +## Deploying the lambda for processing notifications -Make sure the settings `config.py` are appropriate for your needs. +See `cdk/README.md`. + +## Using uv with jupyter lab +``` +uv sync +uv run bash +python -m ipykernel install --user --name=mursstvenv --display-name="MURSST-VENV" +``` +After refreshing your browser window you should be able to select the "MURSST-VENV" kernel from the upper right corner of the jupyter lab notebook interface. -Add your configuration: +## Rebuilding the store from scratch +To build the store in a new location you can run -```sh -cp config.py.example config.py +``` +uv run python scripts/rebuild_store.py ``` -## Creating an SQS Queue to receive CMR notifications and creating a subscription for that queue. +**Note that this script will use the store URL from the environment variable `ICECHUNK_STORE_DIRECT`. For local execution this should be defined in the `.env` file.** -`create_queue.py` will create an SQS queue with the necessary policy to receive SNS notifications. This script requires AWS credentials are configured for the target AWS environment. -`subscribe.py` creates a subscription for the queue identified by `queue_arn.txt` (created by `create_queue.py`) to receive CMR granule notifications for the `COLLECTION_CONCEPT_ID` in `config.py`. Note this script uses [`earthaccess`](https://earthaccess.readthedocs.io) to create a bearer token to pass in the subscription request, so you will need to have earthdata login credentials in ~/.netrc or be ready type them when prompted. +## Testing strategy -Setting up the queue and associated subscription are one-time operations so there is no reason to manage them in the infrastructure lifecycle of say, a CDK app (deleting the stack would delete the queue, for example). +The tests in tests/test_integration_in_region.py only work when run in AWS region us-west-2 and with the correct permissions. -```sh -# Ensure proper AWS credentials are set -# Create a queue -python ./create_queue.py -# Create a subscription for the queue to receive notifications about new collection granules -python ./subscribe.py -``` +Because of this restriction, we currently recommend running all tests locally—for example, on the NASA VEDA Hub. (The majority of tests are disabled in GitHub CI.) + +Make sure the machine has sufficient RAM. The smallest server instances have caused issues in the past. + +To run the complete set of tests: -## Looking up your subscription in CMR +``` +uv run pytest +``` -1. Get a bearer token from https://urs.earthdata.nasa.gov/users/aimeeb/user_tokens -2. Use the bearer token in an Authorization header when making a request to https://cmr.earthdata.nasa.gov/search/subscriptions -3. Use the bearer token to make a request to the URL wrapped in the `` tag in the response from (2). +### Rebuilding the store as part of the testing -Note also that the `name` of the subscription will be `--subscription` using the values set in config.py. +In some cases, you may want to rebuild the entire store and then run the appending logic without affecting the production store. To do this: -## Deploying the lambda for processing notifications +1. **Check and update** the store name in .env. We recommend using the s3://nasa-veda-scratch/ bucket for local testing so that data is regularly purged. -See `cdk/README.md`. +2. **Adjust the stop date** in scripts/rebuild_store.py based on how much data you want to be “missing” before running the appending logic. +3. **Run** through notebooks/hub_test.ipynb to test the appending logic. +Ensure you follow the instructions above so that the uv dependencies are correctly respected within the notebook. \ No newline at end of file diff --git a/cdk/README.md b/cdk/README.md index 53c447d..75456a2 100644 --- a/cdk/README.md +++ b/cdk/README.md @@ -1,69 +1,129 @@ -# CMR Notification Processing +# MURSST Icechunk Updater -This CDK project deploys a Lambda function that processes notifications from NASA's Common Metadata Repository (CMR) via an SQS queue. The infrastructure is designed to handle subscription notifications from CMR and process them accordingly. +This AWS CDK project deploys a Lambda function that periodically checks for new MUR SST granules and appends them to a Zarr store managed by the `icechunk` library. ## Prerequisites -- AWS CDK CLI installed -- Python 3.x -- AWS credentials configured -- Access to the target AWS account and region +To develop and deploy this project, you will need the following tools installed and configured: -## Setup +- **Git**: For cloning the repository. +- **Python 3.12+**: The runtime for both the CDK app and the Lambda function. +- **Node.js and npm**: Required for the AWS CDK. +- **AWS CLI**: For interacting with your AWS account. Ensure it's configured with your credentials (`aws configure`). +- **Docker**: The Lambda function is packaged as a Docker container, and Docker is required for local testing. +- **AWS SAM CLI**: For running the function locally in a simulated Lambda environment. -1. Create and activate a Python virtual environment: -```bash -$ python3 -m venv .venv -$ source .venv/bin/activate -``` +## Project Setup -2. Install the required dependencies: +1. **Clone the Repository** + ```bash + git clone + cd mursst-icechunk-updater/cdk + ``` -```bash -$ uv pip install -r requirements.txt -``` +2. **Set up CDK Virtual Environment** + This environment is for running the `cdk` commands. + ```bash + uv venv .venv + source .venv/bin/activate + uv pip install -r requirements.txt + ``` -## Infrastructure Components +## Local Development and Testing -- **SQS Queue**: Receives notifications from CMR subscription -- **Lambda Function**: Processes the notifications from the SQS queue -- **IAM Roles**: Provides necessary permissions for the Lambda to access SQS and other required AWS services +>[!WARNING] Does not work completely as of yet!!! Need to figure out docker depenency (see below). -## Deployment +Running the function locally is crucial for rapid development and debugging. We use the **AWS SAM CLI** to invoke the function in a Docker container that simulates the AWS Lambda environment. + +**Step 1: Synthesize the CloudFormation Template** -To deploy the infrastructure, first ensure your environment is configured with AWS credentials. +The SAM CLI needs the compiled CloudFormation template from your CDK app. +```bash +uv run cdk synth +``` +This will create the template at `cdk.out/MursstStack.template.json`. -Then run the following CDK commands: +**Step 2: Create an Event File** -1. Synthesize the CloudFormation template: +The Lambda function is triggered by a scheduled Amazon EventBridge rule. To simulate this, create a file named `event.json`: ```bash -$ cdk synth +mkdir -p events +cat << EOF > events/event.json +{ + "version": "0", + "id": "9cdd405f-9593-4234-995f-274a41656504", + "detail-type": "Scheduled Event", + "source": "aws.events", + "account": "123456789012", + "time": "2025-08-15T14:00:00Z", + "region": "us-west-2", + "resources": [ + "arn:aws:events:us-west-2:123456789012:rule/MursstDailyRule" + ], + "detail": {} +} +EOF ``` -2. Deploy the stack to your AWS account: +**Step 3: Create an Environment Variables File** -If there is an existing role that should be attached to this lambda function, export the `LAMBDA_FUNCTION_ROLE` variable assigned to that role name, for example: +The function requires several environment variables. Create a file named `env.json` to hold them for local testing. -```bash -export LAMBDA_FUNCTION_ROLE=arn:aws:iam::XXX:role/lambda-role-name +```json +{ + "MursstIcechunkUpdater": { + "ICECHUNK_STORE_DIRECT": "s3://nasa-eodc-public/icechunk/MUR-JPL-L4-GLOB-v4.1-virtual-v2-p2", + "DRY_RUN": "true", + "LOCAL_TEST": "true", + "EARTHDATA_USERNAME": "your-edl-username", + "EARTHDATA_PASSWORD": "your-edl-password" + } +} ``` +**Important:** +- Replace the placeholder values for `EARTHDATA_USERNAME` and `EARTHDATA_PASSWORD` with your Earthdata Login credentials. +- The `"LOCAL_TEST": "true"` variable tells the function to use the username/password from this file instead of trying to fetch them from AWS Secrets Manager. +- The `"DRY_RUN": "true"` variable makes sure we are not commiting the changes from this test to the main branch. -and then run: +**Step 4: Invoke the Function Locally** +Now you can run the function: ```bash -$ cdk deploy +uv run sam local invoke MursstIcechunkUpdater \ + -t cdk.out/MursstStack.template.json \ + --event events/event.json \ + --env-vars env.json ``` +This command will build the Docker image if it's the first time and then invoke your function handler. You will see all the logs, including your `DEBUG` messages, printed directly to your terminal. + +### Special instructions for JupyterHUb + +**WIP** + +- docker +- + +## Deployment -## Useful Commands +To deploy the infrastructure to your AWS account, run the following commands. -- `cdk ls` List all stacks in the app -- `cdk synth` Generate the CloudFormation template -- `cdk deploy` Deploy the stack to your AWS account/region -- `cdk diff` Compare deployed stack with current state -- `cdk docs` Open CDK documentation +1. **Set IAM Role (Optional)** + If you have a pre-existing IAM role for the Lambda function, export its ARN as an environment variable: + ```bash + export LAMBDA_FUNCTION_ROLE=arn:aws:iam::ACCOUNT_ID:role/your-lambda-role-name + ``` + If this is not set, the CDK stack will create a new role with the necessary permissions. -## Configuration +2. **Deploy the Stack** + ```bash + uv run cdk deploy + ``` -The infrastructure can be configured through environment variables and CDK context. See the `app.py` file for available configuration options. +## Useful CDK Commands +- `cdk ls` - List all stacks in the app +- `cdk synth` - Generate the CloudFormation template +- `cdk deploy` - Deploy the stack to your AWS account/region +- `cdk diff` - Compare deployed stack with current state +- `cdk docs` - Open CDK documentation \ No newline at end of file diff --git a/cdk/lambda/__init__.py b/cdk/lambda/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/cdk/lambda/lambda_function.py b/cdk/lambda/lambda_function.py index 4088219..0186720 100644 --- a/cdk/lambda/lambda_function.py +++ b/cdk/lambda/lambda_function.py @@ -1,157 +1,265 @@ +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + pass + +import logging import earthaccess from earthaccess import DataGranule import json import icechunk import boto3 import os -from datetime import datetime, timedelta, timezone -import virtualizarr as vz -import zarr -import numpy as np -import requests -from typing import Optional +from datetime import datetime, timezone +from typing import Dict, Tuple import xarray as xr +from urllib.parse import urlparse, urlunparse +from virtualizarr import open_virtual_mfdataset +from virtualizarr.parsers import HDFParser +from virtualizarr.registry import ObjectStoreRegistry +from obstore.store import S3Store +from icechunk import S3StaticCredentials + +# Configure logging. +# In AWS Lambda, basicConfig does nothing as a handler is already configured. +# Locally, this will set the root logger to INFO level. +logging.basicConfig( + level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s" +) + +# Get the logger for this module +logger = logging.getLogger(__name__) +# Set the level for this specific logger to DEBUG, so it's always verbose. +# Other loggers (like boto3) will inherit the root logger's level (INFO). +logger.setLevel(logging.DEBUG) + -bucket = 'nasa-eodc-public' -store_name = "MUR-JPL-L4-GLOB-v4.1-virtual-v1-p2" -drop_vars = ["dt_1km_data", "sst_anomaly"] collection_short_name = "MUR-JPL-L4-GLOB-v4.1" -#TODO can I name this based on some id for the lambda? +drop_vars = ["dt_1km_data", "sst_anomaly"] +# TODO can I name this based on some id for the lambda? # for now lets just use time -branchname=f"add_time_{datetime.now(timezone.utc).isoformat()}" +branchname = f"add_time_{datetime.now(timezone.utc).isoformat()}" + +# +++ Auth/Secrets +++ + +example_target_url = "s3://podaac-ops-cumulus-protected/MUR-JPL-L4-GLOB-v4.1/20250702090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc" # TODO: this is clunky. I can get that from the granules (works well in a notebook, but bad for modularity here?) + + +def get_container_credentials(example_url: str) -> Dict[str, icechunk.AnyCredential]: + return icechunk.containers_credentials( + { + get_prefix_from_url(example_url): icechunk.s3_refreshable_credentials( + get_credentials=get_icechunk_creds + ) + } + ) + def get_secret(): - secret_name = os.environ['SECRET_ARN'] + secret_name = os.environ["SECRET_ARN"] session = boto3.session.Session() client = session.client( - service_name='secretsmanager', - region_name=session.region_name + service_name="secretsmanager", region_name=session.region_name ) try: - get_secret_value_response = client.get_secret_value( - SecretId=secret_name - ) + get_secret_value_response = client.get_secret_value(SecretId=secret_name) except Exception as e: raise e else: - if 'SecretString' in get_secret_value_response: - return json.loads(get_secret_value_response['SecretString']) + if "SecretString" in get_secret_value_response: + return json.loads(get_secret_value_response["SecretString"]) else: raise ValueError("Secret is not a string") + +# TODO: I should probably use the EDL authenticator that comes with obstore +# def get_obstore_credentials() -> S3Credential: #TODO This is not working +def get_obstore_credentials(): + auth = earthaccess.login(strategy="environment") + creds = auth.get_s3_credentials(daac="PODAAC") + return { + "access_key_id": creds["accessKeyId"], + "secret_access_key": creds["secretAccessKey"], + "token": creds["sessionToken"], + "expires_at": datetime.fromisoformat(creds["expiration"]), + } + + +def obstore_and_registry_from_url(url: str) -> Tuple[S3Store, ObjectStoreRegistry]: + logger.info(f"Setting up obstore and registry for url: {url}") + parsed = urlparse(url) + parsed_wo_path = parsed._replace(path="") + bucket = parsed.netloc + logger.debug(f"Using bucket: {bucket}") + cp = get_obstore_credentials # Pass the function itself as a callable + logger.debug(f"Using credential provider: {cp}") + store = S3Store(bucket=bucket, region="us-west-2", credential_provider=cp) + logger.debug(f"Created S3Store: {store}") + registry = ObjectStoreRegistry({parsed_wo_path.geturl(): store}) + logger.debug(f"Created ObjectStoreRegistry: {registry}") + return store, registry + + # refreshable earthdata credentials -from icechunk import S3StaticCredentials -def get_icechunk_creds(daac:str=None) -> S3StaticCredentials: +def get_icechunk_creds(daac: str = None) -> S3StaticCredentials: if daac is None: - daac = 'PODAAC' #TODO: Might want to change this for a more general version + daac = "PODAAC" # TODO: Might want to change this for a more general version # https://github.com/nsidc/earthaccess/discussions/1051 could help here. # assumes that username and password are available in the environment # TODO: accomodate rc file? - auth = earthaccess.login(strategy='environment') + auth = earthaccess.login(strategy="environment") if not auth.authenticated: - raise PermissionError('Could not authenticate using environment variables') + raise PermissionError("Could not authenticate using environment variables") creds = auth.get_s3_credentials(daac=daac) return S3StaticCredentials( - access_key_id=creds['accessKeyId'], - secret_access_key=creds['secretAccessKey'], - expires_after=datetime.fromisoformat(creds['expiration']), - session_token=creds['sessionToken'] + access_key_id=creds["accessKeyId"], + secret_access_key=creds["secretAccessKey"], + expires_after=datetime.fromisoformat(creds["expiration"]), + session_token=creds["sessionToken"], ) -# 🍱 there is a lot of overlap between this and lithops code and icechunk-nasa code 🤔 -def open_icechunk_repo(bucket_name: str, store_name: str): - print("opening icechunk repo") - storage = icechunk.s3_storage( - bucket=bucket_name, - prefix=f"icechunk/{store_name}", - anonymous=False, - from_env=True - ) - config = icechunk.RepositoryConfig.default() - config.set_virtual_chunk_container(icechunk.VirtualChunkContainer("s3", "s3://", icechunk.s3_store(region="us-west-2"))) +# +++ Icechunk Wrangling +++ +def get_icechunk_storage(target: str) -> icechunk.Storage: + if target.startswith("s3://"): + logger.info("Defining icechunk storage for s3") + target_parsed = urlparse(target) + storage = icechunk.s3_storage( + bucket=target_parsed.netloc, + prefix=target_parsed.path, + from_env=True, + ) + else: + logger.info("Defining icechunk storage for local filesystem") + storage = icechunk.local_filesystem_storage(path=target) + return storage - repo_config = dict( + +def create_icechunk_repo(store_target: str) -> None: + storage = get_icechunk_storage(store_target) + config = icechunk.RepositoryConfig.default() + config.set_virtual_chunk_container( + icechunk.VirtualChunkContainer( + get_prefix_from_url( + example_target_url + ), # TODO: Again I dont like this example url here... + icechunk.s3_store(region="us-west-2"), + ) + ) + icechunk.Repository.create( storage=storage, config=config, + authorize_virtual_chunk_access=get_container_credentials(example_target_url), ) - virtual_credentials = icechunk.containers_credentials( - s3=icechunk.s3_refreshable_credentials(get_credentials=get_icechunk_creds), - ) - repo_config['virtual_chunk_credentials'] = virtual_credentials - return icechunk.Repository.open(**repo_config) - -def get_last_timestep(session: icechunk.Session) -> datetime: - print("Getting last timestep") - # get the last timestep from the icechunk store - # return the last timestep - zarr_store = zarr.open(session.store, mode="r") - epoch = datetime(1981, 1, 1) - dt_array = np.array([epoch + timedelta(seconds=int(t)) for t in zarr_store['time'][:]]) - return dt_array[-1] - - -def write_to_icechunk_branch(repo: icechunk.Repository, granule_results: list[DataGranule]) -> str: - print("opening virtual dataset") - vds = earthaccess.open_virtual_mfdataset( - granule_results, - access="direct", - load=False, - concat_dim="time", - coords="minimal", - compat="override", - combine_attrs="override", - parallel=False, + +def open_icechunk_repo(store_target: str) -> icechunk.Repository: + logger.info("Opening icechunk repo") + storage = get_icechunk_storage(store_target) + # TODO: I think I can remove the config here and just load it from the repo... + + repo = icechunk.Repository.open( + storage=storage, + authorize_virtual_chunk_access=get_container_credentials(example_target_url), ) - print(f"New Data (Virtual): {vds}") - # write to the icechunk store - vds = vds.drop_vars(drop_vars, errors="ignore") - print(f"Creating branch: {branchname}") - repo.create_branch( - branchname, - snapshot_id=repo.lookup_branch("main") #branches of the lates commit to main! + return repo + + +def get_prefix_from_url(url: str) -> str: + parsed = urlparse(url) + path_without_file = os.path.dirname(parsed.path) + new_parsed = parsed._replace(path=path_without_file) + prefix = ( + urlunparse(new_parsed) + "/" + ) # we always need a trailing slash for ic (see https://github.com/earth-mover/icechunk/issues/1100) + return prefix + + +# ++++ Granule search and virtualization logic +def find_granules( + start_date: str, end_date: str, limit_granules: int = None +) -> list[DataGranule]: + logger.info(f"Searching for granules between {start_date} and {end_date}") + granule_results = earthaccess.search_data( + temporal=(start_date, end_date), short_name=collection_short_name ) - print(f"writing to icechunk branch {branchname}") - # get the time range from the granules - start_time = min([g['umm']['TemporalExtent']['RangeDateTime']['BeginningDateTime'] for g in granule_results]) - end_time = max([g['umm']['TemporalExtent']['RangeDateTime']['EndingDateTime'] for g in granule_results]) + if len(granule_results) == 0: + logger.warning("No granules found") + return None + else: + logger.info(f"Number of granules found: {len(granule_results)}") + if limit_granules is not None: + logger.info(f"Limiting the number of granules to {limit_granules}") + return granule_results[:limit_granules] + else: + return granule_results + + +def dataset_from_search( + start_date: str, + end_date: str, + virtual=True, + limit_granules: int = None, + parallel="lithops", + access: str = "direct", +) -> xr.Dataset: + logger.debug(f"{limit_granules=}") + granule_results = find_granules(start_date, end_date, limit_granules=limit_granules) + if granule_results is None or len(granule_results) == 0: + raise ValueError("No new data granules available") + + data_urls = [g.data_links(access=access, in_region=True)[0] for g in granule_results] + + store, registry = obstore_and_registry_from_url(example_target_url) + parser = HDFParser() + + def preprocess(ds: xr.Dataset) -> xr.Dataset: + return ds.drop_vars(drop_vars, errors="ignore") + + if virtual: + return open_virtual_mfdataset( + data_urls, + registry=registry, + parser=parser, + # decode_timedelta=True, # does not work yet (see https://github.com/zarr-developers/VirtualiZarr/issues/749#issuecomment-3140247475) + preprocess=preprocess, + parallel=parallel, + ) + else: + fileset = earthaccess.open(data_urls, provider="POCLOUD") + return xr.open_mfdataset( + fileset, + preprocess=preprocess, + chunks={}, + parallel=True, + ) - commit_message = f"Committed data for {start_time} to {end_time}." - - session = repo.writable_session(branch=branchname) - vds.virtualize.to_icechunk(session.store, append_dim='time') - snapshot = session.commit(commit_message) - print(f"Commit successful to branch: {branchname} as snapshot:{snapshot} \n {commit_message}") - return snapshot +def get_timestep_from_ds(ds: xr.Dataset, nt: str) -> datetime: + return ds.time.data[nt].astype("datetime64[ms]").astype(datetime) -def open_xr_dataset_from_branch(repo:icechunk.Repository,branch:str): + +def open_xr_dataset_from_branch(repo: icechunk.Repository, branch: str): session = repo.readonly_session(branch=branch) ds = xr.open_zarr(session.store, consolidated=False) return ds def test_store_on_branch( - repo: icechunk.Repository, - granule_results: list[DataGranule] -): - print("Starting Tests") - ds = open_xr_dataset_from_branch(repo, branchname) - nt = len(granule_results) - - print("Building Test Datasets") - direct_access_links = [granule.data_links(access="external")[0] for granule in granule_results] - fileset = earthaccess.open(direct_access_links, provider='POCLOUD') - ds_original = xr.open_mfdataset(fileset).drop_vars(drop_vars, errors="ignore") - + ds_new: xr.Dataset, ds_expected: xr.Dataset +) -> Tuple[bool, str]: + logger.info("Starting Tests") + nt = len(ds_expected.time) + # Test 1: time continuity - print("Testing Time continuity") + logger.info("Testing Time continuity") try: - dt_expected = ds.time.isel(time=slice(0, 1)).diff('time') - dt_actual = ds.time.isel(time=slice(-nt+1, None)).diff('time') + # the first time difference as reference + dt_expected = ds_new.time.isel(time=slice(0, 1)).diff("time") + # compare to all differences including the one to the last old timestep + dt_actual = ds_new.isel(time=slice(-(nt + 1), None)).time.diff("time") time_continuity = (dt_actual == dt_expected).all().item() except Exception as e: time_continuity = False @@ -160,9 +268,9 @@ def test_store_on_branch( time_continuity_error = None # Test 2: data equality - print("Testing Data equality") + logger.info("Testing Data equality") try: - xr.testing.assert_allclose(ds_original, ds.isel(time=slice(-nt, None))) + xr.testing.assert_allclose(ds_expected, ds_new.isel(time=slice(-nt, None))) data_equal = True except AssertionError as e: data_equal = False @@ -188,77 +296,111 @@ def test_store_on_branch( return tests_passed, error_message -def merge_into_main(repo: icechunk.Repository): - if os.environ.get("DRY_RUN", "false") == "true": - print(f"Dry run, not merging {branchname} into main") - else: - print(f"merging {branchname} into main") - # append branch commit to main branch and delete test branch - snapshot = repo.reset_branch('main', repo.lookup_branch(branchname)) - print(f"Latest snapshot on main: {snapshot}") - # always delete extra branch - #TODO: The hub does not allow us to delete objects! - # repo.delete_branch(branchname) - -def find_granules(repo: icechunk.Repository): - session = repo.readonly_session(branch="main") - # MUR SST granules have a temporal range of date 1 21:00:00 to date 2 21:00:00, +def write_to_icechunk( + store_target: str, limit_granules: int = None, parallel="lithops" +): + repo = open_icechunk_repo(store_target) + + ## Find the timerange that is new + logger.info("Finding dates to append to existing store") + ds_main = open_xr_dataset_from_branch(repo, "main") + # MUR SST granules have a temporal range of date 1 21:00:00 to date 2 21:00:00, # e.g. granule 20240627090000 has datetime range of 2024-06-26 21:00:00:00 to 2024-06-27 21:00:00:00 - # so granules overlap in time. - # Here we increment the latest timestep of the icechunkstore by 1 minute + # so granules overlap in time. + # Here we increment the latest timestep of the icechunkstore by 1 minute # to make sure we only get granules outside of the latest date covered by the icechunk store - last_timestep = str(get_last_timestep(session)) + " 21:00:01" - current_date = str(datetime.now().date()) + " 21:00:00" - print(f"Searching for granules between {last_timestep} and {current_date}") - granule_results = earthaccess.search_data( - temporal=(last_timestep, current_date), short_name=collection_short_name + last_date = get_timestep_from_ds(ds_main, -1).date() + last_timestep = datetime.combine( + last_date, datetime.strptime("21:00:01", "%H:%M:%S").time(), tzinfo=timezone.utc + ).isoformat(sep=" ") + current_date_date = datetime.now(timezone.utc).date() + current_date = datetime.combine( + current_date_date, + datetime.strptime("21:00:00", "%H:%M:%S").time(), + tzinfo=timezone.utc, + ).isoformat(sep=" ") + + ## Search for new data and create a virtual dataset + vds = dataset_from_search( + last_timestep, + current_date, + virtual=True, + limit_granules=limit_granules, + parallel=parallel, + ) + logger.debug(f"New Data (Virtual): {vds}") + # write to the icechunk store + main_snapshot = repo.lookup_branch("main") + logger.debug(f"Latest main snapshot: {main_snapshot}") + logger.info(f"Creating branch: {branchname}") + repo.create_branch( + branchname, + snapshot_id=main_snapshot, # branches of the lates commit to main! ) - if len(granule_results) == 0: - print("No granules found") - return None - else: - print(f"Number of granules found: {len(granule_results)}") - return granule_results + logger.info(f"writing to icechunk branch {branchname}") + commit_message = f"MUR update {branchname}" + session = repo.writable_session(branch=branchname) + vds.vz.to_icechunk(session.store, append_dim="time") + snapshot = session.commit(commit_message) + logger.info( + f"Commit successful to branch: {branchname} as snapshot:{snapshot} \n {commit_message}" + ) + ## Compare data committed and reloaded from granules not using icechunk + logger.info("Reloading Dataset from branch") + ds_new = open_xr_dataset_from_branch(repo, branchname) + logger.info(f"Dataset on {branchname}: {ds_new}") -def write_to_icechunk_or_fail(): - repo = open_icechunk_repo(bucket, store_name) - granule_results = find_granules(repo) + logger.info("Building Test Datasets") + ds_original = dataset_from_search( + last_timestep, current_date, virtual=False, limit_granules=limit_granules + ) + logger.info(f"Test Dataset: {ds_original}") - if len(granule_results) > 0: - write_to_icechunk_branch(repo, granule_results) - passed, message = test_store_on_branch(repo, granule_results) - if not passed: - print(f'Tests did not pass with: {message}') - return message - else: - print('Tests passed.') - merge_into_main(repo) - return repo.lookup_branch('main') + passed, message = test_store_on_branch(ds_new, ds_original) + + if not passed: + logger.info(f"Tests did not pass with: {message}") + return message else: - return None + logger.info("Tests passed.") + if os.environ.get("DRY_RUN", "false") == "true": + logger.info(f"Dry run, not merging {branchname} into main") + else: + logger.info(f"merging {branchname} into main") + # append branch commit to main branch and delete test branch + repo.reset_branch("main", repo.lookup_branch(branchname)) def lambda_handler(event, context: dict = {}): """ Update the icechunk store with the latest MUR-JPL-L4-GLOB-v4.1 data. """ + logger.info(f"Function started with event: {json.dumps(event)}") - #Fetch secrets (if EDL env vars are not set, this enables easier local testing) - if os.environ.get('LOCAL_TEST', False): - print('LOCAL TEST detected. You need to set EDL login/password manually') - else: - secrets = get_secret() - os.environ['EARTHDATA_USERNAME'] = secrets['EARTHDATA_USERNAME'] - os.environ['EARTHDATA_PASSWORD'] = secrets['EARTHDATA_PASSWORD'] - - - print(f"Received event: {json.dumps(event)}") + try: + # Fetch secrets (if EDL env vars are not set, this enables easier local testing) + if os.environ.get("LOCAL_TEST", "false").lower() == "true": + logger.debug( + "LOCAL TEST detected. You need to set EDL login/password manually" + ) + else: + logger.debug("Fetching secrets from AWS Secrets Manager") + secrets = get_secret() + os.environ["EARTHDATA_USERNAME"] = secrets["EARTHDATA_USERNAME"] + os.environ["EARTHDATA_PASSWORD"] = secrets["EARTHDATA_PASSWORD"] - result = write_to_icechunk_or_fail() + # this is for the final test (needs to be created by a local script) + store_url = os.environ["ICECHUNK_STORE_DIRECT"] + logger.info(f"Using icechunk store at {store_url}") + result = write_to_icechunk(store_url, parallel=False) - return { - 'statusCode': 200, - 'body': json.dumps(f'Successfully processed messages: {result}') - } \ No newline at end of file + return { + "statusCode": 200, + "body": json.dumps(f"Successfully processed messages: {result}"), + } + + except Exception as e: + logger.error(f"Function failed with error: {str(e)}", exc_info=True) + raise diff --git a/cdk/lambda/requirements.txt b/cdk/lambda/requirements.txt index 12baa23..e8291b1 100644 --- a/cdk/lambda/requirements.txt +++ b/cdk/lambda/requirements.txt @@ -1,7 +1,58 @@ -dask -earthaccess>=0.13.0 -icechunk==0.2.15 -zarr==3.0.8 -requests>=2.25.0 -virtualizarr==1.3.2 -h5netcdf \ No newline at end of file +aiobotocore==2.23.1 +aiohappyeyeballs==2.6.1 +aiohttp==3.12.14 +aioitertools==0.12.0 +aiosignal==1.4.0 +attrs==25.3.0 +boto3==1.38.46 +botocore==1.38.46 +bounded-pool-executor==0.0.3 +certifi==2025.7.14 +charset-normalizer==3.4.2 +click==8.1.8 +cloudpickle==3.1.1 +colorama==0.4.6 ; sys_platform == 'win32' +crc32c==2.7.1 +dask==2025.7.0 +donfig==0.8.1.post1 +earthaccess==0.14.0 +frozenlist==1.7.0 +fsspec==2025.7.0 +h5netcdf==1.6.3 +h5py==3.14.0 +icechunk==1.0.0 +idna==3.10 +importlib-resources==6.5.2 +jmespath==1.0.1 +locket==1.0.0 +multidict==6.6.3 +multimethod==2.0 +numcodecs==0.16.1 +numpy==2.3.1 +obstore==0.7.0 +packaging==25.0 +pandas==2.3.1 +partd==1.4.2 +pqdm==0.2.0 +propcache==0.3.2 +python-cmr==0.13.0 +python-dateutil==2.9.0.post0 +pytz==2025.2 +pyyaml==6.0.2 +requests==2.32.4 +s3fs==2025.7.0 +s3transfer==0.13.1 +six==1.17.0 +tinynetrc==1.3.1 +toolz==1.0.0 +tqdm==4.67.1 +typing-extensions==4.14.1 +tzdata==2025.2 +ujson==5.10.0 +universal-pathlib==0.2.6 +urllib3==2.5.0 +virtualizarr==2.0.0 +wrapt==1.17.2 +xarray==2025.6.0 +yarl==1.20.1 +zarr==3.1.0 diff --git a/cdk/mursst_stack.py b/cdk/mursst_stack.py index 55592b7..f9f08b4 100644 --- a/cdk/mursst_stack.py +++ b/cdk/mursst_stack.py @@ -2,43 +2,49 @@ Stack, aws_lambda as _lambda, aws_iam as iam, - aws_s3 as s3, aws_sns as sns, aws_cloudwatch as cloudwatch, aws_cloudwatch_actions as cloudwatch_actions, aws_events as events, aws_events_targets as targets, Duration, - RemovalPolicy, ) from constructs import Construct import os + class MursstStack(Stack): def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: super().__init__(scope, construct_id, **kwargs) # Create or import IAM role for Lambda based on environment variable lambda_role = None - if 'LAMBDA_FUNCTION_ROLE' in os.environ: + if "LAMBDA_FUNCTION_ROLE" in os.environ: # Import existing role using ARN from environment variable lambda_role = iam.Role.from_role_arn( - self, "ImportedMursstLambdaRole", - role_arn=os.environ['LAMBDA_FUNCTION_ROLE'] + self, + "ImportedMursstLambdaRole", + role_arn=os.environ["LAMBDA_FUNCTION_ROLE"], ) else: # Create new role if environment variable is not set lambda_role = iam.Role( - self, "MursstLambdaRole", + self, + "MursstLambdaRole", assumed_by=iam.ServicePrincipal("lambda.amazonaws.com"), managed_policies=[ - iam.ManagedPolicy.from_aws_managed_policy_name("service-role/AWSLambdaBasicExecutionRole"), - iam.ManagedPolicy.from_aws_managed_policy_name("AmazonS3FullAccess") - ] + iam.ManagedPolicy.from_aws_managed_policy_name( + "service-role/AWSLambdaBasicExecutionRole" + ), + iam.ManagedPolicy.from_aws_managed_policy_name( + "AmazonS3FullAccess" + ), + ], ) # Create Lambda function using the determined role lambda_function = _lambda.Function( - self, "MursstIcechunkUpdater", + self, + "MursstIcechunkUpdater", runtime=_lambda.Runtime.PYTHON_3_12, handler="lambda_function.lambda_handler", code=_lambda.Code.from_docker_build( @@ -50,37 +56,42 @@ def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: environment={ "SECRET_ARN": "arn:aws:secretsmanager:us-west-2:444055461661:secret:mursst_lambda_edl_credentials-9dKy1C", # Replace with your secret ARN # "DRY_RUN": "true", # Deactivate write for now + "ICECHUNK_STORE_DIRECT": "s3://nasa-eodc-public/icechunk/MUR-JPL-L4-GLOB-v4.1-virtual-v2-p2", }, timeout=Duration.seconds(600), - memory_size=1024 + # memory_size=1024, + memory_size=4096, ) # Create SNS topic for notifications notification_topic = sns.Topic( - self, "MursstIcechunkUpdaterNotificationTopic", - topic_name="mursst-icechunk-updater-notifications" + self, + "MursstIcechunkUpdaterNotificationTopic", + topic_name="mursst-icechunk-updater-notifications", ) # Add email subscription to SNS topic # Note: You'll need to confirm the subscription in your email sns.Subscription( - self, "MursstIcechunkUpdaterEmailSubscription", + self, + "MursstIcechunkUpdaterEmailSubscription", topic=notification_topic, protocol=sns.SubscriptionProtocol.EMAIL, - endpoint="aimee@developmentseed.org" # Replace with your email + endpoint="aimee@developmentseed.org", # Replace with your email ) # Create EventBridge rule to trigger Lambda daily at 6am PT (14:00 UTC) daily_rule = events.Rule( - self, "MursstDailyRule", + self, + "MursstDailyRule", schedule=events.Schedule.cron( minute="0", hour="14", # 6am PT = 14:00 UTC (during PDT) or 13:00 UTC (during PST) day="*", month="*", - year="*" + year="*", ), - description="Trigger Mursst Lambda function daily at 6am PT" + description="Trigger Mursst Lambda function daily at 6am PT", ) # Add Lambda as target for the EventBridge rule @@ -88,12 +99,13 @@ def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: # Create CloudWatch alarm for Lambda errors lambda_error_alarm = cloudwatch.Alarm( - self, "MursstLambdaErrorAlarm", + self, + "MursstLambdaErrorAlarm", metric=lambda_function.metric_errors(), threshold=1, evaluation_periods=1, comparison_operator=cloudwatch.ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD, - alarm_description="Alarm when Lambda function encounters errors" + alarm_description="Alarm when Lambda function encounters errors", ) # Add SNS action to the error alarm @@ -103,12 +115,13 @@ def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: # Create CloudWatch alarm for Lambda invocations (success notifications) lambda_invocation_alarm = cloudwatch.Alarm( - self, "MursstLambdaInvocationAlarm", + self, + "MursstLambdaInvocationAlarm", metric=lambda_function.metric_invocations(), threshold=1, evaluation_periods=1, comparison_operator=cloudwatch.ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD, - alarm_description="Alarm when Lambda function is invoked successfully" + alarm_description="Alarm when Lambda function is invoked successfully", ) # Add SNS action to the invocation alarm @@ -124,15 +137,15 @@ def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: "AllowEventBridgeInvoke", principal=iam.ServicePrincipal("events.amazonaws.com"), action="lambda:InvokeFunction", - source_arn=daily_rule.rule_arn + source_arn=daily_rule.rule_arn, ) # Grant Lambda permissions to access Secrets Manager lambda_role.add_to_policy( iam.PolicyStatement( - actions=[ - "secretsmanager:GetSecretValue" - ], - resources=["arn:aws:secretsmanager:us-west-2:444055461661:secret:mursst_lambda_edl_credentials-9dKy1C"] # Replace with your secret ARN + actions=["secretsmanager:GetSecretValue"], + resources=[ + "arn:aws:secretsmanager:us-west-2:444055461661:secret:mursst_lambda_edl_credentials-9dKy1C" + ], # Replace with your secret ARN ) ) diff --git a/cdk/requirements.txt b/cdk/requirements.txt deleted file mode 100644 index 2c48159..0000000 --- a/cdk/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -aws-cdk-lib==2.181.1 -constructs>=10.0.0,<11.0.0 diff --git a/create_queue.py b/create_queue.py deleted file mode 100644 index 0b45843..0000000 --- a/create_queue.py +++ /dev/null @@ -1,77 +0,0 @@ -import boto3 -import json -import os -from config import QUEUE_NAME, QUEUE_ARN_FILE - -def create_sqs_queue(): - # Initialize AWS clients - sqs = boto3.client('sqs') - sts = boto3.client('sts') - - # Get AWS account ID and region - aws_account_id = sts.get_caller_identity()['Account'] - - try: - # Create the queue - response = sqs.create_queue( - QueueName=QUEUE_NAME - ) - queue_url = response['QueueUrl'] - - # Get queue ARN - queue_attributes = sqs.get_queue_attributes( - QueueUrl=queue_url, - AttributeNames=['QueueArn'] - ) - queue_arn = queue_attributes['Attributes']['QueueArn'] - - # Create queue policy - queue_policy = { - "Version": "2012-10-17", - "Id": "__default_policy_ID", - "Statement": [ - { - "Sid": "__owner_statement", - "Effect": "Allow", - "Principal": { - "AWS": f"arn:aws:iam::{aws_account_id}:root" - }, - "Action": [ - "SQS:*" - ], - "Resource": queue_arn - }, - { - "Sid": "AllowSNSPublish", - "Effect": "Allow", - "Principal": { - "Service": "sns.amazonaws.com" - }, - "Action": "SQS:SendMessage", - "Resource": queue_arn - } - ] - } - - # Set queue policy - sqs.set_queue_attributes( - QueueUrl=queue_url, - Attributes={ - 'Policy': json.dumps(queue_policy) - } - ) - - # Save queue ARN to file - with open(QUEUE_ARN_FILE, 'w') as f: - f.write(queue_arn) - - print(f"Successfully created queue: {QUEUE_NAME}") - print(f"Queue URL: {queue_url}") - print(f"Queue ARN: {queue_arn}") - print(f"Queue ARN saved to {QUEUE_ARN_FILE}") - - except Exception as e: - print(f"Error creating queue: {str(e)}") - -if __name__ == "__main__": - create_sqs_queue() \ No newline at end of file diff --git a/notebooks/hub_test.ipynb b/notebooks/hub_test.ipynb new file mode 100644 index 0000000..5c55952 --- /dev/null +++ b/notebooks/hub_test.ipynb @@ -0,0 +1,824 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "a2fde0d5-2633-4e9a-a1eb-4b7e630d583d", + "metadata": {}, + "source": [ + "# Locally testing the append logic\n", + "\n", + "
\n", + " ⚠️ WARNING: \n", + " If you run this on the staging/production store, it will create at least snapshots/branches on the store and possibly changes to the main branch (depending on the DRY_RUN environment variable). So proceed with caution.\n", + "
\n", + "\n", + "To run this example in an existing Jupyter environment (e.g. a Jupyter Hub) please make sure to create a custom kernel with uv fowllowing these [instructions](../README.md)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "795ae484-f544-4edf-b3a6-e62f939c13b7", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + } + ], + "source": [ + "from lambda_function import write_to_icechunk_or_fail, open_xr_dataset_from_branch, open_icechunk_repo" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "1d2b34c3-6534-4541-b6ac-7a78f452b506", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2025-08-15 23:15:45,063 - lambda_function - INFO - Opening icechunk repo\n", + "2025-08-15 23:15:45,064 - lambda_function - INFO - Defining icechunk storage for s3\n" + ] + } + ], + "source": [ + "# This is a temporary store in a scratch bucket, which will be deleted after 7 days.\n", + "# You can recreate the test store by running `./scripts/rebuild_store_with_vz2_ic1`\n", + "from dotenv import load_dotenv\n", + "import os\n", + "load_dotenv()\n", + "# store_url = os.environ[\"ICECHUNK_STORE_DIRECT\"]\n", + "store_url = os.environ[\"ICECHUNK_STORE_PROD\"]\n", + "\n", + "repo = open_icechunk_repo(store_url)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "c8c4f5ad-1fbe-4869-b9ae-eb9e60146005", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset> Size: 8TB\n",
+       "Dimensions:           (lat: 17999, lon: 36000, time: 436)\n",
+       "Coordinates:\n",
+       "  * lat               (lat) float32 72kB -89.99 -89.98 -89.97 ... 89.98 89.99\n",
+       "  * lon               (lon) float32 144kB -180.0 -180.0 -180.0 ... 180.0 180.0\n",
+       "  * time              (time) datetime64[ns] 3kB 2024-06-02T09:00:00 ... 2025-...\n",
+       "Data variables:\n",
+       "    analysis_error    (time, lat, lon) float64 2TB dask.array<chunksize=(1, 1023, 2047), meta=np.ndarray>\n",
+       "    analysed_sst      (time, lat, lon) float64 2TB dask.array<chunksize=(1, 1023, 2047), meta=np.ndarray>\n",
+       "    sea_ice_fraction  (time, lat, lon) float64 2TB dask.array<chunksize=(1, 1023, 2047), meta=np.ndarray>\n",
+       "    mask              (time, lat, lon) float32 1TB dask.array<chunksize=(1, 1023, 2047), meta=np.ndarray>\n",
+       "Attributes: (12/47)\n",
+       "    Conventions:                CF-1.7\n",
+       "    title:                      Daily MUR SST, Final product\n",
+       "    summary:                    A merged, multi-sensor L4 Foundation SST anal...\n",
+       "    references:                 http://podaac.jpl.nasa.gov/Multi-scale_Ultra-...\n",
+       "    institution:                Jet Propulsion Laboratory\n",
+       "    history:                    created at nominal 4-day latency; replaced nr...\n",
+       "    ...                         ...\n",
+       "    project:                    NASA Making Earth Science Data Records for Us...\n",
+       "    publisher_name:             GHRSST Project Office\n",
+       "    publisher_url:              http://www.ghrsst.org\n",
+       "    publisher_email:            ghrsst-po@nceo.ac.uk\n",
+       "    processing_level:           L4\n",
+       "    cdm_data_type:              grid
" + ], + "text/plain": [ + " Size: 8TB\n", + "Dimensions: (lat: 17999, lon: 36000, time: 436)\n", + "Coordinates:\n", + " * lat (lat) float32 72kB -89.99 -89.98 -89.97 ... 89.98 89.99\n", + " * lon (lon) float32 144kB -180.0 -180.0 -180.0 ... 180.0 180.0\n", + " * time (time) datetime64[ns] 3kB 2024-06-02T09:00:00 ... 2025-...\n", + "Data variables:\n", + " analysis_error (time, lat, lon) float64 2TB dask.array\n", + " analysed_sst (time, lat, lon) float64 2TB dask.array\n", + " sea_ice_fraction (time, lat, lon) float64 2TB dask.array\n", + " mask (time, lat, lon) float32 1TB dask.array\n", + "Attributes: (12/47)\n", + " Conventions: CF-1.7\n", + " title: Daily MUR SST, Final product\n", + " summary: A merged, multi-sensor L4 Foundation SST anal...\n", + " references: http://podaac.jpl.nasa.gov/Multi-scale_Ultra-...\n", + " institution: Jet Propulsion Laboratory\n", + " history: created at nominal 4-day latency; replaced nr...\n", + " ... ...\n", + " project: NASA Making Earth Science Data Records for Us...\n", + " publisher_name: GHRSST Project Office\n", + " publisher_url: http://www.ghrsst.org\n", + " publisher_email: ghrsst-po@nceo.ac.uk\n", + " processing_level: L4\n", + " cdm_data_type: grid" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Look at the store before\n", + "ds_before = open_xr_dataset_from_branch(repo, 'main')\n", + "ds_before" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "64972f59-432b-4f1f-91fa-d968fb950de4", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2025-08-15 23:15:45,609 - lambda_function - INFO - Opening icechunk repo\n", + "2025-08-15 23:15:45,610 - lambda_function - INFO - Defining icechunk storage for s3\n", + "2025-08-15 23:15:45,703 - lambda_function - INFO - Finding dates to append to existing store\n", + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n", + "2025-08-15 23:15:45,937 - lambda_function - DEBUG - limit_granules=None\n", + "2025-08-15 23:15:45,938 - lambda_function - INFO - Searching for granules between 2025-08-11 21:00:01+00:00 and 2025-08-15 21:00:00+00:00\n", + "2025-08-15 23:15:46,474 - earthaccess.auth - INFO - You're now authenticated with NASA Earthdata Login\n", + "2025-08-15 23:15:47,068 - earthaccess.api - INFO - Granules found: 3\n", + "2025-08-15 23:15:47,359 - lambda_function - INFO - Number of granules found: 3\n", + "2025-08-15 23:15:47,360 - lambda_function - INFO - Setting up obstore and registry for url: s3://podaac-ops-cumulus-protected/MUR-JPL-L4-GLOB-v4.1/20250702090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc\n", + "2025-08-15 23:15:47,360 - lambda_function - DEBUG - Using bucket: podaac-ops-cumulus-protected\n", + "2025-08-15 23:15:47,361 - lambda_function - DEBUG - Using credential provider: \n", + "2025-08-15 23:15:47,367 - lambda_function - DEBUG - Created S3Store: S3Store(bucket=\"podaac-ops-cumulus-protected\")\n", + "2025-08-15 23:15:47,368 - lambda_function - DEBUG - Created ObjectStoreRegistry: \n", + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n", + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/virtualizarr/xarray.py:341: FutureWarning: In a future version, xarray will not decode timedelta values based on the presence of a timedelta-like units attribute by default. Instead it will rely on the presence of a timedelta64 dtype attribute, which is now xarray's default way of encoding timedelta64 values. To continue decoding timedeltas based on the presence of a timedelta-like units attribute, users will need to explicitly opt-in by passing True or CFTimedeltaCoder(decode_via_units=True) to decode_timedelta. To silence this warning, set decode_timedelta to True, False, or a 'CFTimedeltaCoder' instance.\n", + " with xr.open_zarr(\n", + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n", + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/virtualizarr/xarray.py:341: FutureWarning: In a future version, xarray will not decode timedelta values based on the presence of a timedelta-like units attribute by default. Instead it will rely on the presence of a timedelta64 dtype attribute, which is now xarray's default way of encoding timedelta64 values. To continue decoding timedeltas based on the presence of a timedelta-like units attribute, users will need to explicitly opt-in by passing True or CFTimedeltaCoder(decode_via_units=True) to decode_timedelta. To silence this warning, set decode_timedelta to True, False, or a 'CFTimedeltaCoder' instance.\n", + " with xr.open_zarr(\n", + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n", + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/virtualizarr/xarray.py:341: FutureWarning: In a future version, xarray will not decode timedelta values based on the presence of a timedelta-like units attribute by default. Instead it will rely on the presence of a timedelta64 dtype attribute, which is now xarray's default way of encoding timedelta64 values. To continue decoding timedeltas based on the presence of a timedelta-like units attribute, users will need to explicitly opt-in by passing True or CFTimedeltaCoder(decode_via_units=True) to decode_timedelta. To silence this warning, set decode_timedelta to True, False, or a 'CFTimedeltaCoder' instance.\n", + " with xr.open_zarr(\n", + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n", + "2025-08-15 23:16:02,104 - lambda_function - DEBUG - New Data (Virtual): Size: 12GB\n", + "Dimensions: (time: 3, lat: 17999, lon: 36000)\n", + "Coordinates:\n", + " * time (time) datetime64[ns] 24B 2025-08-12T09:00:00 ... 2025-...\n", + " * lat (lat) float32 72kB -89.99 -89.98 -89.97 ... 89.98 89.99\n", + " * lon (lon) float32 144kB -180.0 -180.0 -180.0 ... 180.0 180.0\n", + "Data variables:\n", + " analysed_sst (time, lat, lon) int16 4GB ManifestArray Size: 8TB\n", + "Dimensions: (time: 439, lat: 17999, lon: 36000)\n", + "Coordinates:\n", + " * lat (lat) float32 72kB -89.99 -89.98 -89.97 ... 89.98 89.99\n", + " * lon (lon) float32 144kB -180.0 -180.0 -180.0 ... 180.0 180.0\n", + " * time (time) datetime64[ns] 4kB 2024-06-02T09:00:00 ... 2025-...\n", + "Data variables:\n", + " analysis_error (time, lat, lon) float64 2TB dask.array\n", + " analysed_sst (time, lat, lon) float64 2TB dask.array\n", + " mask (time, lat, lon) float32 1TB dask.array\n", + " sea_ice_fraction (time, lat, lon) float64 2TB dask.array\n", + "Attributes: (12/47)\n", + " Conventions: CF-1.7\n", + " title: Daily MUR SST, Interim near-real-time (nrt) p...\n", + " summary: A merged, multi-sensor L4 Foundation SST anal...\n", + " references: http://podaac.jpl.nasa.gov/Multi-scale_Ultra-...\n", + " institution: Jet Propulsion Laboratory\n", + " history: near real time (nrt) version created at nomin...\n", + " ... ...\n", + " project: NASA Making Earth Science Data Records for Us...\n", + " publisher_name: GHRSST Project Office\n", + " publisher_url: http://www.ghrsst.org\n", + " publisher_email: ghrsst-po@nceo.ac.uk\n", + " processing_level: L4\n", + " cdm_data_type: grid\n", + "2025-08-15 23:16:06,284 - lambda_function - INFO - Building Test Datasets\n", + "2025-08-15 23:16:06,284 - lambda_function - DEBUG - limit_granules=None\n", + "2025-08-15 23:16:06,285 - lambda_function - INFO - Searching for granules between 2025-08-11 21:00:01+00:00 and 2025-08-15 21:00:00+00:00\n", + "2025-08-15 23:16:06,502 - earthaccess.api - INFO - Granules found: 3\n", + "2025-08-15 23:16:06,793 - lambda_function - INFO - Number of granules found: 3\n", + "2025-08-15 23:16:06,794 - lambda_function - INFO - Setting up obstore and registry for url: s3://podaac-ops-cumulus-protected/MUR-JPL-L4-GLOB-v4.1/20250702090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc\n", + "2025-08-15 23:16:06,794 - lambda_function - DEBUG - Using bucket: podaac-ops-cumulus-protected\n", + "2025-08-15 23:16:06,795 - lambda_function - DEBUG - Using credential provider: \n", + "2025-08-15 23:16:06,800 - lambda_function - DEBUG - Created S3Store: S3Store(bucket=\"podaac-ops-cumulus-protected\")\n", + "2025-08-15 23:16:06,801 - lambda_function - DEBUG - Created ObjectStoreRegistry: \n", + "QUEUEING TASKS | : 100%|██████████| 3/3 [00:00<00:00, 284.51it/s]\n", + "PROCESSING TASKS | : 100%|██████████| 3/3 [00:00<00:00, 5.29it/s]\n", + "COLLECTING RESULTS | : 100%|██████████| 3/3 [00:00<00:00, 59074.70it/s]\n", + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/dask/_task_spec.py:758: FutureWarning: In a future version, xarray will not decode timedelta values based on the presence of a timedelta-like units attribute by default. Instead it will rely on the presence of a timedelta64 dtype attribute, which is now xarray's default way of encoding timedelta64 values. To continue decoding timedeltas based on the presence of a timedelta-like units attribute, users will need to explicitly opt-in by passing True or CFTimedeltaCoder(decode_via_units=True) to decode_timedelta. To silence this warning, set decode_timedelta to True, False, or a 'CFTimedeltaCoder' instance.\n", + " return self.func(*new_argspec, **kwargs)\n", + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/dask/_task_spec.py:758: FutureWarning: In a future version, xarray will not decode timedelta values based on the presence of a timedelta-like units attribute by default. Instead it will rely on the presence of a timedelta64 dtype attribute, which is now xarray's default way of encoding timedelta64 values. To continue decoding timedeltas based on the presence of a timedelta-like units attribute, users will need to explicitly opt-in by passing True or CFTimedeltaCoder(decode_via_units=True) to decode_timedelta. To silence this warning, set decode_timedelta to True, False, or a 'CFTimedeltaCoder' instance.\n", + " return self.func(*new_argspec, **kwargs)\n", + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/dask/_task_spec.py:758: FutureWarning: In a future version, xarray will not decode timedelta values based on the presence of a timedelta-like units attribute by default. Instead it will rely on the presence of a timedelta64 dtype attribute, which is now xarray's default way of encoding timedelta64 values. To continue decoding timedeltas based on the presence of a timedelta-like units attribute, users will need to explicitly opt-in by passing True or CFTimedeltaCoder(decode_via_units=True) to decode_timedelta. To silence this warning, set decode_timedelta to True, False, or a 'CFTimedeltaCoder' instance.\n", + " return self.func(*new_argspec, **kwargs)\n", + "2025-08-15 23:16:12,000 - lambda_function - INFO - Test Dataset: Size: 54GB\n", + "Dimensions: (time: 3, lat: 17999, lon: 36000)\n", + "Coordinates:\n", + " * time (time) datetime64[ns] 24B 2025-08-12T09:00:00 ... 2025-...\n", + " * lat (lat) float32 72kB -89.99 -89.98 -89.97 ... 89.98 89.99\n", + " * lon (lon) float32 144kB -180.0 -180.0 -180.0 ... 180.0 180.0\n", + "Data variables:\n", + " analysed_sst (time, lat, lon) float64 16GB dask.array\n", + " analysis_error (time, lat, lon) float64 16GB dask.array\n", + " mask (time, lat, lon) float32 8GB dask.array\n", + " sea_ice_fraction (time, lat, lon) float64 16GB dask.array\n", + "Attributes: (12/47)\n", + " Conventions: CF-1.7\n", + " title: Daily MUR SST, Interim near-real-time (nrt) p...\n", + " summary: A merged, multi-sensor L4 Foundation SST anal...\n", + " references: http://podaac.jpl.nasa.gov/Multi-scale_Ultra-...\n", + " institution: Jet Propulsion Laboratory\n", + " history: near real time (nrt) version created at nomin...\n", + " ... ...\n", + " project: NASA Making Earth Science Data Records for Us...\n", + " publisher_name: GHRSST Project Office\n", + " publisher_url: http://www.ghrsst.org\n", + " publisher_email: ghrsst-po@nceo.ac.uk\n", + " processing_level: L4\n", + " cdm_data_type: grid\n", + "2025-08-15 23:16:12,001 - lambda_function - INFO - Starting Tests\n", + "2025-08-15 23:16:12,002 - lambda_function - INFO - Testing Time continuity\n", + "2025-08-15 23:16:12,014 - lambda_function - INFO - Testing Data equality\n", + "2025-08-15 23:26:11,001 - lambda_function - INFO - Tests passed.\n", + "2025-08-15 23:26:11,002 - lambda_function - INFO - Dry run, not merging add_time_2025-08-15T23:15:45.053022+00:00 into main\n" + ] + } + ], + "source": [ + "# update the store\n", + "os.environ['DRY_RUN']='true'\n", + "write_to_icechunk_or_fail(store_url, parallel=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a6428356-4380-4414-bb9c-097f391f8c08", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4ecd30c0-2ccd-48a9-a8b8-6b94853178ef", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f6d41cb3-ddbf-413b-b604-e7711d513cac", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "MURSST-VENV-NEW", + "language": "python", + "name": "mursstvenv2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/local_dev.ipynb b/notebooks/local_dev.ipynb new file mode 100644 index 0000000..b824494 --- /dev/null +++ b/notebooks/local_dev.ipynb @@ -0,0 +1,2240 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "20b242d5-c491-418a-80a6-25b4e7a0e00b", + "metadata": {}, + "outputs": [], + "source": [ + "# # Need to dive deeper to see how to add the package content in the context of uv\n", + "# # but for now:\n", + "\n", + "# import sys\n", + "# from pathlib import Path\n", + "\n", + "# # Add the directory containing your Lambda code to the path\n", + "# sys.path.append(str(Path(\"../cdk/lambda\").resolve()))" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "e59d78c2-effa-4d6f-9cef-e5bed3977f19", + "metadata": {}, + "outputs": [], + "source": [ + "# from lambda_function import " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "70b00272-57ac-43d0-8cf2-7c36956ff2ec", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + } + ], + "source": [ + "## Few example files\n", + "import earthaccess\n", + "from datetime import datetime\n", + "import xarray as xr\n", + "\n", + "collection_short_name = \"MUR-JPL-L4-GLOB-v4.1\"\n", + "drop_vars = [\"dt_1km_data\", \"sst_anomaly\"]\n", + "current_date = str(datetime.now().date()) + \" 21:00:00\"\n", + "granule_results = earthaccess.search_data(temporal=(\"2025-07-01 21:00:01\", current_date), short_name=collection_short_name)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "b06a99d6-f80a-46fe-aad3-0134f2d0c25c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Collection: {'Version': '4.1', 'ShortName': 'MUR-JPL-L4-GLOB-v4.1'}\n", + " Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'BoundingRectangles': [{'WestBoundingCoordinate': -180, 'SouthBoundingCoordinate': -90, 'EastBoundingCoordinate': 180, 'NorthBoundingCoordinate': 90}]}}}\n", + " Temporal coverage: {'RangeDateTime': {'EndingDateTime': '2025-07-02T21:00:00.000Z', 'BeginningDateTime': '2025-07-01T21:00:00.000Z'}}\n", + " Size(MB): 702.3851881027222\n", + " Data: ['https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/MUR-JPL-L4-GLOB-v4.1/20250702090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc'],\n", + " Collection: {'Version': '4.1', 'ShortName': 'MUR-JPL-L4-GLOB-v4.1'}\n", + " Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'BoundingRectangles': [{'WestBoundingCoordinate': -180, 'SouthBoundingCoordinate': -90, 'EastBoundingCoordinate': 180, 'NorthBoundingCoordinate': 90}]}}}\n", + " Temporal coverage: {'RangeDateTime': {'EndingDateTime': '2025-07-03T21:00:00.000Z', 'BeginningDateTime': '2025-07-02T21:00:00.000Z'}}\n", + " Size(MB): 701.0673351287842\n", + " Data: ['https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/MUR-JPL-L4-GLOB-v4.1/20250703090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc'],\n", + " Collection: {'Version': '4.1', 'ShortName': 'MUR-JPL-L4-GLOB-v4.1'}\n", + " Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'BoundingRectangles': [{'WestBoundingCoordinate': -180, 'SouthBoundingCoordinate': -90, 'EastBoundingCoordinate': 180, 'NorthBoundingCoordinate': 90}]}}}\n", + " Temporal coverage: {'RangeDateTime': {'EndingDateTime': '2025-07-04T21:00:00.000Z', 'BeginningDateTime': '2025-07-03T21:00:00.000Z'}}\n", + " Size(MB): 703.0982799530029\n", + " Data: ['https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/MUR-JPL-L4-GLOB-v4.1/20250704090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc'],\n", + " Collection: {'Version': '4.1', 'ShortName': 'MUR-JPL-L4-GLOB-v4.1'}\n", + " Spatial coverage: {'HorizontalSpatialDomain': {'Geometry': {'BoundingRectangles': [{'WestBoundingCoordinate': -180, 'SouthBoundingCoordinate': -90, 'EastBoundingCoordinate': 180, 'NorthBoundingCoordinate': 90}]}}}\n", + " Temporal coverage: {'RangeDateTime': {'EndingDateTime': '2025-07-05T21:00:00.000Z', 'BeginningDateTime': '2025-07-04T21:00:00.000Z'}}\n", + " Size(MB): 699.388165473938\n", + " Data: ['https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/MUR-JPL-L4-GLOB-v4.1/20250705090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc']]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "granule_results = granule_results[0:4]\n", + "granule_results" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "8768ecf0-f7fc-41a4-b6c0-0c164f51c187", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "s3://nasa-veda-scratch/jbusecke/icechunk/mursst-testing/run_id_5866677505\n", + "{'s3://podaac-ops-cumulus-protected/MUR-JPL-L4-GLOB-v4.1/': }\n" + ] + } + ], + "source": [ + "import icechunk as ic\n", + "\n", + "def initial_icechunk_write(store_url:str) -> ic.Repository:\n", + " pass\n", + "\n", + "import random\n", + "from urllib.parse import urlparse, urlunparse\n", + "import os\n", + "\n", + "def get_prefix_from_url(url:str) -> str:\n", + " parsed = urlparse(url)\n", + " path_without_file = os.path.dirname(parsed.path)\n", + " new_parsed = parsed._replace(path=path_without_file)\n", + " prefix = urlunparse(new_parsed)+'/' # we always need a trailing slash for ic (see https://github.com/earth-mover/icechunk/issues/1100)\n", + " return prefix\n", + " \n", + "\n", + "def dummy_github_run_id():\n", + " # GitHub run IDs are currently around 10 digits (e.g., 6768204927)\n", + " # This generates a dummy 10-digit integer in a similar range\n", + " return str(random.randint(10**9, 10**10 - 1))\n", + "\n", + "from icechunk import S3StaticCredentials\n", + "\n", + "def get_icechunk_creds(daac: str = None) -> S3StaticCredentials:\n", + " if daac is None:\n", + " daac = \"PODAAC\" # TODO: Might want to change this for a more general version\n", + " # https://github.com/nsidc/earthaccess/discussions/1051 could help here.\n", + " # assumes that username and password are available in the environment\n", + " # TODO: accomodate rc file?\n", + " auth = earthaccess.login(strategy=\"environment\")\n", + " if not auth.authenticated:\n", + " raise PermissionError(\"Could not authenticate using environment variables\")\n", + " creds = auth.get_s3_credentials(daac=daac)\n", + " return S3StaticCredentials(\n", + " access_key_id=creds[\"accessKeyId\"],\n", + " secret_access_key=creds[\"secretAccessKey\"],\n", + " expires_after=datetime.fromisoformat(creds[\"expiration\"]),\n", + " session_token=creds[\"sessionToken\"],\n", + " )\n", + "\n", + "\n", + "store_bucket_url = f\"s3://nasa-veda-scratch/jbusecke/icechunk/mursst-testing/run_id_{dummy_github_run_id()}\"\n", + "store_bucket_url_parsed = urlparse(store_bucket_url)\n", + "\n", + "storage = ic.s3_storage(\n", + " bucket = store_bucket_url_parsed.netloc,\n", + " prefix = store_bucket_url_parsed.path,\n", + " from_env=True,\n", + ")\n", + "\n", + "direct_access_urls = [g.data_links(access='direct')[0] for g in granule_results]\n", + "target_url = direct_access_urls[0]\n", + "\n", + "config = ic.RepositoryConfig.default()\n", + "config.set_virtual_chunk_container(\n", + " ic.VirtualChunkContainer(\n", + " get_prefix_from_url(target_url),\n", + " ic.s3_store(region='us-west-2')\n", + " )\n", + ")\n", + "\n", + "virtual_credentials = ic.containers_credentials(\n", + " {\n", + " get_prefix_from_url(target_url): ic.s3_refreshable_credentials(\n", + " get_credentials=get_icechunk_creds\n", + " )\n", + " }\n", + ")\n", + " \n", + "repo = ic.Repository.create(\n", + " storage=storage,\n", + " config=config,\n", + " authorize_virtual_chunk_access=virtual_credentials,\n", + ")\n", + "print(store_bucket_url)\n", + "print(repo.config.virtual_chunk_containers)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "3aa3349c-abc7-437a-b737-8a932c59961c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'s3://podaac-ops-cumulus-protected/MUR-JPL-L4-GLOB-v4.1/20250702090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc'" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "target_url" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "09af5ac2-5987-4a1f-9696-7686eafcdf78", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "VZ version:2.0.0\n", + "podaac-ops-cumulus-protected\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/virtualizarr/xarray.py:341: FutureWarning: In a future version, xarray will not decode timedelta values based on the presence of a timedelta-like units attribute by default. Instead it will rely on the presence of a timedelta64 dtype attribute, which is now xarray's default way of encoding timedelta64 values. To continue decoding timedeltas based on the presence of a timedelta-like units attribute, users will need to explicitly opt-in by passing True or CFTimedeltaCoder(decode_via_units=True) to decode_timedelta. To silence this warning, set decode_timedelta to True, False, or a 'CFTimedeltaCoder' instance.\n", + " with xr.open_zarr(\n", + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n", + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/virtualizarr/xarray.py:341: FutureWarning: In a future version, xarray will not decode timedelta values based on the presence of a timedelta-like units attribute by default. Instead it will rely on the presence of a timedelta64 dtype attribute, which is now xarray's default way of encoding timedelta64 values. To continue decoding timedeltas based on the presence of a timedelta-like units attribute, users will need to explicitly opt-in by passing True or CFTimedeltaCoder(decode_via_units=True) to decode_timedelta. To silence this warning, set decode_timedelta to True, False, or a 'CFTimedeltaCoder' instance.\n", + " with xr.open_zarr(\n", + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n", + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/virtualizarr/xarray.py:341: FutureWarning: In a future version, xarray will not decode timedelta values based on the presence of a timedelta-like units attribute by default. Instead it will rely on the presence of a timedelta64 dtype attribute, which is now xarray's default way of encoding timedelta64 values. To continue decoding timedeltas based on the presence of a timedelta-like units attribute, users will need to explicitly opt-in by passing True or CFTimedeltaCoder(decode_via_units=True) to decode_timedelta. To silence this warning, set decode_timedelta to True, False, or a 'CFTimedeltaCoder' instance.\n", + " with xr.open_zarr(\n", + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n", + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/virtualizarr/xarray.py:341: FutureWarning: In a future version, xarray will not decode timedelta values based on the presence of a timedelta-like units attribute by default. Instead it will rely on the presence of a timedelta64 dtype attribute, which is now xarray's default way of encoding timedelta64 values. To continue decoding timedeltas based on the presence of a timedelta-like units attribute, users will need to explicitly opt-in by passing True or CFTimedeltaCoder(decode_via_units=True) to decode_timedelta. To silence this warning, set decode_timedelta to True, False, or a 'CFTimedeltaCoder' instance.\n", + " with xr.open_zarr(\n", + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset> Size: 16GB\n",
+       "Dimensions:           (time: 4, lat: 17999, lon: 36000)\n",
+       "Coordinates:\n",
+       "  * time              (time) datetime64[ns] 32B 2025-07-02T09:00:00 ... 2025-...\n",
+       "    lat               (lat) float32 72kB ManifestArray<shape=(17999,), dtype=...\n",
+       "    lon               (lon) float32 144kB ManifestArray<shape=(36000,), dtype...\n",
+       "Data variables:\n",
+       "    analysed_sst      (time, lat, lon) int16 5GB ManifestArray<shape=(4, 1799...\n",
+       "    analysis_error    (time, lat, lon) int16 5GB ManifestArray<shape=(4, 1799...\n",
+       "    mask              (time, lat, lon) int8 3GB ManifestArray<shape=(4, 17999...\n",
+       "    sea_ice_fraction  (time, lat, lon) int8 3GB ManifestArray<shape=(4, 17999...\n",
+       "Attributes: (12/47)\n",
+       "    Conventions:                CF-1.7\n",
+       "    title:                      Daily MUR SST, Final product\n",
+       "    summary:                    A merged, multi-sensor L4 Foundation SST anal...\n",
+       "    references:                 http://podaac.jpl.nasa.gov/Multi-scale_Ultra-...\n",
+       "    institution:                Jet Propulsion Laboratory\n",
+       "    history:                    created at nominal 4-day latency; replaced nr...\n",
+       "    ...                         ...\n",
+       "    project:                    NASA Making Earth Science Data Records for Us...\n",
+       "    publisher_name:             GHRSST Project Office\n",
+       "    publisher_url:              http://www.ghrsst.org\n",
+       "    publisher_email:            ghrsst-po@nceo.ac.uk\n",
+       "    processing_level:           L4\n",
+       "    cdm_data_type:              grid
" + ], + "text/plain": [ + " Size: 16GB\n", + "Dimensions: (time: 4, lat: 17999, lon: 36000)\n", + "Coordinates:\n", + " * time (time) datetime64[ns] 32B 2025-07-02T09:00:00 ... 2025-...\n", + " lat (lat) float32 72kB ManifestArray S3Credential:# does not work properly in a notebook\n", + "def get_obstore_credentials(): # quick and dirty fix\n", + " auth = earthaccess.login()\n", + " creds = auth.get_s3_credentials(daac = \"PODAAC\")\n", + " return {\n", + " \"access_key_id\": creds['accessKeyId'],\n", + " \"secret_access_key\": creds['secretAccessKey'],\n", + " \"token\": creds['sessionToken'],\n", + " \"expires_at\": datetime.fromisoformat(creds['expiration']),\n", + " }\n", + "\n", + "# from obstore.auth.earthdata import NasaEarthdataCredentialProvider\n", + "# cp = NasaEarthdataCredentialProvider(credentials_url)\n", + "\n", + "def store_and_registry_from_url(url:str) -> Tuple[S3Store, ObjectStoreRegistry]:\n", + " parsed = urlparse(url)\n", + " parsed_wo_path = parsed._replace(path=\"\")\n", + " bucket = parsed.netloc\n", + " print(bucket)\n", + " cp = get_obstore_credentials\n", + " store = S3Store(\n", + " bucket=bucket,\n", + " region=\"us-west-2\",\n", + " credential_provider=cp\n", + " )\n", + " registry = ObjectStoreRegistry({parsed_wo_path.geturl():store})\n", + " return store, registry\n", + " \n", + "store, registry = store_and_registry_from_url(target_url)\n", + "parser = HDFParser()\n", + "\n", + "def preprocess(ds:xr.Dataset) -> xr.Dataset:\n", + " return ds.drop_vars(drop_vars, errors=\"ignore\")\n", + "\n", + "vds = open_virtual_mfdataset(\n", + " direct_access_urls,\n", + " registry=registry,\n", + " parser=parser,\n", + " # decode_timedelta=True,\n", + " preprocess=preprocess,\n", + " # parallel=\"lithops\" #TODO: Investigate why this fails? Is that an issue with uv?\n", + " concat_dim=\"time\",\n", + " combine=\"nested\",\n", + " data_vars=\"minimal\",\n", + " coords=\"minimal\",\n", + " compat=\"override\",\n", + " join=\"exact\",\n", + " loadable_variables=['time'],\n", + ")\n", + "vds" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "a081046f-eb9c-4aa2-8b19-9e8ccfa600fd", + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "Invalid indexer for array. Indexer length must be less than or equal to the number of dimensions in the array, but indexer=(slice(0, 3, None), slice(None, None, None), slice(None, None, None), Ellipsis) has length 4 and array has 3 dimensions.\nIf concatenating using xarray, ensure all non-coordinate data variables to be concatenated include the concatenation dimension, or consider passing `data_vars='minimal'` and `coords='minimal'` to the xarray combining function.", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mValueError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[16]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[43mvds\u001b[49m\u001b[43m.\u001b[49m\u001b[43misel\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtime\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mslice\u001b[39;49m\u001b[43m(\u001b[49m\u001b[32;43m0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[32;43m3\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/xarray/core/dataset.py:2777\u001b[39m, in \u001b[36mDataset.isel\u001b[39m\u001b[34m(self, indexers, drop, missing_dims, **indexers_kwargs)\u001b[39m\n\u001b[32m 2775\u001b[39m var_indexers = {k: v \u001b[38;5;28;01mfor\u001b[39;00m k, v \u001b[38;5;129;01min\u001b[39;00m indexers.items() \u001b[38;5;28;01mif\u001b[39;00m k \u001b[38;5;129;01min\u001b[39;00m var.dims}\n\u001b[32m 2776\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m var_indexers:\n\u001b[32m-> \u001b[39m\u001b[32m2777\u001b[39m var = \u001b[43mvar\u001b[49m\u001b[43m.\u001b[49m\u001b[43misel\u001b[49m\u001b[43m(\u001b[49m\u001b[43mvar_indexers\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 2778\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m drop \u001b[38;5;129;01mand\u001b[39;00m var.ndim == \u001b[32m0\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m name \u001b[38;5;129;01min\u001b[39;00m coord_names:\n\u001b[32m 2779\u001b[39m coord_names.remove(name)\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/xarray/core/variable.py:1031\u001b[39m, in \u001b[36mVariable.isel\u001b[39m\u001b[34m(self, indexers, missing_dims, **indexers_kwargs)\u001b[39m\n\u001b[32m 1028\u001b[39m indexers = drop_dims_from_indexers(indexers, \u001b[38;5;28mself\u001b[39m.dims, missing_dims)\n\u001b[32m 1030\u001b[39m key = \u001b[38;5;28mtuple\u001b[39m(indexers.get(dim, \u001b[38;5;28mslice\u001b[39m(\u001b[38;5;28;01mNone\u001b[39;00m)) \u001b[38;5;28;01mfor\u001b[39;00m dim \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m.dims)\n\u001b[32m-> \u001b[39m\u001b[32m1031\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m[\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m]\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/xarray/core/variable.py:777\u001b[39m, in \u001b[36mVariable.__getitem__\u001b[39m\u001b[34m(self, key)\u001b[39m\n\u001b[32m 774\u001b[39m dims, indexer, new_order = \u001b[38;5;28mself\u001b[39m._broadcast_indexes(key)\n\u001b[32m 775\u001b[39m indexable = as_indexable(\u001b[38;5;28mself\u001b[39m._data)\n\u001b[32m--> \u001b[39m\u001b[32m777\u001b[39m data = \u001b[43mindexing\u001b[49m\u001b[43m.\u001b[49m\u001b[43mapply_indexer\u001b[49m\u001b[43m(\u001b[49m\u001b[43mindexable\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mindexer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 779\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m new_order:\n\u001b[32m 780\u001b[39m data = duck_array_ops.moveaxis(data, \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;28mlen\u001b[39m(new_order)), new_order)\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/xarray/core/indexing.py:1037\u001b[39m, in \u001b[36mapply_indexer\u001b[39m\u001b[34m(indexable, indexer)\u001b[39m\n\u001b[32m 1035\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m indexable.oindex[indexer]\n\u001b[32m 1036\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m-> \u001b[39m\u001b[32m1037\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mindexable\u001b[49m\u001b[43m[\u001b[49m\u001b[43mindexer\u001b[49m\u001b[43m]\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/xarray/core/indexing.py:1563\u001b[39m, in \u001b[36mNumpyIndexingAdapter.__getitem__\u001b[39m\u001b[34m(self, indexer)\u001b[39m\n\u001b[32m 1559\u001b[39m \u001b[38;5;66;03m# We want 0d slices rather than scalars. This is achieved by\u001b[39;00m\n\u001b[32m 1560\u001b[39m \u001b[38;5;66;03m# appending an ellipsis (see\u001b[39;00m\n\u001b[32m 1561\u001b[39m \u001b[38;5;66;03m# https://numpy.org/doc/stable/reference/arrays.indexing.html#detailed-notes).\u001b[39;00m\n\u001b[32m 1562\u001b[39m key = indexer.tuple + (\u001b[38;5;28mEllipsis\u001b[39m,)\n\u001b[32m-> \u001b[39m\u001b[32m1563\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43marray\u001b[49m\u001b[43m[\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m]\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/virtualizarr/manifests/array.py:265\u001b[39m, in \u001b[36mManifestArray.__getitem__\u001b[39m\u001b[34m(self, key)\u001b[39m\n\u001b[32m 260\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\n\u001b[32m 261\u001b[39m \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mindexer must be of type int, slice, ellipsis, None, or np.ndarray; or a tuple of such types. Got \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mkey\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m\n\u001b[32m 262\u001b[39m )\n\u001b[32m 264\u001b[39m \u001b[38;5;66;03m# check value is valid\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m265\u001b[39m indexer = \u001b[43m_possibly_expand_trailing_ellipsis\u001b[49m\u001b[43m(\u001b[49m\u001b[43mindexer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mndim\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 266\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(indexer) != \u001b[38;5;28mself\u001b[39m.ndim \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m.ndim > \u001b[32m0\u001b[39m:\n\u001b[32m 267\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[32m 268\u001b[39m \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mInvalid indexer for array. Indexer length must be less than or equal to the number of dimensions in the array, \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 269\u001b[39m \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mbut indexer=\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mindexer\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m has length \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mlen\u001b[39m(indexer)\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m and array has \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m.ndim\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m dimensions.\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 270\u001b[39m \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[33mIf concatenating using xarray, ensure all non-coordinate data variables to be concatenated include the concatenation dimension, \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 271\u001b[39m \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mor consider passing `data_vars=\u001b[39m\u001b[33m'\u001b[39m\u001b[33mminimal\u001b[39m\u001b[33m'\u001b[39m\u001b[33m` and `coords=\u001b[39m\u001b[33m'\u001b[39m\u001b[33mminimal\u001b[39m\u001b[33m'\u001b[39m\u001b[33m` to the xarray combining function.\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 272\u001b[39m )\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/virtualizarr/manifests/array.py:370\u001b[39m, in \u001b[36m_possibly_expand_trailing_ellipsis\u001b[39m\u001b[34m(indexer, ndim)\u001b[39m\n\u001b[32m 368\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m final_dim_indexer == ...:\n\u001b[32m 369\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(indexer) > ndim \u001b[38;5;129;01mand\u001b[39;00m ndim > \u001b[32m0\u001b[39m:\n\u001b[32m--> \u001b[39m\u001b[32m370\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[32m 371\u001b[39m \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mInvalid indexer for array. Indexer length must be less than or equal to the number of dimensions in the array, \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 372\u001b[39m \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mbut indexer=\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mindexer\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m has length \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mlen\u001b[39m(indexer)\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m and array has \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mndim\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m dimensions.\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 373\u001b[39m \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[33mIf concatenating using xarray, ensure all non-coordinate data variables to be concatenated include the concatenation dimension, \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 374\u001b[39m \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mor consider passing `data_vars=\u001b[39m\u001b[33m'\u001b[39m\u001b[33mminimal\u001b[39m\u001b[33m'\u001b[39m\u001b[33m` and `coords=\u001b[39m\u001b[33m'\u001b[39m\u001b[33mminimal\u001b[39m\u001b[33m'\u001b[39m\u001b[33m` to the xarray combining function.\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 375\u001b[39m )\n\u001b[32m 377\u001b[39m extra_slices_needed = ndim - (\u001b[38;5;28mlen\u001b[39m(indexer) - \u001b[32m1\u001b[39m)\n\u001b[32m 378\u001b[39m *indexer_as_list, ellipsis = indexer\n", + "\u001b[31mValueError\u001b[39m: Invalid indexer for array. Indexer length must be less than or equal to the number of dimensions in the array, but indexer=(slice(0, 3, None), slice(None, None, None), slice(None, None, None), Ellipsis) has length 4 and array has 3 dimensions.\nIf concatenating using xarray, ensure all non-coordinate data variables to be concatenated include the concatenation dimension, or consider passing `data_vars='minimal'` and `coords='minimal'` to the xarray combining function." + ] + } + ], + "source": [ + "vds.isel(time=slice(0,3))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "ef08e8b6-4f29-4368-a41f-8203bfda19b6", + "metadata": {}, + "outputs": [], + "source": [ + "session = repo.writable_session('main')\n", + "vds.vz.to_icechunk(session.store)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "14a16479-d55a-4035-b14c-fa93ef4143da", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'TP90RC7BNPPM05ZM0HW0'" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "session.commit('Initial Data')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "b4a23fa1-c59d-496c-8718-b53c6ec6187f", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset> Size: 73GB\n",
+       "Dimensions:           (time: 4, lat: 17999, lon: 36000)\n",
+       "Coordinates:\n",
+       "  * lat               (lat) float32 72kB -89.99 -89.98 -89.97 ... 89.98 89.99\n",
+       "  * lon               (lon) float32 144kB -180.0 -180.0 -180.0 ... 180.0 180.0\n",
+       "  * time              (time) datetime64[ns] 32B 2025-07-02T09:00:00 ... 2025-...\n",
+       "Data variables:\n",
+       "    analysed_sst      (time, lat, lon) float64 21GB dask.array<chunksize=(1, 1023, 2047), meta=np.ndarray>\n",
+       "    analysis_error    (time, lat, lon) float64 21GB dask.array<chunksize=(1, 1023, 2047), meta=np.ndarray>\n",
+       "    mask              (time, lat, lon) float32 10GB dask.array<chunksize=(1, 1023, 2047), meta=np.ndarray>\n",
+       "    sea_ice_fraction  (time, lat, lon) float64 21GB dask.array<chunksize=(1, 1023, 2047), meta=np.ndarray>\n",
+       "Attributes: (12/47)\n",
+       "    Conventions:                CF-1.7\n",
+       "    title:                      Daily MUR SST, Final product\n",
+       "    summary:                    A merged, multi-sensor L4 Foundation SST anal...\n",
+       "    references:                 http://podaac.jpl.nasa.gov/Multi-scale_Ultra-...\n",
+       "    institution:                Jet Propulsion Laboratory\n",
+       "    history:                    created at nominal 4-day latency; replaced nr...\n",
+       "    ...                         ...\n",
+       "    project:                    NASA Making Earth Science Data Records for Us...\n",
+       "    publisher_name:             GHRSST Project Office\n",
+       "    publisher_url:              http://www.ghrsst.org\n",
+       "    publisher_email:            ghrsst-po@nceo.ac.uk\n",
+       "    processing_level:           L4\n",
+       "    cdm_data_type:              grid
" + ], + "text/plain": [ + " Size: 73GB\n", + "Dimensions: (time: 4, lat: 17999, lon: 36000)\n", + "Coordinates:\n", + " * lat (lat) float32 72kB -89.99 -89.98 -89.97 ... 89.98 89.99\n", + " * lon (lon) float32 144kB -180.0 -180.0 -180.0 ... 180.0 180.0\n", + " * time (time) datetime64[ns] 32B 2025-07-02T09:00:00 ... 2025-...\n", + "Data variables:\n", + " analysed_sst (time, lat, lon) float64 21GB dask.array\n", + " analysis_error (time, lat, lon) float64 21GB dask.array\n", + " mask (time, lat, lon) float32 10GB dask.array\n", + " sea_ice_fraction (time, lat, lon) float64 21GB dask.array\n", + "Attributes: (12/47)\n", + " Conventions: CF-1.7\n", + " title: Daily MUR SST, Final product\n", + " summary: A merged, multi-sensor L4 Foundation SST anal...\n", + " references: http://podaac.jpl.nasa.gov/Multi-scale_Ultra-...\n", + " institution: Jet Propulsion Laboratory\n", + " history: created at nominal 4-day latency; replaced nr...\n", + " ... ...\n", + " project: NASA Making Earth Science Data Records for Us...\n", + " publisher_name: GHRSST Project Office\n", + " publisher_url: http://www.ghrsst.org\n", + " publisher_email: ghrsst-po@nceo.ac.uk\n", + " processing_level: L4\n", + " cdm_data_type: grid" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# reread\n", + "import xarray as xr\n", + "rsession = repo.readonly_session('main')\n", + "ds_saved = xr.open_zarr(rsession.store, zarr_format=3, consolidated=False)\n", + "ds_saved" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "0e169e04-803b-4aab-be0e-ef193a47a21b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "datetime.datetime(2025, 7, 5, 9, 0)" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dt = ds_saved.time.data[3]\n", + "py_dt = dt.astype('datetime64[ms]').astype(datetime)\n", + "py_dt" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "a955a503-34f4-4e74-b4e5-f367aa83de8d", + "metadata": {}, + "outputs": [], + "source": [ + "from datetime import datetime, timedelta" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "093c5223-a253-4524-a66b-d5989e4e3594", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "datetime.datetime(2025, 7, 5, 9, 0, 1)" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "py_dt + timedelta(seconds=1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8faa33ae-e2cd-409f-b183-c1bdad756808", + "metadata": {}, + "outputs": [], + "source": [ + "dt = ds_saved.time[3].data.flatten()[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "f406c2b8-897a-4183-8464-0247193a8821", + "metadata": {}, + "outputs": [], + "source": [ + "a = [0,2,3]" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "7db2f0c4-42f9-43f4-ad1f-e374f76396f3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0]" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a[:1]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "a5410b93-eca7-46b3-9de6-e5ee5a24730d", + "metadata": {}, + "outputs": [], + "source": [ + "# is this info available on a reloaded copy?" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "10b54641-2a0f-4958-926d-c78de084418f", + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (1721281668.py, line 2)", + "output_type": "error", + "traceback": [ + " \u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[13]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[31m \u001b[39m\u001b[31mDoes not seem to be necessary!\u001b[39m\n ^\n\u001b[31mSyntaxError\u001b[39m\u001b[31m:\u001b[39m invalid syntax\n" + ] + } + ], + "source": [ + "## Exploring persisting the config (later)\n", + "Does not seem to be necessary!" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "cbcd13d5-20a9-4035-a4bc-e4d4513090e7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['nasa-eodc-public/icechunk/MUR-JPL-L4-GLOB-v4.1-virtual-v1',\n", + " 'nasa-eodc-public/icechunk/MUR-JPL-L4-GLOB-v4.1-virtual-v1-p2']" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import fsspec\n", + "fs = fsspec.filesystem('s3')\n", + "fs.ls(\"s3://nasa-eodc-public/icechunk/\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "333a6bc2-7aac-47b1-8cec-c6f82783e5d9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Defining icechunk storage for s3\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset> Size: 4TB\n",
+       "Dimensions:           (time: 212, lat: 17999, lon: 36000)\n",
+       "Coordinates:\n",
+       "  * lon               (lon) float32 144kB -180.0 -180.0 -180.0 ... 180.0 180.0\n",
+       "  * lat               (lat) float32 72kB -89.99 -89.98 -89.97 ... 89.98 89.99\n",
+       "  * time              (time) datetime64[ns] 2kB 2025-01-01T09:00:00 ... 2025-...\n",
+       "Data variables:\n",
+       "    analysed_sst      (time, lat, lon) float64 1TB dask.array<chunksize=(1, 1023, 2047), meta=np.ndarray>\n",
+       "    analysis_error    (time, lat, lon) float64 1TB dask.array<chunksize=(1, 1023, 2047), meta=np.ndarray>\n",
+       "    mask              (time, lat, lon) float32 549GB dask.array<chunksize=(1, 1023, 2047), meta=np.ndarray>\n",
+       "    sea_ice_fraction  (time, lat, lon) float64 1TB dask.array<chunksize=(1, 1023, 2047), meta=np.ndarray>\n",
+       "Attributes: (12/47)\n",
+       "    Conventions:                CF-1.7\n",
+       "    title:                      Daily MUR SST, Final product\n",
+       "    summary:                    A merged, multi-sensor L4 Foundation SST anal...\n",
+       "    references:                 http://podaac.jpl.nasa.gov/Multi-scale_Ultra-...\n",
+       "    institution:                Jet Propulsion Laboratory\n",
+       "    history:                    created at nominal 4-day latency; replaced nr...\n",
+       "    ...                         ...\n",
+       "    project:                    NASA Making Earth Science Data Records for Us...\n",
+       "    publisher_name:             GHRSST Project Office\n",
+       "    publisher_url:              http://www.ghrsst.org\n",
+       "    publisher_email:            ghrsst-po@nceo.ac.uk\n",
+       "    processing_level:           L4\n",
+       "    cdm_data_type:              grid
" + ], + "text/plain": [ + " Size: 4TB\n", + "Dimensions: (time: 212, lat: 17999, lon: 36000)\n", + "Coordinates:\n", + " * lon (lon) float32 144kB -180.0 -180.0 -180.0 ... 180.0 180.0\n", + " * lat (lat) float32 72kB -89.99 -89.98 -89.97 ... 89.98 89.99\n", + " * time (time) datetime64[ns] 2kB 2025-01-01T09:00:00 ... 2025-...\n", + "Data variables:\n", + " analysed_sst (time, lat, lon) float64 1TB dask.array\n", + " analysis_error (time, lat, lon) float64 1TB dask.array\n", + " mask (time, lat, lon) float32 549GB dask.array\n", + " sea_ice_fraction (time, lat, lon) float64 1TB dask.array\n", + "Attributes: (12/47)\n", + " Conventions: CF-1.7\n", + " title: Daily MUR SST, Final product\n", + " summary: A merged, multi-sensor L4 Foundation SST anal...\n", + " references: http://podaac.jpl.nasa.gov/Multi-scale_Ultra-...\n", + " institution: Jet Propulsion Laboratory\n", + " history: created at nominal 4-day latency; replaced nr...\n", + " ... ...\n", + " project: NASA Making Earth Science Data Records for Us...\n", + " publisher_name: GHRSST Project Office\n", + " publisher_url: http://www.ghrsst.org\n", + " publisher_email: ghrsst-po@nceo.ac.uk\n", + " processing_level: L4\n", + " cdm_data_type: grid" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## Check out the starting date for the second store:\n", + "from lambda_function import (\n", + " open_icechunk_repo, \n", + " get_icechunk_storage, \n", + " open_xr_dataset_from_branch,\n", + " get_prefix_from_url, \n", + " example_target_url,\n", + " get_container_credentials,\n", + ")\n", + "import icechunk\n", + "\n", + "# url = \"s3://nasa-eodc-public/icechunk/MUR-JPL-L4-GLOB-v4.1-virtual-v1\"\n", + "# url = \"s3://nasa-veda-scratch/jbusecke/icechunk/mursst-testing/MUR-JPL-L4-GLOB-v4.1-virtual-v2-p2\"\n", + "url = \"s3://nasa-veda-scratch/jbusecke/icechunk/mursst-testing/MUR_test_9\"\n", + "# storage = get_icechunk_storage(\"s3://nasa-eodc-public/icechunk/MUR-JPL-L4-GLOB-v4.1-virtual-v1-p2\")\n", + "storage = get_icechunk_storage(url)\n", + "\n", + "# repo = open_icechunk_repo(storage)\n", + "config = icechunk.RepositoryConfig.default()\n", + "config.set_virtual_chunk_container(\n", + " icechunk.VirtualChunkContainer(\n", + " get_prefix_from_url(\n", + " example_target_url\n", + " ), # TODO: Again I dont like this example url here...\n", + " icechunk.s3_store(region=\"us-west-2\"),\n", + " )\n", + ")\n", + "repo = icechunk.Repository.open(\n", + " storage=storage,\n", + " config=config,\n", + " authorize_virtual_chunk_access=get_container_credentials(example_target_url),\n", + ")\n", + "session = repo.readonly_session('main')\n", + "import xarray as xr\n", + "ds = xr.open_zarr(session.store, zarr_format=3, consolidated=False)\n", + "ds" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "ff23a817-a57e-4b86-9cd4-031fc04b147e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "RepositoryConfig(inline_chunk_threshold_bytes=None, get_partial_values_concurrency=None, compression=None, caching=None, storage=None, manifest=None)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "repo.config" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f078e8c5-49fe-4b79-8af4-79f0a655278e", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "MURSST-VENV", + "language": "python", + "name": "mursstvenv" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/test_read_production.ipynb b/notebooks/test_read_production.ipynb new file mode 100644 index 0000000..ec0b2af --- /dev/null +++ b/notebooks/test_read_production.ipynb @@ -0,0 +1,804 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 10, + "id": "6d2401bb-5f08-4ba0-b4a3-c65ddcf30a34", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jovyan/mursst-icechunk-updater/.venv/lib/python3.12/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset> Size: 8TB\n",
+       "Dimensions:           (time: 436, lat: 17999, lon: 36000)\n",
+       "Coordinates:\n",
+       "  * time              (time) datetime64[ns] 3kB 2024-06-02T09:00:00 ... 2025-...\n",
+       "  * lon               (lon) float32 144kB -180.0 -180.0 -180.0 ... 180.0 180.0\n",
+       "  * lat               (lat) float32 72kB -89.99 -89.98 -89.97 ... 89.98 89.99\n",
+       "Data variables:\n",
+       "    mask              (time, lat, lon) float32 1TB dask.array<chunksize=(1, 1023, 2047), meta=np.ndarray>\n",
+       "    sea_ice_fraction  (time, lat, lon) float64 2TB dask.array<chunksize=(1, 1023, 2047), meta=np.ndarray>\n",
+       "    analysis_error    (time, lat, lon) float64 2TB dask.array<chunksize=(1, 1023, 2047), meta=np.ndarray>\n",
+       "    analysed_sst      (time, lat, lon) float64 2TB dask.array<chunksize=(1, 1023, 2047), meta=np.ndarray>\n",
+       "Attributes: (12/47)\n",
+       "    Conventions:                CF-1.7\n",
+       "    title:                      Daily MUR SST, Final product\n",
+       "    summary:                    A merged, multi-sensor L4 Foundation SST anal...\n",
+       "    references:                 http://podaac.jpl.nasa.gov/Multi-scale_Ultra-...\n",
+       "    institution:                Jet Propulsion Laboratory\n",
+       "    history:                    created at nominal 4-day latency; replaced nr...\n",
+       "    ...                         ...\n",
+       "    project:                    NASA Making Earth Science Data Records for Us...\n",
+       "    publisher_name:             GHRSST Project Office\n",
+       "    publisher_url:              http://www.ghrsst.org\n",
+       "    publisher_email:            ghrsst-po@nceo.ac.uk\n",
+       "    processing_level:           L4\n",
+       "    cdm_data_type:              grid
" + ], + "text/plain": [ + " Size: 8TB\n", + "Dimensions: (time: 436, lat: 17999, lon: 36000)\n", + "Coordinates:\n", + " * time (time) datetime64[ns] 3kB 2024-06-02T09:00:00 ... 2025-...\n", + " * lon (lon) float32 144kB -180.0 -180.0 -180.0 ... 180.0 180.0\n", + " * lat (lat) float32 72kB -89.99 -89.98 -89.97 ... 89.98 89.99\n", + "Data variables:\n", + " mask (time, lat, lon) float32 1TB dask.array\n", + " sea_ice_fraction (time, lat, lon) float64 2TB dask.array\n", + " analysis_error (time, lat, lon) float64 2TB dask.array\n", + " analysed_sst (time, lat, lon) float64 2TB dask.array\n", + "Attributes: (12/47)\n", + " Conventions: CF-1.7\n", + " title: Daily MUR SST, Final product\n", + " summary: A merged, multi-sensor L4 Foundation SST anal...\n", + " references: http://podaac.jpl.nasa.gov/Multi-scale_Ultra-...\n", + " institution: Jet Propulsion Laboratory\n", + " history: created at nominal 4-day latency; replaced nr...\n", + " ... ...\n", + " project: NASA Making Earth Science Data Records for Us...\n", + " publisher_name: GHRSST Project Office\n", + " publisher_url: http://www.ghrsst.org\n", + " publisher_email: ghrsst-po@nceo.ac.uk\n", + " processing_level: L4\n", + " cdm_data_type: grid" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlAAAAHHCAYAAABwaWYjAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjUsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvWftoOwAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzsfWm0bVdV5jfX2nufc+/r0pCWEIggEiIBQYQnlkgPWnSJDWhJ0GhQQ2xAsGJH30jGEHEYQysIEtSgGWqhUkgRRIq+iKIgXUmBJCF0yct7955z9l5r1o/ZrLXPvXl5Ly8kUc4c44577zm7WXvttff61je/OScxM2NlK1vZyla2spWtbGWHbOG2bsDKVrayla1sZStb2X80WwGola1sZStb2cpWtrLDtBWAWtnKVrayla1sZSs7TFsBqJWtbGUrW9nKVrayw7QVgFrZyla2spWtbGUrO0xbAaiVrWxlK1vZyla2ssO0FYBa2cpWtrKVrWxlKztMWwGola1sZStb2cpWtrLDtBWAWtnKVrayla1sZSs7TFsBqJXdanaXu9wFT33qU2/rZqxsZStb2cpWdsS2AlAru0Xtf//v/43nPve5uO66627rptyq9qEPfQhPf/rTccYZZ2DHjh049dRT8cM//MP41Kc+te32n/jEJ/DoRz8aO3fuxDHHHIMf//Efx5e//OXRNv/6r/+KZz/72bjPfe6DXbt24aSTTsIP/MAP4MMf/vBNtucRj3gEiAhPf/rTD/kacs542ctehtNOOw3T6RRnnnkm3vKWt9zotpdccgnuc5/7YG1tDcceeywe+tCH4h//8R8P6Vzz+Ry/8iu/gpNPPhlra2t4wAMegHe84x2jbTY2NnDxxRfjkY98JE466STs2rUL3/Ed34FLLrkEKSXf7i53uQuI6CZ/3vCGN/g+f/mXf4n73ve+mE6nOPXUU/Gc5zwHwzBsaec73vEOfM/3fA/W19dx9NFH4wd/8Afxuc997pCu0frpUPv0UMbEwey6667Deeedh+OOOw47duzAQx7yEPyf//N/tt32UK9/ZStb2UGMV7ayW9AuuugiBsD/9m//tuW72WzGi8Xi1m/UrWBnn302n3jiiXzBBRfwa17zGn7BC17AJ5xwAu/YsYM/9rGPjbb9whe+wHe4wx34rne9K7/iFa/gF73oRXz00Ufzve99b57P577dM5/5TD7qqKP43HPP5Ve96lX8spe9jO9617tyjJHf8Y533Ghb/uzP/ox37NjBAPj8888/5Gv47//9vzMA/umf/ml+9atfzT/wAz/AAPgtb3nLlm3POeccbpqGf/Inf5Jf85rX8O/8zu/wOeecw//zf/7PQzrXk570JG6ahn/5l3+ZX/WqV/HevXu5aRp+z3ve49t87GMfYyLihz/84fyyl72MX/nKV/ITn/hEBsBPecpTfLvLL7+c3/SmN/nPk5/8ZAbAL3/5y0eff/azn2Vm5r/+679mIuKHPOQh/OpXv5ovuOACDiHwz/zMz4za+Fd/9VccQuDv/M7v5Fe84hX8ghe8gO9whzvwHe94R7722mtv0T491DFxY5ZS4u/+7u/mHTt28HOf+1z+vd/7Pb7nPe/Ju3bt4k996lOjbQ/1+le2spUd3FYAamW3qB0MQP1ntve+971bJrpPfepTPJlM+Md+7MdGn//sz/4sr62t8f/7f//PP3vHO97BAPhVr3qVf/bhD3+Yb7jhhtG+X/nKV/i4447jBz3oQdu2Y3Nzk+9yl7vw85///MMCUP/+7//ObduOts8583/5L/+FTznlFB6GwT//kz/5EwbAf/7nf35Ix162D3zgAwyAL7roolG773rXu/LevXv9sy9/+cv8z//8z1v2/4mf+AkGwJ/+9Ke3Pf5NjcF73vOefO9735v7vvfPfu3Xfo2JiD/xiU+Mtrvb3e42uq9XXnklhxD4Gc94xk1e5+H06aGOiRszuyeXXXaZf3bttdfyUUcdxU9+8pNv1vWvbGUrO7itANTKbjF7znOewwC2/NhEduc735nPOecc3/71r389A+D3vOc9fMEFF/Ad7nAH3rNnD5933nk8n8/561//Ov/4j/84H3XUUXzUUUfxs571LM45j86ZUuKXv/zlfM973pMnkwkff/zxfN555/HXvva1W/HKb9zue9/78n3ve9/RZ8cffzz/0A/90JZt7373u/PDHvawmzzmWWedxcccc8y23z3vec/jU089lTc2Ng4LQF188cUMgP/lX/5l9Pmll17q98jsAQ94AH/Xd30XM0v/79+//5DOYfasZz2LY4x8/fXXjz5/8YtfzAD485///EH3/8u//EsGwH/5l3+57fcHA1D/8i//wgD44osvHn3+xS9+kQHwC17wAmZm/upXv8oA+FnPetaWY5xxxhl88sknjz676qqr+BOf+MSIYT2cPj2cMfGZz3yGP/OZz4w++6Ef+iE+4YQTOKU0+vy8887j9fV1ns1mh3X9K1vZym7aVhqold1idtZZZ+HJT34yAODlL3853vSmN+FNb3oTjjvuuIPud8EFF+DTn/40nve85+Fxj3scXv3qV+M3fuM38NjHPhYpJbz4xS/G93zP9+Ciiy7Cm970ptG+T3va0/CsZz0LD3rQg/CKV7wCP/ETP4E3v/nNeNSjHoW+7w963vl8jq985SuH9HNzjJnxpS99CXe4wx38sy9+8Yu49tpr8Z3f+Z1btv+u7/oufPSjH73J415zzTWjY5p9/vOfx0tf+lL81m/9FtbW1g6rrR/96EexY8cOnH766VvaZN8DwL59+/DBD34Q97///fGrv/qr2LNnD3bu3Ilv+ZZvwZ/+6Z8e8rnufve7Y/fu3due68orrzzo/tdccw0AbNsHh3JuAFv6/+STT8Ypp5zi38/ncwDYth/X19dx1VVXeTsA4MILL8Tpp5+OL37xi6NzHUqfHu6YeNjDHoaHPexhW67rvve9L0IYv9K/67u+CxsbG67FO9TrX9nKVnbT1tzWDVjZfx4788wzcd/73hdvectb8IQnPAF3uctdDmm/E044AX/9138NIsLP/dzP4TOf+QwuuugiPO1pT8Mll1wCADjvvPNwl7vcBX/wB3+ApzzlKQCAf/iHf8BrX/tavPnNb8aP/uiP+vEe8pCH4NGPfjQuu+yy0efL9pa3vAU/8RM/cUhtZOZD2q62N7/5zfjiF7+I5z//+f7Z1VdfDQA46aSTtmx/0kkn4Wtf+xrm8zkmk8m2x3zPe96D973vffj1X//1Ld8985nPxHd8x3fgSU960mG39eqrr8YJJ5wAItrSJgC46qqrAACf/exnwcz44z/+YzRNg5e97GXYs2cPXvGKV+BJT3oSdu/ejUc/+tE3ea4bu/76XNvZYrHA7/zO7+C0007D/e9//8O6Rjt3fa7l89u5TzjhBBx11FF473vfO9rmq1/9Kj7+8Y8DEOBz4oknHvRch9KnRzom7Bjf+73fu+3+dq573eteh3z9K1vZym7aVgBqZbe5nXvuuaNJ5gEPeADe97734dxzz/XPYoz4zu/8TnzkIx/xzy677DLs2bMHj3jEI0Ys0f3udz/s3LkT73rXuw4KoB71qEdtify6pexf//Vfcf7552Pv3r0455xz/PPNzU0A2HYynE6nvs1231977bX40R/9UZx22ml49rOfPfruXe96F/7sz/4MH/jAB25We2/snHWbAGD//v0ABEi8//3vxwMe8AAAwOMe9zicdtppeOELX3iTAOpQz7WdPf3pT8fHP/5xvO1tb0PTHP7r66b6f9++fQCAEAKe9rSn4bd+67dw4YUX4id/8iexb98+PPvZz8ZisdjSzje84Q2jKD/7/lCu83DHxHZRgLfUuez6V7ayld20rQDUym5zO/XUU0f/79mzBwBwpzvdacvnX//61/3/T3/607j++utx/PHHb3vca6+99qDnPemkk7ZdiR+pXXPNNfiBH/gB7NmzB29961sRY/TvzCVkLqLaZrPZaJvaDhw4gP/6X/8rbrjhBvzDP/wDdu7c6d8Nw4Cf//mfx4//+I/fJCtTu50A6dO1tTWsra0dUpvs92mnnebgCQB27tyJxz72sfijP/ojDMMAItoSgn/MMceg67pDPteyXXTRRXjNa16DF7zgBfj+7//+g17njdlN9X997uc///n4yle+gpe97GV46UtfCgB45CMfiXPPPRevfOUrR/fgxs51OH16c/rklj7X4bp+V7ayb2ZbAaiV3eZWA4yb+rx2peWccfzxx+PNb37ztvvflPZqc3MT119//SG18WCumtquv/56POYxj8F1112H97znPTj55JNH3xtgM1dKbVdffTWOOeaYLezAYrHAWWedhX/6p3/C29/+dnz7t3/76Ps3vvGN+OQnP4lXvepVW9iJG264AZ/73Odw/PHHY319fQtgfP3rX4+nPvWpOOmkk/Cud70LzDxiA62ddh32+4QTTtjS/uOPPx593+PAgQP4+te/jtNOO230/bve9S583/d9H0466aSRVujGzlXbG97wBvzKr/wKfuZnfmZb9+WhWt3/ywD96quvdn0SAHRdh9e+9rV40YtehE996lM44YQTcPe73x0/+qM/ihAC7na3u93kuQ6lT2/OmNjuXDe2/42d66auf2UrW9nBbQWgVnaL2rLe4xtpd73rXfF3f/d3eNCDHnSzVs5/8id/cotqoGazGR772MfiU5/6FP7u7/4O97znPbdsc8c73hHHHXfctskwP/jBD+I+97nP6LOcM57ylKfgne98J/70T/8UD37wg7fs9/nPfx593+NBD3rQlu/e+MY34o1vfCMuv/xyPOEJT9jisjzjjDMAAPe5z33w2te+Fp/4xCdG7TaXoLXr5JNPxoknnrgtALrqqqswnU6xa9cuTCaTLee6973v7cd617vehX379o2E5MvnMvuLv/gL/NRP/RTOOussXHzxxVvOezhmx/7whz88AgtXXXUV/v3f/x3nnXfeln1OOOEEB4wpJVxxxRV4wAMecJMM1KH26eGOiRs713ve8x7knEdC8g984ANYX1/H3e9+95t9/Stb2cpuxG7DCMCV/Se0Sy65hAHwRz/60S3f3Vgagw996EOj7Swdwpe//OXR5+eccw7v2LHD/7/iiisYAF944YVbztX3PX/9618/aFuvuuoqfsc73nFIPzdlwzDw4x73OG6aht/2trcddNuf+Zmf4bW1tVG4/t/93d8xAL7kkktG2/7cz/3cTeYC+sQnPsGXX375lh8A/P3f//18+eWX81VXXXXQNn3hC1+40ZxFd7zjHUc5i37hF36BAYySZn75y1/m3bt38/d///cf9DzMzO9///u35IGazWZ8t7vdjR/wgAeMtn33u9/N0+mUH/KQh3go/k3ZTeWBusc97sH3vve9R9f067/+60xE/PGPf/ygx37pS1/KAPitb33r6PPt0hgcTp8ezpjYLo3BH//xH2/JA/XlL3+ZjzrqKP6RH/mRW+z6V7aylRVbAaiV3aL2wQ9+0CfuN77xjfyWt7zF8wTd0gCKmflpT3saA+DHPOYx/PKXv5x/7/d+j3/hF36BTz755NFk8o02AxWPfexjR9mv7ae2z3/+83zsscfyXe96V/7d3/1dfvGLX8xHH3003+te9xqBhJe//OUMgPfu3bvtMW8q/xIOMxP5s571LAbA5513Hr/mNa/xrNlvfvObR9tdc801fNJJJ/GuXbv4Oc95Dv/2b/823/3ud+e1tTW+8sorD+lcP/RDP8RN0/CznvUsftWrXsXf/d3fzU3T8Lvf/W7f5nOf+xzv2bOH19bW+OKLL95y/f/4j/+47bFvCkD91V/9FRMRP/ShD+VXv/rV/PM///McQuCf/umfHm33pje9iZ/whCfwb//2b/OrX/1q/uEf/mEGwD/1Uz+15ZjnnHPOtuc81D491DHBLM/Rne9859FnwzDwAx/4QN65cyc/73nP44svvpjPOOMM3rVrF//rv/7rzbr+la1sZQe3FYBa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0O/HvhR3hX0A+NmxO2M4HPbAZx+Kvguvjz766KOPPvroYwejB1B99NFHH3300UcfOxg9gLoLx2AwwOte9zoMBoO9vSk7HXeFfQDuGvtxV9gHoN+PfSnuCvsA3HX2o48di55E3kcfffTRRx999LGD0Weg+uijjz766KOPPnYwegDVRx999NFHH330sYPRA6g++uijjz766KOPHYweQPXRRx999NFHH33sYPQA6k4aV1xxBZRSS/5885vfBACcc845S74/PT297LqX+sxHP/rRvbYfGzZsWPL9b3zjG8uu++c//zn+5//8n5iamsIBBxyAV7ziFXDOLfuZ3bUPV1xxBU466SQcfPDBmJ6exgMe8ABcdtll21z3vnYuAODf//3f8fu///sYDoc49NBD8Za3vGWb695T50LiM5/5DI477jiMRiOsWbMGJ598cnrv0ksv3ep+3nLLLVtd5/r16xctf8EFF+y2fdjWfgA7d33cdtttePrTn46VK1di9erVeNaznoXZ2dnduBfL78f3v/99nHLKKTj00EMxGo1w9NFH4x3veMc217mnz8e2zsXOXON741z0sQuD+rhTRlVVdNNNN3V+nv3sZ9Phhx9OIQQiItqyZcuiZe53v/vRaaedtuy6AdAll1zS+dz8/Pxe248bbriBANCXvvSlznJ1XW91vc45+q3f+i06/vjj6bvf/S599rOfpf3335/OPvvsvbIP5513Hr361a+mK6+8kn7605/S29/+dtJa0z/90z8tu+597Vxs2rSJDjzwQHr6059O11xzDf3t3/4tjUYjeu9737vV9e7Jc0FE9Hd/93e0Zs0aeve7303XXXcd/fCHP6SPfexj6f3xeLxoP0844QR65CMfuex6DzvsMDr33HM7n5udnd0t+7A9+0G0c9fHH/zBH9AxxxxD3/jGN+jf/u3f6Mgjj6RTTjllr+3HBz/4QTrjjDPoiiuuoOuvv57++q//mkajEb3zne9cdr178nxsax929hrf0+eij10bPYC6i0Rd17Ru3To699xzt7rM9773PQJAX/3qV5ddFwD61Kc+tYu3cPtiqf0QAPXd7353u9fz2c9+lrTWdPPNN6fX3v3ud9PKlSupqqpducmLYnvOBRHRE57wBHrmM5+57DL72rl417veRWvWrOkcw7POOouOOuqora5nT56Lpmnonve8J33gAx/Y7s/ccsstVBQFffjDH152ucMOO4wuvvjiO7iF2xfbux87en386Ec/IgD0zW9+M732uc99jpRS9J//+Z87u7lbjZ05H0REz3/+8+nRj370ssvsqfOxPfuwM9f4nj4Xfez66Et4d5H49Kc/jVtvvRXPfOYzt7rMBz7wAdznPvfB7//+729zfS94wQuw//7748EPfjD+6q/+CrSH5MKW248nPvGJOOCAA/Dwhz8cn/70p5ddz1VXXYX73//+OPDAA9NrJ5xwAjZv3owf/vCHu3y789iecwGwAenatWu3ub596VxcddVVeMQjHoGyLNNrJ5xwAq677jps3LhxyfXsyXPxne98B//5n/8JrTWOPfZYHHzwwXj84x+Pa665Zquf+fCHP4ypqSk85SlP2eb6L7jgAuy333449thj8da3vnW3lSF3ZD925Pq46qqrsHr1ajzoQQ9Krx1//PHQWuPqq6/eq/uRx/beG3vifGzPPuzMNb6nz0Ufuz56M+G7SHzwgx/ECSecsFUT5MlkgssuuwyvetWrtrmuc889F//jf/wPTE1N4V/+5V/w/Oc/H7OzszjjjDN29WYviqX2Y2ZmBhdeeCEe9rCHQWuNv//7v8fJJ5+Mf/iHf8ATn/jEJddz8803dwYzAOnvm2++efftALZ9LgDg4x//OL75zW/ive9977Lr2tfOxc0334zDDz+8s1x+XNesWbNoPXvyXPzsZz8DwPy/iy66COvXr8eFF16IRz3qUfjxj3+85EP5gx/8IP74j/8Yo9Fo2XWfccYZeOADH4i1a9fi61//Os4++2zcdNNNuOiii3bpPuzIfuzo9XHzzTfjgAMO6LxmrcXatWt3y32xM+fj61//Oj72sY/hM5/5zLLr3lPnY3v2YWeu8T19LvrYDbGXM2B9LIizzjqLACz7c+2113Y+84tf/IK01vR3f/d3W13vRz7yEbLWdlLM2xuvec1r6JBDDtkn9kPiGc94Bj384Q/f6vvPec5z6HGPe1zntbm5OQJAn/3sZ/fqPlx++eU0NTVFH/rQh7ZrO/LY2+fisY99LD33uc/tvPbDH/6QANCPfvSjJb9/T56Lyy67jAB0OFmTyYT2339/es973rNovV//+tcJAH3rW9/aru3I44Mf/CBZa2kymWz3Z3bXfkhs6/o477zz6D73uc+i19etW0fvete79vp+/OAHP6D999+f3vCGN2z3tkjs6PnYlfuwM9f4rjoXfey96DNQ+1i87GUvw+mnn77sMkcccUTn70suuQT77bffVrMxAJfv/vAP/3DRLGl74rjjjsMb3vAGVFW13V5Pu2s/8m364he/uNX3DzroIPy///f/Oq/96le/Su9tT+yOffjKV76CE088ERdffDFOPfXU7dqOPPb2uTjooIPScZTY1nHdk+fipptuAgDc7373S68PBgMcccQR+PnPf77oMx/4wAfwgAc8AL/zO7+zXduRx3HHHQfnHDZs2ICjjjpquz6zu/Yj36blro+DDjpoUaehcw633Xbbdp+L3bUfP/rRj/CYxzwGz33uc/HqV796u7dFYkfPx67ch525xnfVuehjL8beRnB93LEIIdDhhx9OL3vZy7a6zM9+9jNSSm2z42tr8cY3vpHWrFmzs5u4XbE9+5HHs5/9bDr22GO3+r6QOn/1q1+l19773vfSypUrdyhjsCOxrX348pe/TNPT0/SXf/mXO/0de/tcCIk874A8++yzt4tEvifOxaZNm2gwGHQIv3Vd0wEHHLCoU3DLli00MzOzzW6vrcXf/M3fkNaabrvttju0zUvFjuxHHtu6PoS4nGfcvvCFL+w24vL27sc111xDBxxwAL3iFa/Y6e/aXedje/ZhZ67xPX0u+tj10QOoO3l86UtfWrIEk8erX/1qusc97kHOuUXvffKTn+w8/D796U/T+9//fvrBD35AP/nJT+hd73oXTU1N0Wtf+9rdsv0Sy+3HpZdeSh/5yEfo2muvpWuvvZbOO+880lrTX/3VX211P6St+HGPexx973vfo89//vO0bt263dY6v619kLLd2Wef3Wm7vvXWW7e6D/viubj99tvpwAMPpGc84xl0zTXX0Ec/+lGamprqPAz39rk488wz6Z73vCd94QtfoP/4j/+gZz3rWXTAAQcserB+4AMfoOFwSBs3bly0jquvvpqOOuoo+uUvf0lEXOq7+OKL6Xvf+x5df/319Dd/8ze0bt06OvXUU3fLPmzPfmzP9bFwP4i4df7YY4+lq6++mr72ta/Rb/zGb+zW1vlt7ccPfvADWrduHf3Jn/xJ59645ZZbtrofe/p8bGsftuca3xfORR+7NnoAdSePU045hR760Idu9X3vPR1yyCH0Z3/2Z0u+f8kll1CeiPzc5z5HD3jAA2hmZoamp6fpmGOOofe85z3kvd/l257Hcvtx6aWX0tFHH01TU1O0cuVKevCDH0yf+MQnlt0PIqINGzbQ4x//eBqNRrT//vvTy172MmqaZq/sw2mnnbYkxyLXHroznAsiou9///v08Ic/nAaDAd3znvekCy64oPP+3j4XdV3Ty172MjrggANoxYoVdPzxx9M111yzaLmHPOQh9Md//MdLruPLX/4yAaAbbriBiIi+/e1v03HHHUerVq2i4XBIRx99NL3pTW/abdnM7dmP7bk+Fu4HEdGtt95Kp5xyCs3MzNDKlSvpmc98Jm3ZsmWv7cfrXve6Je+Nww47bKv7safPx/ZcU9u6xveFc9HHrg1FtId6ovvoo48++uijjz7uItHrQPXRRx999NFHH33sYPQAqo8++uijjz766GMHowdQffTRRx999NFHHzsYPYDqo48++uijjz762MHoAVQfffTRRx999NHHDkYPoProo48++uijjz52MHoA1UcfffTRRx999LGD0QOoPu6y8ahHPQovfvGL71Lfe/rpp+Pkk0++Q+tYv349lFJQSuH222/f6nKXXnopVq9efYe+q4+tx+mnn57Owz/8wz/s7c3po48+djB6ANVHH7s4PvnJT+INb3hD+nv9+vV4+9vfvvc2aIk499xzcdNNN2HVqlV7e1Pu8nHFFVcsCVbf8Y53JKPaPvro484Xdm9vQB993NVi7dq1e3sTthkrVqzYZxzfm6ZBURR7ezP2eKxataoHsH30cSeOPgPVx90mNm7ciFNPPRVr1qzB1NQUHv/4x+MnP/lJel9KVl/4whdw9NFHY2ZmBn/wB3/QyRI453DGGWdg9erV2G+//XDWWWfhtNNO65TV8hLeox71KNx44414yUtekso1AHDOOefgAQ94QGf73v72t2P9+vXpb+89XvrSl6bveuUrX4mFzkshBJx//vk4/PDDMRqNcMwxx+Dv/u7vdur4XHrppbjXve6FqakpPOlJT8Ktt966aJl//Md/xAMf+EAMh0McccQReP3rXw/nXHr/P/7jP/Dwhz8cw+EQ97vf/fClL32pU6LasGEDlFL42Mc+hkc+8pEYDoe47LLLAAAf+MAHcPTRR2M4HOK+970v3vWud3W++xe/+AWe+tSnYvXq1Vi7di1OOukkbNiwIb1/xRVX4MEPfjCmp6exevVqPOxhD8ONN964Xfu+rf266KKLcP/73x/T09M49NBD8fznPx+zs7Pp/RtvvBEnnngi1qxZg+npafzmb/4mPvvZz2LDhg149KMfDQBYs2YNlFI4/fTTt2ub+uijj307egDVx90mTj/9dHzrW9/Cpz/9aVx11VUgIjzhCU9A0zRpmfF4jLe97W3467/+a3z1q1/Fz3/+c7z85S9P77/5zW/GZZddhksuuQRXXnklNm/evCx/5ZOf/CQOOeSQVDLbkZLNhRdeiEsvvRR/9Vd/ha997Wu47bbb8KlPfaqzzPnnn48Pf/jDeM973oMf/vCHeMlLXoI/+ZM/wVe+8pXtPzAArr76ajzrWc/CC1/4Qnzve9/Dox/9aLzxjW/sLPNv//ZvOPXUU3HmmWfiRz/6Ed773vfi0ksvxXnnnQeAAd/JJ5+MqakpXH311Xjf+96HP//zP1/y+171qlfhzDPPxLXXXosTTjgBl112GV772tfivPPOw7XXXos3velNeM1rXoMPfehDADhLdcIJJ2DFihX4t3/7N1x55ZUJ4NZ1DeccTj75ZDzykY/Ev//7v+Oqq67Cc5/73ARYl4tt7RcAaK3xF3/xF/jhD3+ID33oQ7j88svxyle+Mr3/ghe8AFVV4atf/Sp+8IMf4M1vfjNmZmZw6KGH4u///u8BANdddx1uuukmvOMd79ihc9NHH33so7F3vYz76GP3xSMf+Ug688wziYjoxz/+MQGgK6+8Mr3/61//mkajEX384x8nIqJLLrmEANBPf/rTtMz//b//lw488MD094EHHkhvfetb09/OObrXve5FJ5100pLfS0R02GGH0cUXX9zZtte97nV0zDHHdF67+OKLOw70Bx98ML3lLW9JfzdNQ4ccckj6rslkQlNTU/T1r3+9s55nPetZdMopp2z1uCy1Paeccgo94QlP6Lz2v//3/6ZVq1alvx/zmMfQm970ps4yf/3Xf00HH3wwERF97nOfI2st3XTTTen9L37xiwSAPvWpTxER0Q033EAA6O1vf3tnPfe+973pIx/5SOe1N7zhDfSQhzwkfc9RRx1FIYT0flVVNBqN6Atf+ALdeuutBICuuOKKre731mJb+7VUfOITn6D99tsv/X3/+9+fzjnnnCWX/fKXv0wAaOPGjUu+nx+fPvro484TPQeqj7tFXHvttbDW4rjjjkuv7bfffjjqqKNw7bXXptempqZw73vfO/198MEH45ZbbgEAbNq0Cb/61a/w4Ac/OL1vjMHv/M7vIISwS7d306ZNuOmmmzrba63Fgx70oFTG++lPf4rxeIzHPvaxnc/WdY1jjz12h77v2muvxZOe9KTOaw95yEPw+c9/Pv39/e9/H1deeWUnM+O9x2QywXg8xnXXXYdDDz20w63Kj1UeD3rQg9Lvc3NzuP766/GsZz0Lz3nOc9LrzrnEEfr+97+Pn/70p1ixYkVnPZPJBNdffz0e97jH4fTTT8cJJ5yAxz72sTj++OPx1Kc+FQcffPA2931b+zU1NYUvfelLOP/88/Ef//Ef2Lx5M5xznffPOOMMPO95z8O//Mu/4Pjjj8f/+l//C7/927+9ze/uo48+7rzRA6g++shiIZlZKbWId7QrQmu9aL15KXF7Qjg4n/nMZ3DPe96z895gMLhjG7iV73v961+PJz/5yYveGw6HO7Su6enpznoB4P3vf38HMAIMUGWZ3/md30l8qTzWrVsHALjkkktwxhln4POf/zw+9rGP4dWvfjW++MUv4vd+7/fu0H5t2LABf/iHf4jnPe95OO+887B27Vp87Wtfw7Oe9SzUdY2pqSk8+9nPxgknnIDPfOYz+Jd/+Recf/75uPDCC/GiF71oh45LH330ceeJHkD1cbeIo48+Gs45XH311XjoQx8KALj11ltx3XXX4X73u992rWPVqlU48MAD8c1vfhOPeMQjAHCm4jvf+c4iQngeZVnCe995bd26dbj55ptBRImn873vfa/zXQcffDCuvvrq9F3OOXz729/GAx/4QADA/e53PwwGA/z85z/HIx/5yO3ah63F0Ucfjauvvrrz2je+8Y3O3w984ANx3XXX4cgjj1xyHUcddRR+8Ytf4Fe/+hUOPPBAAMA3v/nNbX73gQceiHvc4x742c9+hqc//elLLvPABz4QH/vYx3DAAQdg5cqVW13Xsccei2OPPRZnn302HvKQh+AjH/nINgHUtvbr29/+NkIIuPDCC6E100Y//vGPL1ru0EMPxZ/+6Z/iT//0T3H22Wfj/e9/P170ohehLEsAWHQN9NFHH3fu6AFUH3eL+I3f+A2cdNJJeM5znoP3vve9WLFiBV71qlfhnve8J0466aTtXs+LXvQinH/++TjyyCNx3/veF+985zuxcePGZcnK69evx1e/+lU87WlPw2AwwP77749HPepR+O///m+85S1vwVOe8hR8/vOfx+c+97kOODjzzDNxwQUX4Dd+4zdw3/veFxdddFFHS2jFihV4+ctfjpe85CUIIeDhD384Nm3ahCuvvBIrV67Eaaedtt37dcYZZ+BhD3sY3va2t+Gkk07CF77whU75DgBe+9rX4g//8A9xr3vdC095ylOgtcb3v/99XHPNNXjjG9+Ixz72sbj3ve+N0047DW95y1uwZcsWvPrVrwaAbZK5X//61+OMM87AqlWr8Ad/8Aeoqgrf+ta3sHHjRrz0pS/F05/+dLz1rW/FSSedhHPPPReHHHIIbrzxRnzyk5/EK1/5SjRNg/e973144hOfiHvc4x647rrr8JOf/ASnnnrqNvd9W/t15JFHomkavPOd78SJJ56IK6+8Eu95z3s663jxi1+Mxz/+8bjPfe6DjRs34stf/jKOPvpoAMBhhx0GpRT++Z//GU94whMwGo0wMzOz3eemjz762Edj71Kw+uhj98VCMvdtt91Gz3jGM2jVqlU0Go3ohBNOoB//+Mfp/UsuuaRDmiYi+tSnPkX5bdI0Db3whS+klStX0po1a+iss86iP/qjP6KnPe1pW/3eq666in77t3+bBoNBZ13vfve76dBDD6Xp6Wk69dRT6bzzzuuQyJumoTPPPJNWrlxJq1evppe+9KV06qmndgjrIQR6+9vfTkcddRQVRUHr1q2jE044gb7yla9s9bgsRSInIvrgBz9IhxxyCI1GIzrxxBPpbW9726Lj8fnPf54e+tCH0mg0opUrV9KDH/xget/73pfev/baa+lhD3sYlWVJ973vfemf/umfCAB9/vOfJ6KWRP7d73530fdfdtll9IAHPIDKsqQ1a9bQIx7xCPrkJz+Z3r/pppvo1FNPpf33358GgwEdccQR9JznPIc2bdpEN998M5188sl08MEHU1mWdNhhh9FrX/ta8t5v9TjsyH5ddNFFdPDBB6fr5sMf/nCHGP7CF76Q7n3ve9NgMKB169bRM57xDPr1r3+dPn/uuefSQQcdREopOu200zrfjZ5E3kcfd8pQRLuB4NFHH3eTCCHg6KOPxlOf+tSO+vi+HOvXr8eLX/ziPWJzc+WVV+LhD384fvrTn3bI+X20oZTCpz71qTts0dNHH33s2eh1oProYwfixhtvxPvf/378+Mc/xg9+8AM873nPww033IA//uM/3tubtkNx1llnYWZmBps2bdql6/3Upz6FL37xi9iwYQO+9KUv4bnPfS4e9rCH9eBpifjTP/3TvpTXRx934ugzUH30sQPxi1/8Ak972tNwzTXXgIjwW7/1W7jgggsS0fvOEDfeeGPq+DviiCMSMXpXxIc//GG88Y1vxM9//nPsv//+OP7443HhhRdiv/3222XfsaPxm7/5m1tVJH/ve9+7VeL67o5bbrkFmzdvBsByGXlnYh999LHvRw+g+uijj7t05IBxYRx44IGLtKX66KOPPrYnegDVRx999NFHH330sYPRc6D66KOPPvroo48+djB6ANVHH3300UcfffSxg9EDqD766KOPPvroo48djB5A9dFHH3300Ucffexg9ACqjz766KOPPvroYwejB1B99NFHH3300UcfOxg9gOqjjz766KOPPvrYwegBVB999NFHH3300ccOxv8PpdTMU/8hSx0AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import icechunk as ic\n", + "from icechunk.credentials import S3StaticCredentials\n", + "from datetime import datetime\n", + "from urllib.parse import urlparse\n", + "import earthaccess\n", + "import xarray as xr\n", + "\n", + "store_url = \"s3://nasa-eodc-public/icechunk/MUR-JPL-L4-GLOB-v4.1-virtual-v2-p2\"\n", + "store_url_parsed = urlparse(store_url)\n", + "\n", + "storage = ic.s3_storage(\n", + " bucket = store_url_parsed.netloc,\n", + " prefix = store_url_parsed.path,\n", + " from_env=True,\n", + ")\n", + "\n", + "def get_icechunk_creds(daac: str = None) -> S3StaticCredentials:\n", + " if daac is None:\n", + " daac = \"PODAAC\" # TODO: Might want to change this for a more general version\n", + " # https://github.com/nsidc/earthaccess/discussions/1051 could help here.\n", + " # assumes that username and password are available in the environment\n", + " # TODO: accomodate rc file?\n", + " auth = earthaccess.login(strategy=\"environment\")\n", + " if not auth.authenticated:\n", + " raise PermissionError(\"Could not authenticate using environment variables\")\n", + " creds = auth.get_s3_credentials(daac=daac)\n", + " return S3StaticCredentials(\n", + " access_key_id=creds[\"accessKeyId\"],\n", + " secret_access_key=creds[\"secretAccessKey\"],\n", + " expires_after=datetime.fromisoformat(creds[\"expiration\"]),\n", + " session_token=creds[\"sessionToken\"],\n", + " )\n", + "\n", + "\n", + "\n", + "# TODO: Is there a way to avoid double opening? Maybe not super important\n", + "repo = ic.Repository.open(\n", + " storage=storage,\n", + ")\n", + "# see if reopening works\n", + "repo = ic.Repository.open(\n", + " storage=storage,\n", + " authorize_virtual_chunk_access = ic.containers_credentials(\n", + " {\n", + " k: ic.s3_refreshable_credentials(\n", + " get_credentials=get_icechunk_creds\n", + " ) for k in repo.config.virtual_chunk_containers.keys()\n", + " }\n", + " )\n", + ")\n", + "\n", + "session = repo.readonly_session('main')\n", + "ds = xr.open_zarr(session.store, zarr_format=3, consolidated=False)\n", + "ds['analysed_sst'].isel(time=0, lon=slice(10000, 12000), lat=slice(10000, 12000)).plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "e320d9b7-6767-49dc-acf7-f170ade015cc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'add_time_2025-08-14T23:09:08.975729+00:00',\n", + " 'add_time_2025-08-15T21:12:12.028418+00:00',\n", + " 'main'}" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "repo.list_branches()" + ] + }, + { + "cell_type": "markdown", + "id": "90e734ca-54a2-4b19-a2e2-60d904e881ca", + "metadata": {}, + "source": [ + "# MRE for getting the storage config" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5407a6f3-5d31-48e5-93c4-e236cc6418b4", + "metadata": {}, + "outputs": [], + "source": [ + "add_time_2025-08-14T23:09:08.975729+00:00 " + ] + }, + { + "cell_type": "markdown", + "id": "10f45117-8d1e-4eed-ba3a-e38a23e54417", + "metadata": {}, + "source": [ + "## Ummm why is that store not visible with fsspec?" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "2ff21109-e508-4f7e-932f-98e4ddfe4be7", + "metadata": {}, + "outputs": [], + "source": [ + "import fsspec" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "34195c4c-efdf-493c-a36d-3555d1361072", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'s3://nasa-eodc-public/icechunk/MUR-JPL-L4-GLOB-v4.1-virtual-v2-p2'" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "store_url" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "102ea5b6-931e-4a55-a590-6bca308ae5e8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['nasa-eodc-public/icechunk/MUR-JPL-L4-GLOB-v4.1-virtual-v1',\n", + " 'nasa-eodc-public/icechunk/MUR-JPL-L4-GLOB-v4.1-virtual-v1-p2',\n", + " 'nasa-eodc-public/icechunk/test']" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fs = fsspec.filesystem('s3')\n", + "fs.ls(\"nasa-eodc-public/icechunk\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "22628451-0c25-40be-a5f8-1a74410d30fa", + "metadata": {}, + "outputs": [], + "source": [ + "import obstore" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "001262c8-0e72-47c4-a67c-bd0989f39b48", + "metadata": {}, + "outputs": [], + "source": [ + "from obstore.store import from_url\n", + "\n", + "store = obstore.store.from_url(\n", + " \"s3://nasa-eodc-public/icechunk\",\n", + " skip_signature=True\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "51a52215-38d8-4793-bda1-74bbb36ed54f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'common_prefixes': [], 'objects': []}" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "store.list_with_delimiter(\"MUR-JPL-L4-GLOB-v4.1-virtual-v2-p2\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "MURSST-VENV", + "language": "python", + "name": "mursstvenv" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..1dfed6a --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,51 @@ +[project] +name = "mursst-icechunk-updater" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +requires-python = ">=3.12" +dependencies = [ + "aws-cdk-cli>=2.1025.0", + "boto3>=1.38.46", + "dask>=2025.7.0", + "earthaccess>=0.13.0", + "h5netcdf>=1.6.3", + "icechunk>=1.0.0", + "requests>=2.25.0", + "virtualizarr==2.0.0", + "zarr>=3.1.0", +] + +[dependency-groups] +cdk= [ + "aws-cdk-lib==2.181.1", + "constructs>=10.0.0,<11.0.0" +] +dev = [ + "ipykernel>=6.30.0", + "pre-commit>=4.2.0", + "pytest>=8.4.1", + "dotenv>=0.9.9", + "lithops>=3.6.1", + "aws-sam-cli>=1.142.1", + "aws-cdk-cli>=2.1025.0", +] +notebook = [ + "matplotlib>=3.10.5", +] + +[build-system] +requires = ["setuptools", "wheel"] +build-backend = "setuptools.build_meta" + +[tool.setuptools] +package-dir = {"" = "cdk/lambda"} + +[tool.setuptools.packages.find] +where = ["cdk/lambda"] + +[tool.pytest.ini_options] +addopts = "-vv" +testpaths = [ + "tests" +] diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 80a32cb..0000000 --- a/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -boto3 -requests>=2.28.2 -earthaccess>=0.1.1 \ No newline at end of file diff --git a/scripts/bootstrap_dotenv.sh b/scripts/bootstrap_dotenv.sh new file mode 100755 index 0000000..283de24 --- /dev/null +++ b/scripts/bootstrap_dotenv.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env bash + +# inspired by https://github.com/NASA-IMPACT/hls-vi-historical-orchestration/blob/main/scripts/bootstrap-dotenv.sh + +set -euo pipefail + +# --- detect repo --- +REPO="${GITHUB_REPOSITORY:-$(gh repo view --json nameWithOwner -q .nameWithOwner)}" + +# --- fetch available envs --- +ENVS=$(gh api "repos/$REPO/environments" --jq '.environments[].name') + +# --- require arg --- +if [[ $# -lt 1 ]]; then + echo "❌ Error: You must specify an environment." + echo "Available environments: $ENVS" + exit 1 +fi + +STAGE="$1" + +# --- validate arg --- +if ! grep -qx "$STAGE" <<<"$ENVS"; then + echo "❌ Error: Invalid environment '$STAGE'." + echo "Available environments: $ENVS" + exit 1 +fi + +echo "✅ Using environment: $STAGE" + +ENV_FILE=".env.${STAGE}" +TMP_FILE="${ENV_FILE}.tmp" + +# --- ensure tmp file is cleaned up on exit --- +trap 'rm -f "$TMP_FILE"' EXIT + +# --- dump repo variables --- +gh variable list \ + --json name,value \ + --jq '.[] | "\(.name)=\(.value)"' \ + > "$TMP_FILE" + +# --- dump env-specific variables --- +gh variable list --env "$STAGE" \ + --json name,value \ + --jq '.[] | "\(.name)=\(.value)"' \ + >> "$TMP_FILE" + +# --- ensure env vars override repo vars (portable) --- +awk -F= '{ seen[$1]=$0 } END { for (k in seen) print seen[k] }' "$TMP_FILE" > "$ENV_FILE" + +echo "✨ Wrote merged env file to $ENV_FILE" diff --git a/scripts/rebuild_store.py b/scripts/rebuild_store.py new file mode 100644 index 0000000..a9c074d --- /dev/null +++ b/scripts/rebuild_store.py @@ -0,0 +1,43 @@ +# /// script +# requires-python = ">=3.11" +# dependencies = [] +# /// + +# run with `uv run python scripts/rebuild_store_with_vz2_ic1.py` +# I do not really understand why the 'python' is necessary. + +from lambda_function import ( + create_icechunk_repo, + open_icechunk_repo, + dataset_from_search, +) + +# # Rebuilding production store +# store_url = "s3://nasa-eodc-public/icechunk/MUR-JPL-L4-GLOB-v4.1-virtual-v2-p2" + +# normal testing +import os +from dotenv import load_dotenv + +load_dotenv() +store_url = os.environ["ICECHUNK_STORE_DIRECT"] + +# This script was used to rebuild the icecunk MUR store + +# Get data and combine into virtual dataset +start_date = "2024-06-01 21:00:01" # In my manual testing this was the earliest I could go without hitting: ValueError: Cannot concatenate arrays with inconsistent chunk shapes: (1, 1023, 2047) vs (1, 3600, 7200) .Requires ZEP003 (Variable-length Chunks). +end_date = "2025-08-10 21:00:00" + +# create a virtual dataset from search +vds = dataset_from_search(start_date, end_date, virtual=True) + +# create empty repo and open it +print(f"Creating new store at {store_url=}") +create_icechunk_repo(store_url) +repo = open_icechunk_repo(store_url) + +# write to store +session = repo.writable_session("main") +vds.vz.to_icechunk(session.store) +session.commit("First Batch Write") +print(f"Writing finished to {store_url}") diff --git a/scripts/sync_requirements.sh b/scripts/sync_requirements.sh new file mode 100755 index 0000000..44d986b --- /dev/null +++ b/scripts/sync_requirements.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +set -euo pipefail + +uv export --format=requirements.txt --no-hashes --no-annotate --no-header --no-emit-workspace --no-group dev> cdk/lambda/requirements.txt +uv export --format=requirements.txt --no-hashes --no-annotate --no-header --no-emit-workspace --only-group cdk> cdk/requirements.txt diff --git a/subscribe.py b/subscribe.py deleted file mode 100644 index b23f86c..0000000 --- a/subscribe.py +++ /dev/null @@ -1,61 +0,0 @@ -import requests -import earthaccess -from config import QUEUE_ARN_FILE, COLLECTION_CONCEPT_ID, COLLECTION_NAME, SUBSCRIBER_ID - -def get_queue_arn(): - try: - with open(QUEUE_ARN_FILE, 'r') as f: - return f.read().strip() - except FileNotFoundError: - raise Exception(f"Queue ARN file {QUEUE_ARN_FILE} not found. Please run create_queue.py first.") - -def create_cmr_subscription(): - # Get bearer token from earthaccess - auth = earthaccess.login() - bearer_token = auth.token['access_token'] - - # Get queue ARN - queue_arn = get_queue_arn() - - # Create subscription request - subscription_request = { - "Name": f"{SUBSCRIBER_ID}-{COLLECTION_CONCEPT_ID}-subscription", - "CollectionConceptId": COLLECTION_CONCEPT_ID, - "Type": "granule", - "Query": "*", - "SubscriberId": SUBSCRIBER_ID, - "EndPoint": queue_arn, - "Mode": ["New","Update"], - "Method":"ingest", - "MetadataSpecification": { - "URL": "https://cdn.earthdata.nasa.gov/umm/subscription/v1.1.1", - "Name": "UMM-Sub", - "Version": "1.1.1" - } - } - - # Make the request to CMR - headers = { - "Authorization": f"Bearer {bearer_token}", - "Content-Type": "application/vnd.nasa.cmr.umm+json" - } - - try: - response = requests.post( - "https://cmr.earthdata.nasa.gov/ingest/subscriptions/", - headers=headers, - json=subscription_request - ) - - if response.status_code == 201: - print("Successfully created CMR subscription") - print(f"Response: {response.text}") - else: - print(f"Error creating subscription. Status code: {response.status_code}") - print(f"Response: {response.text}") - - except Exception as e: - print(f"Error making subscription request: {str(e)}") - -if __name__ == "__main__": - create_cmr_subscription() diff --git a/tests/test_integration_in_region.py b/tests/test_integration_in_region.py new file mode 100644 index 0000000..c69bd6c --- /dev/null +++ b/tests/test_integration_in_region.py @@ -0,0 +1,87 @@ +import pytest +from lambda_function import ( + create_icechunk_repo, + open_icechunk_repo, + dataset_from_search, + open_xr_dataset_from_branch, + write_to_icechunk_or_fail, +) +from datetime import datetime, timedelta + + +def formatted_date_n_days_ago(n): + date_n_days_ago = datetime.utcnow() - timedelta(days=n) + return date_n_days_ago.date().isoformat() + " 21:00:00" + + +@pytest.fixture(scope="module") +def full_vdataset(): + """Get a single dataset that has enough missing timesteps to serve for all the append test cases below. + These test here are written to ensure that past appends will again succeed, and not to detect problems with + recently released data, so we dont care that these granules are a while back + """ + + # Ill define a generous time range and then cull to the latest 5 available + start_date = ( + datetime.utcnow() - timedelta(days=6) + ).date().isoformat() + " 21:00:00" + end_date = (datetime.utcnow() - timedelta(days=3)).date().isoformat() + " 21:00:00" + + vds = dataset_from_search( + start_date, end_date, virtual=True, parallel="lithops", limit_granules=2 + ) + + return vds + + +@pytest.fixture() +def temp_icechunk_store(tmp_path, full_vdataset): + """Create a temporary icechunk store that is missing the 3 latest granules""" + path = str(tmp_path / "temp_store") + # create empty repo + create_icechunk_repo(path) + # open the repo + repo = open_icechunk_repo(path) + + print(f"Full vds in fixture {full_vdataset}") + + # crop dataset before saving + vds = full_vdataset + + # Get data and combine into virtual dataset + + # vds = dataset_from_search(start_date, end_date, virtual=True, parallel=False) + # # TODO. The lithops exec fails when using pyteset-xdist. I think this is due to the fact that they all share the same temp dict? + # # TODO: Maybe it is possible to modify virtualizarr to pass a custom dir? This seems like a bunch of work. + # # write to store + session = repo.writable_session("main") + vds.vz.to_icechunk(session.store) + session.commit("Write Test Data") + return path + + +@pytest.mark.parametrize("days_to_append", [1, 2]) +def test_append(temp_icechunk_store, days_to_append): + repo = open_icechunk_repo(temp_icechunk_store) + ds_old = open_xr_dataset_from_branch(repo, "main") + print(f"OLD DATASET for comparison {ds_old}") + + # now call the lambda wrapper function on this store + result = write_to_icechunk_or_fail( + temp_icechunk_store, limit_granules=days_to_append, parallel=False + ) + + # Load the resulting dataset and test + ds = open_xr_dataset_from_branch(repo, "main") + assert len(ds.time) == days_to_append + 2 + assert result == "Success" + + +# def test_nothing_to_append(temp_icechunk_store): +def test_nothing_to_append(temp_icechunk_store): + """Test behavior when there is no data to append""" + # now call the lambda wrapper function on this store + result = write_to_icechunk_or_fail( + temp_icechunk_store, limit_granules=0, parallel=False + ) + assert result == "No new data granules available" diff --git a/tests/test_unit.py b/tests/test_unit.py new file mode 100644 index 0000000..a711c30 --- /dev/null +++ b/tests/test_unit.py @@ -0,0 +1,11 @@ +from lambda_function import create_icechunk_repo, open_icechunk_repo + + +def test_persistent_virt_container_config(tmp_path): + """Making sure that the chunk containers are persisted to storage""" + create_icechunk_repo(str(tmp_path)) + repo = open_icechunk_repo(str(tmp_path)) + assert ( + "s3://podaac-ops-cumulus-protected/MUR-JPL-L4-GLOB-v4.1/" + in repo.config.virtual_chunk_containers.keys() + ) diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..6f66135 --- /dev/null +++ b/uv.lock @@ -0,0 +1,3343 @@ +version = 1 +revision = 2 +requires-python = ">=3.12" + +[[package]] +name = "aiobotocore" +version = "2.23.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp" }, + { name = "aioitertools" }, + { name = "botocore" }, + { name = "jmespath" }, + { name = "multidict" }, + { name = "python-dateutil" }, + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f6/1d/babe191fa10a7ecda6c6832c08231536c60cc33b4cddfb3b72133505673e/aiobotocore-2.23.1.tar.gz", hash = "sha256:a59f2a78629b97d52f10936b79c73de64e481a8c44a62c1871f088df6c1afc4f", size = 115869, upload-time = "2025-07-17T21:51:57.006Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/d9/25a697a959a7149c93efa4d849421aa5f22bcb82350ac89b4284b0b88aa8/aiobotocore-2.23.1-py3-none-any.whl", hash = "sha256:d81c54d2eae2406ea9a473fea518fed580cf37bc4fc51ce43ba81546e5305114", size = 84219, upload-time = "2025-07-17T21:51:55.145Z" }, +] + +[[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.12.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohappyeyeballs" }, + { name = "aiosignal" }, + { name = "attrs" }, + { name = "frozenlist" }, + { name = "multidict" }, + { name = "propcache" }, + { name = "yarl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e6/0b/e39ad954107ebf213a2325038a3e7a506be3d98e1435e1f82086eec4cde2/aiohttp-3.12.14.tar.gz", hash = "sha256:6e06e120e34d93100de448fd941522e11dafa78ef1a893c179901b7d66aa29f2", size = 7822921, upload-time = "2025-07-10T13:05:33.968Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/0d/29026524e9336e33d9767a1e593ae2b24c2b8b09af7c2bd8193762f76b3e/aiohttp-3.12.14-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a0ecbb32fc3e69bc25efcda7d28d38e987d007096cbbeed04f14a6662d0eee22", size = 701055, upload-time = "2025-07-10T13:03:45.59Z" }, + { url = "https://files.pythonhosted.org/packages/0a/b8/a5e8e583e6c8c1056f4b012b50a03c77a669c2e9bf012b7cf33d6bc4b141/aiohttp-3.12.14-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0400f0ca9bb3e0b02f6466421f253797f6384e9845820c8b05e976398ac1d81a", size = 475670, upload-time = "2025-07-10T13:03:47.249Z" }, + { url = "https://files.pythonhosted.org/packages/29/e8/5202890c9e81a4ec2c2808dd90ffe024952e72c061729e1d49917677952f/aiohttp-3.12.14-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a56809fed4c8a830b5cae18454b7464e1529dbf66f71c4772e3cfa9cbec0a1ff", size = 468513, upload-time = "2025-07-10T13:03:49.377Z" }, + { url = "https://files.pythonhosted.org/packages/23/e5/d11db8c23d8923d3484a27468a40737d50f05b05eebbb6288bafcb467356/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27f2e373276e4755691a963e5d11756d093e346119f0627c2d6518208483fb6d", size = 1715309, upload-time = "2025-07-10T13:03:51.556Z" }, + { url = "https://files.pythonhosted.org/packages/53/44/af6879ca0eff7a16b1b650b7ea4a827301737a350a464239e58aa7c387ef/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ca39e433630e9a16281125ef57ece6817afd1d54c9f1bf32e901f38f16035869", size = 1697961, upload-time = "2025-07-10T13:03:53.511Z" }, + { url = "https://files.pythonhosted.org/packages/bb/94/18457f043399e1ec0e59ad8674c0372f925363059c276a45a1459e17f423/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c748b3f8b14c77720132b2510a7d9907a03c20ba80f469e58d5dfd90c079a1c", size = 1753055, upload-time = "2025-07-10T13:03:55.368Z" }, + { url = "https://files.pythonhosted.org/packages/26/d9/1d3744dc588fafb50ff8a6226d58f484a2242b5dd93d8038882f55474d41/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0a568abe1b15ce69d4cc37e23020720423f0728e3cb1f9bcd3f53420ec3bfe7", size = 1799211, upload-time = "2025-07-10T13:03:57.216Z" }, + { url = "https://files.pythonhosted.org/packages/73/12/2530fb2b08773f717ab2d249ca7a982ac66e32187c62d49e2c86c9bba9b4/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9888e60c2c54eaf56704b17feb558c7ed6b7439bca1e07d4818ab878f2083660", size = 1718649, upload-time = "2025-07-10T13:03:59.469Z" }, + { url = "https://files.pythonhosted.org/packages/b9/34/8d6015a729f6571341a311061b578e8b8072ea3656b3d72329fa0faa2c7c/aiohttp-3.12.14-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3006a1dc579b9156de01e7916d38c63dc1ea0679b14627a37edf6151bc530088", size = 1634452, upload-time = "2025-07-10T13:04:01.698Z" }, + { url = "https://files.pythonhosted.org/packages/ff/4b/08b83ea02595a582447aeb0c1986792d0de35fe7a22fb2125d65091cbaf3/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aa8ec5c15ab80e5501a26719eb48a55f3c567da45c6ea5bb78c52c036b2655c7", size = 1695511, upload-time = "2025-07-10T13:04:04.165Z" }, + { url = "https://files.pythonhosted.org/packages/b5/66/9c7c31037a063eec13ecf1976185c65d1394ded4a5120dd5965e3473cb21/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:39b94e50959aa07844c7fe2206b9f75d63cc3ad1c648aaa755aa257f6f2498a9", size = 1716967, upload-time = "2025-07-10T13:04:06.132Z" }, + { url = "https://files.pythonhosted.org/packages/ba/02/84406e0ad1acb0fb61fd617651ab6de760b2d6a31700904bc0b33bd0894d/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:04c11907492f416dad9885d503fbfc5dcb6768d90cad8639a771922d584609d3", size = 1657620, upload-time = "2025-07-10T13:04:07.944Z" }, + { url = "https://files.pythonhosted.org/packages/07/53/da018f4013a7a179017b9a274b46b9a12cbeb387570f116964f498a6f211/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:88167bd9ab69bb46cee91bd9761db6dfd45b6e76a0438c7e884c3f8160ff21eb", size = 1737179, upload-time = "2025-07-10T13:04:10.182Z" }, + { url = "https://files.pythonhosted.org/packages/49/e8/ca01c5ccfeaafb026d85fa4f43ceb23eb80ea9c1385688db0ef322c751e9/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:791504763f25e8f9f251e4688195e8b455f8820274320204f7eafc467e609425", size = 1765156, upload-time = "2025-07-10T13:04:12.029Z" }, + { url = "https://files.pythonhosted.org/packages/22/32/5501ab525a47ba23c20613e568174d6c63aa09e2caa22cded5c6ea8e3ada/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2785b112346e435dd3a1a67f67713a3fe692d288542f1347ad255683f066d8e0", size = 1724766, upload-time = "2025-07-10T13:04:13.961Z" }, + { url = "https://files.pythonhosted.org/packages/06/af/28e24574801fcf1657945347ee10df3892311c2829b41232be6089e461e7/aiohttp-3.12.14-cp312-cp312-win32.whl", hash = "sha256:15f5f4792c9c999a31d8decf444e79fcfd98497bf98e94284bf390a7bb8c1729", size = 422641, upload-time = "2025-07-10T13:04:16.018Z" }, + { url = "https://files.pythonhosted.org/packages/98/d5/7ac2464aebd2eecac38dbe96148c9eb487679c512449ba5215d233755582/aiohttp-3.12.14-cp312-cp312-win_amd64.whl", hash = "sha256:3b66e1a182879f579b105a80d5c4bd448b91a57e8933564bf41665064796a338", size = 449316, upload-time = "2025-07-10T13:04:18.289Z" }, + { url = "https://files.pythonhosted.org/packages/06/48/e0d2fa8ac778008071e7b79b93ab31ef14ab88804d7ba71b5c964a7c844e/aiohttp-3.12.14-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:3143a7893d94dc82bc409f7308bc10d60285a3cd831a68faf1aa0836c5c3c767", size = 695471, upload-time = "2025-07-10T13:04:20.124Z" }, + { url = "https://files.pythonhosted.org/packages/8d/e7/f73206afa33100804f790b71092888f47df65fd9a4cd0e6800d7c6826441/aiohttp-3.12.14-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3d62ac3d506cef54b355bd34c2a7c230eb693880001dfcda0bf88b38f5d7af7e", size = 473128, upload-time = "2025-07-10T13:04:21.928Z" }, + { url = "https://files.pythonhosted.org/packages/df/e2/4dd00180be551a6e7ee979c20fc7c32727f4889ee3fd5b0586e0d47f30e1/aiohttp-3.12.14-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:48e43e075c6a438937c4de48ec30fa8ad8e6dfef122a038847456bfe7b947b63", size = 465426, upload-time = "2025-07-10T13:04:24.071Z" }, + { url = "https://files.pythonhosted.org/packages/de/dd/525ed198a0bb674a323e93e4d928443a680860802c44fa7922d39436b48b/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:077b4488411a9724cecc436cbc8c133e0d61e694995b8de51aaf351c7578949d", size = 1704252, upload-time = "2025-07-10T13:04:26.049Z" }, + { url = "https://files.pythonhosted.org/packages/d8/b1/01e542aed560a968f692ab4fc4323286e8bc4daae83348cd63588e4f33e3/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d8c35632575653f297dcbc9546305b2c1133391089ab925a6a3706dfa775ccab", size = 1685514, upload-time = "2025-07-10T13:04:28.186Z" }, + { url = "https://files.pythonhosted.org/packages/b3/06/93669694dc5fdabdc01338791e70452d60ce21ea0946a878715688d5a191/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b8ce87963f0035c6834b28f061df90cf525ff7c9b6283a8ac23acee6502afd4", size = 1737586, upload-time = "2025-07-10T13:04:30.195Z" }, + { url = "https://files.pythonhosted.org/packages/a5/3a/18991048ffc1407ca51efb49ba8bcc1645961f97f563a6c480cdf0286310/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0a2cf66e32a2563bb0766eb24eae7e9a269ac0dc48db0aae90b575dc9583026", size = 1786958, upload-time = "2025-07-10T13:04:32.482Z" }, + { url = "https://files.pythonhosted.org/packages/30/a8/81e237f89a32029f9b4a805af6dffc378f8459c7b9942712c809ff9e76e5/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdea089caf6d5cde975084a884c72d901e36ef9c2fd972c9f51efbbc64e96fbd", size = 1709287, upload-time = "2025-07-10T13:04:34.493Z" }, + { url = "https://files.pythonhosted.org/packages/8c/e3/bd67a11b0fe7fc12c6030473afd9e44223d456f500f7cf526dbaa259ae46/aiohttp-3.12.14-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a7865f27db67d49e81d463da64a59365ebd6b826e0e4847aa111056dcb9dc88", size = 1622990, upload-time = "2025-07-10T13:04:36.433Z" }, + { url = "https://files.pythonhosted.org/packages/83/ba/e0cc8e0f0d9ce0904e3cf2d6fa41904e379e718a013c721b781d53dcbcca/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0ab5b38a6a39781d77713ad930cb5e7feea6f253de656a5f9f281a8f5931b086", size = 1676015, upload-time = "2025-07-10T13:04:38.958Z" }, + { url = "https://files.pythonhosted.org/packages/d8/b3/1e6c960520bda094c48b56de29a3d978254637ace7168dd97ddc273d0d6c/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:9b3b15acee5c17e8848d90a4ebc27853f37077ba6aec4d8cb4dbbea56d156933", size = 1707678, upload-time = "2025-07-10T13:04:41.275Z" }, + { url = "https://files.pythonhosted.org/packages/0a/19/929a3eb8c35b7f9f076a462eaa9830b32c7f27d3395397665caa5e975614/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e4c972b0bdaac167c1e53e16a16101b17c6d0ed7eac178e653a07b9f7fad7151", size = 1650274, upload-time = "2025-07-10T13:04:43.483Z" }, + { url = "https://files.pythonhosted.org/packages/22/e5/81682a6f20dd1b18ce3d747de8eba11cbef9b270f567426ff7880b096b48/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7442488b0039257a3bdbc55f7209587911f143fca11df9869578db6c26feeeb8", size = 1726408, upload-time = "2025-07-10T13:04:45.577Z" }, + { url = "https://files.pythonhosted.org/packages/8c/17/884938dffaa4048302985483f77dfce5ac18339aad9b04ad4aaa5e32b028/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:f68d3067eecb64c5e9bab4a26aa11bd676f4c70eea9ef6536b0a4e490639add3", size = 1759879, upload-time = "2025-07-10T13:04:47.663Z" }, + { url = "https://files.pythonhosted.org/packages/95/78/53b081980f50b5cf874359bde707a6eacd6c4be3f5f5c93937e48c9d0025/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f88d3704c8b3d598a08ad17d06006cb1ca52a1182291f04979e305c8be6c9758", size = 1708770, upload-time = "2025-07-10T13:04:49.944Z" }, + { url = "https://files.pythonhosted.org/packages/ed/91/228eeddb008ecbe3ffa6c77b440597fdf640307162f0c6488e72c5a2d112/aiohttp-3.12.14-cp313-cp313-win32.whl", hash = "sha256:a3c99ab19c7bf375c4ae3debd91ca5d394b98b6089a03231d4c580ef3c2ae4c5", size = 421688, upload-time = "2025-07-10T13:04:51.993Z" }, + { url = "https://files.pythonhosted.org/packages/66/5f/8427618903343402fdafe2850738f735fd1d9409d2a8f9bcaae5e630d3ba/aiohttp-3.12.14-cp313-cp313-win_amd64.whl", hash = "sha256:3f8aad695e12edc9d571f878c62bedc91adf30c760c8632f09663e5f564f4baa", size = 448098, upload-time = "2025-07-10T13:04:53.999Z" }, +] + +[[package]] +name = "aioitertools" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/06/de/38491a84ab323b47c7f86e94d2830e748780525f7a10c8600b67ead7e9ea/aioitertools-0.12.0.tar.gz", hash = "sha256:c2a9055b4fbb7705f561b9d86053e8af5d10cc845d22c32008c43490b2d8dd6b", size = 19369, upload-time = "2024-09-02T03:33:40.349Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/13/58b70a580de00893223d61de8fea167877a3aed97d4a5e1405c9159ef925/aioitertools-0.12.0-py3-none-any.whl", hash = "sha256:fc1f5fac3d737354de8831cbba3eb04f79dd649d8f3afb4c5b114925e662a796", size = 24345, upload-time = "2024-09-02T03:34:59.454Z" }, +] + +[[package]] +name = "aiosignal" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "frozenlist" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +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-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "appnope" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload-time = "2024-02-06T09:43:11.258Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload-time = "2024-02-06T09:43:09.663Z" }, +] + +[[package]] +name = "arrow" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "types-python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960, upload-time = "2023-09-30T22:11:18.25Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419, upload-time = "2023-09-30T22:11:16.072Z" }, +] + +[[package]] +name = "asttokens" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978, upload-time = "2024-11-30T04:30:14.439Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918, upload-time = "2024-11-30T04:30:10.946Z" }, +] + +[[package]] +name = "attrs" +version = "25.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, +] + +[[package]] +name = "aws-cdk-asset-awscli-v1" +version = "2.2.242" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsii" }, + { name = "publication" }, + { name = "typeguard" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/84/66/095e92652c175a9c18c98bc358db2c5957897245053fb5d0988c908be355/aws_cdk_asset_awscli_v1-2.2.242.tar.gz", hash = "sha256:a957d679a118f4375307ed90b9aed7127c5c1402989438060eae4ab29ab0d13f", size = 19284036, upload-time = "2025-06-23T17:42:03.275Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/ca/0415b7387c776c0a82a153fe75573e78cbbf1a71d4475636393f5ecfc649/aws_cdk_asset_awscli_v1-2.2.242-py3-none-any.whl", hash = "sha256:d1001bf56a12f7d1162d4211003d1e8f72a213159465e2d0e1c598cc0ea44aad", size = 19282441, upload-time = "2025-06-23T17:42:00.381Z" }, +] + +[[package]] +name = "aws-cdk-asset-node-proxy-agent-v6" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsii" }, + { name = "publication" }, + { name = "typeguard" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d5/ab/09ac3ecc0067988d02398328e088d66cbe8555c991563c8ddfa1db5296ae/aws_cdk_asset_node_proxy_agent_v6-2.1.0.tar.gz", hash = "sha256:1f292c0631f86708ba4ee328b3a2b229f7e46ea1c79fbde567ee9eb119c2b0e2", size = 1540231, upload-time = "2024-09-03T09:36:51.634Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/86/1817a6da223aa80aeb94a504f07f930170284694b18f6053729e9930cc6a/aws_cdk.asset_node_proxy_agent_v6-2.1.0-py3-none-any.whl", hash = "sha256:24a388b69a44d03bae6dbf864c4e25ba650d4b61c008b4568b94ffbb9a69e40e", size = 1538724, upload-time = "2024-09-03T09:36:49.8Z" }, +] + +[[package]] +name = "aws-cdk-cli" +version = "2.1025.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/1a/cca1838ed19a019c55f4089267c7938e14e1177dba4a915bc0a37451a6dd/aws_cdk_cli-2.1025.0.tar.gz", hash = "sha256:c456c0d5551be737b7d4c66dd141731f62b90783455dc92b8fe4dd8a385e9ab4", size = 6372596, upload-time = "2025-08-14T00:30:42.187Z" } + +[[package]] +name = "aws-cdk-cloud-assembly-schema" +version = "39.2.20" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsii" }, + { name = "publication" }, + { name = "typeguard" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/a5/929cf149f9224c42cec11b835361d371faeaedfcac17453f2aeb02c5783a/aws_cdk_cloud_assembly_schema-39.2.20.tar.gz", hash = "sha256:e110b22f961d15c25a9099590375280c0b45637c8325ade9b570a0ef11e6e907", size = 188301, upload-time = "2025-02-10T00:25:58.23Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/62/8d34bd0750a2ad9e6d59548119c0230274c225b0a7d0340be1db8d831753/aws_cdk.cloud_assembly_schema-39.2.20-py3-none-any.whl", hash = "sha256:7b1ab0593fbfaac4ff0d5d0aa6a3b54185e0286f4aa68376557cac2d50c59183", size = 187292, upload-time = "2025-02-10T00:25:55.559Z" }, +] + +[[package]] +name = "aws-cdk-lib" +version = "2.181.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aws-cdk-asset-awscli-v1" }, + { name = "aws-cdk-asset-node-proxy-agent-v6" }, + { name = "aws-cdk-cloud-assembly-schema" }, + { name = "constructs" }, + { name = "jsii" }, + { name = "publication" }, + { name = "typeguard" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/61/51/4cde4fb384c76689eccee3ae3ce20942917079023c951f9d680b13575cdb/aws_cdk_lib-2.181.1.tar.gz", hash = "sha256:59356371569797f57bc2832d97dc70802d479244822e84e509739b1d41b2b4c5", size = 39725413, upload-time = "2025-02-28T02:44:31.376Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/3f/d0a832382dcac444fb242832ded339fc59ed35829e8dec75bab5d3d3e2c6/aws_cdk_lib-2.181.1-py3-none-any.whl", hash = "sha256:c4246dc6689dd46b0f666b98ce3049ab2b1faf390c50eeb9c6ba0a83cd53970e", size = 40006123, upload-time = "2025-02-28T02:43:43.491Z" }, +] + +[[package]] +name = "aws-lambda-builders" +version = "1.55.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "setuptools" }, + { name = "wheel" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/7c/67f11af10a96e71e2a131be879a5e2e1385793627d242be11a8fea4c81c5/aws_lambda_builders-1.55.0.tar.gz", hash = "sha256:4749446c5e54a75f5af7e835236f6c7ec6a0e51abcbc1e5cdbf7282529b56be2", size = 95847, upload-time = "2025-06-25T21:23:25.711Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/0f/ce7b391518d17de4bdd2d0bc3be5295641d2645de7db37e6c65ecffaf79f/aws_lambda_builders-1.55.0-py3-none-any.whl", hash = "sha256:4a15e6f03a60c9eb1a885a702b065ee7e0434a3127b17f4a89ed163ed680cfd2", size = 131502, upload-time = "2025-06-25T21:23:24.15Z" }, +] + +[[package]] +name = "aws-sam-cli" +version = "1.142.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aws-lambda-builders" }, + { name = "aws-sam-translator" }, + { name = "boto3" }, + { name = "boto3-stubs", extra = ["apigateway", "cloudformation", "ecr", "iam", "kinesis", "lambda", "s3", "schemas", "secretsmanager", "signer", "sqs", "stepfunctions", "sts", "xray"] }, + { name = "cfn-lint" }, + { name = "chevron" }, + { name = "click" }, + { name = "cookiecutter" }, + { name = "dateparser" }, + { name = "docker" }, + { name = "flask" }, + { name = "jmespath" }, + { name = "jsonschema" }, + { name = "pyopenssl" }, + { name = "pyyaml" }, + { name = "regex" }, + { name = "requests" }, + { name = "rich" }, + { name = "ruamel-yaml" }, + { name = "tomlkit" }, + { name = "typing-extensions" }, + { name = "tzlocal" }, + { name = "watchdog" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/64/2e52d16f77ea347454e9ea8bd0f4c941c8b78b1a517846fd9bff2ea29b95/aws_sam_cli-1.142.1.tar.gz", hash = "sha256:ba6896e7427fa73ed51dbac96e4b80ca18a2f413e77f514bdc5c55d4749d3d74", size = 6314531, upload-time = "2025-07-01T19:22:03.876Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/b8/4b722be6d8c5cc2609843f9503d733aa4362062165b9bcaf0d998d217fa7/aws_sam_cli-1.142.1-py3-none-any.whl", hash = "sha256:af453c4455102b37bb9ee797be3942919bd6bf8f21721c38796656b76ed9c4be", size = 6602143, upload-time = "2025-07-01T19:22:01.387Z" }, +] + +[[package]] +name = "aws-sam-translator" +version = "1.99.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "boto3" }, + { name = "jsonschema" }, + { name = "pydantic" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/78/ac6761ff3f37a1e989ddb62c9a58c4d289ad2ca2bdb3bed1319f4ae49e16/aws_sam_translator-1.99.0.tar.gz", hash = "sha256:be326054a7ee2f535fcd914db85e5d50bdf4054313c14888af69b6de3187cdf8", size = 330448, upload-time = "2025-06-19T19:33:56.944Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/d8/6df2f172f878db9a9f307dd752986fd84075b7ef6f823477191edafb46a8/aws_sam_translator-1.99.0-py3-none-any.whl", hash = "sha256:b1997e09da876342655eb568e66098280ffd137213009f0136b57f4e7694c98c", size = 388649, upload-time = "2025-06-19T19:33:55.241Z" }, +] + +[[package]] +name = "bcrypt" +version = "4.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/5d/6d7433e0f3cd46ce0b43cd65e1db465ea024dbb8216fb2404e919c2ad77b/bcrypt-4.3.0.tar.gz", hash = "sha256:3a3fd2204178b6d2adcf09cb4f6426ffef54762577a7c9b54c159008cb288c18", size = 25697, upload-time = "2025-02-28T01:24:09.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/2c/3d44e853d1fe969d229bd58d39ae6902b3d924af0e2b5a60d17d4b809ded/bcrypt-4.3.0-cp313-cp313t-macosx_10_12_universal2.whl", hash = "sha256:f01e060f14b6b57bbb72fc5b4a83ac21c443c9a2ee708e04a10e9192f90a6281", size = 483719, upload-time = "2025-02-28T01:22:34.539Z" }, + { url = "https://files.pythonhosted.org/packages/a1/e2/58ff6e2a22eca2e2cff5370ae56dba29d70b1ea6fc08ee9115c3ae367795/bcrypt-4.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5eeac541cefd0bb887a371ef73c62c3cd78535e4887b310626036a7c0a817bb", size = 272001, upload-time = "2025-02-28T01:22:38.078Z" }, + { url = "https://files.pythonhosted.org/packages/37/1f/c55ed8dbe994b1d088309e366749633c9eb90d139af3c0a50c102ba68a1a/bcrypt-4.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59e1aa0e2cd871b08ca146ed08445038f42ff75968c7ae50d2fdd7860ade2180", size = 277451, upload-time = "2025-02-28T01:22:40.787Z" }, + { url = "https://files.pythonhosted.org/packages/d7/1c/794feb2ecf22fe73dcfb697ea7057f632061faceb7dcf0f155f3443b4d79/bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:0042b2e342e9ae3d2ed22727c1262f76cc4f345683b5c1715f0250cf4277294f", size = 272792, upload-time = "2025-02-28T01:22:43.144Z" }, + { url = "https://files.pythonhosted.org/packages/13/b7/0b289506a3f3598c2ae2bdfa0ea66969812ed200264e3f61df77753eee6d/bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74a8d21a09f5e025a9a23e7c0fd2c7fe8e7503e4d356c0a2c1486ba010619f09", size = 289752, upload-time = "2025-02-28T01:22:45.56Z" }, + { url = "https://files.pythonhosted.org/packages/dc/24/d0fb023788afe9e83cc118895a9f6c57e1044e7e1672f045e46733421fe6/bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:0142b2cb84a009f8452c8c5a33ace5e3dfec4159e7735f5afe9a4d50a8ea722d", size = 277762, upload-time = "2025-02-28T01:22:47.023Z" }, + { url = "https://files.pythonhosted.org/packages/e4/38/cde58089492e55ac4ef6c49fea7027600c84fd23f7520c62118c03b4625e/bcrypt-4.3.0-cp313-cp313t-manylinux_2_34_aarch64.whl", hash = "sha256:12fa6ce40cde3f0b899729dbd7d5e8811cb892d31b6f7d0334a1f37748b789fd", size = 272384, upload-time = "2025-02-28T01:22:49.221Z" }, + { url = "https://files.pythonhosted.org/packages/de/6a/d5026520843490cfc8135d03012a413e4532a400e471e6188b01b2de853f/bcrypt-4.3.0-cp313-cp313t-manylinux_2_34_x86_64.whl", hash = "sha256:5bd3cca1f2aa5dbcf39e2aa13dd094ea181f48959e1071265de49cc2b82525af", size = 277329, upload-time = "2025-02-28T01:22:51.603Z" }, + { url = "https://files.pythonhosted.org/packages/b3/a3/4fc5255e60486466c389e28c12579d2829b28a527360e9430b4041df4cf9/bcrypt-4.3.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:335a420cfd63fc5bc27308e929bee231c15c85cc4c496610ffb17923abf7f231", size = 305241, upload-time = "2025-02-28T01:22:53.283Z" }, + { url = "https://files.pythonhosted.org/packages/c7/15/2b37bc07d6ce27cc94e5b10fd5058900eb8fb11642300e932c8c82e25c4a/bcrypt-4.3.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:0e30e5e67aed0187a1764911af023043b4542e70a7461ad20e837e94d23e1d6c", size = 309617, upload-time = "2025-02-28T01:22:55.461Z" }, + { url = "https://files.pythonhosted.org/packages/5f/1f/99f65edb09e6c935232ba0430c8c13bb98cb3194b6d636e61d93fe60ac59/bcrypt-4.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3b8d62290ebefd49ee0b3ce7500f5dbdcf13b81402c05f6dafab9a1e1b27212f", size = 335751, upload-time = "2025-02-28T01:22:57.81Z" }, + { url = "https://files.pythonhosted.org/packages/00/1b/b324030c706711c99769988fcb694b3cb23f247ad39a7823a78e361bdbb8/bcrypt-4.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2ef6630e0ec01376f59a006dc72918b1bf436c3b571b80fa1968d775fa02fe7d", size = 355965, upload-time = "2025-02-28T01:22:59.181Z" }, + { url = "https://files.pythonhosted.org/packages/aa/dd/20372a0579dd915dfc3b1cd4943b3bca431866fcb1dfdfd7518c3caddea6/bcrypt-4.3.0-cp313-cp313t-win32.whl", hash = "sha256:7a4be4cbf241afee43f1c3969b9103a41b40bcb3a3f467ab19f891d9bc4642e4", size = 155316, upload-time = "2025-02-28T01:23:00.763Z" }, + { url = "https://files.pythonhosted.org/packages/6d/52/45d969fcff6b5577c2bf17098dc36269b4c02197d551371c023130c0f890/bcrypt-4.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c1949bf259a388863ced887c7861da1df681cb2388645766c89fdfd9004c669", size = 147752, upload-time = "2025-02-28T01:23:02.908Z" }, + { url = "https://files.pythonhosted.org/packages/11/22/5ada0b9af72b60cbc4c9a399fdde4af0feaa609d27eb0adc61607997a3fa/bcrypt-4.3.0-cp38-abi3-macosx_10_12_universal2.whl", hash = "sha256:f81b0ed2639568bf14749112298f9e4e2b28853dab50a8b357e31798686a036d", size = 498019, upload-time = "2025-02-28T01:23:05.838Z" }, + { url = "https://files.pythonhosted.org/packages/b8/8c/252a1edc598dc1ce57905be173328eda073083826955ee3c97c7ff5ba584/bcrypt-4.3.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:864f8f19adbe13b7de11ba15d85d4a428c7e2f344bac110f667676a0ff84924b", size = 279174, upload-time = "2025-02-28T01:23:07.274Z" }, + { url = "https://files.pythonhosted.org/packages/29/5b/4547d5c49b85f0337c13929f2ccbe08b7283069eea3550a457914fc078aa/bcrypt-4.3.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e36506d001e93bffe59754397572f21bb5dc7c83f54454c990c74a468cd589e", size = 283870, upload-time = "2025-02-28T01:23:09.151Z" }, + { url = "https://files.pythonhosted.org/packages/be/21/7dbaf3fa1745cb63f776bb046e481fbababd7d344c5324eab47f5ca92dd2/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:842d08d75d9fe9fb94b18b071090220697f9f184d4547179b60734846461ed59", size = 279601, upload-time = "2025-02-28T01:23:11.461Z" }, + { url = "https://files.pythonhosted.org/packages/6d/64/e042fc8262e971347d9230d9abbe70d68b0a549acd8611c83cebd3eaec67/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7c03296b85cb87db865d91da79bf63d5609284fc0cab9472fdd8367bbd830753", size = 297660, upload-time = "2025-02-28T01:23:12.989Z" }, + { url = "https://files.pythonhosted.org/packages/50/b8/6294eb84a3fef3b67c69b4470fcdd5326676806bf2519cda79331ab3c3a9/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:62f26585e8b219cdc909b6a0069efc5e4267e25d4a3770a364ac58024f62a761", size = 284083, upload-time = "2025-02-28T01:23:14.5Z" }, + { url = "https://files.pythonhosted.org/packages/62/e6/baff635a4f2c42e8788fe1b1633911c38551ecca9a749d1052d296329da6/bcrypt-4.3.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:beeefe437218a65322fbd0069eb437e7c98137e08f22c4660ac2dc795c31f8bb", size = 279237, upload-time = "2025-02-28T01:23:16.686Z" }, + { url = "https://files.pythonhosted.org/packages/39/48/46f623f1b0c7dc2e5de0b8af5e6f5ac4cc26408ac33f3d424e5ad8da4a90/bcrypt-4.3.0-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:97eea7408db3a5bcce4a55d13245ab3fa566e23b4c67cd227062bb49e26c585d", size = 283737, upload-time = "2025-02-28T01:23:18.897Z" }, + { url = "https://files.pythonhosted.org/packages/49/8b/70671c3ce9c0fca4a6cc3cc6ccbaa7e948875a2e62cbd146e04a4011899c/bcrypt-4.3.0-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:191354ebfe305e84f344c5964c7cd5f924a3bfc5d405c75ad07f232b6dffb49f", size = 312741, upload-time = "2025-02-28T01:23:21.041Z" }, + { url = "https://files.pythonhosted.org/packages/27/fb/910d3a1caa2d249b6040a5caf9f9866c52114d51523ac2fb47578a27faee/bcrypt-4.3.0-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:41261d64150858eeb5ff43c753c4b216991e0ae16614a308a15d909503617732", size = 316472, upload-time = "2025-02-28T01:23:23.183Z" }, + { url = "https://files.pythonhosted.org/packages/dc/cf/7cf3a05b66ce466cfb575dbbda39718d45a609daa78500f57fa9f36fa3c0/bcrypt-4.3.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:33752b1ba962ee793fa2b6321404bf20011fe45b9afd2a842139de3011898fef", size = 343606, upload-time = "2025-02-28T01:23:25.361Z" }, + { url = "https://files.pythonhosted.org/packages/e3/b8/e970ecc6d7e355c0d892b7f733480f4aa8509f99b33e71550242cf0b7e63/bcrypt-4.3.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:50e6e80a4bfd23a25f5c05b90167c19030cf9f87930f7cb2eacb99f45d1c3304", size = 362867, upload-time = "2025-02-28T01:23:26.875Z" }, + { url = "https://files.pythonhosted.org/packages/a9/97/8d3118efd8354c555a3422d544163f40d9f236be5b96c714086463f11699/bcrypt-4.3.0-cp38-abi3-win32.whl", hash = "sha256:67a561c4d9fb9465ec866177e7aebcad08fe23aaf6fbd692a6fab69088abfc51", size = 160589, upload-time = "2025-02-28T01:23:28.381Z" }, + { url = "https://files.pythonhosted.org/packages/29/07/416f0b99f7f3997c69815365babbc2e8754181a4b1899d921b3c7d5b6f12/bcrypt-4.3.0-cp38-abi3-win_amd64.whl", hash = "sha256:584027857bc2843772114717a7490a37f68da563b3620f78a849bcb54dc11e62", size = 152794, upload-time = "2025-02-28T01:23:30.187Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c1/3fa0e9e4e0bfd3fd77eb8b52ec198fd6e1fd7e9402052e43f23483f956dd/bcrypt-4.3.0-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d3efb1157edebfd9128e4e46e2ac1a64e0c1fe46fb023158a407c7892b0f8c3", size = 498969, upload-time = "2025-02-28T01:23:31.945Z" }, + { url = "https://files.pythonhosted.org/packages/ce/d4/755ce19b6743394787fbd7dff6bf271b27ee9b5912a97242e3caf125885b/bcrypt-4.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08bacc884fd302b611226c01014eca277d48f0a05187666bca23aac0dad6fe24", size = 279158, upload-time = "2025-02-28T01:23:34.161Z" }, + { url = "https://files.pythonhosted.org/packages/9b/5d/805ef1a749c965c46b28285dfb5cd272a7ed9fa971f970435a5133250182/bcrypt-4.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6746e6fec103fcd509b96bacdfdaa2fbde9a553245dbada284435173a6f1aef", size = 284285, upload-time = "2025-02-28T01:23:35.765Z" }, + { url = "https://files.pythonhosted.org/packages/ab/2b/698580547a4a4988e415721b71eb45e80c879f0fb04a62da131f45987b96/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:afe327968aaf13fc143a56a3360cb27d4ad0345e34da12c7290f1b00b8fe9a8b", size = 279583, upload-time = "2025-02-28T01:23:38.021Z" }, + { url = "https://files.pythonhosted.org/packages/f2/87/62e1e426418204db520f955ffd06f1efd389feca893dad7095bf35612eec/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d9af79d322e735b1fc33404b5765108ae0ff232d4b54666d46730f8ac1a43676", size = 297896, upload-time = "2025-02-28T01:23:39.575Z" }, + { url = "https://files.pythonhosted.org/packages/cb/c6/8fedca4c2ada1b6e889c52d2943b2f968d3427e5d65f595620ec4c06fa2f/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f1e3ffa1365e8702dc48c8b360fef8d7afeca482809c5e45e653af82ccd088c1", size = 284492, upload-time = "2025-02-28T01:23:40.901Z" }, + { url = "https://files.pythonhosted.org/packages/4d/4d/c43332dcaaddb7710a8ff5269fcccba97ed3c85987ddaa808db084267b9a/bcrypt-4.3.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:3004df1b323d10021fda07a813fd33e0fd57bef0e9a480bb143877f6cba996fe", size = 279213, upload-time = "2025-02-28T01:23:42.653Z" }, + { url = "https://files.pythonhosted.org/packages/dc/7f/1e36379e169a7df3a14a1c160a49b7b918600a6008de43ff20d479e6f4b5/bcrypt-4.3.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:531457e5c839d8caea9b589a1bcfe3756b0547d7814e9ce3d437f17da75c32b0", size = 284162, upload-time = "2025-02-28T01:23:43.964Z" }, + { url = "https://files.pythonhosted.org/packages/1c/0a/644b2731194b0d7646f3210dc4d80c7fee3ecb3a1f791a6e0ae6bb8684e3/bcrypt-4.3.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:17a854d9a7a476a89dcef6c8bd119ad23e0f82557afbd2c442777a16408e614f", size = 312856, upload-time = "2025-02-28T01:23:46.011Z" }, + { url = "https://files.pythonhosted.org/packages/dc/62/2a871837c0bb6ab0c9a88bf54de0fc021a6a08832d4ea313ed92a669d437/bcrypt-4.3.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6fb1fd3ab08c0cbc6826a2e0447610c6f09e983a281b919ed721ad32236b8b23", size = 316726, upload-time = "2025-02-28T01:23:47.575Z" }, + { url = "https://files.pythonhosted.org/packages/0c/a1/9898ea3faac0b156d457fd73a3cb9c2855c6fd063e44b8522925cdd8ce46/bcrypt-4.3.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e965a9c1e9a393b8005031ff52583cedc15b7884fce7deb8b0346388837d6cfe", size = 343664, upload-time = "2025-02-28T01:23:49.059Z" }, + { url = "https://files.pythonhosted.org/packages/40/f2/71b4ed65ce38982ecdda0ff20c3ad1b15e71949c78b2c053df53629ce940/bcrypt-4.3.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:79e70b8342a33b52b55d93b3a59223a844962bef479f6a0ea318ebbcadf71505", size = 363128, upload-time = "2025-02-28T01:23:50.399Z" }, + { url = "https://files.pythonhosted.org/packages/11/99/12f6a58eca6dea4be992d6c681b7ec9410a1d9f5cf368c61437e31daa879/bcrypt-4.3.0-cp39-abi3-win32.whl", hash = "sha256:b4d4e57f0a63fd0b358eb765063ff661328f69a04494427265950c71b992a39a", size = 160598, upload-time = "2025-02-28T01:23:51.775Z" }, + { url = "https://files.pythonhosted.org/packages/a9/cf/45fb5261ece3e6b9817d3d82b2f343a505fd58674a92577923bc500bd1aa/bcrypt-4.3.0-cp39-abi3-win_amd64.whl", hash = "sha256:e53e074b120f2877a35cc6c736b8eb161377caae8925c17688bd46ba56daaa5b", size = 152799, upload-time = "2025-02-28T01:23:53.139Z" }, +] + +[[package]] +name = "binaryornot" +version = "0.4.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "chardet" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/fe/7ebfec74d49f97fc55cd38240c7a7d08134002b1e14be8c3897c0dd5e49b/binaryornot-0.4.4.tar.gz", hash = "sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061", size = 371054, upload-time = "2017-08-03T15:55:25.08Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/24/7e/f7b6f453e6481d1e233540262ccbfcf89adcd43606f44a028d7f5fae5eb2/binaryornot-0.4.4-py2.py3-none-any.whl", hash = "sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4", size = 9006, upload-time = "2017-08-03T15:55:31.23Z" }, +] + +[[package]] +name = "blinker" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/21/28/9b3f50ce0e048515135495f198351908d99540d69bfdc8c1d15b73dc55ce/blinker-1.9.0.tar.gz", hash = "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf", size = 22460, upload-time = "2024-11-08T17:25:47.436Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc", size = 8458, upload-time = "2024-11-08T17:25:46.184Z" }, +] + +[[package]] +name = "boto3" +version = "1.38.46" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "botocore" }, + { name = "jmespath" }, + { name = "s3transfer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cc/56/ca67d22364ce8f23b1885d9a1bae50d8005fa9b32ec0deddba0b19079b99/boto3-1.38.46.tar.gz", hash = "sha256:d1ca2b53138afd0341e1962bd52be6071ab7a63c5b4f89228c5ef8942c40c852", size = 111883, upload-time = "2025-06-27T20:18:17.096Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/13/0eb850c821a976346a905370bb30c86da7edc2bbc3977c445fffc6306032/boto3-1.38.46-py3-none-any.whl", hash = "sha256:9c8e88a32a6465e5905308708cff5b17547117f06982908bdfdb0108b4a65079", size = 139925, upload-time = "2025-06-27T20:18:15.366Z" }, +] + +[[package]] +name = "boto3-stubs" +version = "1.38.46" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "botocore-stubs" }, + { name = "types-s3transfer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/c6/b042b91c40e6e70760d6b63fe391e198bd939b7630e1c5b809b635a601ae/boto3_stubs-1.38.46.tar.gz", hash = "sha256:526789fc1f4a6f89f372424dc9a4109296f6bd18afab1abf5d281a94f5cfb770", size = 99865, upload-time = "2025-06-27T20:34:10.576Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/1d/2bc653af4a19170024bb54802fc68c781af64a3aef6d10ac072717593f7e/boto3_stubs-1.38.46-py3-none-any.whl", hash = "sha256:e60f1bee8fed90213725de68bdcfc1bf8765030596962656e06c131bb779972d", size = 69141, upload-time = "2025-06-27T20:34:05.211Z" }, +] + +[package.optional-dependencies] +apigateway = [ + { name = "mypy-boto3-apigateway" }, +] +cloudformation = [ + { name = "mypy-boto3-cloudformation" }, +] +ecr = [ + { name = "mypy-boto3-ecr" }, +] +iam = [ + { name = "mypy-boto3-iam" }, +] +kinesis = [ + { name = "mypy-boto3-kinesis" }, +] +lambda = [ + { name = "mypy-boto3-lambda" }, +] +s3 = [ + { name = "mypy-boto3-s3" }, +] +schemas = [ + { name = "mypy-boto3-schemas" }, +] +secretsmanager = [ + { name = "mypy-boto3-secretsmanager" }, +] +signer = [ + { name = "mypy-boto3-signer" }, +] +sqs = [ + { name = "mypy-boto3-sqs" }, +] +stepfunctions = [ + { name = "mypy-boto3-stepfunctions" }, +] +sts = [ + { name = "mypy-boto3-sts" }, +] +xray = [ + { name = "mypy-boto3-xray" }, +] + +[[package]] +name = "botocore" +version = "1.38.46" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jmespath" }, + { name = "python-dateutil" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cf/5f/d76870e4399fbfc12aa5c3bb36029edfc1a434392afc70a343c9d7d96e90/botocore-1.38.46.tar.gz", hash = "sha256:8798e5a418c27cf93195b077153644aea44cb171fcd56edc1ecebaa1e49e226e", size = 14074340, upload-time = "2025-06-27T20:18:06.646Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/00/dd90b7a0255587ba1c9754d32a221adb4a9022f181df3eef401b0b9fadfc/botocore-1.38.46-py3-none-any.whl", hash = "sha256:89ca782ffbf2e8769ca9c89234cfa5ca577f1987d07d913ee3c68c4776b1eb5b", size = 13736872, upload-time = "2025-06-27T20:18:00.901Z" }, +] + +[[package]] +name = "botocore-stubs" +version = "1.38.46" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "types-awscrt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/05/45/27cabc7c3022dcb12de5098cc646b374065f5e72fae13600ff1756f365ee/botocore_stubs-1.38.46.tar.gz", hash = "sha256:a04e69766ab8bae338911c1897492f88d05cd489cd75f06e6eb4f135f9da8c7b", size = 42299, upload-time = "2025-06-29T22:58:24.765Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/84/06490071e26bab22ac79a684e98445df118adcf80c58c33ba5af184030f2/botocore_stubs-1.38.46-py3-none-any.whl", hash = "sha256:cc21d9a7dd994bdd90872db4664d817c4719b51cda8004fd507a4bf65b085a75", size = 66083, upload-time = "2025-06-29T22:58:22.234Z" }, +] + +[[package]] +name = "bounded-pool-executor" +version = "0.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/23/f1/e34501c1228415e9fbcac8cb9c81098900e78331b30eeee1816176324bab/bounded_pool_executor-0.0.3.tar.gz", hash = "sha256:e092221bc38ade555e1064831f9ed800580fa34a4b6d8e9dd3cd961549627f6e", size = 2238, upload-time = "2019-06-04T19:29:06.672Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/23/72ecfe284a1da711257ff310b29c6667d0187a608322d58bf1c7a927c7b2/bounded_pool_executor-0.0.3-py3-none-any.whl", hash = "sha256:6f164d64919db1e6a5c187cce281f62bc559a5fed4ce064942e650c227aef190", size = 3371, upload-time = "2019-06-04T19:29:05.152Z" }, +] + +[[package]] +name = "cattrs" +version = "25.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/57/2b/561d78f488dcc303da4639e02021311728fb7fda8006dd2835550cddd9ed/cattrs-25.1.1.tar.gz", hash = "sha256:c914b734e0f2d59e5b720d145ee010f1fd9a13ee93900922a2f3f9d593b8382c", size = 435016, upload-time = "2025-06-04T20:27:15.44Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/b0/215274ef0d835bbc1056392a367646648b6084e39d489099959aefcca2af/cattrs-25.1.1-py3-none-any.whl", hash = "sha256:1b40b2d3402af7be79a7e7e097a9b4cd16d4c06e6d526644b0b26a063a1cc064", size = 69386, upload-time = "2025-06-04T20:27:13.969Z" }, +] + +[[package]] +name = "certifi" +version = "2025.7.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/76/52c535bcebe74590f296d6c77c86dabf761c41980e1347a2422e4aa2ae41/certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995", size = 163981, upload-time = "2025-07-14T03:29:28.449Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/52/34c6cf5bb9285074dc3531c437b3919e825d976fde097a7a73f79e726d03/certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2", size = 162722, upload-time = "2025-07-14T03:29:26.863Z" }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178, upload-time = "2024-09-04T20:44:12.232Z" }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840, upload-time = "2024-09-04T20:44:13.739Z" }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload-time = "2024-09-04T20:44:15.231Z" }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload-time = "2024-09-04T20:44:17.188Z" }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload-time = "2024-09-04T20:44:18.688Z" }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload-time = "2024-09-04T20:44:20.248Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload-time = "2024-09-04T20:44:21.673Z" }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload-time = "2024-09-04T20:44:23.245Z" }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload-time = "2024-09-04T20:44:24.757Z" }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload-time = "2024-09-04T20:44:26.208Z" }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload-time = "2024-09-04T20:44:27.578Z" }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989, upload-time = "2024-09-04T20:44:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802, upload-time = "2024-09-04T20:44:30.289Z" }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload-time = "2024-09-04T20:44:32.01Z" }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload-time = "2024-09-04T20:44:33.606Z" }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload-time = "2024-09-04T20:44:35.191Z" }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload-time = "2024-09-04T20:44:36.743Z" }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload-time = "2024-09-04T20:44:38.492Z" }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload-time = "2024-09-04T20:44:40.046Z" }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload-time = "2024-09-04T20:44:41.616Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475, upload-time = "2024-09-04T20:44:43.733Z" }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009, upload-time = "2024-09-04T20:44:45.309Z" }, +] + +[[package]] +name = "cfgv" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114, upload-time = "2023-08-12T20:38:17.776Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249, upload-time = "2023-08-12T20:38:16.269Z" }, +] + +[[package]] +name = "cfn-lint" +version = "1.36.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aws-sam-translator" }, + { name = "jsonpatch" }, + { name = "networkx" }, + { name = "pyyaml" }, + { name = "regex" }, + { name = "sympy" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3a/72/3c792b1814226ebfb8944d8df707979a43f3e5ee2f3f8093ee17d7692656/cfn_lint-1.36.1.tar.gz", hash = "sha256:ccb85398fb1d8d8d87edafe207ab6a133c4ab9aefd3ff93591b6ad8c3ccab291", size = 3108363, upload-time = "2025-06-20T06:01:26.336Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/3c/2f49710301e1bb4289af5c7ba908d84fa1a32bac455daa64e2a6e2213721/cfn_lint-1.36.1-py3-none-any.whl", hash = "sha256:1f5eae322cabc9b73a717b83bf3a73709e2193fbf7fd399339e016a0838de7a3", size = 5219010, upload-time = "2025-06-20T06:01:23.585Z" }, +] + +[[package]] +name = "chardet" +version = "5.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/f7b6ab21ec75897ed80c17d79b15951a719226b9fababf1e40ea74d69079/chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", size = 2069618, upload-time = "2023-08-01T19:23:02.662Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970", size = 199385, upload-time = "2023-08-01T19:23:00.661Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload-time = "2025-05-02T08:34:42.01Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936, upload-time = "2025-05-02T08:32:33.712Z" }, + { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790, upload-time = "2025-05-02T08:32:35.768Z" }, + { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924, upload-time = "2025-05-02T08:32:37.284Z" }, + { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626, upload-time = "2025-05-02T08:32:38.803Z" }, + { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567, upload-time = "2025-05-02T08:32:40.251Z" }, + { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957, upload-time = "2025-05-02T08:32:41.705Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408, upload-time = "2025-05-02T08:32:43.709Z" }, + { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399, upload-time = "2025-05-02T08:32:46.197Z" }, + { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815, upload-time = "2025-05-02T08:32:48.105Z" }, + { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537, upload-time = "2025-05-02T08:32:49.719Z" }, + { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565, upload-time = "2025-05-02T08:32:51.404Z" }, + { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357, upload-time = "2025-05-02T08:32:53.079Z" }, + { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776, upload-time = "2025-05-02T08:32:54.573Z" }, + { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622, upload-time = "2025-05-02T08:32:56.363Z" }, + { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435, upload-time = "2025-05-02T08:32:58.551Z" }, + { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653, upload-time = "2025-05-02T08:33:00.342Z" }, + { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231, upload-time = "2025-05-02T08:33:02.081Z" }, + { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243, upload-time = "2025-05-02T08:33:04.063Z" }, + { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442, upload-time = "2025-05-02T08:33:06.418Z" }, + { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147, upload-time = "2025-05-02T08:33:08.183Z" }, + { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057, upload-time = "2025-05-02T08:33:09.986Z" }, + { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454, upload-time = "2025-05-02T08:33:11.814Z" }, + { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174, upload-time = "2025-05-02T08:33:13.707Z" }, + { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166, upload-time = "2025-05-02T08:33:15.458Z" }, + { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064, upload-time = "2025-05-02T08:33:17.06Z" }, + { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641, upload-time = "2025-05-02T08:33:18.753Z" }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, +] + +[[package]] +name = "chevron" +version = "0.14.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/15/1f/ca74b65b19798895d63a6e92874162f44233467c9e7c1ed8afd19016ebe9/chevron-0.14.0.tar.gz", hash = "sha256:87613aafdf6d77b6a90ff073165a61ae5086e21ad49057aa0e53681601800ebf", size = 11440, upload-time = "2021-01-02T22:47:59.233Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/93/342cc62a70ab727e093ed98e02a725d85b746345f05d2b5e5034649f4ec8/chevron-0.14.0-py3-none-any.whl", hash = "sha256:fbf996a709f8da2e745ef763f482ce2d311aa817d287593a5b990d6d6e4f0443", size = 11595, upload-time = "2021-01-02T22:47:57.847Z" }, +] + +[[package]] +name = "click" +version = "8.1.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593, upload-time = "2024-12-21T18:38:44.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188, upload-time = "2024-12-21T18:38:41.666Z" }, +] + +[[package]] +name = "cloudpickle" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113, upload-time = "2025-01-14T17:02:05.085Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992, upload-time = "2025-01-14T17:02:02.417Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "comm" +version = "0.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210, upload-time = "2024-03-12T16:53:41.133Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180, upload-time = "2024-03-12T16:53:39.226Z" }, +] + +[[package]] +name = "constructs" +version = "10.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsii" }, + { name = "publication" }, + { name = "typeguard" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/46/84/f608a0a71a05a476b2f1761ab8f3f776677d39f7996ecf1092a1ce741a7c/constructs-10.4.2.tar.gz", hash = "sha256:ce54724360fffe10bab27d8a081844eb81f5ace7d7c62c84b719c49f164d5307", size = 65434, upload-time = "2024-10-14T12:58:02.822Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/d9/c5e7458f323bf063a9a54200742f2494e2ce3c7c6873e0ff80f88033c75f/constructs-10.4.2-py3-none-any.whl", hash = "sha256:1f0f59b004edebfde0f826340698b8c34611f57848139b7954904c61645f13c1", size = 63509, upload-time = "2024-10-14T12:57:59.828Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +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/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb", size = 293419, upload-time = "2025-07-26T12:01:21.16Z" }, + { url = "https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6", size = 273979, upload-time = "2025-07-26T12:01:22.448Z" }, + { url = "https://files.pythonhosted.org/packages/d4/1c/a12359b9b2ca3a845e8f7f9ac08bdf776114eb931392fcad91743e2ea17b/contourpy-1.3.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92d9abc807cf7d0e047b95ca5d957cf4792fcd04e920ca70d48add15c1a90ea7", size = 332653, upload-time = "2025-07-26T12:01:24.155Z" }, + { url = "https://files.pythonhosted.org/packages/63/12/897aeebfb475b7748ea67b61e045accdfcf0d971f8a588b67108ed7f5512/contourpy-1.3.3-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2e8faa0ed68cb29af51edd8e24798bb661eac3bd9f65420c1887b6ca89987c8", size = 379536, upload-time = "2025-07-26T12:01:25.91Z" }, + { url = "https://files.pythonhosted.org/packages/43/8a/a8c584b82deb248930ce069e71576fc09bd7174bbd35183b7943fb1064fd/contourpy-1.3.3-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:626d60935cf668e70a5ce6ff184fd713e9683fb458898e4249b63be9e28286ea", size = 384397, upload-time = "2025-07-26T12:01:27.152Z" }, + { url = "https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1", size = 362601, upload-time = "2025-07-26T12:01:28.808Z" }, + { url = "https://files.pythonhosted.org/packages/05/0a/a3fe3be3ee2dceb3e615ebb4df97ae6f3828aa915d3e10549ce016302bd1/contourpy-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:451e71b5a7d597379ef572de31eeb909a87246974d960049a9848c3bc6c41bf7", size = 1331288, upload-time = "2025-07-26T12:01:31.198Z" }, + { url = "https://files.pythonhosted.org/packages/33/1d/acad9bd4e97f13f3e2b18a3977fe1b4a37ecf3d38d815333980c6c72e963/contourpy-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:459c1f020cd59fcfe6650180678a9993932d80d44ccde1fa1868977438f0b411", size = 1403386, upload-time = "2025-07-26T12:01:33.947Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8f/5847f44a7fddf859704217a99a23a4f6417b10e5ab1256a179264561540e/contourpy-1.3.3-cp312-cp312-win32.whl", hash = "sha256:023b44101dfe49d7d53932be418477dba359649246075c996866106da069af69", size = 185018, upload-time = "2025-07-26T12:01:35.64Z" }, + { url = "https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:8153b8bfc11e1e4d75bcb0bff1db232f9e10b274e0929de9d608027e0d34ff8b", size = 226567, upload-time = "2025-07-26T12:01:36.804Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e2/f05240d2c39a1ed228d8328a78b6f44cd695f7ef47beb3e684cf93604f86/contourpy-1.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:07ce5ed73ecdc4a03ffe3e1b3e3c1166db35ae7584be76f65dbbe28a7791b0cc", size = 193655, upload-time = "2025-07-26T12:01:37.999Z" }, + { url = "https://files.pythonhosted.org/packages/68/35/0167aad910bbdb9599272bd96d01a9ec6852f36b9455cf2ca67bd4cc2d23/contourpy-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:177fb367556747a686509d6fef71d221a4b198a3905fe824430e5ea0fda54eb5", size = 293257, upload-time = "2025-07-26T12:01:39.367Z" }, + { url = "https://files.pythonhosted.org/packages/96/e4/7adcd9c8362745b2210728f209bfbcf7d91ba868a2c5f40d8b58f54c509b/contourpy-1.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d002b6f00d73d69333dac9d0b8d5e84d9724ff9ef044fd63c5986e62b7c9e1b1", size = 274034, upload-time = "2025-07-26T12:01:40.645Z" }, + { url = "https://files.pythonhosted.org/packages/73/23/90e31ceeed1de63058a02cb04b12f2de4b40e3bef5e082a7c18d9c8ae281/contourpy-1.3.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:348ac1f5d4f1d66d3322420f01d42e43122f43616e0f194fc1c9f5d830c5b286", size = 334672, upload-time = "2025-07-26T12:01:41.942Z" }, + { url = "https://files.pythonhosted.org/packages/ed/93/b43d8acbe67392e659e1d984700e79eb67e2acb2bd7f62012b583a7f1b55/contourpy-1.3.3-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:655456777ff65c2c548b7c454af9c6f33f16c8884f11083244b5819cc214f1b5", size = 381234, upload-time = "2025-07-26T12:01:43.499Z" }, + { url = "https://files.pythonhosted.org/packages/46/3b/bec82a3ea06f66711520f75a40c8fc0b113b2a75edb36aa633eb11c4f50f/contourpy-1.3.3-cp313-cp313-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:644a6853d15b2512d67881586bd03f462c7ab755db95f16f14d7e238f2852c67", size = 385169, upload-time = "2025-07-26T12:01:45.219Z" }, + { url = "https://files.pythonhosted.org/packages/4b/32/e0f13a1c5b0f8572d0ec6ae2f6c677b7991fafd95da523159c19eff0696a/contourpy-1.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4debd64f124ca62069f313a9cb86656ff087786016d76927ae2cf37846b006c9", size = 362859, upload-time = "2025-07-26T12:01:46.519Z" }, + { url = "https://files.pythonhosted.org/packages/33/71/e2a7945b7de4e58af42d708a219f3b2f4cff7386e6b6ab0a0fa0033c49a9/contourpy-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a15459b0f4615b00bbd1e91f1b9e19b7e63aea7483d03d804186f278c0af2659", size = 1332062, upload-time = "2025-07-26T12:01:48.964Z" }, + { url = "https://files.pythonhosted.org/packages/12/fc/4e87ac754220ccc0e807284f88e943d6d43b43843614f0a8afa469801db0/contourpy-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca0fdcd73925568ca027e0b17ab07aad764be4706d0a925b89227e447d9737b7", size = 1403932, upload-time = "2025-07-26T12:01:51.979Z" }, + { url = "https://files.pythonhosted.org/packages/a6/2e/adc197a37443f934594112222ac1aa7dc9a98faf9c3842884df9a9d8751d/contourpy-1.3.3-cp313-cp313-win32.whl", hash = "sha256:b20c7c9a3bf701366556e1b1984ed2d0cedf999903c51311417cf5f591d8c78d", size = 185024, upload-time = "2025-07-26T12:01:53.245Z" }, + { url = "https://files.pythonhosted.org/packages/18/0b/0098c214843213759692cc638fce7de5c289200a830e5035d1791d7a2338/contourpy-1.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:1cadd8b8969f060ba45ed7c1b714fe69185812ab43bd6b86a9123fe8f99c3263", size = 226578, upload-time = "2025-07-26T12:01:54.422Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9a/2f6024a0c5995243cd63afdeb3651c984f0d2bc727fd98066d40e141ad73/contourpy-1.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:fd914713266421b7536de2bfa8181aa8c699432b6763a0ea64195ebe28bff6a9", size = 193524, upload-time = "2025-07-26T12:01:55.73Z" }, + { url = "https://files.pythonhosted.org/packages/c0/b3/f8a1a86bd3298513f500e5b1f5fd92b69896449f6cab6a146a5d52715479/contourpy-1.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:88df9880d507169449d434c293467418b9f6cbe82edd19284aa0409e7fdb933d", size = 306730, upload-time = "2025-07-26T12:01:57.051Z" }, + { url = "https://files.pythonhosted.org/packages/3f/11/4780db94ae62fc0c2053909b65dc3246bd7cecfc4f8a20d957ad43aa4ad8/contourpy-1.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d06bb1f751ba5d417047db62bca3c8fde202b8c11fb50742ab3ab962c81e8216", size = 287897, upload-time = "2025-07-26T12:01:58.663Z" }, + { url = "https://files.pythonhosted.org/packages/ae/15/e59f5f3ffdd6f3d4daa3e47114c53daabcb18574a26c21f03dc9e4e42ff0/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e4e6b05a45525357e382909a4c1600444e2a45b4795163d3b22669285591c1ae", size = 326751, upload-time = "2025-07-26T12:02:00.343Z" }, + { url = "https://files.pythonhosted.org/packages/0f/81/03b45cfad088e4770b1dcf72ea78d3802d04200009fb364d18a493857210/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ab3074b48c4e2cf1a960e6bbeb7f04566bf36b1861d5c9d4d8ac04b82e38ba20", size = 375486, upload-time = "2025-07-26T12:02:02.128Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ba/49923366492ffbdd4486e970d421b289a670ae8cf539c1ea9a09822b371a/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c3d53c796f8647d6deb1abe867daeb66dcc8a97e8455efa729516b997b8ed99", size = 388106, upload-time = "2025-07-26T12:02:03.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/52/5b00ea89525f8f143651f9f03a0df371d3cbd2fccd21ca9b768c7a6500c2/contourpy-1.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50ed930df7289ff2a8d7afeb9603f8289e5704755c7e5c3bbd929c90c817164b", size = 352548, upload-time = "2025-07-26T12:02:05.165Z" }, + { url = "https://files.pythonhosted.org/packages/32/1d/a209ec1a3a3452d490f6b14dd92e72280c99ae3d1e73da74f8277d4ee08f/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4feffb6537d64b84877da813a5c30f1422ea5739566abf0bd18065ac040e120a", size = 1322297, upload-time = "2025-07-26T12:02:07.379Z" }, + { url = "https://files.pythonhosted.org/packages/bc/9e/46f0e8ebdd884ca0e8877e46a3f4e633f6c9c8c4f3f6e72be3fe075994aa/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2b7e9480ffe2b0cd2e787e4df64270e3a0440d9db8dc823312e2c940c167df7e", size = 1391023, upload-time = "2025-07-26T12:02:10.171Z" }, + { url = "https://files.pythonhosted.org/packages/b9/70/f308384a3ae9cd2209e0849f33c913f658d3326900d0ff5d378d6a1422d2/contourpy-1.3.3-cp313-cp313t-win32.whl", hash = "sha256:283edd842a01e3dcd435b1c5116798d661378d83d36d337b8dde1d16a5fc9ba3", size = 196157, upload-time = "2025-07-26T12:02:11.488Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/880f890a6663b84d9e34a6f88cded89d78f0091e0045a284427cb6b18521/contourpy-1.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:87acf5963fc2b34825e5b6b048f40e3635dd547f590b04d2ab317c2619ef7ae8", size = 240570, upload-time = "2025-07-26T12:02:12.754Z" }, + { url = "https://files.pythonhosted.org/packages/80/99/2adc7d8ffead633234817ef8e9a87115c8a11927a94478f6bb3d3f4d4f7d/contourpy-1.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:3c30273eb2a55024ff31ba7d052dde990d7d8e5450f4bbb6e913558b3d6c2301", size = 199713, upload-time = "2025-07-26T12:02:14.4Z" }, + { url = "https://files.pythonhosted.org/packages/72/8b/4546f3ab60f78c514ffb7d01a0bd743f90de36f0019d1be84d0a708a580a/contourpy-1.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fde6c716d51c04b1c25d0b90364d0be954624a0ee9d60e23e850e8d48353d07a", size = 292189, upload-time = "2025-07-26T12:02:16.095Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e1/3542a9cb596cadd76fcef413f19c79216e002623158befe6daa03dbfa88c/contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:cbedb772ed74ff5be440fa8eee9bd49f64f6e3fc09436d9c7d8f1c287b121d77", size = 273251, upload-time = "2025-07-26T12:02:17.524Z" }, + { url = "https://files.pythonhosted.org/packages/b1/71/f93e1e9471d189f79d0ce2497007731c1e6bf9ef6d1d61b911430c3db4e5/contourpy-1.3.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22e9b1bd7a9b1d652cd77388465dc358dafcd2e217d35552424aa4f996f524f5", size = 335810, upload-time = "2025-07-26T12:02:18.9Z" }, + { url = "https://files.pythonhosted.org/packages/91/f9/e35f4c1c93f9275d4e38681a80506b5510e9327350c51f8d4a5a724d178c/contourpy-1.3.3-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a22738912262aa3e254e4f3cb079a95a67132fc5a063890e224393596902f5a4", size = 382871, upload-time = "2025-07-26T12:02:20.418Z" }, + { url = "https://files.pythonhosted.org/packages/b5/71/47b512f936f66a0a900d81c396a7e60d73419868fba959c61efed7a8ab46/contourpy-1.3.3-cp314-cp314-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:afe5a512f31ee6bd7d0dda52ec9864c984ca3d66664444f2d72e0dc4eb832e36", size = 386264, upload-time = "2025-07-26T12:02:21.916Z" }, + { url = "https://files.pythonhosted.org/packages/04/5f/9ff93450ba96b09c7c2b3f81c94de31c89f92292f1380261bd7195bea4ea/contourpy-1.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f64836de09927cba6f79dcd00fdd7d5329f3fccc633468507079c829ca4db4e3", size = 363819, upload-time = "2025-07-26T12:02:23.759Z" }, + { url = "https://files.pythonhosted.org/packages/3e/a6/0b185d4cc480ee494945cde102cb0149ae830b5fa17bf855b95f2e70ad13/contourpy-1.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1fd43c3be4c8e5fd6e4f2baeae35ae18176cf2e5cced681cca908addf1cdd53b", size = 1333650, upload-time = "2025-07-26T12:02:26.181Z" }, + { url = "https://files.pythonhosted.org/packages/43/d7/afdc95580ca56f30fbcd3060250f66cedbde69b4547028863abd8aa3b47e/contourpy-1.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6afc576f7b33cf00996e5c1102dc2a8f7cc89e39c0b55df93a0b78c1bd992b36", size = 1404833, upload-time = "2025-07-26T12:02:28.782Z" }, + { url = "https://files.pythonhosted.org/packages/e2/e2/366af18a6d386f41132a48f033cbd2102e9b0cf6345d35ff0826cd984566/contourpy-1.3.3-cp314-cp314-win32.whl", hash = "sha256:66c8a43a4f7b8df8b71ee1840e4211a3c8d93b214b213f590e18a1beca458f7d", size = 189692, upload-time = "2025-07-26T12:02:30.128Z" }, + { url = "https://files.pythonhosted.org/packages/7d/c2/57f54b03d0f22d4044b8afb9ca0e184f8b1afd57b4f735c2fa70883dc601/contourpy-1.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:cf9022ef053f2694e31d630feaacb21ea24224be1c3ad0520b13d844274614fd", size = 232424, upload-time = "2025-07-26T12:02:31.395Z" }, + { url = "https://files.pythonhosted.org/packages/18/79/a9416650df9b525737ab521aa181ccc42d56016d2123ddcb7b58e926a42c/contourpy-1.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:95b181891b4c71de4bb404c6621e7e2390745f887f2a026b2d99e92c17892339", size = 198300, upload-time = "2025-07-26T12:02:32.956Z" }, + { url = "https://files.pythonhosted.org/packages/1f/42/38c159a7d0f2b7b9c04c64ab317042bb6952b713ba875c1681529a2932fe/contourpy-1.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:33c82d0138c0a062380332c861387650c82e4cf1747aaa6938b9b6516762e772", size = 306769, upload-time = "2025-07-26T12:02:34.2Z" }, + { url = "https://files.pythonhosted.org/packages/c3/6c/26a8205f24bca10974e77460de68d3d7c63e282e23782f1239f226fcae6f/contourpy-1.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ea37e7b45949df430fe649e5de8351c423430046a2af20b1c1961cae3afcda77", size = 287892, upload-time = "2025-07-26T12:02:35.807Z" }, + { url = "https://files.pythonhosted.org/packages/66/06/8a475c8ab718ebfd7925661747dbb3c3ee9c82ac834ccb3570be49d129f4/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d304906ecc71672e9c89e87c4675dc5c2645e1f4269a5063b99b0bb29f232d13", size = 326748, upload-time = "2025-07-26T12:02:37.193Z" }, + { url = "https://files.pythonhosted.org/packages/b4/a3/c5ca9f010a44c223f098fccd8b158bb1cb287378a31ac141f04730dc49be/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ca658cd1a680a5c9ea96dc61cdbae1e85c8f25849843aa799dfd3cb370ad4fbe", size = 375554, upload-time = "2025-07-26T12:02:38.894Z" }, + { url = "https://files.pythonhosted.org/packages/80/5b/68bd33ae63fac658a4145088c1e894405e07584a316738710b636c6d0333/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ab2fd90904c503739a75b7c8c5c01160130ba67944a7b77bbf36ef8054576e7f", size = 388118, upload-time = "2025-07-26T12:02:40.642Z" }, + { url = "https://files.pythonhosted.org/packages/40/52/4c285a6435940ae25d7410a6c36bda5145839bc3f0beb20c707cda18b9d2/contourpy-1.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7301b89040075c30e5768810bc96a8e8d78085b47d8be6e4c3f5a0b4ed478a0", size = 352555, upload-time = "2025-07-26T12:02:42.25Z" }, + { url = "https://files.pythonhosted.org/packages/24/ee/3e81e1dd174f5c7fefe50e85d0892de05ca4e26ef1c9a59c2a57e43b865a/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2a2a8b627d5cc6b7c41a4beff6c5ad5eb848c88255fda4a8745f7e901b32d8e4", size = 1322295, upload-time = "2025-07-26T12:02:44.668Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b2/6d913d4d04e14379de429057cd169e5e00f6c2af3bb13e1710bcbdb5da12/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fd6ec6be509c787f1caf6b247f0b1ca598bef13f4ddeaa126b7658215529ba0f", size = 1391027, upload-time = "2025-07-26T12:02:47.09Z" }, + { url = "https://files.pythonhosted.org/packages/93/8a/68a4ec5c55a2971213d29a9374913f7e9f18581945a7a31d1a39b5d2dfe5/contourpy-1.3.3-cp314-cp314t-win32.whl", hash = "sha256:e74a9a0f5e3fff48fb5a7f2fd2b9b70a3fe014a67522f79b7cca4c0c7e43c9ae", size = 202428, upload-time = "2025-07-26T12:02:48.691Z" }, + { url = "https://files.pythonhosted.org/packages/fa/96/fd9f641ffedc4fa3ace923af73b9d07e869496c9cc7a459103e6e978992f/contourpy-1.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:13b68d6a62db8eafaebb8039218921399baf6e47bf85006fd8529f2a08ef33fc", size = 250331, upload-time = "2025-07-26T12:02:50.137Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8c/469afb6465b853afff216f9528ffda78a915ff880ed58813ba4faf4ba0b6/contourpy-1.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:b7448cb5a725bb1e35ce88771b86fba35ef418952474492cf7c764059933ff8b", size = 203831, upload-time = "2025-07-26T12:02:51.449Z" }, +] + +[[package]] +name = "cookiecutter" +version = "2.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "arrow" }, + { name = "binaryornot" }, + { name = "click" }, + { name = "jinja2" }, + { name = "python-slugify" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "rich" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/52/17/9f2cd228eb949a91915acd38d3eecdc9d8893dde353b603f0db7e9f6be55/cookiecutter-2.6.0.tar.gz", hash = "sha256:db21f8169ea4f4fdc2408d48ca44859349de2647fbe494a9d6c3edfc0542c21c", size = 158767, upload-time = "2024-02-21T18:02:41.949Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/d9/0137658a353168ffa9d0fc14b812d3834772040858ddd1cb6eeaf09f7a44/cookiecutter-2.6.0-py3-none-any.whl", hash = "sha256:a54a8e37995e4ed963b3e82831072d1ad4b005af736bb17b99c2cbd9d41b6e2d", size = 39177, upload-time = "2024-02-21T18:02:39.569Z" }, +] + +[[package]] +name = "crc32c" +version = "2.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7f/4c/4e40cc26347ac8254d3f25b9f94710b8e8df24ee4dddc1ba41907a88a94d/crc32c-2.7.1.tar.gz", hash = "sha256:f91b144a21eef834d64178e01982bb9179c354b3e9e5f4c803b0e5096384968c", size = 45712, upload-time = "2024-09-24T06:20:17.553Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/02/998dc21333413ce63fe4c1ca70eafe61ca26afc7eb353f20cecdb77d614e/crc32c-2.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f7d1c4e761fe42bf856130daf8b2658df33fe0ced3c43dadafdfeaa42b57b950", size = 49568, upload-time = "2024-09-24T06:18:32.425Z" }, + { url = "https://files.pythonhosted.org/packages/9c/3e/e3656bfa76e50ef87b7136fef2dbf3c46e225629432fc9184fdd7fd187ff/crc32c-2.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:73361c79a6e4605204457f19fda18b042a94508a52e53d10a4239da5fb0f6a34", size = 37019, upload-time = "2024-09-24T06:18:34.097Z" }, + { url = "https://files.pythonhosted.org/packages/0b/7d/5ff9904046ad15a08772515db19df43107bf5e3901a89c36a577b5f40ba0/crc32c-2.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:afd778fc8ac0ed2ffbfb122a9aa6a0e409a8019b894a1799cda12c01534493e0", size = 35373, upload-time = "2024-09-24T06:18:35.02Z" }, + { url = "https://files.pythonhosted.org/packages/4d/41/4aedc961893f26858ab89fc772d0eaba91f9870f19eaa933999dcacb94ec/crc32c-2.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56ef661b34e9f25991fface7f9ad85e81bbc1b3fe3b916fd58c893eabe2fa0b8", size = 54675, upload-time = "2024-09-24T06:18:35.954Z" }, + { url = "https://files.pythonhosted.org/packages/d6/63/8cabf09b7e39b9fec8f7010646c8b33057fc8d67e6093b3cc15563d23533/crc32c-2.7.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:571aa4429444b5d7f588e4377663592145d2d25eb1635abb530f1281794fc7c9", size = 52386, upload-time = "2024-09-24T06:18:36.896Z" }, + { url = "https://files.pythonhosted.org/packages/79/13/13576941bf7cf95026abae43d8427c812c0054408212bf8ed490eda846b0/crc32c-2.7.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c02a3bd67dea95cdb25844aaf44ca2e1b0c1fd70b287ad08c874a95ef4bb38db", size = 53495, upload-time = "2024-09-24T06:18:38.099Z" }, + { url = "https://files.pythonhosted.org/packages/3d/b6/55ffb26d0517d2d6c6f430ce2ad36ae7647c995c5bfd7abce7f32bb2bad1/crc32c-2.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:99d17637c4867672cb8adeea007294e3c3df9d43964369516cfe2c1f47ce500a", size = 54456, upload-time = "2024-09-24T06:18:39.051Z" }, + { url = "https://files.pythonhosted.org/packages/c2/1a/5562e54cb629ecc5543d3604dba86ddfc7c7b7bf31d64005b38a00d31d31/crc32c-2.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f4a400ac3c69a32e180d8753fd7ec7bccb80ade7ab0812855dce8a208e72495f", size = 52647, upload-time = "2024-09-24T06:18:40.021Z" }, + { url = "https://files.pythonhosted.org/packages/48/ec/ce4138eaf356cd9aae60bbe931755e5e0151b3eca5f491fce6c01b97fd59/crc32c-2.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:588587772e55624dd9c7a906ec9e8773ae0b6ac5e270fc0bc84ee2758eba90d5", size = 53332, upload-time = "2024-09-24T06:18:40.925Z" }, + { url = "https://files.pythonhosted.org/packages/5e/b5/144b42cd838a901175a916078781cb2c3c9f977151c9ba085aebd6d15b22/crc32c-2.7.1-cp312-cp312-win32.whl", hash = "sha256:9f14b60e5a14206e8173dd617fa0c4df35e098a305594082f930dae5488da428", size = 38371, upload-time = "2024-09-24T06:18:42.711Z" }, + { url = "https://files.pythonhosted.org/packages/ae/c4/7929dcd5d9b57db0cce4fe6f6c191049380fc6d8c9b9f5581967f4ec018e/crc32c-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:7c810a246660a24dc818047dc5f89c7ce7b2814e1e08a8e99993f4103f7219e8", size = 39805, upload-time = "2024-09-24T06:18:43.6Z" }, + { url = "https://files.pythonhosted.org/packages/bf/98/1a6d60d5b3b5edc8382777b64100343cb4aa6a7e172fae4a6cfcb8ebbbd9/crc32c-2.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:24949bffb06fc411cc18188d33357923cb935273642164d0bb37a5f375654169", size = 49567, upload-time = "2024-09-24T06:18:44.485Z" }, + { url = "https://files.pythonhosted.org/packages/4f/56/0dd652d4e950e6348bbf16b964b3325e4ad8220470774128fc0b0dd069cb/crc32c-2.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2d5d326e7e118d4fa60187770d86b66af2fdfc63ce9eeb265f0d3e7d49bebe0b", size = 37018, upload-time = "2024-09-24T06:18:45.434Z" }, + { url = "https://files.pythonhosted.org/packages/47/02/2bd65fdef10139b6a802d83a7f966b7750fe5ffb1042f7cbe5dbb6403869/crc32c-2.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba110df60c64c8e2d77a9425b982a520ccdb7abe42f06604f4d98a45bb1fff62", size = 35374, upload-time = "2024-09-24T06:18:46.304Z" }, + { url = "https://files.pythonhosted.org/packages/a9/0d/3e797d1ed92d357a6a4c5b41cea15a538b27a8fdf18c7863747eb50b73ad/crc32c-2.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c277f9d16a3283e064d54854af0976b72abaa89824955579b2b3f37444f89aae", size = 54641, upload-time = "2024-09-24T06:18:47.207Z" }, + { url = "https://files.pythonhosted.org/packages/a7/d3/4ddeef755caaa75680c559562b6c71f5910fee4c4f3a2eb5ea8b57f0e48c/crc32c-2.7.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:881af0478a01331244e27197356929edbdeaef6a9f81b5c6bacfea18d2139289", size = 52338, upload-time = "2024-09-24T06:18:49.31Z" }, + { url = "https://files.pythonhosted.org/packages/01/cf/32f019be5de9f6e180926a50ee5f08648e686c7d9a59f2c5d0806a77b1c7/crc32c-2.7.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:724d5ff4d29ff093a983ae656be3307093706d850ea2a233bf29fcacc335d945", size = 53447, upload-time = "2024-09-24T06:18:50.296Z" }, + { url = "https://files.pythonhosted.org/packages/b2/8b/92f3f62f3bafe8f7ab4af7bfb7246dc683fd11ec0d6dfb73f91e09079f69/crc32c-2.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2416c4d88696ac322632555c0f81ab35e15f154bc96055da6cf110d642dbc10", size = 54484, upload-time = "2024-09-24T06:18:51.311Z" }, + { url = "https://files.pythonhosted.org/packages/98/b2/113a50f8781f76af5ac65ffdb907e72bddbe974de8e02247f0d58bc48040/crc32c-2.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:60254251b88ec9b9795215f0f9ec015a6b5eef8b2c5fba1267c672d83c78fc02", size = 52703, upload-time = "2024-09-24T06:18:52.488Z" }, + { url = "https://files.pythonhosted.org/packages/b4/6c/309229e9acda8cf36a8ff4061d70b54d905f79b7037e16883ce6590a24ab/crc32c-2.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:edefc0e46f3c37372183f70338e5bdee42f6789b62fcd36ec53aa933e9dfbeaf", size = 53367, upload-time = "2024-09-24T06:18:53.49Z" }, + { url = "https://files.pythonhosted.org/packages/b5/2a/6c6324d920396e1bd9f3efbe8753da071be0ca52bd22d6c82d446b8d6975/crc32c-2.7.1-cp313-cp313-win32.whl", hash = "sha256:813af8111218970fe2adb833c5e5239f091b9c9e76f03b4dd91aaba86e99b499", size = 38377, upload-time = "2024-09-24T06:18:54.487Z" }, + { url = "https://files.pythonhosted.org/packages/db/a0/f01ccfab538db07ef3f6b4ede46357ff147a81dd4f3c59ca6a34c791a549/crc32c-2.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:7d9ede7be8e4ec1c9e90aaf6884decbeef10e3473e6ddac032706d710cab5888", size = 39803, upload-time = "2024-09-24T06:18:55.419Z" }, + { url = "https://files.pythonhosted.org/packages/1b/80/61dcae7568b33acfde70c9d651c7d891c0c578c39cc049107c1cf61f1367/crc32c-2.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:db9ac92294284b22521356715784b91cc9094eee42a5282ab281b872510d1831", size = 49386, upload-time = "2024-09-24T06:18:56.813Z" }, + { url = "https://files.pythonhosted.org/packages/1e/f1/80f17c089799ab2b4c247443bdd101d6ceda30c46d7f193e16b5ca29c5a0/crc32c-2.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8fcd7f2f29a30dc92af64a9ee3d38bde0c82bd20ad939999427aac94bbd87373", size = 36937, upload-time = "2024-09-24T06:18:57.77Z" }, + { url = "https://files.pythonhosted.org/packages/63/42/5fcfc71a3de493d920fd2590843762a2749981ea56b802b380e5df82309d/crc32c-2.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5c056ef043393085523e149276a7ce0cb534b872e04f3e20d74d9a94a75c0ad7", size = 35292, upload-time = "2024-09-24T06:18:58.676Z" }, + { url = "https://files.pythonhosted.org/packages/03/de/fef962e898a953558fe1c55141644553e84ef4190693a31244c59a0856c7/crc32c-2.7.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03a92551a343702629af91f78d205801219692b6909f8fa126b830e332bfb0e0", size = 54223, upload-time = "2024-09-24T06:18:59.675Z" }, + { url = "https://files.pythonhosted.org/packages/21/14/fceca1a6f45c0a1814fe8602a65657b75c27425162445925ba87438cad6b/crc32c-2.7.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb9424ec1a8ca54763155a703e763bcede82e6569fe94762614bb2de1412d4e1", size = 51588, upload-time = "2024-09-24T06:19:00.938Z" }, + { url = "https://files.pythonhosted.org/packages/13/3b/13d40a7dfbf9ef05c84a0da45544ee72080dca4ce090679e5105689984bd/crc32c-2.7.1-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88732070f6175530db04e0bb36880ac45c33d49f8ac43fa0e50cfb1830049d23", size = 52678, upload-time = "2024-09-24T06:19:02.661Z" }, + { url = "https://files.pythonhosted.org/packages/36/09/65ffc4fb9fa60ff6714eeb50a92284a4525e5943f0b040b572c0c76368c1/crc32c-2.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:57a20dfc27995f568f64775eea2bbb58ae269f1a1144561df5e4a4955f79db32", size = 53847, upload-time = "2024-09-24T06:19:03.705Z" }, + { url = "https://files.pythonhosted.org/packages/24/71/938e926085b7288da052db7c84416f3ce25e71baf7ab5b63824c7bcb6f22/crc32c-2.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:f7186d098bfd2cff25eac6880b7c7ad80431b90610036131c1c7dd0eab42a332", size = 51860, upload-time = "2024-09-24T06:19:04.726Z" }, + { url = "https://files.pythonhosted.org/packages/3c/d8/4526d5380189d6f2fa27256c204100f30214fe402f47cf6e9fb9a91ab890/crc32c-2.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:55a77e29a265418fa34bef15bd0f2c60afae5348988aaf35ed163b4bbf93cf37", size = 52508, upload-time = "2024-09-24T06:19:05.731Z" }, + { url = "https://files.pythonhosted.org/packages/19/30/15f7e35176488b77e5b88751947d321d603fccac273099ace27c7b2d50a6/crc32c-2.7.1-cp313-cp313t-win32.whl", hash = "sha256:ae38a4b6aa361595d81cab441405fbee905c72273e80a1c010fb878ae77ac769", size = 38319, upload-time = "2024-09-24T06:19:07.233Z" }, + { url = "https://files.pythonhosted.org/packages/19/c4/0b3eee04dac195f4730d102d7a9fbea894ae7a32ce075f84336df96a385d/crc32c-2.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:eee2a43b663feb6c79a6c1c6e5eae339c2b72cfac31ee54ec0209fa736cf7ee5", size = 39781, upload-time = "2024-09-24T06:19:08.182Z" }, +] + +[[package]] +name = "cryptography" +version = "45.0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/95/1e/49527ac611af559665f71cbb8f92b332b5ec9c6fbc4e88b0f8e92f5e85df/cryptography-45.0.5.tar.gz", hash = "sha256:72e76caa004ab63accdf26023fccd1d087f6d90ec6048ff33ad0445abf7f605a", size = 744903, upload-time = "2025-07-02T13:06:25.941Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f0/fb/09e28bc0c46d2c547085e60897fea96310574c70fb21cd58a730a45f3403/cryptography-45.0.5-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:101ee65078f6dd3e5a028d4f19c07ffa4dd22cce6a20eaa160f8b5219911e7d8", size = 7043092, upload-time = "2025-07-02T13:05:01.514Z" }, + { url = "https://files.pythonhosted.org/packages/b1/05/2194432935e29b91fb649f6149c1a4f9e6d3d9fc880919f4ad1bcc22641e/cryptography-45.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3a264aae5f7fbb089dbc01e0242d3b67dffe3e6292e1f5182122bdf58e65215d", size = 4205926, upload-time = "2025-07-02T13:05:04.741Z" }, + { url = "https://files.pythonhosted.org/packages/07/8b/9ef5da82350175e32de245646b1884fc01124f53eb31164c77f95a08d682/cryptography-45.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e74d30ec9c7cb2f404af331d5b4099a9b322a8a6b25c4632755c8757345baac5", size = 4429235, upload-time = "2025-07-02T13:05:07.084Z" }, + { url = "https://files.pythonhosted.org/packages/7c/e1/c809f398adde1994ee53438912192d92a1d0fc0f2d7582659d9ef4c28b0c/cryptography-45.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3af26738f2db354aafe492fb3869e955b12b2ef2e16908c8b9cb928128d42c57", size = 4209785, upload-time = "2025-07-02T13:05:09.321Z" }, + { url = "https://files.pythonhosted.org/packages/d0/8b/07eb6bd5acff58406c5e806eff34a124936f41a4fb52909ffa4d00815f8c/cryptography-45.0.5-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e6c00130ed423201c5bc5544c23359141660b07999ad82e34e7bb8f882bb78e0", size = 3893050, upload-time = "2025-07-02T13:05:11.069Z" }, + { url = "https://files.pythonhosted.org/packages/ec/ef/3333295ed58d900a13c92806b67e62f27876845a9a908c939f040887cca9/cryptography-45.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:dd420e577921c8c2d31289536c386aaa30140b473835e97f83bc71ea9d2baf2d", size = 4457379, upload-time = "2025-07-02T13:05:13.32Z" }, + { url = "https://files.pythonhosted.org/packages/d9/9d/44080674dee514dbb82b21d6fa5d1055368f208304e2ab1828d85c9de8f4/cryptography-45.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:d05a38884db2ba215218745f0781775806bde4f32e07b135348355fe8e4991d9", size = 4209355, upload-time = "2025-07-02T13:05:15.017Z" }, + { url = "https://files.pythonhosted.org/packages/c9/d8/0749f7d39f53f8258e5c18a93131919ac465ee1f9dccaf1b3f420235e0b5/cryptography-45.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:ad0caded895a00261a5b4aa9af828baede54638754b51955a0ac75576b831b27", size = 4456087, upload-time = "2025-07-02T13:05:16.945Z" }, + { url = "https://files.pythonhosted.org/packages/09/d7/92acac187387bf08902b0bf0699816f08553927bdd6ba3654da0010289b4/cryptography-45.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9024beb59aca9d31d36fcdc1604dd9bbeed0a55bface9f1908df19178e2f116e", size = 4332873, upload-time = "2025-07-02T13:05:18.743Z" }, + { url = "https://files.pythonhosted.org/packages/03/c2/840e0710da5106a7c3d4153c7215b2736151bba60bf4491bdb421df5056d/cryptography-45.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:91098f02ca81579c85f66df8a588c78f331ca19089763d733e34ad359f474174", size = 4564651, upload-time = "2025-07-02T13:05:21.382Z" }, + { url = "https://files.pythonhosted.org/packages/2e/92/cc723dd6d71e9747a887b94eb3827825c6c24b9e6ce2bb33b847d31d5eaa/cryptography-45.0.5-cp311-abi3-win32.whl", hash = "sha256:926c3ea71a6043921050eaa639137e13dbe7b4ab25800932a8498364fc1abec9", size = 2929050, upload-time = "2025-07-02T13:05:23.39Z" }, + { url = "https://files.pythonhosted.org/packages/1f/10/197da38a5911a48dd5389c043de4aec4b3c94cb836299b01253940788d78/cryptography-45.0.5-cp311-abi3-win_amd64.whl", hash = "sha256:b85980d1e345fe769cfc57c57db2b59cff5464ee0c045d52c0df087e926fbe63", size = 3403224, upload-time = "2025-07-02T13:05:25.202Z" }, + { url = "https://files.pythonhosted.org/packages/fe/2b/160ce8c2765e7a481ce57d55eba1546148583e7b6f85514472b1d151711d/cryptography-45.0.5-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f3562c2f23c612f2e4a6964a61d942f891d29ee320edb62ff48ffb99f3de9ae8", size = 7017143, upload-time = "2025-07-02T13:05:27.229Z" }, + { url = "https://files.pythonhosted.org/packages/c2/e7/2187be2f871c0221a81f55ee3105d3cf3e273c0a0853651d7011eada0d7e/cryptography-45.0.5-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3fcfbefc4a7f332dece7272a88e410f611e79458fab97b5efe14e54fe476f4fd", size = 4197780, upload-time = "2025-07-02T13:05:29.299Z" }, + { url = "https://files.pythonhosted.org/packages/b9/cf/84210c447c06104e6be9122661159ad4ce7a8190011669afceeaea150524/cryptography-45.0.5-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:460f8c39ba66af7db0545a8c6f2eabcbc5a5528fc1cf6c3fa9a1e44cec33385e", size = 4420091, upload-time = "2025-07-02T13:05:31.221Z" }, + { url = "https://files.pythonhosted.org/packages/3e/6a/cb8b5c8bb82fafffa23aeff8d3a39822593cee6e2f16c5ca5c2ecca344f7/cryptography-45.0.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:9b4cf6318915dccfe218e69bbec417fdd7c7185aa7aab139a2c0beb7468c89f0", size = 4198711, upload-time = "2025-07-02T13:05:33.062Z" }, + { url = "https://files.pythonhosted.org/packages/04/f7/36d2d69df69c94cbb2473871926daf0f01ad8e00fe3986ac3c1e8c4ca4b3/cryptography-45.0.5-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2089cc8f70a6e454601525e5bf2779e665d7865af002a5dec8d14e561002e135", size = 3883299, upload-time = "2025-07-02T13:05:34.94Z" }, + { url = "https://files.pythonhosted.org/packages/82/c7/f0ea40f016de72f81288e9fe8d1f6748036cb5ba6118774317a3ffc6022d/cryptography-45.0.5-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:0027d566d65a38497bc37e0dd7c2f8ceda73597d2ac9ba93810204f56f52ebc7", size = 4450558, upload-time = "2025-07-02T13:05:37.288Z" }, + { url = "https://files.pythonhosted.org/packages/06/ae/94b504dc1a3cdf642d710407c62e86296f7da9e66f27ab12a1ee6fdf005b/cryptography-45.0.5-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:be97d3a19c16a9be00edf79dca949c8fa7eff621763666a145f9f9535a5d7f42", size = 4198020, upload-time = "2025-07-02T13:05:39.102Z" }, + { url = "https://files.pythonhosted.org/packages/05/2b/aaf0adb845d5dabb43480f18f7ca72e94f92c280aa983ddbd0bcd6ecd037/cryptography-45.0.5-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:7760c1c2e1a7084153a0f68fab76e754083b126a47d0117c9ed15e69e2103492", size = 4449759, upload-time = "2025-07-02T13:05:41.398Z" }, + { url = "https://files.pythonhosted.org/packages/91/e4/f17e02066de63e0100a3a01b56f8f1016973a1d67551beaf585157a86b3f/cryptography-45.0.5-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6ff8728d8d890b3dda5765276d1bc6fb099252915a2cd3aff960c4c195745dd0", size = 4319991, upload-time = "2025-07-02T13:05:43.64Z" }, + { url = "https://files.pythonhosted.org/packages/f2/2e/e2dbd629481b499b14516eed933f3276eb3239f7cee2dcfa4ee6b44d4711/cryptography-45.0.5-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7259038202a47fdecee7e62e0fd0b0738b6daa335354396c6ddebdbe1206af2a", size = 4554189, upload-time = "2025-07-02T13:05:46.045Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ea/a78a0c38f4c8736287b71c2ea3799d173d5ce778c7d6e3c163a95a05ad2a/cryptography-45.0.5-cp37-abi3-win32.whl", hash = "sha256:1e1da5accc0c750056c556a93c3e9cb828970206c68867712ca5805e46dc806f", size = 2911769, upload-time = "2025-07-02T13:05:48.329Z" }, + { url = "https://files.pythonhosted.org/packages/79/b3/28ac139109d9005ad3f6b6f8976ffede6706a6478e21c889ce36c840918e/cryptography-45.0.5-cp37-abi3-win_amd64.whl", hash = "sha256:90cb0a7bb35959f37e23303b7eed0a32280510030daba3f7fdfbb65defde6a97", size = 3390016, upload-time = "2025-07-02T13:05:50.811Z" }, +] + +[[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 = "dask" +version = "2025.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "cloudpickle" }, + { name = "fsspec" }, + { name = "packaging" }, + { name = "partd" }, + { name = "pyyaml" }, + { name = "toolz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/00/cbb7cb07742955dfe77368aa40725d7000414a8a49f415ba40c5a4379ba9/dask-2025.7.0.tar.gz", hash = "sha256:c3a0d4e78882e85ea81dbc71e6459713e45676e2d17e776c2f3f19848039e4cf", size = 10972242, upload-time = "2025-07-14T20:03:42.701Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/f9/3e04725358c17329652da8c1b2dbd88de723f3dc78bf52ca6d28d52c9279/dask-2025.7.0-py3-none-any.whl", hash = "sha256:073c29c4e99c2400a39a8a67874f35c1d15bf7af9ae3d0c30af3c7c1199f24ae", size = 1475117, upload-time = "2025-07-14T20:03:33.095Z" }, +] + +[[package]] +name = "dateparser" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "regex" }, + { name = "tzlocal" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a9/30/064144f0df1749e7bb5faaa7f52b007d7c2d08ec08fed8411aba87207f68/dateparser-1.2.2.tar.gz", hash = "sha256:986316f17cb8cdc23ea8ce563027c5ef12fc725b6fb1d137c14ca08777c5ecf7", size = 329840, upload-time = "2025-06-26T09:29:23.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/22/f020c047ae1346613db9322638186468238bcfa8849b4668a22b97faad65/dateparser-1.2.2-py3-none-any.whl", hash = "sha256:5a5d7211a09013499867547023a2a0c91d5a27d15dd4dbcea676ea9fe66f2482", size = 315453, upload-time = "2025-06-26T09:29:21.412Z" }, +] + +[[package]] +name = "debugpy" +version = "1.8.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/8b/3a9a28ddb750a76eaec445c7f4d3147ea2c579a97dbd9e25d39001b92b21/debugpy-1.8.15.tar.gz", hash = "sha256:58d7a20b7773ab5ee6bdfb2e6cf622fdf1e40c9d5aef2857d85391526719ac00", size = 1643279, upload-time = "2025-07-15T16:43:29.135Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ab/4a/4508d256e52897f5cdfee6a6d7580974811e911c6d01321df3264508a5ac/debugpy-1.8.15-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:3dcc7225cb317469721ab5136cda9ff9c8b6e6fb43e87c9e15d5b108b99d01ba", size = 2511197, upload-time = "2025-07-15T16:43:42.343Z" }, + { url = "https://files.pythonhosted.org/packages/99/8d/7f6ef1097e7fecf26b4ef72338d08e41644a41b7ee958a19f494ffcffc29/debugpy-1.8.15-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:047a493ca93c85ccede1dbbaf4e66816794bdc214213dde41a9a61e42d27f8fc", size = 4229517, upload-time = "2025-07-15T16:43:44.14Z" }, + { url = "https://files.pythonhosted.org/packages/3f/e8/e8c6a9aa33a9c9c6dacbf31747384f6ed2adde4de2e9693c766bdf323aa3/debugpy-1.8.15-cp312-cp312-win32.whl", hash = "sha256:b08e9b0bc260cf324c890626961dad4ffd973f7568fbf57feb3c3a65ab6b6327", size = 5276132, upload-time = "2025-07-15T16:43:45.529Z" }, + { url = "https://files.pythonhosted.org/packages/e9/ad/231050c6177b3476b85fcea01e565dac83607b5233d003ff067e2ee44d8f/debugpy-1.8.15-cp312-cp312-win_amd64.whl", hash = "sha256:e2a4fe357c92334272eb2845fcfcdbec3ef9f22c16cf613c388ac0887aed15fa", size = 5317645, upload-time = "2025-07-15T16:43:46.968Z" }, + { url = "https://files.pythonhosted.org/packages/28/70/2928aad2310726d5920b18ed9f54b9f06df5aa4c10cf9b45fa18ff0ab7e8/debugpy-1.8.15-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:f5e01291ad7d6649aed5773256c5bba7a1a556196300232de1474c3c372592bf", size = 2495538, upload-time = "2025-07-15T16:43:48.927Z" }, + { url = "https://files.pythonhosted.org/packages/9e/c6/9b8ffb4ca91fac8b2877eef63c9cc0e87dd2570b1120054c272815ec4cd0/debugpy-1.8.15-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94dc0f0d00e528d915e0ce1c78e771475b2335b376c49afcc7382ee0b146bab6", size = 4221874, upload-time = "2025-07-15T16:43:50.282Z" }, + { url = "https://files.pythonhosted.org/packages/55/8a/9b8d59674b4bf489318c7c46a1aab58e606e583651438084b7e029bf3c43/debugpy-1.8.15-cp313-cp313-win32.whl", hash = "sha256:fcf0748d4f6e25f89dc5e013d1129ca6f26ad4da405e0723a4f704583896a709", size = 5275949, upload-time = "2025-07-15T16:43:52.079Z" }, + { url = "https://files.pythonhosted.org/packages/72/83/9e58e6fdfa8710a5e6ec06c2401241b9ad48b71c0a7eb99570a1f1edb1d3/debugpy-1.8.15-cp313-cp313-win_amd64.whl", hash = "sha256:73c943776cb83e36baf95e8f7f8da765896fd94b05991e7bc162456d25500683", size = 5317720, upload-time = "2025-07-15T16:43:53.703Z" }, + { url = "https://files.pythonhosted.org/packages/07/d5/98748d9860e767a1248b5e31ffa7ce8cb7006e97bf8abbf3d891d0a8ba4e/debugpy-1.8.15-py2.py3-none-any.whl", hash = "sha256:bce2e6c5ff4f2e00b98d45e7e01a49c7b489ff6df5f12d881c67d2f1ac635f3d", size = 5282697, upload-time = "2025-07-15T16:44:07.996Z" }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, +] + +[[package]] +name = "distlib" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/96/8e/709914eb2b5749865801041647dc7f4e6d00b549cfe88b65ca192995f07c/distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d", size = 614605, upload-time = "2025-07-17T16:52:00.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16", size = 469047, upload-time = "2025-07-17T16:51:58.613Z" }, +] + +[[package]] +name = "docker" +version = "7.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pywin32", marker = "sys_platform == 'win32'" }, + { name = "requests" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/91/9b/4a2ea29aeba62471211598dac5d96825bb49348fa07e906ea930394a83ce/docker-7.1.0.tar.gz", hash = "sha256:ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c", size = 117834, upload-time = "2024-05-23T11:13:57.216Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/26/57c6fb270950d476074c087527a558ccb6f4436657314bfb6cdf484114c4/docker-7.1.0-py3-none-any.whl", hash = "sha256:c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0", size = 147774, upload-time = "2024-05-23T11:13:55.01Z" }, +] + +[[package]] +name = "donfig" +version = "0.8.1.post1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/25/71/80cc718ff6d7abfbabacb1f57aaa42e9c1552bfdd01e64ddd704e4a03638/donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52", size = 19506, upload-time = "2024-05-23T14:14:31.513Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d", size = 21592, upload-time = "2024-05-23T14:13:55.283Z" }, +] + +[[package]] +name = "dotenv" +version = "0.9.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dotenv" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/b7/545d2c10c1fc15e48653c91efde329a790f2eecfbbf2bd16003b5db2bab0/dotenv-0.9.9-py2.py3-none-any.whl", hash = "sha256:29cf74a087b31dafdb5a446b6d7e11cbce8ed2741540e2339c69fbef92c94ce9", size = 1892, upload-time = "2025-02-19T22:15:01.647Z" }, +] + +[[package]] +name = "earthaccess" +version = "0.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fsspec" }, + { name = "importlib-resources" }, + { name = "multimethod" }, + { name = "pqdm" }, + { name = "python-cmr" }, + { name = "requests" }, + { name = "s3fs" }, + { name = "tinynetrc" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/bb/a66d2fa81b06a7dce99b074a9d826bcaebd1aef5f1b7b6d58e3707190a8f/earthaccess-0.14.0.tar.gz", hash = "sha256:8cc0a07ac86077728396f417ae4a137293f78c6b5e30f9d2b97d362151f093a3", size = 6277790, upload-time = "2025-02-11T23:52:25.532Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/e3/8597130029c34c62d3de30462d64f8870bc0dee439bdf9bbdf3aba9d4c7e/earthaccess-0.14.0-py3-none-any.whl", hash = "sha256:6553cede23042645d8abe5b0cd7584b73e364128d5a35dcd67da30fd57618602", size = 64945, upload-time = "2025-02-11T23:52:23.698Z" }, +] + +[[package]] +name = "executing" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693, upload-time = "2025-01-22T15:41:29.403Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload-time = "2025-01-22T15:41:25.929Z" }, +] + +[[package]] +name = "filelock" +version = "3.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload-time = "2025-03-14T07:11:40.47Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload-time = "2025-03-14T07:11:39.145Z" }, +] + +[[package]] +name = "flask" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "blinker" }, + { name = "click" }, + { name = "itsdangerous" }, + { name = "jinja2" }, + { name = "markupsafe" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/de/e47735752347f4128bcf354e0da07ef311a78244eba9e3dc1d4a5ab21a98/flask-3.1.1.tar.gz", hash = "sha256:284c7b8f2f58cb737f0cf1c30fd7eaf0ccfcde196099d24ecede3fc2005aa59e", size = 753440, upload-time = "2025-05-13T15:01:17.447Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/68/9d4508e893976286d2ead7f8f571314af6c2037af34853a30fd769c02e9d/flask-3.1.1-py3-none-any.whl", hash = "sha256:07aae2bb5eaf77993ef57e357491839f5fd9f4dc281593a81a9e4d79a24f295c", size = 103305, upload-time = "2025-05-13T15:01:15.591Z" }, +] + +[[package]] +name = "fonttools" +version = "4.59.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/7f/29c9c3fe4246f6ad96fee52b88d0dc3a863c7563b0afc959e36d78b965dc/fonttools-4.59.1.tar.gz", hash = "sha256:74995b402ad09822a4c8002438e54940d9f1ecda898d2bb057729d7da983e4cb", size = 3534394, upload-time = "2025-08-14T16:28:14.266Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ac/fe/6e069cc4cb8881d164a9bd956e9df555bc62d3eb36f6282e43440200009c/fonttools-4.59.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:43ab814bbba5f02a93a152ee61a04182bb5809bd2bc3609f7822e12c53ae2c91", size = 2769172, upload-time = "2025-08-14T16:26:45.729Z" }, + { url = "https://files.pythonhosted.org/packages/b9/98/ec4e03f748fefa0dd72d9d95235aff6fef16601267f4a2340f0e16b9330f/fonttools-4.59.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4f04c3ffbfa0baafcbc550657cf83657034eb63304d27b05cff1653b448ccff6", size = 2337281, upload-time = "2025-08-14T16:26:47.921Z" }, + { url = "https://files.pythonhosted.org/packages/8b/b1/890360a7e3d04a30ba50b267aca2783f4c1364363797e892e78a4f036076/fonttools-4.59.1-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:d601b153e51a5a6221f0d4ec077b6bfc6ac35bfe6c19aeaa233d8990b2b71726", size = 4909215, upload-time = "2025-08-14T16:26:49.682Z" }, + { url = "https://files.pythonhosted.org/packages/8a/ec/2490599550d6c9c97a44c1e36ef4de52d6acf742359eaa385735e30c05c4/fonttools-4.59.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c735e385e30278c54f43a0d056736942023c9043f84ee1021eff9fd616d17693", size = 4951958, upload-time = "2025-08-14T16:26:51.616Z" }, + { url = "https://files.pythonhosted.org/packages/d1/40/bd053f6f7634234a9b9805ff8ae4f32df4f2168bee23cafd1271ba9915a9/fonttools-4.59.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1017413cdc8555dce7ee23720da490282ab7ec1cf022af90a241f33f9a49afc4", size = 4894738, upload-time = "2025-08-14T16:26:53.836Z" }, + { url = "https://files.pythonhosted.org/packages/ac/a1/3cd12a010d288325a7cfcf298a84825f0f9c29b01dee1baba64edfe89257/fonttools-4.59.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5c6d8d773470a5107052874341ed3c487c16ecd179976d81afed89dea5cd7406", size = 5045983, upload-time = "2025-08-14T16:26:56.153Z" }, + { url = "https://files.pythonhosted.org/packages/a2/af/8a2c3f6619cc43cf87951405337cc8460d08a4e717bb05eaa94b335d11dc/fonttools-4.59.1-cp312-cp312-win32.whl", hash = "sha256:2a2d0d33307f6ad3a2086a95dd607c202ea8852fa9fb52af9b48811154d1428a", size = 2203407, upload-time = "2025-08-14T16:26:58.165Z" }, + { url = "https://files.pythonhosted.org/packages/8e/f2/a19b874ddbd3ebcf11d7e25188ef9ac3f68b9219c62263acb34aca8cde05/fonttools-4.59.1-cp312-cp312-win_amd64.whl", hash = "sha256:0b9e4fa7eaf046ed6ac470f6033d52c052481ff7a6e0a92373d14f556f298dc0", size = 2251561, upload-time = "2025-08-14T16:27:00.646Z" }, + { url = "https://files.pythonhosted.org/packages/19/5e/94a4d7f36c36e82f6a81e0064d148542e0ad3e6cf51fc5461ca128f3658d/fonttools-4.59.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:89d9957b54246c6251345297dddf77a84d2c19df96af30d2de24093bbdf0528b", size = 2760192, upload-time = "2025-08-14T16:27:03.024Z" }, + { url = "https://files.pythonhosted.org/packages/ee/a5/f50712fc33ef9d06953c660cefaf8c8fe4b8bc74fa21f44ee5e4f9739439/fonttools-4.59.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8156b11c0d5405810d216f53907bd0f8b982aa5f1e7e3127ab3be1a4062154ff", size = 2332694, upload-time = "2025-08-14T16:27:04.883Z" }, + { url = "https://files.pythonhosted.org/packages/e9/a2/5a9fc21c354bf8613215ce233ab0d933bd17d5ff4c29693636551adbc7b3/fonttools-4.59.1-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8387876a8011caec52d327d5e5bca705d9399ec4b17afb8b431ec50d47c17d23", size = 4889254, upload-time = "2025-08-14T16:27:07.02Z" }, + { url = "https://files.pythonhosted.org/packages/2d/e5/54a6dc811eba018d022ca2e8bd6f2969291f9586ccf9a22a05fc55f91250/fonttools-4.59.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fb13823a74b3a9204a8ed76d3d6d5ec12e64cc5bc44914eb9ff1cdac04facd43", size = 4949109, upload-time = "2025-08-14T16:27:09.3Z" }, + { url = "https://files.pythonhosted.org/packages/db/15/b05c72a248a95bea0fd05fbd95acdf0742945942143fcf961343b7a3663a/fonttools-4.59.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e1ca10da138c300f768bb68e40e5b20b6ecfbd95f91aac4cc15010b6b9d65455", size = 4888428, upload-time = "2025-08-14T16:27:11.514Z" }, + { url = "https://files.pythonhosted.org/packages/63/71/c7d6840f858d695adc0c4371ec45e3fb1c8e060b276ba944e2800495aca4/fonttools-4.59.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2beb5bfc4887a3130f8625349605a3a45fe345655ce6031d1bac11017454b943", size = 5032668, upload-time = "2025-08-14T16:27:13.872Z" }, + { url = "https://files.pythonhosted.org/packages/90/54/57be4aca6f1312e2bc4d811200dd822325794e05bdb26eeff0976edca651/fonttools-4.59.1-cp313-cp313-win32.whl", hash = "sha256:419f16d750d78e6d704bfe97b48bba2f73b15c9418f817d0cb8a9ca87a5b94bf", size = 2201832, upload-time = "2025-08-14T16:27:16.126Z" }, + { url = "https://files.pythonhosted.org/packages/fc/1f/1899a6175a5f900ed8730a0d64f53ca1b596ed7609bfda033cf659114258/fonttools-4.59.1-cp313-cp313-win_amd64.whl", hash = "sha256:c536f8a852e8d3fa71dde1ec03892aee50be59f7154b533f0bf3c1174cfd5126", size = 2250673, upload-time = "2025-08-14T16:27:18.033Z" }, + { url = "https://files.pythonhosted.org/packages/15/07/f6ba82c22f118d9985c37fea65d8d715ca71300d78b6c6e90874dc59f11d/fonttools-4.59.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:d5c3bfdc9663f3d4b565f9cb3b8c1efb3e178186435b45105bde7328cfddd7fe", size = 2758606, upload-time = "2025-08-14T16:27:20.064Z" }, + { url = "https://files.pythonhosted.org/packages/3a/81/84aa3d0ce27b0112c28b67b637ff7a47cf401cf5fbfee6476e4bc9777580/fonttools-4.59.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:ea03f1da0d722fe3c2278a05957e6550175571a4894fbf9d178ceef4a3783d2b", size = 2330187, upload-time = "2025-08-14T16:27:22.42Z" }, + { url = "https://files.pythonhosted.org/packages/17/41/b3ba43f78afb321e2e50232c87304c8d0f5ab39b64389b8286cc39cdb824/fonttools-4.59.1-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:57a3708ca6bfccb790f585fa6d8f29432ec329618a09ff94c16bcb3c55994643", size = 4832020, upload-time = "2025-08-14T16:27:24.214Z" }, + { url = "https://files.pythonhosted.org/packages/67/b1/3af871c7fb325a68938e7ce544ca48bfd2c6bb7b357f3c8252933b29100a/fonttools-4.59.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:729367c91eb1ee84e61a733acc485065a00590618ca31c438e7dd4d600c01486", size = 4930687, upload-time = "2025-08-14T16:27:26.484Z" }, + { url = "https://files.pythonhosted.org/packages/c5/4f/299fc44646b30d9ef03ffaa78b109c7bd32121f0d8f10009ee73ac4514bc/fonttools-4.59.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:8f8ef66ac6db450193ed150e10b3b45dde7aded10c5d279968bc63368027f62b", size = 4875794, upload-time = "2025-08-14T16:27:28.887Z" }, + { url = "https://files.pythonhosted.org/packages/90/cf/a0a3d763ab58f5f81ceff104ddb662fd9da94248694862b9c6cbd509fdd5/fonttools-4.59.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:075f745d539a998cd92cb84c339a82e53e49114ec62aaea8307c80d3ad3aef3a", size = 4985780, upload-time = "2025-08-14T16:27:30.858Z" }, + { url = "https://files.pythonhosted.org/packages/72/c5/ba76511aaae143d89c29cd32ce30bafb61c477e8759a1590b8483f8065f8/fonttools-4.59.1-cp314-cp314-win32.whl", hash = "sha256:c2b0597522d4c5bb18aa5cf258746a2d4a90f25878cbe865e4d35526abd1b9fc", size = 2205610, upload-time = "2025-08-14T16:27:32.578Z" }, + { url = "https://files.pythonhosted.org/packages/a9/65/b250e69d6caf35bc65cddbf608be0662d741c248f2e7503ab01081fc267e/fonttools-4.59.1-cp314-cp314-win_amd64.whl", hash = "sha256:e9ad4ce044e3236f0814c906ccce8647046cc557539661e35211faadf76f283b", size = 2255376, upload-time = "2025-08-14T16:27:34.653Z" }, + { url = "https://files.pythonhosted.org/packages/11/f3/0bc63a23ac0f8175e23d82f85d6ee693fbd849de7ad739f0a3622182ad29/fonttools-4.59.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:652159e8214eb4856e8387ebcd6b6bd336ee258cbeb639c8be52005b122b9609", size = 2826546, upload-time = "2025-08-14T16:27:36.783Z" }, + { url = "https://files.pythonhosted.org/packages/e9/46/a3968205590e068fdf60e926be329a207782576cb584d3b7dcd2d2844957/fonttools-4.59.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:43d177cd0e847ea026fedd9f099dc917da136ed8792d142298a252836390c478", size = 2359771, upload-time = "2025-08-14T16:27:39.678Z" }, + { url = "https://files.pythonhosted.org/packages/b8/ff/d14b4c283879e8cb57862d9624a34fe6522b6fcdd46ccbfc58900958794a/fonttools-4.59.1-cp314-cp314t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e54437651e1440ee53a95e6ceb6ee440b67a3d348c76f45f4f48de1a5ecab019", size = 4831575, upload-time = "2025-08-14T16:27:41.885Z" }, + { url = "https://files.pythonhosted.org/packages/9c/04/a277d9a584a49d98ca12d3b2c6663bdf333ae97aaa83bd0cdabf7c5a6c84/fonttools-4.59.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6065fdec8ff44c32a483fd44abe5bcdb40dd5e2571a5034b555348f2b3a52cea", size = 5069962, upload-time = "2025-08-14T16:27:44.284Z" }, + { url = "https://files.pythonhosted.org/packages/16/6f/3d2ae69d96c4cdee6dfe7598ca5519a1514487700ca3d7c49c5a1ad65308/fonttools-4.59.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:42052b56d176f8b315fbc09259439c013c0cb2109df72447148aeda677599612", size = 4942926, upload-time = "2025-08-14T16:27:46.523Z" }, + { url = "https://files.pythonhosted.org/packages/0c/d3/c17379e0048d03ce26b38e4ab0e9a98280395b00529e093fe2d663ac0658/fonttools-4.59.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:bcd52eaa5c4c593ae9f447c1d13e7e4a00ca21d755645efa660b6999425b3c88", size = 4958678, upload-time = "2025-08-14T16:27:48.555Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3f/c5543a1540abdfb4d375e3ebeb84de365ab9b153ec14cb7db05f537dd1e7/fonttools-4.59.1-cp314-cp314t-win32.whl", hash = "sha256:02e4fdf27c550dded10fe038a5981c29f81cb9bc649ff2eaa48e80dab8998f97", size = 2266706, upload-time = "2025-08-14T16:27:50.556Z" }, + { url = "https://files.pythonhosted.org/packages/3e/99/85bff6e674226bc8402f983e365f07e76d990e7220ba72bcc738fef52391/fonttools-4.59.1-cp314-cp314t-win_amd64.whl", hash = "sha256:412a5fd6345872a7c249dac5bcce380393f40c1c316ac07f447bc17d51900922", size = 2329994, upload-time = "2025-08-14T16:27:52.36Z" }, + { url = "https://files.pythonhosted.org/packages/0f/64/9d606e66d498917cd7a2ff24f558010d42d6fd4576d9dd57f0bd98333f5a/fonttools-4.59.1-py3-none-any.whl", hash = "sha256:647db657073672a8330608970a984d51573557f328030566521bc03415535042", size = 1130094, upload-time = "2025-08-14T16:28:12.048Z" }, +] + +[[package]] +name = "frozenlist" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/79/b1/b64018016eeb087db503b038296fd782586432b9c077fc5c7839e9cb6ef6/frozenlist-1.7.0.tar.gz", hash = "sha256:2e310d81923c2437ea8670467121cc3e9b0f76d3043cc1d2331d56c7fb7a3a8f", size = 45078, upload-time = "2025-06-09T23:02:35.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/a2/c8131383f1e66adad5f6ecfcce383d584ca94055a34d683bbb24ac5f2f1c/frozenlist-1.7.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3dbf9952c4bb0e90e98aec1bd992b3318685005702656bc6f67c1a32b76787f2", size = 81424, upload-time = "2025-06-09T23:00:42.24Z" }, + { url = "https://files.pythonhosted.org/packages/4c/9d/02754159955088cb52567337d1113f945b9e444c4960771ea90eb73de8db/frozenlist-1.7.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1f5906d3359300b8a9bb194239491122e6cf1444c2efb88865426f170c262cdb", size = 47952, upload-time = "2025-06-09T23:00:43.481Z" }, + { url = "https://files.pythonhosted.org/packages/01/7a/0046ef1bd6699b40acd2067ed6d6670b4db2f425c56980fa21c982c2a9db/frozenlist-1.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3dabd5a8f84573c8d10d8859a50ea2dec01eea372031929871368c09fa103478", size = 46688, upload-time = "2025-06-09T23:00:44.793Z" }, + { url = "https://files.pythonhosted.org/packages/d6/a2/a910bafe29c86997363fb4c02069df4ff0b5bc39d33c5198b4e9dd42d8f8/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa57daa5917f1738064f302bf2626281a1cb01920c32f711fbc7bc36111058a8", size = 243084, upload-time = "2025-06-09T23:00:46.125Z" }, + { url = "https://files.pythonhosted.org/packages/64/3e/5036af9d5031374c64c387469bfcc3af537fc0f5b1187d83a1cf6fab1639/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c193dda2b6d49f4c4398962810fa7d7c78f032bf45572b3e04dd5249dff27e08", size = 233524, upload-time = "2025-06-09T23:00:47.73Z" }, + { url = "https://files.pythonhosted.org/packages/06/39/6a17b7c107a2887e781a48ecf20ad20f1c39d94b2a548c83615b5b879f28/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe2b675cf0aaa6d61bf8fbffd3c274b3c9b7b1623beb3809df8a81399a4a9c4", size = 248493, upload-time = "2025-06-09T23:00:49.742Z" }, + { url = "https://files.pythonhosted.org/packages/be/00/711d1337c7327d88c44d91dd0f556a1c47fb99afc060ae0ef66b4d24793d/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8fc5d5cda37f62b262405cf9652cf0856839c4be8ee41be0afe8858f17f4c94b", size = 244116, upload-time = "2025-06-09T23:00:51.352Z" }, + { url = "https://files.pythonhosted.org/packages/24/fe/74e6ec0639c115df13d5850e75722750adabdc7de24e37e05a40527ca539/frozenlist-1.7.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0d5ce521d1dd7d620198829b87ea002956e4319002ef0bc8d3e6d045cb4646e", size = 224557, upload-time = "2025-06-09T23:00:52.855Z" }, + { url = "https://files.pythonhosted.org/packages/8d/db/48421f62a6f77c553575201e89048e97198046b793f4a089c79a6e3268bd/frozenlist-1.7.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:488d0a7d6a0008ca0db273c542098a0fa9e7dfaa7e57f70acef43f32b3f69dca", size = 241820, upload-time = "2025-06-09T23:00:54.43Z" }, + { url = "https://files.pythonhosted.org/packages/1d/fa/cb4a76bea23047c8462976ea7b7a2bf53997a0ca171302deae9d6dd12096/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:15a7eaba63983d22c54d255b854e8108e7e5f3e89f647fc854bd77a237e767df", size = 236542, upload-time = "2025-06-09T23:00:56.409Z" }, + { url = "https://files.pythonhosted.org/packages/5d/32/476a4b5cfaa0ec94d3f808f193301debff2ea42288a099afe60757ef6282/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1eaa7e9c6d15df825bf255649e05bd8a74b04a4d2baa1ae46d9c2d00b2ca2cb5", size = 249350, upload-time = "2025-06-09T23:00:58.468Z" }, + { url = "https://files.pythonhosted.org/packages/8d/ba/9a28042f84a6bf8ea5dbc81cfff8eaef18d78b2a1ad9d51c7bc5b029ad16/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4389e06714cfa9d47ab87f784a7c5be91d3934cd6e9a7b85beef808297cc025", size = 225093, upload-time = "2025-06-09T23:01:00.015Z" }, + { url = "https://files.pythonhosted.org/packages/bc/29/3a32959e68f9cf000b04e79ba574527c17e8842e38c91d68214a37455786/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:73bd45e1488c40b63fe5a7df892baf9e2a4d4bb6409a2b3b78ac1c6236178e01", size = 245482, upload-time = "2025-06-09T23:01:01.474Z" }, + { url = "https://files.pythonhosted.org/packages/80/e8/edf2f9e00da553f07f5fa165325cfc302dead715cab6ac8336a5f3d0adc2/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:99886d98e1643269760e5fe0df31e5ae7050788dd288947f7f007209b8c33f08", size = 249590, upload-time = "2025-06-09T23:01:02.961Z" }, + { url = "https://files.pythonhosted.org/packages/1c/80/9a0eb48b944050f94cc51ee1c413eb14a39543cc4f760ed12657a5a3c45a/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:290a172aae5a4c278c6da8a96222e6337744cd9c77313efe33d5670b9f65fc43", size = 237785, upload-time = "2025-06-09T23:01:05.095Z" }, + { url = "https://files.pythonhosted.org/packages/f3/74/87601e0fb0369b7a2baf404ea921769c53b7ae00dee7dcfe5162c8c6dbf0/frozenlist-1.7.0-cp312-cp312-win32.whl", hash = "sha256:426c7bc70e07cfebc178bc4c2bf2d861d720c4fff172181eeb4a4c41d4ca2ad3", size = 39487, upload-time = "2025-06-09T23:01:06.54Z" }, + { url = "https://files.pythonhosted.org/packages/0b/15/c026e9a9fc17585a9d461f65d8593d281fedf55fbf7eb53f16c6df2392f9/frozenlist-1.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:563b72efe5da92e02eb68c59cb37205457c977aa7a449ed1b37e6939e5c47c6a", size = 43874, upload-time = "2025-06-09T23:01:07.752Z" }, + { url = "https://files.pythonhosted.org/packages/24/90/6b2cebdabdbd50367273c20ff6b57a3dfa89bd0762de02c3a1eb42cb6462/frozenlist-1.7.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee80eeda5e2a4e660651370ebffd1286542b67e268aa1ac8d6dbe973120ef7ee", size = 79791, upload-time = "2025-06-09T23:01:09.368Z" }, + { url = "https://files.pythonhosted.org/packages/83/2e/5b70b6a3325363293fe5fc3ae74cdcbc3e996c2a11dde2fd9f1fb0776d19/frozenlist-1.7.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d1a81c85417b914139e3a9b995d4a1c84559afc839a93cf2cb7f15e6e5f6ed2d", size = 47165, upload-time = "2025-06-09T23:01:10.653Z" }, + { url = "https://files.pythonhosted.org/packages/f4/25/a0895c99270ca6966110f4ad98e87e5662eab416a17e7fd53c364bf8b954/frozenlist-1.7.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cbb65198a9132ebc334f237d7b0df163e4de83fb4f2bdfe46c1e654bdb0c5d43", size = 45881, upload-time = "2025-06-09T23:01:12.296Z" }, + { url = "https://files.pythonhosted.org/packages/19/7c/71bb0bbe0832793c601fff68cd0cf6143753d0c667f9aec93d3c323f4b55/frozenlist-1.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dab46c723eeb2c255a64f9dc05b8dd601fde66d6b19cdb82b2e09cc6ff8d8b5d", size = 232409, upload-time = "2025-06-09T23:01:13.641Z" }, + { url = "https://files.pythonhosted.org/packages/c0/45/ed2798718910fe6eb3ba574082aaceff4528e6323f9a8570be0f7028d8e9/frozenlist-1.7.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6aeac207a759d0dedd2e40745575ae32ab30926ff4fa49b1635def65806fddee", size = 225132, upload-time = "2025-06-09T23:01:15.264Z" }, + { url = "https://files.pythonhosted.org/packages/ba/e2/8417ae0f8eacb1d071d4950f32f229aa6bf68ab69aab797b72a07ea68d4f/frozenlist-1.7.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bd8c4e58ad14b4fa7802b8be49d47993182fdd4023393899632c88fd8cd994eb", size = 237638, upload-time = "2025-06-09T23:01:16.752Z" }, + { url = "https://files.pythonhosted.org/packages/f8/b7/2ace5450ce85f2af05a871b8c8719b341294775a0a6c5585d5e6170f2ce7/frozenlist-1.7.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04fb24d104f425da3540ed83cbfc31388a586a7696142004c577fa61c6298c3f", size = 233539, upload-time = "2025-06-09T23:01:18.202Z" }, + { url = "https://files.pythonhosted.org/packages/46/b9/6989292c5539553dba63f3c83dc4598186ab2888f67c0dc1d917e6887db6/frozenlist-1.7.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a5c505156368e4ea6b53b5ac23c92d7edc864537ff911d2fb24c140bb175e60", size = 215646, upload-time = "2025-06-09T23:01:19.649Z" }, + { url = "https://files.pythonhosted.org/packages/72/31/bc8c5c99c7818293458fe745dab4fd5730ff49697ccc82b554eb69f16a24/frozenlist-1.7.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bd7eb96a675f18aa5c553eb7ddc24a43c8c18f22e1f9925528128c052cdbe00", size = 232233, upload-time = "2025-06-09T23:01:21.175Z" }, + { url = "https://files.pythonhosted.org/packages/59/52/460db4d7ba0811b9ccb85af996019f5d70831f2f5f255f7cc61f86199795/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:05579bf020096fe05a764f1f84cd104a12f78eaab68842d036772dc6d4870b4b", size = 227996, upload-time = "2025-06-09T23:01:23.098Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c9/f4b39e904c03927b7ecf891804fd3b4df3db29b9e487c6418e37988d6e9d/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:376b6222d114e97eeec13d46c486facd41d4f43bab626b7c3f6a8b4e81a5192c", size = 242280, upload-time = "2025-06-09T23:01:24.808Z" }, + { url = "https://files.pythonhosted.org/packages/b8/33/3f8d6ced42f162d743e3517781566b8481322be321b486d9d262adf70bfb/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0aa7e176ebe115379b5b1c95b4096fb1c17cce0847402e227e712c27bdb5a949", size = 217717, upload-time = "2025-06-09T23:01:26.28Z" }, + { url = "https://files.pythonhosted.org/packages/3e/e8/ad683e75da6ccef50d0ab0c2b2324b32f84fc88ceee778ed79b8e2d2fe2e/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3fbba20e662b9c2130dc771e332a99eff5da078b2b2648153a40669a6d0e36ca", size = 236644, upload-time = "2025-06-09T23:01:27.887Z" }, + { url = "https://files.pythonhosted.org/packages/b2/14/8d19ccdd3799310722195a72ac94ddc677541fb4bef4091d8e7775752360/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:f3f4410a0a601d349dd406b5713fec59b4cee7e71678d5b17edda7f4655a940b", size = 238879, upload-time = "2025-06-09T23:01:29.524Z" }, + { url = "https://files.pythonhosted.org/packages/ce/13/c12bf657494c2fd1079a48b2db49fa4196325909249a52d8f09bc9123fd7/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e2cdfaaec6a2f9327bf43c933c0319a7c429058e8537c508964a133dffee412e", size = 232502, upload-time = "2025-06-09T23:01:31.287Z" }, + { url = "https://files.pythonhosted.org/packages/d7/8b/e7f9dfde869825489382bc0d512c15e96d3964180c9499efcec72e85db7e/frozenlist-1.7.0-cp313-cp313-win32.whl", hash = "sha256:5fc4df05a6591c7768459caba1b342d9ec23fa16195e744939ba5914596ae3e1", size = 39169, upload-time = "2025-06-09T23:01:35.503Z" }, + { url = "https://files.pythonhosted.org/packages/35/89/a487a98d94205d85745080a37860ff5744b9820a2c9acbcdd9440bfddf98/frozenlist-1.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:52109052b9791a3e6b5d1b65f4b909703984b770694d3eb64fad124c835d7cba", size = 43219, upload-time = "2025-06-09T23:01:36.784Z" }, + { url = "https://files.pythonhosted.org/packages/56/d5/5c4cf2319a49eddd9dd7145e66c4866bdc6f3dbc67ca3d59685149c11e0d/frozenlist-1.7.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:a6f86e4193bb0e235ef6ce3dde5cbabed887e0b11f516ce8a0f4d3b33078ec2d", size = 84345, upload-time = "2025-06-09T23:01:38.295Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/ec2c1e1dc16b85bc9d526009961953df9cec8481b6886debb36ec9107799/frozenlist-1.7.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:82d664628865abeb32d90ae497fb93df398a69bb3434463d172b80fc25b0dd7d", size = 48880, upload-time = "2025-06-09T23:01:39.887Z" }, + { url = "https://files.pythonhosted.org/packages/69/86/f9596807b03de126e11e7d42ac91e3d0b19a6599c714a1989a4e85eeefc4/frozenlist-1.7.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:912a7e8375a1c9a68325a902f3953191b7b292aa3c3fb0d71a216221deca460b", size = 48498, upload-time = "2025-06-09T23:01:41.318Z" }, + { url = "https://files.pythonhosted.org/packages/5e/cb/df6de220f5036001005f2d726b789b2c0b65f2363b104bbc16f5be8084f8/frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9537c2777167488d539bc5de2ad262efc44388230e5118868e172dd4a552b146", size = 292296, upload-time = "2025-06-09T23:01:42.685Z" }, + { url = "https://files.pythonhosted.org/packages/83/1f/de84c642f17c8f851a2905cee2dae401e5e0daca9b5ef121e120e19aa825/frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:f34560fb1b4c3e30ba35fa9a13894ba39e5acfc5f60f57d8accde65f46cc5e74", size = 273103, upload-time = "2025-06-09T23:01:44.166Z" }, + { url = "https://files.pythonhosted.org/packages/88/3c/c840bfa474ba3fa13c772b93070893c6e9d5c0350885760376cbe3b6c1b3/frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:acd03d224b0175f5a850edc104ac19040d35419eddad04e7cf2d5986d98427f1", size = 292869, upload-time = "2025-06-09T23:01:45.681Z" }, + { url = "https://files.pythonhosted.org/packages/a6/1c/3efa6e7d5a39a1d5ef0abeb51c48fb657765794a46cf124e5aca2c7a592c/frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2038310bc582f3d6a09b3816ab01737d60bf7b1ec70f5356b09e84fb7408ab1", size = 291467, upload-time = "2025-06-09T23:01:47.234Z" }, + { url = "https://files.pythonhosted.org/packages/4f/00/d5c5e09d4922c395e2f2f6b79b9a20dab4b67daaf78ab92e7729341f61f6/frozenlist-1.7.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b8c05e4c8e5f36e5e088caa1bf78a687528f83c043706640a92cb76cd6999384", size = 266028, upload-time = "2025-06-09T23:01:48.819Z" }, + { url = "https://files.pythonhosted.org/packages/4e/27/72765be905619dfde25a7f33813ac0341eb6b076abede17a2e3fbfade0cb/frozenlist-1.7.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:765bb588c86e47d0b68f23c1bee323d4b703218037765dcf3f25c838c6fecceb", size = 284294, upload-time = "2025-06-09T23:01:50.394Z" }, + { url = "https://files.pythonhosted.org/packages/88/67/c94103a23001b17808eb7dd1200c156bb69fb68e63fcf0693dde4cd6228c/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:32dc2e08c67d86d0969714dd484fd60ff08ff81d1a1e40a77dd34a387e6ebc0c", size = 281898, upload-time = "2025-06-09T23:01:52.234Z" }, + { url = "https://files.pythonhosted.org/packages/42/34/a3e2c00c00f9e2a9db5653bca3fec306349e71aff14ae45ecc6d0951dd24/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:c0303e597eb5a5321b4de9c68e9845ac8f290d2ab3f3e2c864437d3c5a30cd65", size = 290465, upload-time = "2025-06-09T23:01:53.788Z" }, + { url = "https://files.pythonhosted.org/packages/bb/73/f89b7fbce8b0b0c095d82b008afd0590f71ccb3dee6eee41791cf8cd25fd/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:a47f2abb4e29b3a8d0b530f7c3598badc6b134562b1a5caee867f7c62fee51e3", size = 266385, upload-time = "2025-06-09T23:01:55.769Z" }, + { url = "https://files.pythonhosted.org/packages/cd/45/e365fdb554159462ca12df54bc59bfa7a9a273ecc21e99e72e597564d1ae/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:3d688126c242a6fabbd92e02633414d40f50bb6002fa4cf995a1d18051525657", size = 288771, upload-time = "2025-06-09T23:01:57.4Z" }, + { url = "https://files.pythonhosted.org/packages/00/11/47b6117002a0e904f004d70ec5194fe9144f117c33c851e3d51c765962d0/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:4e7e9652b3d367c7bd449a727dc79d5043f48b88d0cbfd4f9f1060cf2b414104", size = 288206, upload-time = "2025-06-09T23:01:58.936Z" }, + { url = "https://files.pythonhosted.org/packages/40/37/5f9f3c3fd7f7746082ec67bcdc204db72dad081f4f83a503d33220a92973/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1a85e345b4c43db8b842cab1feb41be5cc0b10a1830e6295b69d7310f99becaf", size = 282620, upload-time = "2025-06-09T23:02:00.493Z" }, + { url = "https://files.pythonhosted.org/packages/0b/31/8fbc5af2d183bff20f21aa743b4088eac4445d2bb1cdece449ae80e4e2d1/frozenlist-1.7.0-cp313-cp313t-win32.whl", hash = "sha256:3a14027124ddb70dfcee5148979998066897e79f89f64b13328595c4bdf77c81", size = 43059, upload-time = "2025-06-09T23:02:02.072Z" }, + { url = "https://files.pythonhosted.org/packages/bb/ed/41956f52105b8dbc26e457c5705340c67c8cc2b79f394b79bffc09d0e938/frozenlist-1.7.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3bf8010d71d4507775f658e9823210b7427be36625b387221642725b515dcf3e", size = 47516, upload-time = "2025-06-09T23:02:03.779Z" }, + { url = "https://files.pythonhosted.org/packages/ee/45/b82e3c16be2182bff01179db177fe144d58b5dc787a7d4492c6ed8b9317f/frozenlist-1.7.0-py3-none-any.whl", hash = "sha256:9a5af342e34f7e97caf8c995864c7a396418ae2859cc6fdf1b1073020d516a7e", size = 13106, upload-time = "2025-06-09T23:02:34.204Z" }, +] + +[[package]] +name = "fsspec" +version = "2025.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8b/02/0835e6ab9cfc03916fe3f78c0956cfcdb6ff2669ffa6651065d5ebf7fc98/fsspec-2025.7.0.tar.gz", hash = "sha256:786120687ffa54b8283d942929540d8bc5ccfa820deb555a2b5d0ed2b737bf58", size = 304432, upload-time = "2025-07-15T16:05:21.19Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/e0/014d5d9d7a4564cf1c40b5039bc882db69fd881111e03ab3657ac0b218e2/fsspec-2025.7.0-py3-none-any.whl", hash = "sha256:8b012e39f63c7d5f10474de957f3ab793b47b45ae7d39f2fb735f8bbe25c0e21", size = 199597, upload-time = "2025-07-15T16:05:19.529Z" }, +] + +[[package]] +name = "h5netcdf" +version = "1.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "h5py" }, + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/46/9b/16f61d006227059451ad7388235a547a2dcf6f36503545d06df36bb4da97/h5netcdf-1.6.3.tar.gz", hash = "sha256:a8fededcc30f933389168ece94963bee54545546772d9e4dccadbb990dd5651e", size = 65622, upload-time = "2025-06-30T07:15:17.212Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/27/ca28b77f4cf613282e4ea9bac360cdfa8db8b4d2154e2f0bd82fd26baeb3/h5netcdf-1.6.3-py3-none-any.whl", hash = "sha256:b79bc24d1f8b1cdc1f16b213753209411e08af04e35b0bcf5ce5cf7fb4023572", size = 50531, upload-time = "2025-06-30T07:15:15.953Z" }, +] + +[[package]] +name = "h5py" +version = "3.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5d/57/dfb3c5c3f1bf5f5ef2e59a22dec4ff1f3d7408b55bfcefcfb0ea69ef21c6/h5py-3.14.0.tar.gz", hash = "sha256:2372116b2e0d5d3e5e705b7f663f7c8d96fa79a4052d250484ef91d24d6a08f4", size = 424323, upload-time = "2025-06-06T14:06:15.01Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/77/8f651053c1843391e38a189ccf50df7e261ef8cd8bfd8baba0cbe694f7c3/h5py-3.14.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e0045115d83272090b0717c555a31398c2c089b87d212ceba800d3dc5d952e23", size = 3312740, upload-time = "2025-06-06T14:05:01.193Z" }, + { url = "https://files.pythonhosted.org/packages/ff/10/20436a6cf419b31124e59fefc78d74cb061ccb22213226a583928a65d715/h5py-3.14.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6da62509b7e1d71a7d110478aa25d245dd32c8d9a1daee9d2a42dba8717b047a", size = 2829207, upload-time = "2025-06-06T14:05:05.061Z" }, + { url = "https://files.pythonhosted.org/packages/3f/19/c8bfe8543bfdd7ccfafd46d8cfd96fce53d6c33e9c7921f375530ee1d39a/h5py-3.14.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:554ef0ced3571366d4d383427c00c966c360e178b5fb5ee5bb31a435c424db0c", size = 4708455, upload-time = "2025-06-06T14:05:11.528Z" }, + { url = "https://files.pythonhosted.org/packages/86/f9/f00de11c82c88bfc1ef22633557bfba9e271e0cb3189ad704183fc4a2644/h5py-3.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0cbd41f4e3761f150aa5b662df991868ca533872c95467216f2bec5fcad84882", size = 4929422, upload-time = "2025-06-06T14:05:18.399Z" }, + { url = "https://files.pythonhosted.org/packages/7a/6d/6426d5d456f593c94b96fa942a9b3988ce4d65ebaf57d7273e452a7222e8/h5py-3.14.0-cp312-cp312-win_amd64.whl", hash = "sha256:bf4897d67e613ecf5bdfbdab39a1158a64df105827da70ea1d90243d796d367f", size = 2862845, upload-time = "2025-06-06T14:05:23.699Z" }, + { url = "https://files.pythonhosted.org/packages/6c/c2/7efe82d09ca10afd77cd7c286e42342d520c049a8c43650194928bcc635c/h5py-3.14.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:aa4b7bbce683379b7bf80aaba68e17e23396100336a8d500206520052be2f812", size = 3289245, upload-time = "2025-06-06T14:05:28.24Z" }, + { url = "https://files.pythonhosted.org/packages/4f/31/f570fab1239b0d9441024b92b6ad03bb414ffa69101a985e4c83d37608bd/h5py-3.14.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ef9603a501a04fcd0ba28dd8f0995303d26a77a980a1f9474b3417543d4c6174", size = 2807335, upload-time = "2025-06-06T14:05:31.997Z" }, + { url = "https://files.pythonhosted.org/packages/0d/ce/3a21d87896bc7e3e9255e0ad5583ae31ae9e6b4b00e0bcb2a67e2b6acdbc/h5py-3.14.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8cbaf6910fa3983c46172666b0b8da7b7bd90d764399ca983236f2400436eeb", size = 4700675, upload-time = "2025-06-06T14:05:37.38Z" }, + { url = "https://files.pythonhosted.org/packages/e7/ec/86f59025306dcc6deee5fda54d980d077075b8d9889aac80f158bd585f1b/h5py-3.14.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d90e6445ab7c146d7f7981b11895d70bc1dd91278a4f9f9028bc0c95e4a53f13", size = 4921632, upload-time = "2025-06-06T14:05:43.464Z" }, + { url = "https://files.pythonhosted.org/packages/3f/6d/0084ed0b78d4fd3e7530c32491f2884140d9b06365dac8a08de726421d4a/h5py-3.14.0-cp313-cp313-win_amd64.whl", hash = "sha256:ae18e3de237a7a830adb76aaa68ad438d85fe6e19e0d99944a3ce46b772c69b3", size = 2852929, upload-time = "2025-06-06T14:05:47.659Z" }, +] + +[[package]] +name = "icechunk" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zarr" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d2/94/7d7e1b7683f107b6a4ae2deedb03cd681a081d5e15256ffcdedb7f378042/icechunk-1.0.0.tar.gz", hash = "sha256:f606e7cc7a299bc618dc781700dd33b76d1fc3bce8934915b2362306bb38ad26", size = 402428, upload-time = "2025-07-10T16:41:51.627Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/a3/93b1be3f9c5c510dcbf0b86da8b4848007600b57d0f90b6467d8804b8ae0/icechunk-1.0.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:4821c131ed4879dbbd791facbdf75446f506064e10c3df2390621f6cf103a367", size = 14258077, upload-time = "2025-07-10T16:40:51.186Z" }, + { url = "https://files.pythonhosted.org/packages/26/0e/374c3e86477119e8ee64a06224c86f66fcd8bb6873c575481267268f5064/icechunk-1.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:389fbfe68d0615cfdc5ba69ece3d83881ccc32f76ef9e0d51c1109b577523ef7", size = 13759860, upload-time = "2025-07-10T16:40:42.214Z" }, + { url = "https://files.pythonhosted.org/packages/22/3c/e4525f2ddcb2bd3b7da055dbf3bcdf6c18351aa77b08e7abab72dea13321/icechunk-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62d9358dd1d8ce0a0a4831ad3df5e5fde09c813117153265ec14fb7408ad0780", size = 15669504, upload-time = "2025-07-10T16:40:31.401Z" }, + { url = "https://files.pythonhosted.org/packages/e4/94/88bfecd51a457936e38a95a5a9770643ffd5a006fd44636767851acf9813/icechunk-1.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:5dc67ca69c9d60f4b204f2d76fb663797e0dcca1986945e511d350207b2e5edc", size = 15346657, upload-time = "2025-07-10T16:40:02.99Z" }, + { url = "https://files.pythonhosted.org/packages/b1/cd/5eeabbbc5117d0774642c4f7eb32ca17ca6e2cd0efb964e43e50811fcef2/icechunk-1.0.0-cp312-cp312-manylinux_2_28_armv7l.whl", hash = "sha256:ebaa4f14d665216d0cd1006bbcbbafedceb75d676bc374a4897a2ab534a9d657", size = 14963101, upload-time = "2025-07-10T16:40:16.665Z" }, + { url = "https://files.pythonhosted.org/packages/eb/0a/8d50b19fa26b7cf6a356a1c19360538585a955b72723b2e719fa2469b524/icechunk-1.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b068e18c9b3c1ae6639da770c9863e8fef1c010ab05736f141f7ceb29b558ffc", size = 15443767, upload-time = "2025-07-10T16:40:58.821Z" }, + { url = "https://files.pythonhosted.org/packages/1f/fe/366e058c1265229a2e5f4ec09cc6390a4a100019bb9eb7ea480c2fa03e0d/icechunk-1.0.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:aa72d5fd59be713ea50ae3bc72819b707312b836c9b1350d6de166625f8f9d4d", size = 15219720, upload-time = "2025-07-10T16:41:12.779Z" }, + { url = "https://files.pythonhosted.org/packages/d2/04/1f048ed54650c7d9e25ffc322d032623bc913a677ce4234435430b9374ce/icechunk-1.0.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:62fb889b3a3fb8185c8155ba26ab0a994ccaeb891374cdb9bc8f524e2555ef3f", size = 15701344, upload-time = "2025-07-10T16:41:25.912Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d5/9890bd7bcd561cc292dd0e7f62a6d22e533845e097847b73db380fc327c0/icechunk-1.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:cc68f268fd1e76cdc87b558fe640fd7c99bfbf4ca483c92e0cc8b0b3cd377897", size = 15853033, upload-time = "2025-07-10T16:41:40.856Z" }, + { url = "https://files.pythonhosted.org/packages/b9/a3/f2bcc6211c43ae871077277a7a0949ee24f6c40057a7be1a18f98297f66b/icechunk-1.0.0-cp312-cp312-win32.whl", hash = "sha256:65178cf95f88687aa2cb86814a02a62bea06443fc3dd35293772c8ca52d2df41", size = 11119699, upload-time = "2025-07-10T16:42:04.232Z" }, + { url = "https://files.pythonhosted.org/packages/09/b1/4ca0ab2cbe9d8a80f08b902dda3f0d322b212830c18a1367edf6c607474a/icechunk-1.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:8e49f778b902f448ddac4a9be60b6a223c325ad2b1562b518cdc4838c993454b", size = 12444550, upload-time = "2025-07-10T16:41:55.903Z" }, + { url = "https://files.pythonhosted.org/packages/96/37/e996c795de77f4820a71b202747e8fb73a248911ef5176e398e3112304dd/icechunk-1.0.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:73a17eea2b01b7a19b5c8c3ee1139e8dc1df94325a125fc3f3362918320c27b3", size = 14255869, upload-time = "2025-07-10T16:40:53.607Z" }, + { url = "https://files.pythonhosted.org/packages/dc/92/5d267c6d9bb06a39a0ce2206d8830faa9347001c9e60e582117343adaa86/icechunk-1.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9c5ffae20fb5845e4fd44f5dfd71a1dbdf4e2c684b310570b94daa0eca20331c", size = 13759226, upload-time = "2025-07-10T16:40:44.717Z" }, + { url = "https://files.pythonhosted.org/packages/41/87/6d7b353f9623ce88b0226a5d4fec979adf9ae8bed2990d40739ea202f20b/icechunk-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6fe65e2369cc3b1844adf5b938b7a574147ca58a0ad0a8749fa315b18d2eb0f", size = 15667383, upload-time = "2025-07-10T16:40:34.272Z" }, + { url = "https://files.pythonhosted.org/packages/d7/df/404db196c8131f8c6d33ffdc007187deb012f6799632b4c644321ef45338/icechunk-1.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:90a7e259beadf21bccf5a006c08b5bcab2cc313b003bacb95d06869ae522c4db", size = 15344904, upload-time = "2025-07-10T16:40:05.841Z" }, + { url = "https://files.pythonhosted.org/packages/da/10/c78a3c69197f7e11a370b91742eb522a6f7d49bbe18b4e47788a61d6031f/icechunk-1.0.0-cp313-cp313-manylinux_2_28_armv7l.whl", hash = "sha256:2d1dd3f6ee97f00918c2b5f41b6a3cff7e0932dc20addccb8cd1fa25f2232b15", size = 14963242, upload-time = "2025-07-10T16:40:19.758Z" }, + { url = "https://files.pythonhosted.org/packages/15/10/924e29bc172b2d9a483b83217843fb5716f478b04d4ab13935595ec9dd80/icechunk-1.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7310857d6cd1e5e85a29ecb3e356c522d2fdead2c3b9c4f773c554efc2d84270", size = 15442935, upload-time = "2025-07-10T16:41:01.297Z" }, + { url = "https://files.pythonhosted.org/packages/82/4a/263ca5f218ae26524b463de60eabe5ed63e6a4eb02cbcec81e03ac1f0570/icechunk-1.0.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:e6be43cfb6352b86047aa0b20aef25a5c205fce4908bb2b22075a2dbf5c89c32", size = 15221384, upload-time = "2025-07-10T16:41:15.198Z" }, + { url = "https://files.pythonhosted.org/packages/0c/4e/40d657ace97ff90bf6459ac22ec30db26437e82bd32b40fcd424cb7c9a02/icechunk-1.0.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:6e88a8d1cf8308dfa0763d1d83af6b30a0477e8476c5a976c36cc3ba282f2754", size = 15702170, upload-time = "2025-07-10T16:41:29.439Z" }, + { url = "https://files.pythonhosted.org/packages/34/71/092cb83e57e2f0046195662f2b54542befe47f389d1730b51fe29fe277e3/icechunk-1.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:052ae6f8895ca3400710f6d8eb1097c0412f54f2b0e7b1263d94c568950358f4", size = 15851241, upload-time = "2025-07-10T16:41:43.652Z" }, + { url = "https://files.pythonhosted.org/packages/3d/dd/d4124fdc55a85e0d663df04a67305461f7a0e446a80e132e521310d1b5d5/icechunk-1.0.0-cp313-cp313-win32.whl", hash = "sha256:1ed547aef8143fa25151a02f58c9564d875286183a7f02b256717f07df734082", size = 11120265, upload-time = "2025-07-10T16:42:06.516Z" }, + { url = "https://files.pythonhosted.org/packages/90/30/39542e2700cb1b5f280ea8b0074ce8763f68f4e675e5512efef3b2430f5c/icechunk-1.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:4386b4c952953c01d3b8626c8c454b5b71c3837d8823e60df38531fe00dae2d4", size = 12444989, upload-time = "2025-07-10T16:41:58.666Z" }, + { url = "https://files.pythonhosted.org/packages/d8/72/c99e9ff0256709943f54e6453aacedc9ea1684dbb0d4d838a4287e86bbb2/icechunk-1.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:5876f1a8d7bad3b7c22ac6d5c6b14d7e9d852b583b80769595683f1d1318b49f", size = 15345533, upload-time = "2025-07-10T16:40:08.527Z" }, + { url = "https://files.pythonhosted.org/packages/4c/8e/e99f09aea60471cc3f8aff916d47084a9fb748ae96f6c5f871fb5aa19eba/icechunk-1.0.0-cp313-cp313t-manylinux_2_28_armv7l.whl", hash = "sha256:1c16db0aaee4fb778d834620b7816af8797450a4f5d03a177b9457670a7073a0", size = 14934104, upload-time = "2025-07-10T16:40:22.564Z" }, + { url = "https://files.pythonhosted.org/packages/6e/8d/f887eb4b4aa5bb760ef6989d49632587c05308259bd969188271438bb88c/icechunk-1.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2e6c014759487b32ad39a8c89973454e903a0ece93d00447c3cbdfbc273621d7", size = 15444018, upload-time = "2025-07-10T16:41:03.832Z" }, + { url = "https://files.pythonhosted.org/packages/9c/2c/6e15a006dc6e638fb7f92c3fdf9e788e488fea3ba4a67bf1c096f566fb06/icechunk-1.0.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:903ca9781c9b0a8e2a3f764f92913a0cdfdc354f9df4a50c4bc396e0d1cfac63", size = 15186124, upload-time = "2025-07-10T16:41:17.626Z" }, + { url = "https://files.pythonhosted.org/packages/12/4e/8a156d2779e8d604754f48ccd1ec4042948096b20367aac2fe1f79b79ced/icechunk-1.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:282fe0afe4d4b46620093891e5cd3815ce5300722fd8d5281d5e4bfeb1d96f99", size = 15690294, upload-time = "2025-07-10T16:41:32.369Z" }, + { url = "https://files.pythonhosted.org/packages/d7/5b/a52e913ac6be7cc70e1415e6678684909ddcf509840b7d38061fbc0b66a3/icechunk-1.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f3e4012568b1e2a3362f4082de1cb1d69970459f7b04f2727a839f5d73af3122", size = 15858589, upload-time = "2025-07-10T16:41:46.654Z" }, +] + +[[package]] +name = "identify" +version = "2.6.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/88/d193a27416618628a5eea64e3223acd800b40749a96ffb322a9b55a49ed1/identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6", size = 99254, upload-time = "2025-05-23T20:37:53.3Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/cd/18f8da995b658420625f7ef13f037be53ae04ec5ad33f9b718240dcfd48c/identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2", size = 99145, upload-time = "2025-05-23T20:37:51.495Z" }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, +] + +[[package]] +name = "importlib-resources" +version = "6.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cf/8c/f834fbf984f691b4f7ff60f50b514cc3de5cc08abfc3295564dd89c5e2e7/importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c", size = 44693, upload-time = "2025-01-03T18:51:56.698Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl", hash = "sha256:789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec", size = 37461, upload-time = "2025-01-03T18:51:54.306Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, +] + +[[package]] +name = "ipykernel" +version = "6.30.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appnope", marker = "sys_platform == 'darwin'" }, + { name = "comm" }, + { name = "debugpy" }, + { name = "ipython" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "matplotlib-inline" }, + { name = "nest-asyncio" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/27/9e6e30ed92f2ac53d29f70b09da8b2dc456e256148e289678fa0e825f46a/ipykernel-6.30.0.tar.gz", hash = "sha256:b7b808ddb2d261aae2df3a26ff3ff810046e6de3dfbc6f7de8c98ea0a6cb632c", size = 165125, upload-time = "2025-07-21T10:36:09.259Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/3d/00813c3d9b46e3dcd88bd4530e0a3c63c0509e5d8c9eff34723ea243ab04/ipykernel-6.30.0-py3-none-any.whl", hash = "sha256:fd2936e55c4a1c2ee8b1e5fa6a372b8eecc0ab1338750dee76f48fa5cca1301e", size = 117264, upload-time = "2025-07-21T10:36:06.854Z" }, +] + +[[package]] +name = "ipython" +version = "9.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "decorator" }, + { name = "ipython-pygments-lexers" }, + { name = "jedi" }, + { name = "matplotlib-inline" }, + { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "stack-data" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/54/80/406f9e3bde1c1fd9bf5a0be9d090f8ae623e401b7670d8f6fdf2ab679891/ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270", size = 4385338, upload-time = "2025-07-01T11:11:30.606Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/f8/0031ee2b906a15a33d6bfc12dd09c3dfa966b3cb5b284ecfb7549e6ac3c4/ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066", size = 611021, upload-time = "2025-07-01T11:11:27.85Z" }, +] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, +] + +[[package]] +name = "itsdangerous" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d/itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173", size = 54410, upload-time = "2024-04-16T21:28:15.614Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", size = 16234, upload-time = "2024-04-16T21:28:14.499Z" }, +] + +[[package]] +name = "jedi" +version = "0.19.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload-time = "2024-11-11T01:41:42.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload-time = "2024-11-11T01:41:40.175Z" }, +] + +[[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 = "jmespath" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843, upload-time = "2022-06-17T18:00:12.224Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256, upload-time = "2022-06-17T18:00:10.251Z" }, +] + +[[package]] +name = "jsii" +version = "1.113.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "cattrs" }, + { name = "importlib-resources" }, + { name = "publication" }, + { name = "python-dateutil" }, + { name = "typeguard" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/37/9b/ff11800e2edc2860c9eddd7ea7c7a8849f69cbb16b1aae803dae7dafa86e/jsii-1.113.0.tar.gz", hash = "sha256:2dedea9d6006af53467a7a67f1d35a56ab3f75a3d6ed4b4536fffc3e1d1fe476", size = 623541, upload-time = "2025-07-31T12:55:42.888Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/59/bbbdcc7e0adc32e2362dbb2398949ac013f79dc3468cdf2b5ac411b0f5e8/jsii-1.113.0-py3-none-any.whl", hash = "sha256:62377c651554234ea945693f7c03cb96a969ba425a686950c88d43b0d4d76b07", size = 599669, upload-time = "2025-07-31T12:55:40.874Z" }, +] + +[[package]] +name = "jsonpatch" +version = "1.33" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonpointer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/78/18813351fe5d63acad16aec57f94ec2b70a09e53ca98145589e185423873/jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c", size = 21699, upload-time = "2023-06-26T12:07:29.144Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/73/07/02e16ed01e04a374e644b575638ec7987ae846d25ad97bcc9945a3ee4b0e/jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade", size = 12898, upload-time = "2023-06-16T21:01:28.466Z" }, +] + +[[package]] +name = "jsonpointer" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload-time = "2024-06-10T19:24:42.462Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload-time = "2024-06-10T19:24:40.698Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.24.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f1/6e/35174c1d3f30560848c82d3c233c01420e047d70925c897a4d6e932b4898/jsonschema-4.24.1.tar.gz", hash = "sha256:fe45a130cc7f67cd0d67640b4e7e3e2e666919462ae355eda238296eafeb4b5d", size = 356635, upload-time = "2025-07-17T14:40:01.05Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/7f/ea48ffb58f9791f9d97ccb35e42fea1ebc81c67ce36dc4b8b2eee60e8661/jsonschema-4.24.1-py3-none-any.whl", hash = "sha256:6b916866aa0b61437785f1277aa2cbd63512e8d4b47151072ef13292049b4627", size = 89060, upload-time = "2025-07-17T14:39:59.471Z" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload-time = "2025-04-23T12:34:07.418Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload-time = "2025-04-23T12:34:05.422Z" }, +] + +[[package]] +name = "jupyter-client" +version = "8.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-core" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload-time = "2024-09-17T10:44:17.613Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload-time = "2024-09-17T10:44:15.218Z" }, +] + +[[package]] +name = "jupyter-core" +version = "5.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, + { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923, upload-time = "2025-05-27T07:38:16.655Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880, upload-time = "2025-05-27T07:38:15.137Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.4.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/3c/85844f1b0feb11ee581ac23fe5fce65cd049a200c1446708cc1b7f922875/kiwisolver-1.4.9.tar.gz", hash = "sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d", size = 97564, upload-time = "2025-08-10T21:27:49.279Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/c9/13573a747838aeb1c76e3267620daa054f4152444d1f3d1a2324b78255b5/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ac5a486ac389dddcc5bef4f365b6ae3ffff2c433324fb38dd35e3fab7c957999", size = 123686, upload-time = "2025-08-10T21:26:10.034Z" }, + { url = "https://files.pythonhosted.org/packages/51/ea/2ecf727927f103ffd1739271ca19c424d0e65ea473fbaeea1c014aea93f6/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f2ba92255faa7309d06fe44c3a4a97efe1c8d640c2a79a5ef728b685762a6fd2", size = 66460, upload-time = "2025-08-10T21:26:11.083Z" }, + { url = "https://files.pythonhosted.org/packages/5b/5a/51f5464373ce2aeb5194508298a508b6f21d3867f499556263c64c621914/kiwisolver-1.4.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a2899935e724dd1074cb568ce7ac0dce28b2cd6ab539c8e001a8578eb106d14", size = 64952, upload-time = "2025-08-10T21:26:12.058Z" }, + { url = "https://files.pythonhosted.org/packages/70/90/6d240beb0f24b74371762873e9b7f499f1e02166a2d9c5801f4dbf8fa12e/kiwisolver-1.4.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f6008a4919fdbc0b0097089f67a1eb55d950ed7e90ce2cc3e640abadd2757a04", size = 1474756, upload-time = "2025-08-10T21:26:13.096Z" }, + { url = "https://files.pythonhosted.org/packages/12/42/f36816eaf465220f683fb711efdd1bbf7a7005a2473d0e4ed421389bd26c/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:67bb8b474b4181770f926f7b7d2f8c0248cbcb78b660fdd41a47054b28d2a752", size = 1276404, upload-time = "2025-08-10T21:26:14.457Z" }, + { url = "https://files.pythonhosted.org/packages/2e/64/bc2de94800adc830c476dce44e9b40fd0809cddeef1fde9fcf0f73da301f/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2327a4a30d3ee07d2fbe2e7933e8a37c591663b96ce42a00bc67461a87d7df77", size = 1294410, upload-time = "2025-08-10T21:26:15.73Z" }, + { url = "https://files.pythonhosted.org/packages/5f/42/2dc82330a70aa8e55b6d395b11018045e58d0bb00834502bf11509f79091/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7a08b491ec91b1d5053ac177afe5290adacf1f0f6307d771ccac5de30592d198", size = 1343631, upload-time = "2025-08-10T21:26:17.045Z" }, + { url = "https://files.pythonhosted.org/packages/22/fd/f4c67a6ed1aab149ec5a8a401c323cee7a1cbe364381bb6c9c0d564e0e20/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d8fc5c867c22b828001b6a38d2eaeb88160bf5783c6cb4a5e440efc981ce286d", size = 2224963, upload-time = "2025-08-10T21:26:18.737Z" }, + { url = "https://files.pythonhosted.org/packages/45/aa/76720bd4cb3713314677d9ec94dcc21ced3f1baf4830adde5bb9b2430a5f/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3b3115b2581ea35bb6d1f24a4c90af37e5d9b49dcff267eeed14c3893c5b86ab", size = 2321295, upload-time = "2025-08-10T21:26:20.11Z" }, + { url = "https://files.pythonhosted.org/packages/80/19/d3ec0d9ab711242f56ae0dc2fc5d70e298bb4a1f9dfab44c027668c673a1/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858e4c22fb075920b96a291928cb7dea5644e94c0ee4fcd5af7e865655e4ccf2", size = 2487987, upload-time = "2025-08-10T21:26:21.49Z" }, + { url = "https://files.pythonhosted.org/packages/39/e9/61e4813b2c97e86b6fdbd4dd824bf72d28bcd8d4849b8084a357bc0dd64d/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ed0fecd28cc62c54b262e3736f8bb2512d8dcfdc2bcf08be5f47f96bf405b145", size = 2291817, upload-time = "2025-08-10T21:26:22.812Z" }, + { url = "https://files.pythonhosted.org/packages/a0/41/85d82b0291db7504da3c2defe35c9a8a5c9803a730f297bd823d11d5fb77/kiwisolver-1.4.9-cp312-cp312-win_amd64.whl", hash = "sha256:f68208a520c3d86ea51acf688a3e3002615a7f0238002cccc17affecc86a8a54", size = 73895, upload-time = "2025-08-10T21:26:24.37Z" }, + { url = "https://files.pythonhosted.org/packages/e2/92/5f3068cf15ee5cb624a0c7596e67e2a0bb2adee33f71c379054a491d07da/kiwisolver-1.4.9-cp312-cp312-win_arm64.whl", hash = "sha256:2c1a4f57df73965f3f14df20b80ee29e6a7930a57d2d9e8491a25f676e197c60", size = 64992, upload-time = "2025-08-10T21:26:25.732Z" }, + { url = "https://files.pythonhosted.org/packages/31/c1/c2686cda909742ab66c7388e9a1a8521a59eb89f8bcfbee28fc980d07e24/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a5d0432ccf1c7ab14f9949eec60c5d1f924f17c037e9f8b33352fa05799359b8", size = 123681, upload-time = "2025-08-10T21:26:26.725Z" }, + { url = "https://files.pythonhosted.org/packages/ca/f0/f44f50c9f5b1a1860261092e3bc91ecdc9acda848a8b8c6abfda4a24dd5c/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efb3a45b35622bb6c16dbfab491a8f5a391fe0e9d45ef32f4df85658232ca0e2", size = 66464, upload-time = "2025-08-10T21:26:27.733Z" }, + { url = "https://files.pythonhosted.org/packages/2d/7a/9d90a151f558e29c3936b8a47ac770235f436f2120aca41a6d5f3d62ae8d/kiwisolver-1.4.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a12cf6398e8a0a001a059747a1cbf24705e18fe413bc22de7b3d15c67cffe3f", size = 64961, upload-time = "2025-08-10T21:26:28.729Z" }, + { url = "https://files.pythonhosted.org/packages/e9/e9/f218a2cb3a9ffbe324ca29a9e399fa2d2866d7f348ec3a88df87fc248fc5/kiwisolver-1.4.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b67e6efbf68e077dd71d1a6b37e43e1a99d0bff1a3d51867d45ee8908b931098", size = 1474607, upload-time = "2025-08-10T21:26:29.798Z" }, + { url = "https://files.pythonhosted.org/packages/d9/28/aac26d4c882f14de59041636292bc838db8961373825df23b8eeb807e198/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5656aa670507437af0207645273ccdfee4f14bacd7f7c67a4306d0dcaeaf6eed", size = 1276546, upload-time = "2025-08-10T21:26:31.401Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ad/8bfc1c93d4cc565e5069162f610ba2f48ff39b7de4b5b8d93f69f30c4bed/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bfc08add558155345129c7803b3671cf195e6a56e7a12f3dde7c57d9b417f525", size = 1294482, upload-time = "2025-08-10T21:26:32.721Z" }, + { url = "https://files.pythonhosted.org/packages/da/f1/6aca55ff798901d8ce403206d00e033191f63d82dd708a186e0ed2067e9c/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:40092754720b174e6ccf9e845d0d8c7d8e12c3d71e7fc35f55f3813e96376f78", size = 1343720, upload-time = "2025-08-10T21:26:34.032Z" }, + { url = "https://files.pythonhosted.org/packages/d1/91/eed031876c595c81d90d0f6fc681ece250e14bf6998c3d7c419466b523b7/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:497d05f29a1300d14e02e6441cf0f5ee81c1ff5a304b0d9fb77423974684e08b", size = 2224907, upload-time = "2025-08-10T21:26:35.824Z" }, + { url = "https://files.pythonhosted.org/packages/e9/ec/4d1925f2e49617b9cca9c34bfa11adefad49d00db038e692a559454dfb2e/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bdd1a81a1860476eb41ac4bc1e07b3f07259e6d55bbf739b79c8aaedcf512799", size = 2321334, upload-time = "2025-08-10T21:26:37.534Z" }, + { url = "https://files.pythonhosted.org/packages/43/cb/450cd4499356f68802750c6ddc18647b8ea01ffa28f50d20598e0befe6e9/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e6b93f13371d341afee3be9f7c5964e3fe61d5fa30f6a30eb49856935dfe4fc3", size = 2488313, upload-time = "2025-08-10T21:26:39.191Z" }, + { url = "https://files.pythonhosted.org/packages/71/67/fc76242bd99f885651128a5d4fa6083e5524694b7c88b489b1b55fdc491d/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d75aa530ccfaa593da12834b86a0724f58bff12706659baa9227c2ccaa06264c", size = 2291970, upload-time = "2025-08-10T21:26:40.828Z" }, + { url = "https://files.pythonhosted.org/packages/75/bd/f1a5d894000941739f2ae1b65a32892349423ad49c2e6d0771d0bad3fae4/kiwisolver-1.4.9-cp313-cp313-win_amd64.whl", hash = "sha256:dd0a578400839256df88c16abddf9ba14813ec5f21362e1fe65022e00c883d4d", size = 73894, upload-time = "2025-08-10T21:26:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/95/38/dce480814d25b99a391abbddadc78f7c117c6da34be68ca8b02d5848b424/kiwisolver-1.4.9-cp313-cp313-win_arm64.whl", hash = "sha256:d4188e73af84ca82468f09cadc5ac4db578109e52acb4518d8154698d3a87ca2", size = 64995, upload-time = "2025-08-10T21:26:43.889Z" }, + { url = "https://files.pythonhosted.org/packages/e2/37/7d218ce5d92dadc5ebdd9070d903e0c7cf7edfe03f179433ac4d13ce659c/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:5a0f2724dfd4e3b3ac5a82436a8e6fd16baa7d507117e4279b660fe8ca38a3a1", size = 126510, upload-time = "2025-08-10T21:26:44.915Z" }, + { url = "https://files.pythonhosted.org/packages/23/b0/e85a2b48233daef4b648fb657ebbb6f8367696a2d9548a00b4ee0eb67803/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1b11d6a633e4ed84fc0ddafd4ebfd8ea49b3f25082c04ad12b8315c11d504dc1", size = 67903, upload-time = "2025-08-10T21:26:45.934Z" }, + { url = "https://files.pythonhosted.org/packages/44/98/f2425bc0113ad7de24da6bb4dae1343476e95e1d738be7c04d31a5d037fd/kiwisolver-1.4.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61874cdb0a36016354853593cffc38e56fc9ca5aa97d2c05d3dcf6922cd55a11", size = 66402, upload-time = "2025-08-10T21:26:47.101Z" }, + { url = "https://files.pythonhosted.org/packages/98/d8/594657886df9f34c4177cc353cc28ca7e6e5eb562d37ccc233bff43bbe2a/kiwisolver-1.4.9-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:60c439763a969a6af93b4881db0eed8fadf93ee98e18cbc35bc8da868d0c4f0c", size = 1582135, upload-time = "2025-08-10T21:26:48.665Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c6/38a115b7170f8b306fc929e166340c24958347308ea3012c2b44e7e295db/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92a2f997387a1b79a75e7803aa7ded2cfbe2823852ccf1ba3bcf613b62ae3197", size = 1389409, upload-time = "2025-08-10T21:26:50.335Z" }, + { url = "https://files.pythonhosted.org/packages/bf/3b/e04883dace81f24a568bcee6eb3001da4ba05114afa622ec9b6fafdc1f5e/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a31d512c812daea6d8b3be3b2bfcbeb091dbb09177706569bcfc6240dcf8b41c", size = 1401763, upload-time = "2025-08-10T21:26:51.867Z" }, + { url = "https://files.pythonhosted.org/packages/9f/80/20ace48e33408947af49d7d15c341eaee69e4e0304aab4b7660e234d6288/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:52a15b0f35dad39862d376df10c5230155243a2c1a436e39eb55623ccbd68185", size = 1453643, upload-time = "2025-08-10T21:26:53.592Z" }, + { url = "https://files.pythonhosted.org/packages/64/31/6ce4380a4cd1f515bdda976a1e90e547ccd47b67a1546d63884463c92ca9/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a30fd6fdef1430fd9e1ba7b3398b5ee4e2887783917a687d86ba69985fb08748", size = 2330818, upload-time = "2025-08-10T21:26:55.051Z" }, + { url = "https://files.pythonhosted.org/packages/fa/e9/3f3fcba3bcc7432c795b82646306e822f3fd74df0ee81f0fa067a1f95668/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cc9617b46837c6468197b5945e196ee9ca43057bb7d9d1ae688101e4e1dddf64", size = 2419963, upload-time = "2025-08-10T21:26:56.421Z" }, + { url = "https://files.pythonhosted.org/packages/99/43/7320c50e4133575c66e9f7dadead35ab22d7c012a3b09bb35647792b2a6d/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:0ab74e19f6a2b027ea4f845a78827969af45ce790e6cb3e1ebab71bdf9f215ff", size = 2594639, upload-time = "2025-08-10T21:26:57.882Z" }, + { url = "https://files.pythonhosted.org/packages/65/d6/17ae4a270d4a987ef8a385b906d2bdfc9fce502d6dc0d3aea865b47f548c/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dba5ee5d3981160c28d5490f0d1b7ed730c22470ff7f6cc26cfcfaacb9896a07", size = 2391741, upload-time = "2025-08-10T21:26:59.237Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8f/8f6f491d595a9e5912971f3f863d81baddccc8a4d0c3749d6a0dd9ffc9df/kiwisolver-1.4.9-cp313-cp313t-win_arm64.whl", hash = "sha256:0749fd8f4218ad2e851e11cc4dc05c7cbc0cbc4267bdfdb31782e65aace4ee9c", size = 68646, upload-time = "2025-08-10T21:27:00.52Z" }, + { url = "https://files.pythonhosted.org/packages/6b/32/6cc0fbc9c54d06c2969faa9c1d29f5751a2e51809dd55c69055e62d9b426/kiwisolver-1.4.9-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:9928fe1eb816d11ae170885a74d074f57af3a0d65777ca47e9aeb854a1fba386", size = 123806, upload-time = "2025-08-10T21:27:01.537Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/2bfb1d4a4823d92e8cbb420fe024b8d2167f72079b3bb941207c42570bdf/kiwisolver-1.4.9-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d0005b053977e7b43388ddec89fa567f43d4f6d5c2c0affe57de5ebf290dc552", size = 66605, upload-time = "2025-08-10T21:27:03.335Z" }, + { url = "https://files.pythonhosted.org/packages/f7/69/00aafdb4e4509c2ca6064646cba9cd4b37933898f426756adb2cb92ebbed/kiwisolver-1.4.9-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2635d352d67458b66fd0667c14cb1d4145e9560d503219034a18a87e971ce4f3", size = 64925, upload-time = "2025-08-10T21:27:04.339Z" }, + { url = "https://files.pythonhosted.org/packages/43/dc/51acc6791aa14e5cb6d8a2e28cefb0dc2886d8862795449d021334c0df20/kiwisolver-1.4.9-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:767c23ad1c58c9e827b649a9ab7809fd5fd9db266a9cf02b0e926ddc2c680d58", size = 1472414, upload-time = "2025-08-10T21:27:05.437Z" }, + { url = "https://files.pythonhosted.org/packages/3d/bb/93fa64a81db304ac8a246f834d5094fae4b13baf53c839d6bb6e81177129/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72d0eb9fba308b8311685c2268cf7d0a0639a6cd027d8128659f72bdd8a024b4", size = 1281272, upload-time = "2025-08-10T21:27:07.063Z" }, + { url = "https://files.pythonhosted.org/packages/70/e6/6df102916960fb8d05069d4bd92d6d9a8202d5a3e2444494e7cd50f65b7a/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f68e4f3eeca8fb22cc3d731f9715a13b652795ef657a13df1ad0c7dc0e9731df", size = 1298578, upload-time = "2025-08-10T21:27:08.452Z" }, + { url = "https://files.pythonhosted.org/packages/7c/47/e142aaa612f5343736b087864dbaebc53ea8831453fb47e7521fa8658f30/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d84cd4061ae292d8ac367b2c3fa3aad11cb8625a95d135fe93f286f914f3f5a6", size = 1345607, upload-time = "2025-08-10T21:27:10.125Z" }, + { url = "https://files.pythonhosted.org/packages/54/89/d641a746194a0f4d1a3670fb900d0dbaa786fb98341056814bc3f058fa52/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a60ea74330b91bd22a29638940d115df9dc00af5035a9a2a6ad9399ffb4ceca5", size = 2230150, upload-time = "2025-08-10T21:27:11.484Z" }, + { url = "https://files.pythonhosted.org/packages/aa/6b/5ee1207198febdf16ac11f78c5ae40861b809cbe0e6d2a8d5b0b3044b199/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:ce6a3a4e106cf35c2d9c4fa17c05ce0b180db622736845d4315519397a77beaf", size = 2325979, upload-time = "2025-08-10T21:27:12.917Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ff/b269eefd90f4ae14dcc74973d5a0f6d28d3b9bb1afd8c0340513afe6b39a/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:77937e5e2a38a7b48eef0585114fe7930346993a88060d0bf886086d2aa49ef5", size = 2491456, upload-time = "2025-08-10T21:27:14.353Z" }, + { url = "https://files.pythonhosted.org/packages/fc/d4/10303190bd4d30de547534601e259a4fbf014eed94aae3e5521129215086/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:24c175051354f4a28c5d6a31c93906dc653e2bf234e8a4bbfb964892078898ce", size = 2294621, upload-time = "2025-08-10T21:27:15.808Z" }, + { url = "https://files.pythonhosted.org/packages/28/e0/a9a90416fce5c0be25742729c2ea52105d62eda6c4be4d803c2a7be1fa50/kiwisolver-1.4.9-cp314-cp314-win_amd64.whl", hash = "sha256:0763515d4df10edf6d06a3c19734e2566368980d21ebec439f33f9eb936c07b7", size = 75417, upload-time = "2025-08-10T21:27:17.436Z" }, + { url = "https://files.pythonhosted.org/packages/1f/10/6949958215b7a9a264299a7db195564e87900f709db9245e4ebdd3c70779/kiwisolver-1.4.9-cp314-cp314-win_arm64.whl", hash = "sha256:0e4e2bf29574a6a7b7f6cb5fa69293b9f96c928949ac4a53ba3f525dffb87f9c", size = 66582, upload-time = "2025-08-10T21:27:18.436Z" }, + { url = "https://files.pythonhosted.org/packages/ec/79/60e53067903d3bc5469b369fe0dfc6b3482e2133e85dae9daa9527535991/kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:d976bbb382b202f71c67f77b0ac11244021cfa3f7dfd9e562eefcea2df711548", size = 126514, upload-time = "2025-08-10T21:27:19.465Z" }, + { url = "https://files.pythonhosted.org/packages/25/d1/4843d3e8d46b072c12a38c97c57fab4608d36e13fe47d47ee96b4d61ba6f/kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2489e4e5d7ef9a1c300a5e0196e43d9c739f066ef23270607d45aba368b91f2d", size = 67905, upload-time = "2025-08-10T21:27:20.51Z" }, + { url = "https://files.pythonhosted.org/packages/8c/ae/29ffcbd239aea8b93108de1278271ae764dfc0d803a5693914975f200596/kiwisolver-1.4.9-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e2ea9f7ab7fbf18fffb1b5434ce7c69a07582f7acc7717720f1d69f3e806f90c", size = 66399, upload-time = "2025-08-10T21:27:21.496Z" }, + { url = "https://files.pythonhosted.org/packages/a1/ae/d7ba902aa604152c2ceba5d352d7b62106bedbccc8e95c3934d94472bfa3/kiwisolver-1.4.9-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b34e51affded8faee0dfdb705416153819d8ea9250bbbf7ea1b249bdeb5f1122", size = 1582197, upload-time = "2025-08-10T21:27:22.604Z" }, + { url = "https://files.pythonhosted.org/packages/f2/41/27c70d427eddb8bc7e4f16420a20fefc6f480312122a59a959fdfe0445ad/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8aacd3d4b33b772542b2e01beb50187536967b514b00003bdda7589722d2a64", size = 1390125, upload-time = "2025-08-10T21:27:24.036Z" }, + { url = "https://files.pythonhosted.org/packages/41/42/b3799a12bafc76d962ad69083f8b43b12bf4fe78b097b12e105d75c9b8f1/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7cf974dd4e35fa315563ac99d6287a1024e4dc2077b8a7d7cd3d2fb65d283134", size = 1402612, upload-time = "2025-08-10T21:27:25.773Z" }, + { url = "https://files.pythonhosted.org/packages/d2/b5/a210ea073ea1cfaca1bb5c55a62307d8252f531beb364e18aa1e0888b5a0/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:85bd218b5ecfbee8c8a82e121802dcb519a86044c9c3b2e4aef02fa05c6da370", size = 1453990, upload-time = "2025-08-10T21:27:27.089Z" }, + { url = "https://files.pythonhosted.org/packages/5f/ce/a829eb8c033e977d7ea03ed32fb3c1781b4fa0433fbadfff29e39c676f32/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0856e241c2d3df4efef7c04a1e46b1936b6120c9bcf36dd216e3acd84bc4fb21", size = 2331601, upload-time = "2025-08-10T21:27:29.343Z" }, + { url = "https://files.pythonhosted.org/packages/e0/4b/b5e97eb142eb9cd0072dacfcdcd31b1c66dc7352b0f7c7255d339c0edf00/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:9af39d6551f97d31a4deebeac6f45b156f9755ddc59c07b402c148f5dbb6482a", size = 2422041, upload-time = "2025-08-10T21:27:30.754Z" }, + { url = "https://files.pythonhosted.org/packages/40/be/8eb4cd53e1b85ba4edc3a9321666f12b83113a178845593307a3e7891f44/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:bb4ae2b57fc1d8cbd1cf7b1d9913803681ffa903e7488012be5b76dedf49297f", size = 2594897, upload-time = "2025-08-10T21:27:32.803Z" }, + { url = "https://files.pythonhosted.org/packages/99/dd/841e9a66c4715477ea0abc78da039832fbb09dac5c35c58dc4c41a407b8a/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:aedff62918805fb62d43a4aa2ecd4482c380dc76cd31bd7c8878588a61bd0369", size = 2391835, upload-time = "2025-08-10T21:27:34.23Z" }, + { url = "https://files.pythonhosted.org/packages/0c/28/4b2e5c47a0da96896fdfdb006340ade064afa1e63675d01ea5ac222b6d52/kiwisolver-1.4.9-cp314-cp314t-win_amd64.whl", hash = "sha256:1fa333e8b2ce4d9660f2cda9c0e1b6bafcfb2457a9d259faa82289e73ec24891", size = 79988, upload-time = "2025-08-10T21:27:35.587Z" }, + { url = "https://files.pythonhosted.org/packages/80/be/3578e8afd18c88cdf9cb4cffde75a96d2be38c5a903f1ed0ceec061bd09e/kiwisolver-1.4.9-cp314-cp314t-win_arm64.whl", hash = "sha256:4a48a2ce79d65d363597ef7b567ce3d14d68783d2b2263d98db3d9477805ba32", size = 70260, upload-time = "2025-08-10T21:27:36.606Z" }, +] + +[[package]] +name = "lithops" +version = "3.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "cloudpickle" }, + { name = "paramiko" }, + { name = "pika" }, + { name = "ps-mem" }, + { name = "psutil" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "six" }, + { name = "tabulate" }, + { name = "tblib" }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/8b/8d8e77bdafa7c326fdc06bdd2e6299012d8f56e0969cf04ffbd5e631d68c/lithops-3.6.1.tar.gz", hash = "sha256:312468643f3e84ac9fd5de8503e2a4f9f771210fea63465e41be97bb18620ee1", size = 274339, upload-time = "2025-07-22T12:46:20.913Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/d6/5d1acade19029fb9b702a6138c987326d8007b1aecf68a4a65f1f3ca2aa9/lithops-3.6.1-py3-none-any.whl", hash = "sha256:a72a978cd17bfb28f48ede25395c45d3b172c1c23a5fdc21a5c08b9e4512ad03", size = 390256, upload-time = "2025-07-22T12:46:18.861Z" }, +] + +[[package]] +name = "locket" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/83/97b29fe05cb6ae28d2dbd30b81e2e402a3eed5f460c26e9eaa5895ceacf5/locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632", size = 4350, upload-time = "2022-04-20T22:04:44.312Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/bc/83e112abc66cd466c6b83f99118035867cecd41802f8d044638aa78a106e/locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3", size = 4398, upload-time = "2022-04-20T22:04:42.23Z" }, +] + +[[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.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload-time = "2024-10-18T15:21:13.777Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload-time = "2024-10-18T15:21:14.822Z" }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload-time = "2024-10-18T15:21:15.642Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload-time = "2024-10-18T15:21:17.133Z" }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload-time = "2024-10-18T15:21:18.064Z" }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload-time = "2024-10-18T15:21:18.859Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload-time = "2024-10-18T15:21:19.671Z" }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload-time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274, upload-time = "2024-10-18T15:21:24.577Z" }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352, upload-time = "2024-10-18T15:21:25.382Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122, upload-time = "2024-10-18T15:21:26.199Z" }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload-time = "2024-10-18T15:21:27.029Z" }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload-time = "2024-10-18T15:21:27.846Z" }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload-time = "2024-10-18T15:21:28.744Z" }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload-time = "2024-10-18T15:21:29.545Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload-time = "2024-10-18T15:21:30.366Z" }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload-time = "2024-10-18T15:21:31.207Z" }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload-time = "2024-10-18T15:21:32.032Z" }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload-time = "2024-10-18T15:21:33.625Z" }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload-time = "2024-10-18T15:21:34.611Z" }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload-time = "2024-10-18T15:21:35.398Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload-time = "2024-10-18T15:21:36.231Z" }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload-time = "2024-10-18T15:21:37.073Z" }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload-time = "2024-10-18T15:21:37.932Z" }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload-time = "2024-10-18T15:21:39.799Z" }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload-time = "2024-10-18T15:21:40.813Z" }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload-time = "2024-10-18T15:21:41.814Z" }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload-time = "2024-10-18T15:21:42.784Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.10.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "kiwisolver" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/43/91/f2939bb60b7ebf12478b030e0d7f340247390f402b3b189616aad790c366/matplotlib-3.10.5.tar.gz", hash = "sha256:352ed6ccfb7998a00881692f38b4ca083c691d3e275b4145423704c34c909076", size = 34804044, upload-time = "2025-07-31T18:09:33.805Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/66/1e/c6f6bcd882d589410b475ca1fc22e34e34c82adff519caf18f3e6dd9d682/matplotlib-3.10.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:00b6feadc28a08bd3c65b2894f56cf3c94fc8f7adcbc6ab4516ae1e8ed8f62e2", size = 8253056, upload-time = "2025-07-31T18:08:05.385Z" }, + { url = "https://files.pythonhosted.org/packages/53/e6/d6f7d1b59413f233793dda14419776f5f443bcccb2dfc84b09f09fe05dbe/matplotlib-3.10.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee98a5c5344dc7f48dc261b6ba5d9900c008fc12beb3fa6ebda81273602cc389", size = 8110131, upload-time = "2025-07-31T18:08:07.293Z" }, + { url = "https://files.pythonhosted.org/packages/66/2b/bed8a45e74957549197a2ac2e1259671cd80b55ed9e1fe2b5c94d88a9202/matplotlib-3.10.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a17e57e33de901d221a07af32c08870ed4528db0b6059dce7d7e65c1122d4bea", size = 8669603, upload-time = "2025-07-31T18:08:09.064Z" }, + { url = "https://files.pythonhosted.org/packages/7e/a7/315e9435b10d057f5e52dfc603cd353167ae28bb1a4e033d41540c0067a4/matplotlib-3.10.5-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97b9d6443419085950ee4a5b1ee08c363e5c43d7176e55513479e53669e88468", size = 9508127, upload-time = "2025-07-31T18:08:10.845Z" }, + { url = "https://files.pythonhosted.org/packages/7f/d9/edcbb1f02ca99165365d2768d517898c22c6040187e2ae2ce7294437c413/matplotlib-3.10.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ceefe5d40807d29a66ae916c6a3915d60ef9f028ce1927b84e727be91d884369", size = 9566926, upload-time = "2025-07-31T18:08:13.186Z" }, + { url = "https://files.pythonhosted.org/packages/3b/d9/6dd924ad5616c97b7308e6320cf392c466237a82a2040381163b7500510a/matplotlib-3.10.5-cp312-cp312-win_amd64.whl", hash = "sha256:c04cba0f93d40e45b3c187c6c52c17f24535b27d545f757a2fffebc06c12b98b", size = 8107599, upload-time = "2025-07-31T18:08:15.116Z" }, + { url = "https://files.pythonhosted.org/packages/0e/f3/522dc319a50f7b0279fbe74f86f7a3506ce414bc23172098e8d2bdf21894/matplotlib-3.10.5-cp312-cp312-win_arm64.whl", hash = "sha256:a41bcb6e2c8e79dc99c5511ae6f7787d2fb52efd3d805fff06d5d4f667db16b2", size = 7978173, upload-time = "2025-07-31T18:08:21.518Z" }, + { url = "https://files.pythonhosted.org/packages/8d/05/4f3c1f396075f108515e45cb8d334aff011a922350e502a7472e24c52d77/matplotlib-3.10.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:354204db3f7d5caaa10e5de74549ef6a05a4550fdd1c8f831ab9bca81efd39ed", size = 8253586, upload-time = "2025-07-31T18:08:23.107Z" }, + { url = "https://files.pythonhosted.org/packages/2f/2c/e084415775aac7016c3719fe7006cdb462582c6c99ac142f27303c56e243/matplotlib-3.10.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b072aac0c3ad563a2b3318124756cb6112157017f7431626600ecbe890df57a1", size = 8110715, upload-time = "2025-07-31T18:08:24.675Z" }, + { url = "https://files.pythonhosted.org/packages/52/1b/233e3094b749df16e3e6cd5a44849fd33852e692ad009cf7de00cf58ddf6/matplotlib-3.10.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d52fd5b684d541b5a51fb276b2b97b010c75bee9aa392f96b4a07aeb491e33c7", size = 8669397, upload-time = "2025-07-31T18:08:26.778Z" }, + { url = "https://files.pythonhosted.org/packages/e8/ec/03f9e003a798f907d9f772eed9b7c6a9775d5bd00648b643ebfb88e25414/matplotlib-3.10.5-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee7a09ae2f4676276f5a65bd9f2bd91b4f9fbaedf49f40267ce3f9b448de501f", size = 9508646, upload-time = "2025-07-31T18:08:28.848Z" }, + { url = "https://files.pythonhosted.org/packages/91/e7/c051a7a386680c28487bca27d23b02d84f63e3d2a9b4d2fc478e6a42e37e/matplotlib-3.10.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ba6c3c9c067b83481d647af88b4e441d532acdb5ef22178a14935b0b881188f4", size = 9567424, upload-time = "2025-07-31T18:08:30.726Z" }, + { url = "https://files.pythonhosted.org/packages/36/c2/24302e93ff431b8f4173ee1dd88976c8d80483cadbc5d3d777cef47b3a1c/matplotlib-3.10.5-cp313-cp313-win_amd64.whl", hash = "sha256:07442d2692c9bd1cceaa4afb4bbe5b57b98a7599de4dabfcca92d3eea70f9ebe", size = 8107809, upload-time = "2025-07-31T18:08:33.928Z" }, + { url = "https://files.pythonhosted.org/packages/0b/33/423ec6a668d375dad825197557ed8fbdb74d62b432c1ed8235465945475f/matplotlib-3.10.5-cp313-cp313-win_arm64.whl", hash = "sha256:48fe6d47380b68a37ccfcc94f009530e84d41f71f5dae7eda7c4a5a84aa0a674", size = 7978078, upload-time = "2025-07-31T18:08:36.764Z" }, + { url = "https://files.pythonhosted.org/packages/51/17/521fc16ec766455c7bb52cc046550cf7652f6765ca8650ff120aa2d197b6/matplotlib-3.10.5-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b80eb8621331449fc519541a7461987f10afa4f9cfd91afcd2276ebe19bd56c", size = 8295590, upload-time = "2025-07-31T18:08:38.521Z" }, + { url = "https://files.pythonhosted.org/packages/f8/12/23c28b2c21114c63999bae129fce7fd34515641c517ae48ce7b7dcd33458/matplotlib-3.10.5-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:47a388908e469d6ca2a6015858fa924e0e8a2345a37125948d8e93a91c47933e", size = 8158518, upload-time = "2025-07-31T18:08:40.195Z" }, + { url = "https://files.pythonhosted.org/packages/81/f8/aae4eb25e8e7190759f3cb91cbeaa344128159ac92bb6b409e24f8711f78/matplotlib-3.10.5-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8b6b49167d208358983ce26e43aa4196073b4702858670f2eb111f9a10652b4b", size = 8691815, upload-time = "2025-07-31T18:08:42.238Z" }, + { url = "https://files.pythonhosted.org/packages/d0/ba/450c39ebdd486bd33a359fc17365ade46c6a96bf637bbb0df7824de2886c/matplotlib-3.10.5-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a8da0453a7fd8e3da114234ba70c5ba9ef0e98f190309ddfde0f089accd46ea", size = 9522814, upload-time = "2025-07-31T18:08:44.914Z" }, + { url = "https://files.pythonhosted.org/packages/89/11/9c66f6a990e27bb9aa023f7988d2d5809cb98aa39c09cbf20fba75a542ef/matplotlib-3.10.5-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:52c6573dfcb7726a9907b482cd5b92e6b5499b284ffacb04ffbfe06b3e568124", size = 9573917, upload-time = "2025-07-31T18:08:47.038Z" }, + { url = "https://files.pythonhosted.org/packages/b3/69/8b49394de92569419e5e05e82e83df9b749a0ff550d07631ea96ed2eb35a/matplotlib-3.10.5-cp313-cp313t-win_amd64.whl", hash = "sha256:a23193db2e9d64ece69cac0c8231849db7dd77ce59c7b89948cf9d0ce655a3ce", size = 8181034, upload-time = "2025-07-31T18:08:48.943Z" }, + { url = "https://files.pythonhosted.org/packages/47/23/82dc435bb98a2fc5c20dffcac8f0b083935ac28286413ed8835df40d0baa/matplotlib-3.10.5-cp313-cp313t-win_arm64.whl", hash = "sha256:56da3b102cf6da2776fef3e71cd96fcf22103a13594a18ac9a9b31314e0be154", size = 8023337, upload-time = "2025-07-31T18:08:50.791Z" }, + { url = "https://files.pythonhosted.org/packages/ac/e0/26b6cfde31f5383503ee45dcb7e691d45dadf0b3f54639332b59316a97f8/matplotlib-3.10.5-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:96ef8f5a3696f20f55597ffa91c28e2e73088df25c555f8d4754931515512715", size = 8253591, upload-time = "2025-07-31T18:08:53.254Z" }, + { url = "https://files.pythonhosted.org/packages/c1/89/98488c7ef7ea20ea659af7499628c240a608b337af4be2066d644cfd0a0f/matplotlib-3.10.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:77fab633e94b9da60512d4fa0213daeb76d5a7b05156840c4fd0399b4b818837", size = 8112566, upload-time = "2025-07-31T18:08:55.116Z" }, + { url = "https://files.pythonhosted.org/packages/52/67/42294dfedc82aea55e1a767daf3263aacfb5a125f44ba189e685bab41b6f/matplotlib-3.10.5-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:27f52634315e96b1debbfdc5c416592edcd9c4221bc2f520fd39c33db5d9f202", size = 9513281, upload-time = "2025-07-31T18:08:56.885Z" }, + { url = "https://files.pythonhosted.org/packages/e7/68/f258239e0cf34c2cbc816781c7ab6fca768452e6bf1119aedd2bd4a882a3/matplotlib-3.10.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:525f6e28c485c769d1f07935b660c864de41c37fd716bfa64158ea646f7084bb", size = 9780873, upload-time = "2025-07-31T18:08:59.241Z" }, + { url = "https://files.pythonhosted.org/packages/89/64/f4881554006bd12e4558bd66778bdd15d47b00a1f6c6e8b50f6208eda4b3/matplotlib-3.10.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1f5f3ec4c191253c5f2b7c07096a142c6a1c024d9f738247bfc8e3f9643fc975", size = 9568954, upload-time = "2025-07-31T18:09:01.244Z" }, + { url = "https://files.pythonhosted.org/packages/06/f8/42779d39c3f757e1f012f2dda3319a89fb602bd2ef98ce8faf0281f4febd/matplotlib-3.10.5-cp314-cp314-win_amd64.whl", hash = "sha256:707f9c292c4cd4716f19ab8a1f93f26598222cd931e0cd98fbbb1c5994bf7667", size = 8237465, upload-time = "2025-07-31T18:09:03.206Z" }, + { url = "https://files.pythonhosted.org/packages/cf/f8/153fd06b5160f0cd27c8b9dd797fcc9fb56ac6a0ebf3c1f765b6b68d3c8a/matplotlib-3.10.5-cp314-cp314-win_arm64.whl", hash = "sha256:21a95b9bf408178d372814de7baacd61c712a62cae560b5e6f35d791776f6516", size = 8108898, upload-time = "2025-07-31T18:09:05.231Z" }, + { url = "https://files.pythonhosted.org/packages/9a/ee/c4b082a382a225fe0d2a73f1f57cf6f6f132308805b493a54c8641006238/matplotlib-3.10.5-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:a6b310f95e1102a8c7c817ef17b60ee5d1851b8c71b63d9286b66b177963039e", size = 8295636, upload-time = "2025-07-31T18:09:07.306Z" }, + { url = "https://files.pythonhosted.org/packages/30/73/2195fa2099718b21a20da82dfc753bf2af58d596b51aefe93e359dd5915a/matplotlib-3.10.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:94986a242747a0605cb3ff1cb98691c736f28a59f8ffe5175acaeb7397c49a5a", size = 8158575, upload-time = "2025-07-31T18:09:09.083Z" }, + { url = "https://files.pythonhosted.org/packages/f6/e9/a08cdb34618a91fa08f75e6738541da5cacde7c307cea18ff10f0d03fcff/matplotlib-3.10.5-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ff10ea43288f0c8bab608a305dc6c918cc729d429c31dcbbecde3b9f4d5b569", size = 9522815, upload-time = "2025-07-31T18:09:11.191Z" }, + { url = "https://files.pythonhosted.org/packages/4e/bb/34d8b7e0d1bb6d06ef45db01dfa560d5a67b1c40c0b998ce9ccde934bb09/matplotlib-3.10.5-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f6adb644c9d040ffb0d3434e440490a66cf73dbfa118a6f79cd7568431f7a012", size = 9783514, upload-time = "2025-07-31T18:09:13.307Z" }, + { url = "https://files.pythonhosted.org/packages/12/09/d330d1e55dcca2e11b4d304cc5227f52e2512e46828d6249b88e0694176e/matplotlib-3.10.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:4fa40a8f98428f789a9dcacd625f59b7bc4e3ef6c8c7c80187a7a709475cf592", size = 9573932, upload-time = "2025-07-31T18:09:15.335Z" }, + { url = "https://files.pythonhosted.org/packages/eb/3b/f70258ac729aa004aca673800a53a2b0a26d49ca1df2eaa03289a1c40f81/matplotlib-3.10.5-cp314-cp314t-win_amd64.whl", hash = "sha256:95672a5d628b44207aab91ec20bf59c26da99de12b88f7e0b1fb0a84a86ff959", size = 8322003, upload-time = "2025-07-31T18:09:17.416Z" }, + { url = "https://files.pythonhosted.org/packages/5b/60/3601f8ce6d76a7c81c7f25a0e15fde0d6b66226dd187aa6d2838e6374161/matplotlib-3.10.5-cp314-cp314t-win_arm64.whl", hash = "sha256:2efaf97d72629e74252e0b5e3c46813e9eeaa94e011ecf8084a971a31a97f40b", size = 8153849, upload-time = "2025-07-31T18:09:19.673Z" }, +] + +[[package]] +name = "matplotlib-inline" +version = "0.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159, upload-time = "2024-04-15T13:44:44.803Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload-time = "2024-04-15T13:44:43.265Z" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, 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.6.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3d/2c/5dad12e82fbdf7470f29bff2171484bf07cb3b16ada60a6589af8f376440/multidict-6.6.3.tar.gz", hash = "sha256:798a9eb12dab0a6c2e29c1de6f3468af5cb2da6053a20dfa3344907eed0937cc", size = 101006, upload-time = "2025-06-30T15:53:46.929Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/a0/6b57988ea102da0623ea814160ed78d45a2645e4bbb499c2896d12833a70/multidict-6.6.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:056bebbeda16b2e38642d75e9e5310c484b7c24e3841dc0fb943206a72ec89d6", size = 76514, upload-time = "2025-06-30T15:51:48.728Z" }, + { url = "https://files.pythonhosted.org/packages/07/7a/d1e92665b0850c6c0508f101f9cf0410c1afa24973e1115fe9c6a185ebf7/multidict-6.6.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e5f481cccb3c5c5e5de5d00b5141dc589c1047e60d07e85bbd7dea3d4580d63f", size = 45394, upload-time = "2025-06-30T15:51:49.986Z" }, + { url = "https://files.pythonhosted.org/packages/52/6f/dd104490e01be6ef8bf9573705d8572f8c2d2c561f06e3826b081d9e6591/multidict-6.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:10bea2ee839a759ee368b5a6e47787f399b41e70cf0c20d90dfaf4158dfb4e55", size = 43590, upload-time = "2025-06-30T15:51:51.331Z" }, + { url = "https://files.pythonhosted.org/packages/44/fe/06e0e01b1b0611e6581b7fd5a85b43dacc08b6cea3034f902f383b0873e5/multidict-6.6.3-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:2334cfb0fa9549d6ce2c21af2bfbcd3ac4ec3646b1b1581c88e3e2b1779ec92b", size = 237292, upload-time = "2025-06-30T15:51:52.584Z" }, + { url = "https://files.pythonhosted.org/packages/ce/71/4f0e558fb77696b89c233c1ee2d92f3e1d5459070a0e89153c9e9e804186/multidict-6.6.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8fee016722550a2276ca2cb5bb624480e0ed2bd49125b2b73b7010b9090e888", size = 258385, upload-time = "2025-06-30T15:51:53.913Z" }, + { url = "https://files.pythonhosted.org/packages/e3/25/cca0e68228addad24903801ed1ab42e21307a1b4b6dd2cf63da5d3ae082a/multidict-6.6.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5511cb35f5c50a2db21047c875eb42f308c5583edf96bd8ebf7d770a9d68f6d", size = 242328, upload-time = "2025-06-30T15:51:55.672Z" }, + { url = "https://files.pythonhosted.org/packages/6e/a3/46f2d420d86bbcb8fe660b26a10a219871a0fbf4d43cb846a4031533f3e0/multidict-6.6.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:712b348f7f449948e0a6c4564a21c7db965af900973a67db432d724619b3c680", size = 268057, upload-time = "2025-06-30T15:51:57.037Z" }, + { url = "https://files.pythonhosted.org/packages/9e/73/1c743542fe00794a2ec7466abd3f312ccb8fad8dff9f36d42e18fb1ec33e/multidict-6.6.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e4e15d2138ee2694e038e33b7c3da70e6b0ad8868b9f8094a72e1414aeda9c1a", size = 269341, upload-time = "2025-06-30T15:51:59.111Z" }, + { url = "https://files.pythonhosted.org/packages/a4/11/6ec9dcbe2264b92778eeb85407d1df18812248bf3506a5a1754bc035db0c/multidict-6.6.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8df25594989aebff8a130f7899fa03cbfcc5d2b5f4a461cf2518236fe6f15961", size = 256081, upload-time = "2025-06-30T15:52:00.533Z" }, + { url = "https://files.pythonhosted.org/packages/9b/2b/631b1e2afeb5f1696846d747d36cda075bfdc0bc7245d6ba5c319278d6c4/multidict-6.6.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:159ca68bfd284a8860f8d8112cf0521113bffd9c17568579e4d13d1f1dc76b65", size = 253581, upload-time = "2025-06-30T15:52:02.43Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0e/7e3b93f79efeb6111d3bf9a1a69e555ba1d07ad1c11bceb56b7310d0d7ee/multidict-6.6.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e098c17856a8c9ade81b4810888c5ad1914099657226283cab3062c0540b0643", size = 250750, upload-time = "2025-06-30T15:52:04.26Z" }, + { url = "https://files.pythonhosted.org/packages/ad/9e/086846c1d6601948e7de556ee464a2d4c85e33883e749f46b9547d7b0704/multidict-6.6.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:67c92ed673049dec52d7ed39f8cf9ebbadf5032c774058b4406d18c8f8fe7063", size = 251548, upload-time = "2025-06-30T15:52:06.002Z" }, + { url = "https://files.pythonhosted.org/packages/8c/7b/86ec260118e522f1a31550e87b23542294880c97cfbf6fb18cc67b044c66/multidict-6.6.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:bd0578596e3a835ef451784053cfd327d607fc39ea1a14812139339a18a0dbc3", size = 262718, upload-time = "2025-06-30T15:52:07.707Z" }, + { url = "https://files.pythonhosted.org/packages/8c/bd/22ce8f47abb0be04692c9fc4638508b8340987b18691aa7775d927b73f72/multidict-6.6.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:346055630a2df2115cd23ae271910b4cae40f4e336773550dca4889b12916e75", size = 259603, upload-time = "2025-06-30T15:52:09.58Z" }, + { url = "https://files.pythonhosted.org/packages/07/9c/91b7ac1691be95cd1f4a26e36a74b97cda6aa9820632d31aab4410f46ebd/multidict-6.6.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:555ff55a359302b79de97e0468e9ee80637b0de1fce77721639f7cd9440b3a10", size = 251351, upload-time = "2025-06-30T15:52:10.947Z" }, + { url = "https://files.pythonhosted.org/packages/6f/5c/4d7adc739884f7a9fbe00d1eac8c034023ef8bad71f2ebe12823ca2e3649/multidict-6.6.3-cp312-cp312-win32.whl", hash = "sha256:73ab034fb8d58ff85c2bcbadc470efc3fafeea8affcf8722855fb94557f14cc5", size = 41860, upload-time = "2025-06-30T15:52:12.334Z" }, + { url = "https://files.pythonhosted.org/packages/6a/a3/0fbc7afdf7cb1aa12a086b02959307848eb6bcc8f66fcb66c0cb57e2a2c1/multidict-6.6.3-cp312-cp312-win_amd64.whl", hash = "sha256:04cbcce84f63b9af41bad04a54d4cc4e60e90c35b9e6ccb130be2d75b71f8c17", size = 45982, upload-time = "2025-06-30T15:52:13.6Z" }, + { url = "https://files.pythonhosted.org/packages/b8/95/8c825bd70ff9b02462dc18d1295dd08d3e9e4eb66856d292ffa62cfe1920/multidict-6.6.3-cp312-cp312-win_arm64.whl", hash = "sha256:0f1130b896ecb52d2a1e615260f3ea2af55fa7dc3d7c3003ba0c3121a759b18b", size = 43210, upload-time = "2025-06-30T15:52:14.893Z" }, + { url = "https://files.pythonhosted.org/packages/52/1d/0bebcbbb4f000751fbd09957257903d6e002943fc668d841a4cf2fb7f872/multidict-6.6.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:540d3c06d48507357a7d57721e5094b4f7093399a0106c211f33540fdc374d55", size = 75843, upload-time = "2025-06-30T15:52:16.155Z" }, + { url = "https://files.pythonhosted.org/packages/07/8f/cbe241b0434cfe257f65c2b1bcf9e8d5fb52bc708c5061fb29b0fed22bdf/multidict-6.6.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9c19cea2a690f04247d43f366d03e4eb110a0dc4cd1bbeee4d445435428ed35b", size = 45053, upload-time = "2025-06-30T15:52:17.429Z" }, + { url = "https://files.pythonhosted.org/packages/32/d2/0b3b23f9dbad5b270b22a3ac3ea73ed0a50ef2d9a390447061178ed6bdb8/multidict-6.6.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7af039820cfd00effec86bda5d8debef711a3e86a1d3772e85bea0f243a4bd65", size = 43273, upload-time = "2025-06-30T15:52:19.346Z" }, + { url = "https://files.pythonhosted.org/packages/fd/fe/6eb68927e823999e3683bc49678eb20374ba9615097d085298fd5b386564/multidict-6.6.3-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:500b84f51654fdc3944e936f2922114349bf8fdcac77c3092b03449f0e5bc2b3", size = 237124, upload-time = "2025-06-30T15:52:20.773Z" }, + { url = "https://files.pythonhosted.org/packages/e7/ab/320d8507e7726c460cb77117848b3834ea0d59e769f36fdae495f7669929/multidict-6.6.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f3fc723ab8a5c5ed6c50418e9bfcd8e6dceba6c271cee6728a10a4ed8561520c", size = 256892, upload-time = "2025-06-30T15:52:22.242Z" }, + { url = "https://files.pythonhosted.org/packages/76/60/38ee422db515ac69834e60142a1a69111ac96026e76e8e9aa347fd2e4591/multidict-6.6.3-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:94c47ea3ade005b5976789baaed66d4de4480d0a0bf31cef6edaa41c1e7b56a6", size = 240547, upload-time = "2025-06-30T15:52:23.736Z" }, + { url = "https://files.pythonhosted.org/packages/27/fb/905224fde2dff042b030c27ad95a7ae744325cf54b890b443d30a789b80e/multidict-6.6.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dbc7cf464cc6d67e83e136c9f55726da3a30176f020a36ead246eceed87f1cd8", size = 266223, upload-time = "2025-06-30T15:52:25.185Z" }, + { url = "https://files.pythonhosted.org/packages/76/35/dc38ab361051beae08d1a53965e3e1a418752fc5be4d3fb983c5582d8784/multidict-6.6.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:900eb9f9da25ada070f8ee4a23f884e0ee66fe4e1a38c3af644256a508ad81ca", size = 267262, upload-time = "2025-06-30T15:52:26.969Z" }, + { url = "https://files.pythonhosted.org/packages/1f/a3/0a485b7f36e422421b17e2bbb5a81c1af10eac1d4476f2ff92927c730479/multidict-6.6.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7c6df517cf177da5d47ab15407143a89cd1a23f8b335f3a28d57e8b0a3dbb884", size = 254345, upload-time = "2025-06-30T15:52:28.467Z" }, + { url = "https://files.pythonhosted.org/packages/b4/59/bcdd52c1dab7c0e0d75ff19cac751fbd5f850d1fc39172ce809a74aa9ea4/multidict-6.6.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4ef421045f13879e21c994b36e728d8e7d126c91a64b9185810ab51d474f27e7", size = 252248, upload-time = "2025-06-30T15:52:29.938Z" }, + { url = "https://files.pythonhosted.org/packages/bb/a4/2d96aaa6eae8067ce108d4acee6f45ced5728beda55c0f02ae1072c730d1/multidict-6.6.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:6c1e61bb4f80895c081790b6b09fa49e13566df8fbff817da3f85b3a8192e36b", size = 250115, upload-time = "2025-06-30T15:52:31.416Z" }, + { url = "https://files.pythonhosted.org/packages/25/d2/ed9f847fa5c7d0677d4f02ea2c163d5e48573de3f57bacf5670e43a5ffaa/multidict-6.6.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e5e8523bb12d7623cd8300dbd91b9e439a46a028cd078ca695eb66ba31adee3c", size = 249649, upload-time = "2025-06-30T15:52:32.996Z" }, + { url = "https://files.pythonhosted.org/packages/1f/af/9155850372563fc550803d3f25373308aa70f59b52cff25854086ecb4a79/multidict-6.6.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:ef58340cc896219e4e653dade08fea5c55c6df41bcc68122e3be3e9d873d9a7b", size = 261203, upload-time = "2025-06-30T15:52:34.521Z" }, + { url = "https://files.pythonhosted.org/packages/36/2f/c6a728f699896252cf309769089568a33c6439626648843f78743660709d/multidict-6.6.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fc9dc435ec8699e7b602b94fe0cd4703e69273a01cbc34409af29e7820f777f1", size = 258051, upload-time = "2025-06-30T15:52:35.999Z" }, + { url = "https://files.pythonhosted.org/packages/d0/60/689880776d6b18fa2b70f6cc74ff87dd6c6b9b47bd9cf74c16fecfaa6ad9/multidict-6.6.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9e864486ef4ab07db5e9cb997bad2b681514158d6954dd1958dfb163b83d53e6", size = 249601, upload-time = "2025-06-30T15:52:37.473Z" }, + { url = "https://files.pythonhosted.org/packages/75/5e/325b11f2222a549019cf2ef879c1f81f94a0d40ace3ef55cf529915ba6cc/multidict-6.6.3-cp313-cp313-win32.whl", hash = "sha256:5633a82fba8e841bc5c5c06b16e21529573cd654f67fd833650a215520a6210e", size = 41683, upload-time = "2025-06-30T15:52:38.927Z" }, + { url = "https://files.pythonhosted.org/packages/b1/ad/cf46e73f5d6e3c775cabd2a05976547f3f18b39bee06260369a42501f053/multidict-6.6.3-cp313-cp313-win_amd64.whl", hash = "sha256:e93089c1570a4ad54c3714a12c2cef549dc9d58e97bcded193d928649cab78e9", size = 45811, upload-time = "2025-06-30T15:52:40.207Z" }, + { url = "https://files.pythonhosted.org/packages/c5/c9/2e3fe950db28fb7c62e1a5f46e1e38759b072e2089209bc033c2798bb5ec/multidict-6.6.3-cp313-cp313-win_arm64.whl", hash = "sha256:c60b401f192e79caec61f166da9c924e9f8bc65548d4246842df91651e83d600", size = 43056, upload-time = "2025-06-30T15:52:41.575Z" }, + { url = "https://files.pythonhosted.org/packages/3a/58/aaf8114cf34966e084a8cc9517771288adb53465188843d5a19862cb6dc3/multidict-6.6.3-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:02fd8f32d403a6ff13864b0851f1f523d4c988051eea0471d4f1fd8010f11134", size = 82811, upload-time = "2025-06-30T15:52:43.281Z" }, + { url = "https://files.pythonhosted.org/packages/71/af/5402e7b58a1f5b987a07ad98f2501fdba2a4f4b4c30cf114e3ce8db64c87/multidict-6.6.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:f3aa090106b1543f3f87b2041eef3c156c8da2aed90c63a2fbed62d875c49c37", size = 48304, upload-time = "2025-06-30T15:52:45.026Z" }, + { url = "https://files.pythonhosted.org/packages/39/65/ab3c8cafe21adb45b24a50266fd747147dec7847425bc2a0f6934b3ae9ce/multidict-6.6.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e924fb978615a5e33ff644cc42e6aa241effcf4f3322c09d4f8cebde95aff5f8", size = 46775, upload-time = "2025-06-30T15:52:46.459Z" }, + { url = "https://files.pythonhosted.org/packages/49/ba/9fcc1b332f67cc0c0c8079e263bfab6660f87fe4e28a35921771ff3eea0d/multidict-6.6.3-cp313-cp313t-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:b9fe5a0e57c6dbd0e2ce81ca66272282c32cd11d31658ee9553849d91289e1c1", size = 229773, upload-time = "2025-06-30T15:52:47.88Z" }, + { url = "https://files.pythonhosted.org/packages/a4/14/0145a251f555f7c754ce2dcbcd012939bbd1f34f066fa5d28a50e722a054/multidict-6.6.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b24576f208793ebae00280c59927c3b7c2a3b1655e443a25f753c4611bc1c373", size = 250083, upload-time = "2025-06-30T15:52:49.366Z" }, + { url = "https://files.pythonhosted.org/packages/9e/d4/d5c0bd2bbb173b586c249a151a26d2fb3ec7d53c96e42091c9fef4e1f10c/multidict-6.6.3-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:135631cb6c58eac37d7ac0df380294fecdc026b28837fa07c02e459c7fb9c54e", size = 228980, upload-time = "2025-06-30T15:52:50.903Z" }, + { url = "https://files.pythonhosted.org/packages/21/32/c9a2d8444a50ec48c4733ccc67254100c10e1c8ae8e40c7a2d2183b59b97/multidict-6.6.3-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:274d416b0df887aef98f19f21578653982cfb8a05b4e187d4a17103322eeaf8f", size = 257776, upload-time = "2025-06-30T15:52:52.764Z" }, + { url = "https://files.pythonhosted.org/packages/68/d0/14fa1699f4ef629eae08ad6201c6b476098f5efb051b296f4c26be7a9fdf/multidict-6.6.3-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e252017a817fad7ce05cafbe5711ed40faeb580e63b16755a3a24e66fa1d87c0", size = 256882, upload-time = "2025-06-30T15:52:54.596Z" }, + { url = "https://files.pythonhosted.org/packages/da/88/84a27570fbe303c65607d517a5f147cd2fc046c2d1da02b84b17b9bdc2aa/multidict-6.6.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e4cc8d848cd4fe1cdee28c13ea79ab0ed37fc2e89dd77bac86a2e7959a8c3bc", size = 247816, upload-time = "2025-06-30T15:52:56.175Z" }, + { url = "https://files.pythonhosted.org/packages/1c/60/dca352a0c999ce96a5d8b8ee0b2b9f729dcad2e0b0c195f8286269a2074c/multidict-6.6.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9e236a7094b9c4c1b7585f6b9cca34b9d833cf079f7e4c49e6a4a6ec9bfdc68f", size = 245341, upload-time = "2025-06-30T15:52:57.752Z" }, + { url = "https://files.pythonhosted.org/packages/50/ef/433fa3ed06028f03946f3993223dada70fb700f763f70c00079533c34578/multidict-6.6.3-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:e0cb0ab69915c55627c933f0b555a943d98ba71b4d1c57bc0d0a66e2567c7471", size = 235854, upload-time = "2025-06-30T15:52:59.74Z" }, + { url = "https://files.pythonhosted.org/packages/1b/1f/487612ab56fbe35715320905215a57fede20de7db40a261759690dc80471/multidict-6.6.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:81ef2f64593aba09c5212a3d0f8c906a0d38d710a011f2f42759704d4557d3f2", size = 243432, upload-time = "2025-06-30T15:53:01.602Z" }, + { url = "https://files.pythonhosted.org/packages/da/6f/ce8b79de16cd885c6f9052c96a3671373d00c59b3ee635ea93e6e81b8ccf/multidict-6.6.3-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:b9cbc60010de3562545fa198bfc6d3825df430ea96d2cc509c39bd71e2e7d648", size = 252731, upload-time = "2025-06-30T15:53:03.517Z" }, + { url = "https://files.pythonhosted.org/packages/bb/fe/a2514a6aba78e5abefa1624ca85ae18f542d95ac5cde2e3815a9fbf369aa/multidict-6.6.3-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:70d974eaaa37211390cd02ef93b7e938de564bbffa866f0b08d07e5e65da783d", size = 247086, upload-time = "2025-06-30T15:53:05.48Z" }, + { url = "https://files.pythonhosted.org/packages/8c/22/b788718d63bb3cce752d107a57c85fcd1a212c6c778628567c9713f9345a/multidict-6.6.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:3713303e4a6663c6d01d648a68f2848701001f3390a030edaaf3fc949c90bf7c", size = 243338, upload-time = "2025-06-30T15:53:07.522Z" }, + { url = "https://files.pythonhosted.org/packages/22/d6/fdb3d0670819f2228f3f7d9af613d5e652c15d170c83e5f1c94fbc55a25b/multidict-6.6.3-cp313-cp313t-win32.whl", hash = "sha256:639ecc9fe7cd73f2495f62c213e964843826f44505a3e5d82805aa85cac6f89e", size = 47812, upload-time = "2025-06-30T15:53:09.263Z" }, + { url = "https://files.pythonhosted.org/packages/b6/d6/a9d2c808f2c489ad199723197419207ecbfbc1776f6e155e1ecea9c883aa/multidict-6.6.3-cp313-cp313t-win_amd64.whl", hash = "sha256:9f97e181f344a0ef3881b573d31de8542cc0dbc559ec68c8f8b5ce2c2e91646d", size = 53011, upload-time = "2025-06-30T15:53:11.038Z" }, + { url = "https://files.pythonhosted.org/packages/f2/40/b68001cba8188dd267590a111f9661b6256debc327137667e832bf5d66e8/multidict-6.6.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ce8b7693da41a3c4fde5871c738a81490cea5496c671d74374c8ab889e1834fb", size = 45254, upload-time = "2025-06-30T15:53:12.421Z" }, + { url = "https://files.pythonhosted.org/packages/d8/30/9aec301e9772b098c1f5c0ca0279237c9766d94b97802e9888010c64b0ed/multidict-6.6.3-py3-none-any.whl", hash = "sha256:8db10f29c7541fc5da4defd8cd697e1ca429db743fa716325f236079b96f775a", size = 12313, upload-time = "2025-06-30T15:53:45.437Z" }, +] + +[[package]] +name = "multimethod" +version = "2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/55/14/34e8c84ba4f1ab1186dc07426e0e84be71d3336cc57e8d076ee14331d50e/multimethod-2.0.tar.gz", hash = "sha256:c628b6d2e7d61fbe58484dd884d990901e8314faf58af062e72b65e3423cb109", size = 16065, upload-time = "2024-12-27T02:09:34.423Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/42/a285fc4b89b3a249538954779cd4082a85bf35dc7d0a9c93e48e146e3dc7/multimethod-2.0-py3-none-any.whl", hash = "sha256:45aa231dc9dbb7f980c0f2ad8179e2c2b72a8cd5c7d7534337be66dde29d35be", size = 9836, upload-time = "2024-12-27T02:09:31.671Z" }, +] + +[[package]] +name = "mursst-icechunk-updater" +version = "0.1.0" +source = { editable = "." } +dependencies = [ + { name = "aws-cdk-cli" }, + { name = "boto3" }, + { name = "dask" }, + { name = "earthaccess" }, + { name = "h5netcdf" }, + { name = "icechunk" }, + { name = "requests" }, + { name = "virtualizarr" }, + { name = "zarr" }, +] + +[package.dev-dependencies] +cdk = [ + { name = "aws-cdk-lib" }, + { name = "constructs" }, +] +dev = [ + { name = "aws-cdk-cli" }, + { name = "aws-sam-cli" }, + { name = "dotenv" }, + { name = "ipykernel" }, + { name = "lithops" }, + { name = "pre-commit" }, + { name = "pytest" }, +] +notebook = [ + { name = "matplotlib" }, +] + +[package.metadata] +requires-dist = [ + { name = "aws-cdk-cli", specifier = ">=2.1025.0" }, + { name = "boto3", specifier = ">=1.38.46" }, + { name = "dask", specifier = ">=2025.7.0" }, + { name = "earthaccess", specifier = ">=0.13.0" }, + { name = "h5netcdf", specifier = ">=1.6.3" }, + { name = "icechunk", specifier = ">=1.0.0" }, + { name = "requests", specifier = ">=2.25.0" }, + { name = "virtualizarr", specifier = "==2.0.0" }, + { name = "zarr", specifier = ">=3.1.0" }, +] + +[package.metadata.requires-dev] +cdk = [ + { name = "aws-cdk-lib", specifier = "==2.181.1" }, + { name = "constructs", specifier = ">=10.0.0,<11.0.0" }, +] +dev = [ + { name = "aws-cdk-cli", specifier = ">=2.1025.0" }, + { name = "aws-sam-cli", specifier = ">=1.142.1" }, + { name = "dotenv", specifier = ">=0.9.9" }, + { name = "ipykernel", specifier = ">=6.30.0" }, + { name = "lithops", specifier = ">=3.6.1" }, + { name = "pre-commit", specifier = ">=4.2.0" }, + { name = "pytest", specifier = ">=8.4.1" }, +] +notebook = [{ name = "matplotlib", specifier = ">=3.10.5" }] + +[[package]] +name = "mypy-boto3-apigateway" +version = "1.38.36" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2e/fa/d5d9d490d062f1b933d2b8c22f0bf61200796cb951d5bddf24515d848439/mypy_boto3_apigateway-1.38.36.tar.gz", hash = "sha256:decaf1b47e8e4b27aeac3c2c09cde74219fe94f2ef6912f78e272882c095a23c", size = 45144, upload-time = "2025-06-12T19:42:26.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/d3/4f77ece8660d8a8f2deae7b4f0096e23fb57f6e29feac94abffef1540e4d/mypy_boto3_apigateway-1.38.36-py3-none-any.whl", hash = "sha256:6f7c1c9708d9277ce3e619cc2089ea78eb3fae4c2f8f3cb55a1f45dbee070fc4", size = 51346, upload-time = "2025-06-12T19:42:18.105Z" }, +] + +[[package]] +name = "mypy-boto3-cloudformation" +version = "1.38.31" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/ed/f533f07def9140c429a047f8b70c8a4ea9cf04597b09d264edeca3a4265a/mypy_boto3_cloudformation-1.38.31.tar.gz", hash = "sha256:f4185231faab97bfb50b25dc1323333c630a092ffa8c15356f21116fc92a7f42", size = 57667, upload-time = "2025-06-05T20:11:15.506Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/9c/a97415ba0181a89611b03f0f0656c536c773d4fb5259d300dd1b311176cc/mypy_boto3_cloudformation-1.38.31-py3-none-any.whl", hash = "sha256:1016508783c1263aba9bb24dd29afbea6f0c8c7cee79e9d073c4ed5524ce53f5", size = 69620, upload-time = "2025-06-05T20:11:12.444Z" }, +] + +[[package]] +name = "mypy-boto3-ecr" +version = "1.38.37" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/29/d5/0e46fd78c4d75018ee0720582227603746d0329daa130907c518990494f1/mypy_boto3_ecr-1.38.37.tar.gz", hash = "sha256:fed095a297b35c954eb80df0d4ee631c8241f5b0dafd8d5ef799cf4e8487814a", size = 34147, upload-time = "2025-06-16T19:42:39.547Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/05/aa02b66b35123bb1dab63faf66bfc146510b637b2d9e60445990955146ef/mypy_boto3_ecr-1.38.37-py3-none-any.whl", hash = "sha256:c5c6d9dc84059afe431c4a2b758b265d420856ce1e7ad563870a006b96b1a0c2", size = 40001, upload-time = "2025-06-16T19:42:36.702Z" }, +] + +[[package]] +name = "mypy-boto3-iam" +version = "1.38.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7f/e6/b0cf2d54102939776976b40deed032acc7f57299ceac02edcc0411893419/mypy_boto3_iam-1.38.14.tar.gz", hash = "sha256:4692200074bf917da7c9237b2c50bbb9718931c9f99b73e579ecdd100b6582a3", size = 86326, upload-time = "2025-05-12T19:42:32.3Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/bf/550ca055e4b511b470970a64caf0e441fbf5132ceddb59cbf53db1e897aa/mypy_boto3_iam-1.38.14-py3-none-any.whl", hash = "sha256:f03e8f029cb00a0a66389dbf809371c88420fd119395c8464b3f48254b38c17a", size = 91666, upload-time = "2025-05-12T19:42:29.985Z" }, +] + +[[package]] +name = "mypy-boto3-kinesis" +version = "1.38.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/33/ed686441c535fb43bccd3b63fee86b2538bbf0ec14d4aeb145ac24267db5/mypy_boto3_kinesis-1.38.8.tar.gz", hash = "sha256:3932c77f3fc8c375454f3dfa71e1e2f18545d95c854dab57dc9c3ba6b561d928", size = 22824, upload-time = "2025-05-03T00:52:27.213Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/b9/88373f4a06b804c262df8dca1dc9743bd076ff96b98784c8598a1549efd5/mypy_boto3_kinesis-1.38.8-py3-none-any.whl", hash = "sha256:0dd7ea2e5ff953d6e32dcb792747df86521cb95e1c4ccb547552694a49f9861f", size = 32693, upload-time = "2025-05-03T00:52:22.119Z" }, +] + +[[package]] +name = "mypy-boto3-lambda" +version = "1.38.40" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7a/0d/a42b8282e8c64f3e45b0437e2e19200608aeb1a82f83d74d6ba50181fb79/mypy_boto3_lambda-1.38.40.tar.gz", hash = "sha256:145c9f7de2da29fb651b21515c9052697f7579c821ee3ab7bcbf7ef4993dcd25", size = 42430, upload-time = "2025-06-19T19:25:39.233Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/aa/05d064393ca3f1453a0e1ec8d3f0590d6dfbbaaffe274d630594f2921386/mypy_boto3_lambda-1.38.40-py3-none-any.whl", hash = "sha256:04bd5f4ad032f86cd0d5b8f573c0384a388dc8549ea6bb648dcef5b2c6664064", size = 48970, upload-time = "2025-06-19T19:25:34.215Z" }, +] + +[[package]] +name = "mypy-boto3-s3" +version = "1.38.44" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/48/cbef3d4518010c9053a447e5cbbfdb364870ca18ce3c8596c232226260da/mypy_boto3_s3-1.38.44.tar.gz", hash = "sha256:eacf15c9164e56ecb86a76152adb414cf8f7f22b46cd80a843f6b7ef41a1cd8f", size = 74208, upload-time = "2025-06-25T19:43:07.617Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/e1/2738d89d9f7a260d114258ee31c3a424e432475a9c1c272fd49eb5d1aaa7/mypy_boto3_s3-1.38.44-py3-none-any.whl", hash = "sha256:9a9d305af1eebf246b6d6195bf88902ff553fe5aa0a78e5f517817875339f5e4", size = 80908, upload-time = "2025-06-25T19:42:57.979Z" }, +] + +[[package]] +name = "mypy-boto3-schemas" +version = "1.38.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/59/6b/34c24abeecaeec8e69513486b60715266e3c67b99ea4ea94d5a1e7507e13/mypy_boto3_schemas-1.38.0.tar.gz", hash = "sha256:e4f9f7ffb5d7e44c5642bcb8e68734d6dbc7dc01bde707f02aed0b2348bc0c22", size = 20837, upload-time = "2025-04-22T21:34:17.321Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/68/1bd07f4f0a6252b034582586a685c8d4b57026071d33e43fba9da976ff18/mypy_boto3_schemas-1.38.0-py3-none-any.whl", hash = "sha256:295a0daa5eca61b0ef3f2f6b52b15bad0e6eda40c87e90373e9dd4990b8304ec", size = 28871, upload-time = "2025-04-22T21:34:13.662Z" }, +] + +[[package]] +name = "mypy-boto3-secretsmanager" +version = "1.38.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9e/fe/0302a42d4fab765215f517f9c98e6ac2b226ee0387e85816d9dda8aa93a0/mypy_boto3_secretsmanager-1.38.0.tar.gz", hash = "sha256:1666108e70f03e4dc1de449388d7facb77aba231a026bac0c3240fc27fd31a98", size = 19792, upload-time = "2025-04-22T21:34:22.19Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/55/bd09d6bc81df4e4dd4e8c4616752efd6167518ba10355d8d6348caa6c4df/mypy_boto3_secretsmanager-1.38.0-py3-none-any.whl", hash = "sha256:48d5057450ee307b132ce2d0976233a2c5331616fabdf423ecbc103f7431dd5e", size = 26762, upload-time = "2025-04-22T21:34:19.546Z" }, +] + +[[package]] +name = "mypy-boto3-signer" +version = "1.38.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/4a/f38981d5dfeb0a998c4d6e363e567257bb805b2aed647e9123f111b9f2f2/mypy_boto3_signer-1.38.0.tar.gz", hash = "sha256:68875fc90ded54ddc6f97aaa17c7c51d1241a459cad84d135322de597ff9f90b", size = 20648, upload-time = "2025-04-22T21:34:54.703Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/9e/0f0e0e7b299146cfcd744a834c231db558d74c2ae33cc015a4006080b628/mypy_boto3_signer-1.38.0-py3-none-any.whl", hash = "sha256:bf7ccfa630fcf61553bbc4a1ace95cf208fd11719e8484cf1bca44aa0d117d07", size = 28905, upload-time = "2025-04-22T21:34:51.906Z" }, +] + +[[package]] +name = "mypy-boto3-sqs" +version = "1.38.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f0/a0/ef5c7bdb33af5d0a48029fed11401388fa68949c6c0f9b11b2e845f5fe0e/mypy_boto3_sqs-1.38.0.tar.gz", hash = "sha256:39aebc121a2fe20f962fd83b617fd916003605d6f6851fdf195337a0aa428fe1", size = 23541, upload-time = "2025-04-22T21:35:17.315Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/97/72fccc9aaa0e3c8f3f99b4edac580ede651808aefb47b0d2b52c18a3d16b/mypy_boto3_sqs-1.38.0-py3-none-any.whl", hash = "sha256:8e881c8492f6f51dcbe1cce9d9f05334f4b256b5843e227fa925e0f6e702b31d", size = 33669, upload-time = "2025-04-22T21:35:16.073Z" }, +] + +[[package]] +name = "mypy-boto3-stepfunctions" +version = "1.38.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d5/b6/1273339e46c41747fbf7f3097ca866c9d10e3db77d49630ac131abce1614/mypy_boto3_stepfunctions-1.38.0.tar.gz", hash = "sha256:b0102265c49fa0537bdb5d214677da89737b784f57ec02340d72210528088a99", size = 31058, upload-time = "2025-04-22T21:35:35.89Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/52/7f1b664881c6ef81c8123ea57b95ed4b10e91123a1f26347b598fbef824c/mypy_boto3_stepfunctions-1.38.0-py3-none-any.whl", hash = "sha256:3fd11db7a789de8ab523e1af24fb8f91a46281bb85ae3cfe51aaaff1b6b3c369", size = 35812, upload-time = "2025-04-22T21:35:34.347Z" }, +] + +[[package]] +name = "mypy-boto3-sts" +version = "1.38.38" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/e5/a497cc0d322a04883d13e71cb2a0974fb87c4f0dac2ef474f6dd95705445/mypy_boto3_sts-1.38.38.tar.gz", hash = "sha256:7081cb6b32ae5ad4edb65ff9cecb5b625166747dbc7f47ee4f6b744441a643a2", size = 16583, upload-time = "2025-06-17T20:14:04.847Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/22/e60c8272218daa06024a1d5957ad64b918ba9a4fa52cf3e8eacebbce5464/mypy_boto3_sts-1.38.38-py3-none-any.whl", hash = "sha256:82a9de19389f9d5ceb1aea2de5337c500d77697345e640101065e3adf3911182", size = 20145, upload-time = "2025-06-17T20:13:57.254Z" }, +] + +[[package]] +name = "mypy-boto3-xray" +version = "1.38.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/f5/9121dae480352d0c0efd8094115527e8292e351005630407f5e2f2ccb719/mypy_boto3_xray-1.38.0.tar.gz", hash = "sha256:13dadd42be39f0b3e139d3d3a0021c24e617d67eb8b0d09dac3d7d7795b30384", size = 31804, upload-time = "2025-04-22T21:36:41.182Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/b5/abb18a7d0c9b9c0baa95ed841352052fd3ab11c0d8f618cd4618c70e9250/mypy_boto3_xray-1.38.0-py3-none-any.whl", hash = "sha256:6c2eeb4e7e675e978e18761ced7af95866d01df7b5c21548e452c53c255237b8", size = 36631, upload-time = "2025-04-22T21:36:40.033Z" }, +] + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" }, +] + +[[package]] +name = "networkx" +version = "3.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/4f/ccdb8ad3a38e583f214547fd2f7ff1fc160c43a75af88e6aec213404b96a/networkx-3.5.tar.gz", hash = "sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037", size = 2471065, upload-time = "2025-05-29T11:35:07.804Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406, upload-time = "2025-05-29T11:35:04.961Z" }, +] + +[[package]] +name = "nodeenv" +version = "1.9.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload-time = "2024-06-04T18:44:11.171Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload-time = "2024-06-04T18:44:08.352Z" }, +] + +[[package]] +name = "numcodecs" +version = "0.16.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/35/49da850ce5371da3930d099da364a73ce9ae4fc64075e521674b48f4804d/numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1", size = 6268134, upload-time = "2025-05-22T13:33:04.098Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ee/e2a903c88fed347dc74c70bbd7a8dab9aa22bb0dac68c5bc6393c2e9373b/numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122", size = 1663434, upload-time = "2025-05-22T13:32:47.26Z" }, + { url = "https://files.pythonhosted.org/packages/f2/f0/37819d4f6896b1ac43a164ffd3ab99d7cbf63bf63cb375fef97aedaef4f0/numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458", size = 1150402, upload-time = "2025-05-22T13:32:48.574Z" }, + { url = "https://files.pythonhosted.org/packages/60/3c/5059a29750305b80b7428b1e6695878dea9ea3b537d7fba57875e4bbc2c7/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40", size = 8237455, upload-time = "2025-05-22T13:32:50.052Z" }, + { url = "https://files.pythonhosted.org/packages/1b/f5/515f98d659ab0cbe3738da153eddae22186fd38f05a808511e10f04cf679/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609", size = 8770711, upload-time = "2025-05-22T13:32:52.198Z" }, + { url = "https://files.pythonhosted.org/packages/a2/3a/9fc6104f888af11bad804ebd32dffe0bcb83337f4525b4fe5b379942fefd/numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df", size = 788701, upload-time = "2025-05-22T13:32:54.28Z" }, + { url = "https://files.pythonhosted.org/packages/5e/1e/73ffb1074f03d52cb1c4f4deaba26a2008ca45262f3622ed26dbec7a7362/numcodecs-0.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2ad8ee940315f59188accfc3f2d39726a4ca0d76b49bf8d0018e121f01c49028", size = 1659453, upload-time = "2025-05-22T13:32:55.558Z" }, + { url = "https://files.pythonhosted.org/packages/42/72/5affb1ce92b7a6becee17921de7c6b521a48fa61fc3d36d9f1eea2cf83f5/numcodecs-0.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:179ca7bf3525a0f7379df7767d87dd495253de44597cb7e511198b28b09da633", size = 1143932, upload-time = "2025-05-22T13:32:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/e3/f1/b092679d84c67c6ed62e4df5781d89bbb089f24a0df4187cbab9db51cf6b/numcodecs-0.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e2babbb50bf348ae982818d5560af330eab0dcd925fb0e49509785ad57d11db", size = 8187716, upload-time = "2025-05-22T13:32:58.421Z" }, + { url = "https://files.pythonhosted.org/packages/a8/e8/86e7741adb43261aff409b53c53c8bac2797bfca055d64dd65dc731d5141/numcodecs-0.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4b29d8d3284b72bfad4fb83d672a17f497ae86ee1ef8087bac7222b620d3d91", size = 8728650, upload-time = "2025-05-22T13:33:00.337Z" }, + { url = "https://files.pythonhosted.org/packages/21/03/87c5c217232aa3515d350728c6dcefca252fa582246100ef68a51fbda456/numcodecs-0.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:06489635f43e1a959aea73cb830d78cf3adb07ac5f34daccb92091e4d9ac6b07", size = 785553, upload-time = "2025-05-22T13:33:02.587Z" }, +] + +[package.optional-dependencies] +crc32c = [ + { name = "crc32c" }, +] + +[[package]] +name = "numpy" +version = "2.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2e/19/d7c972dfe90a353dbd3efbbe1d14a5951de80c99c9dc1b93cd998d51dc0f/numpy-2.3.1.tar.gz", hash = "sha256:1ec9ae20a4226da374362cca3c62cd753faf2f951440b0e3b98e93c235441d2b", size = 20390372, upload-time = "2025-06-21T12:28:33.469Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/56/71ad5022e2f63cfe0ca93559403d0edef14aea70a841d640bd13cdba578e/numpy-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2959d8f268f3d8ee402b04a9ec4bb7604555aeacf78b360dc4ec27f1d508177d", size = 20896664, upload-time = "2025-06-21T12:15:30.845Z" }, + { url = "https://files.pythonhosted.org/packages/25/65/2db52ba049813670f7f987cc5db6dac9be7cd95e923cc6832b3d32d87cef/numpy-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:762e0c0c6b56bdedfef9a8e1d4538556438288c4276901ea008ae44091954e29", size = 14131078, upload-time = "2025-06-21T12:15:52.23Z" }, + { url = "https://files.pythonhosted.org/packages/57/dd/28fa3c17b0e751047ac928c1e1b6990238faad76e9b147e585b573d9d1bd/numpy-2.3.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:867ef172a0976aaa1f1d1b63cf2090de8b636a7674607d514505fb7276ab08fc", size = 5112554, upload-time = "2025-06-21T12:16:01.434Z" }, + { url = "https://files.pythonhosted.org/packages/c9/fc/84ea0cba8e760c4644b708b6819d91784c290288c27aca916115e3311d17/numpy-2.3.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:4e602e1b8682c2b833af89ba641ad4176053aaa50f5cacda1a27004352dde943", size = 6646560, upload-time = "2025-06-21T12:16:11.895Z" }, + { url = "https://files.pythonhosted.org/packages/61/b2/512b0c2ddec985ad1e496b0bd853eeb572315c0f07cd6997473ced8f15e2/numpy-2.3.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8e333040d069eba1652fb08962ec5b76af7f2c7bce1df7e1418c8055cf776f25", size = 14260638, upload-time = "2025-06-21T12:16:32.611Z" }, + { url = "https://files.pythonhosted.org/packages/6e/45/c51cb248e679a6c6ab14b7a8e3ead3f4a3fe7425fc7a6f98b3f147bec532/numpy-2.3.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e7cbf5a5eafd8d230a3ce356d892512185230e4781a361229bd902ff403bc660", size = 16632729, upload-time = "2025-06-21T12:16:57.439Z" }, + { url = "https://files.pythonhosted.org/packages/e4/ff/feb4be2e5c09a3da161b412019caf47183099cbea1132fd98061808c2df2/numpy-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f1b8f26d1086835f442286c1d9b64bb3974b0b1e41bb105358fd07d20872952", size = 15565330, upload-time = "2025-06-21T12:17:20.638Z" }, + { url = "https://files.pythonhosted.org/packages/bc/6d/ceafe87587101e9ab0d370e4f6e5f3f3a85b9a697f2318738e5e7e176ce3/numpy-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ee8340cb48c9b7a5899d1149eece41ca535513a9698098edbade2a8e7a84da77", size = 18361734, upload-time = "2025-06-21T12:17:47.938Z" }, + { url = "https://files.pythonhosted.org/packages/2b/19/0fb49a3ea088be691f040c9bf1817e4669a339d6e98579f91859b902c636/numpy-2.3.1-cp312-cp312-win32.whl", hash = "sha256:e772dda20a6002ef7061713dc1e2585bc1b534e7909b2030b5a46dae8ff077ab", size = 6320411, upload-time = "2025-06-21T12:17:58.475Z" }, + { url = "https://files.pythonhosted.org/packages/b1/3e/e28f4c1dd9e042eb57a3eb652f200225e311b608632bc727ae378623d4f8/numpy-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:cfecc7822543abdea6de08758091da655ea2210b8ffa1faf116b940693d3df76", size = 12734973, upload-time = "2025-06-21T12:18:17.601Z" }, + { url = "https://files.pythonhosted.org/packages/04/a8/8a5e9079dc722acf53522b8f8842e79541ea81835e9b5483388701421073/numpy-2.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:7be91b2239af2658653c5bb6f1b8bccafaf08226a258caf78ce44710a0160d30", size = 10191491, upload-time = "2025-06-21T12:18:33.585Z" }, + { url = "https://files.pythonhosted.org/packages/d4/bd/35ad97006d8abff8631293f8ea6adf07b0108ce6fec68da3c3fcca1197f2/numpy-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25a1992b0a3fdcdaec9f552ef10d8103186f5397ab45e2d25f8ac51b1a6b97e8", size = 20889381, upload-time = "2025-06-21T12:19:04.103Z" }, + { url = "https://files.pythonhosted.org/packages/f1/4f/df5923874d8095b6062495b39729178eef4a922119cee32a12ee1bd4664c/numpy-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7dea630156d39b02a63c18f508f85010230409db5b2927ba59c8ba4ab3e8272e", size = 14152726, upload-time = "2025-06-21T12:19:25.599Z" }, + { url = "https://files.pythonhosted.org/packages/8c/0f/a1f269b125806212a876f7efb049b06c6f8772cf0121139f97774cd95626/numpy-2.3.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bada6058dd886061f10ea15f230ccf7dfff40572e99fef440a4a857c8728c9c0", size = 5105145, upload-time = "2025-06-21T12:19:34.782Z" }, + { url = "https://files.pythonhosted.org/packages/6d/63/a7f7fd5f375b0361682f6ffbf686787e82b7bbd561268e4f30afad2bb3c0/numpy-2.3.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:a894f3816eb17b29e4783e5873f92faf55b710c2519e5c351767c51f79d8526d", size = 6639409, upload-time = "2025-06-21T12:19:45.228Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0d/1854a4121af895aab383f4aa233748f1df4671ef331d898e32426756a8a6/numpy-2.3.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:18703df6c4a4fee55fd3d6e5a253d01c5d33a295409b03fda0c86b3ca2ff41a1", size = 14257630, upload-time = "2025-06-21T12:20:06.544Z" }, + { url = "https://files.pythonhosted.org/packages/50/30/af1b277b443f2fb08acf1c55ce9d68ee540043f158630d62cef012750f9f/numpy-2.3.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5902660491bd7a48b2ec16c23ccb9124b8abfd9583c5fdfa123fe6b421e03de1", size = 16627546, upload-time = "2025-06-21T12:20:31.002Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ec/3b68220c277e463095342d254c61be8144c31208db18d3fd8ef02712bcd6/numpy-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:36890eb9e9d2081137bd78d29050ba63b8dab95dff7912eadf1185e80074b2a0", size = 15562538, upload-time = "2025-06-21T12:20:54.322Z" }, + { url = "https://files.pythonhosted.org/packages/77/2b/4014f2bcc4404484021c74d4c5ee8eb3de7e3f7ac75f06672f8dcf85140a/numpy-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a780033466159c2270531e2b8ac063704592a0bc62ec4a1b991c7c40705eb0e8", size = 18360327, upload-time = "2025-06-21T12:21:21.053Z" }, + { url = "https://files.pythonhosted.org/packages/40/8d/2ddd6c9b30fcf920837b8672f6c65590c7d92e43084c25fc65edc22e93ca/numpy-2.3.1-cp313-cp313-win32.whl", hash = "sha256:39bff12c076812595c3a306f22bfe49919c5513aa1e0e70fac756a0be7c2a2b8", size = 6312330, upload-time = "2025-06-21T12:25:07.447Z" }, + { url = "https://files.pythonhosted.org/packages/dd/c8/beaba449925988d415efccb45bf977ff8327a02f655090627318f6398c7b/numpy-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d5ee6eec45f08ce507a6570e06f2f879b374a552087a4179ea7838edbcbfa42", size = 12731565, upload-time = "2025-06-21T12:25:26.444Z" }, + { url = "https://files.pythonhosted.org/packages/0b/c3/5c0c575d7ec78c1126998071f58facfc124006635da75b090805e642c62e/numpy-2.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:0c4d9e0a8368db90f93bd192bfa771ace63137c3488d198ee21dfb8e7771916e", size = 10190262, upload-time = "2025-06-21T12:25:42.196Z" }, + { url = "https://files.pythonhosted.org/packages/ea/19/a029cd335cf72f79d2644dcfc22d90f09caa86265cbbde3b5702ccef6890/numpy-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b0b5397374f32ec0649dd98c652a1798192042e715df918c20672c62fb52d4b8", size = 20987593, upload-time = "2025-06-21T12:21:51.664Z" }, + { url = "https://files.pythonhosted.org/packages/25/91/8ea8894406209107d9ce19b66314194675d31761fe2cb3c84fe2eeae2f37/numpy-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c5bdf2015ccfcee8253fb8be695516ac4457c743473a43290fd36eba6a1777eb", size = 14300523, upload-time = "2025-06-21T12:22:13.583Z" }, + { url = "https://files.pythonhosted.org/packages/a6/7f/06187b0066eefc9e7ce77d5f2ddb4e314a55220ad62dd0bfc9f2c44bac14/numpy-2.3.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d70f20df7f08b90a2062c1f07737dd340adccf2068d0f1b9b3d56e2038979fee", size = 5227993, upload-time = "2025-06-21T12:22:22.53Z" }, + { url = "https://files.pythonhosted.org/packages/e8/ec/a926c293c605fa75e9cfb09f1e4840098ed46d2edaa6e2152ee35dc01ed3/numpy-2.3.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:2fb86b7e58f9ac50e1e9dd1290154107e47d1eef23a0ae9145ded06ea606f992", size = 6736652, upload-time = "2025-06-21T12:22:33.629Z" }, + { url = "https://files.pythonhosted.org/packages/e3/62/d68e52fb6fde5586650d4c0ce0b05ff3a48ad4df4ffd1b8866479d1d671d/numpy-2.3.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:23ab05b2d241f76cb883ce8b9a93a680752fbfcbd51c50eff0b88b979e471d8c", size = 14331561, upload-time = "2025-06-21T12:22:55.056Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ec/b74d3f2430960044bdad6900d9f5edc2dc0fb8bf5a0be0f65287bf2cbe27/numpy-2.3.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ce2ce9e5de4703a673e705183f64fd5da5bf36e7beddcb63a25ee2286e71ca48", size = 16693349, upload-time = "2025-06-21T12:23:20.53Z" }, + { url = "https://files.pythonhosted.org/packages/0d/15/def96774b9d7eb198ddadfcbd20281b20ebb510580419197e225f5c55c3e/numpy-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c4913079974eeb5c16ccfd2b1f09354b8fed7e0d6f2cab933104a09a6419b1ee", size = 15642053, upload-time = "2025-06-21T12:23:43.697Z" }, + { url = "https://files.pythonhosted.org/packages/2b/57/c3203974762a759540c6ae71d0ea2341c1fa41d84e4971a8e76d7141678a/numpy-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:010ce9b4f00d5c036053ca684c77441f2f2c934fd23bee058b4d6f196efd8280", size = 18434184, upload-time = "2025-06-21T12:24:10.708Z" }, + { url = "https://files.pythonhosted.org/packages/22/8a/ccdf201457ed8ac6245187850aff4ca56a79edbea4829f4e9f14d46fa9a5/numpy-2.3.1-cp313-cp313t-win32.whl", hash = "sha256:6269b9edfe32912584ec496d91b00b6d34282ca1d07eb10e82dfc780907d6c2e", size = 6440678, upload-time = "2025-06-21T12:24:21.596Z" }, + { url = "https://files.pythonhosted.org/packages/f1/7e/7f431d8bd8eb7e03d79294aed238b1b0b174b3148570d03a8a8a8f6a0da9/numpy-2.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2a809637460e88a113e186e87f228d74ae2852a2e0c44de275263376f17b5bdc", size = 12870697, upload-time = "2025-06-21T12:24:40.644Z" }, + { url = "https://files.pythonhosted.org/packages/d4/ca/af82bf0fad4c3e573c6930ed743b5308492ff19917c7caaf2f9b6f9e2e98/numpy-2.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:eccb9a159db9aed60800187bc47a6d3451553f0e1b08b068d8b277ddfbb9b244", size = 10260376, upload-time = "2025-06-21T12:24:56.884Z" }, +] + +[[package]] +name = "obstore" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/a5/d3078d4d52b15680b9ff5eebdf55b329adac4f66f5722ad2bdf766eb50ea/obstore-0.7.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:e79e4ea2f539e40f3876b157e6ed580aabf23d9f1c5602c8bf2db5e17b9aaa99", size = 3660024, upload-time = "2025-06-25T21:08:33.286Z" }, + { url = "https://files.pythonhosted.org/packages/0f/43/7964cfdff32cd4730a96418530f8684c89c1993e1bfbb23c2842af3ca487/obstore-0.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b18073a7de39823a46cc02e6bd7d31383414848f5931236ab11089e42dd01e7a", size = 3385746, upload-time = "2025-06-25T21:08:34.593Z" }, + { url = "https://files.pythonhosted.org/packages/3f/a4/9580c24fc7dbbee60134d6f6a8ce6ab1c5631385f180b718f0be744a0f3d/obstore-0.7.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b854ff3afec1826862f2c2ac727739f3977e6be4d043c1661c833ccad921212", size = 3552339, upload-time = "2025-06-25T21:08:36.236Z" }, + { url = "https://files.pythonhosted.org/packages/0d/53/1a92b714787c19d7e6bb126505374d12b3275f6cbe6d78d0ee45bf222b7b/obstore-0.7.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f35f285938a44e38a01e7a118599e99c7a22706eb5dfccf5e87fc50a1dae8a1b", size = 3699905, upload-time = "2025-06-25T21:08:37.55Z" }, + { url = "https://files.pythonhosted.org/packages/69/9b/3fbe6fcb797bb38a398280eb3dbf9ea96db7dacf3d75dde0b698e98fda45/obstore-0.7.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecc478cc999c8da1f40a3b6a04d776829b34b267c3d93017ade555bc14a36860", size = 3970094, upload-time = "2025-06-25T21:08:38.946Z" }, + { url = "https://files.pythonhosted.org/packages/43/46/cb95546672a06a3d58fcf1fd067b8deb5cc9a73ee2c6bf60ed6836b85d66/obstore-0.7.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:032fddd4d5e746a1e7730a78e352a22713ae27502121bb317c03f450246ee084", size = 4034703, upload-time = "2025-06-25T21:08:40.338Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b5/93135bc01ede7ca127910b180ceac1b79c146bc5fbe858bf064d5d2b28f9/obstore-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:545ff9778e4a14f60b3f7efc835441a56de2fa49a451ea95ea0dfb2ac067d249", size = 3793733, upload-time = "2025-06-25T21:08:41.653Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5f/987eeeb2e9104ff6b94ea5b9a27c6c1f2999bdb1dc9ffeacd9420ac53879/obstore-0.7.0-cp312-cp312-manylinux_2_24_aarch64.whl", hash = "sha256:9f8e43bb0c604e4ceb6f506bf5373170f410e457716f8c2e014ad5756a0a2217", size = 3570765, upload-time = "2025-06-25T21:08:42.916Z" }, + { url = "https://files.pythonhosted.org/packages/e2/25/90a483ce8f26f1765235e27ff269524b20f7206c4c64d0aa6d7bce41cd38/obstore-0.7.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:714cb85627723454a2b085b0b40c91d78c0764085ef15c3f1a61f20afc5a59be", size = 3736468, upload-time = "2025-06-25T21:08:44.254Z" }, + { url = "https://files.pythonhosted.org/packages/28/2e/284a833f9303ffb3e86a68cb0cb4ac1c385b3a65ab295a6ef395d46d2b82/obstore-0.7.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:79828846f71392f591e2a142795da11d77098e6e9120226d3969f6e5c03c8f3b", size = 3776342, upload-time = "2025-06-25T21:08:45.644Z" }, + { url = "https://files.pythonhosted.org/packages/ab/be/110bcd41827b494c8fc42bfb3a0459c3ef7d27a863d1fc18a2a5d0220b5b/obstore-0.7.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:53bbd5b26b1992569d4138a8a5ec4a8b13036414278bac33c0616c05b1cec9d2", size = 3779449, upload-time = "2025-06-25T21:08:47.393Z" }, + { url = "https://files.pythonhosted.org/packages/12/e8/858fe601c9b6b59a4546b40feb41c43f04cfeaf086dfd2b701baaeb06136/obstore-0.7.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c8f59e0cfa3a139346e62b58cb264946912d8d88f53027e2e836d32014f56b40", size = 3966569, upload-time = "2025-06-25T21:08:49.54Z" }, + { url = "https://files.pythonhosted.org/packages/fe/49/c07da5a20dd51ef6a8e0220338ba4d6f460c05645e3374a57157d5a74f7b/obstore-0.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:62cfaf3d42b8d4508a542607c7602380b8fc844b6986a1d9c6ea0f8fe549e3d9", size = 4043882, upload-time = "2025-06-25T21:08:50.943Z" }, + { url = "https://files.pythonhosted.org/packages/60/c2/3f1f764fc7d2d17d932095ab5e96524df4634ee5b0b34713ebd4d5b09ff6/obstore-0.7.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:c2743e1471e86f3184d6f536793e61c02b8210b0e1022f30285e6f5bf70af1c5", size = 3659829, upload-time = "2025-06-25T21:08:52.228Z" }, + { url = "https://files.pythonhosted.org/packages/62/f2/0d7f126ed5bb02fc2872515c3964327c3c7c37ca42b23795207c2d088c45/obstore-0.7.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a66c3ee0fe1f510612061a0f1a894857456e8c31154e5cf71f0252abf3cbdc89", size = 3385007, upload-time = "2025-06-25T21:08:53.978Z" }, + { url = "https://files.pythonhosted.org/packages/e1/a1/e0d96d3c33c4495f3b85c286b80e70c656dc464805ba74142695ca959f72/obstore-0.7.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:80646e080297e296a5f378cdb14ee0cc3766a3db2c25870381f93ad7367fa12e", size = 3551944, upload-time = "2025-06-25T21:08:55.477Z" }, + { url = "https://files.pythonhosted.org/packages/73/db/c071556de119b5c4f44ff9f816a980828cdadc3afd0b61a947324320d68f/obstore-0.7.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:613a3d8fa19732c2da599db9d51e75a4b3b06ac77cabd0bc6041e65baa3c1182", size = 3699853, upload-time = "2025-06-25T21:08:57.184Z" }, + { url = "https://files.pythonhosted.org/packages/95/08/028d3151ede642a6ecf19878fb2b4bcf59cd494398b11d4d4e7d3560e112/obstore-0.7.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ebf27156ab7d4abb9f63f6e2d94a92c84c9c2c157e26990212b3832cba3ed0c8", size = 3969874, upload-time = "2025-06-25T21:08:58.511Z" }, + { url = "https://files.pythonhosted.org/packages/24/e8/44ccf2dd42be8d3ada6060ccca6e05b2905a757b9c2dd405e94c207fe6a5/obstore-0.7.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:752d2fc896614b8dd673d8d4b9922e669af9ec7805d200404f5af5b4ed61378b", size = 4025566, upload-time = "2025-06-25T21:08:59.889Z" }, + { url = "https://files.pythonhosted.org/packages/12/22/7a1cca373582922b18ca102b76aee0bcacd7e073f116b48aa03d476e1929/obstore-0.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c220499d12b367ee153b6f42e5d55ffa4fb7cec655238d948b01099b5844bbe6", size = 3793718, upload-time = "2025-06-25T21:09:01.665Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e0/134baf004465e8832ab5198836df74bcd57c33778466cd331df1442656a1/obstore-0.7.0-cp313-cp313-manylinux_2_24_aarch64.whl", hash = "sha256:bc34133499d72257f64c2d462d54ea469102d2f00b333948b158d1f59d321025", size = 3570357, upload-time = "2025-06-25T21:09:03.391Z" }, + { url = "https://files.pythonhosted.org/packages/8a/a4/e6d64f4fdee0fec3f933d9a3e3183c4883bcc8d6c127a03c86ce2e2971d4/obstore-0.7.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5fd0de655419cd505a7c7d6512706220c5fb434ea449999027fcc0ad0ba1946b", size = 3736614, upload-time = "2025-06-25T21:09:05.182Z" }, + { url = "https://files.pythonhosted.org/packages/4b/a5/c6f45847d5b4ae1b441eaab9f5656d2baad4b8b8cacb72f5f79e89109c4e/obstore-0.7.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:f1fb0df678dbf0ae4e049660ebdb4b1551ec1ed66a98390675aa1e221b64cb18", size = 3776072, upload-time = "2025-06-25T21:09:06.571Z" }, + { url = "https://files.pythonhosted.org/packages/f6/bf/a40d1571755d6dc0abc44d910cd3c3ba11939a612c8ef84a074e60b3a454/obstore-0.7.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1c1a8b31d820147b88f347ffec22fc44ea3b26abb21a9bd1b2e08290a5efb60a", size = 3779078, upload-time = "2025-06-25T21:09:08.229Z" }, + { url = "https://files.pythonhosted.org/packages/3a/27/53f8e759cf0b2361c8d4194eaff206538e8f928539d2e4554d68f783209b/obstore-0.7.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e8976a46fa857b1446b958a0293319eca25cb19f4d68bda4a8a66e4bf21fc4a4", size = 3966303, upload-time = "2025-06-25T21:09:09.69Z" }, + { url = "https://files.pythonhosted.org/packages/84/8a/f3750ba6f69ee741e67a6b14d47676cc95c684cee028f8c96115aa2c1100/obstore-0.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:d2cfd49f846b19dffe73242dc0edc3bd8ca47af126af328ae7cbf9cb27c29d4e", size = 4043452, upload-time = "2025-06-25T21:09:11.06Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "pandas" +version = "2.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d1/6f/75aa71f8a14267117adeeed5d21b204770189c0a0025acbdc03c337b28fc/pandas-2.3.1.tar.gz", hash = "sha256:0a95b9ac964fe83ce317827f80304d37388ea77616b1425f0ae41c9d2d0d7bb2", size = 4487493, upload-time = "2025-07-07T19:20:04.079Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/de/b8445e0f5d217a99fe0eeb2f4988070908979bec3587c0633e5428ab596c/pandas-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:689968e841136f9e542020698ee1c4fbe9caa2ed2213ae2388dc7b81721510d3", size = 11588172, upload-time = "2025-07-07T19:18:52.054Z" }, + { url = "https://files.pythonhosted.org/packages/1e/e0/801cdb3564e65a5ac041ab99ea6f1d802a6c325bb6e58c79c06a3f1cd010/pandas-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:025e92411c16cbe5bb2a4abc99732a6b132f439b8aab23a59fa593eb00704232", size = 10717365, upload-time = "2025-07-07T19:18:54.785Z" }, + { url = "https://files.pythonhosted.org/packages/51/a5/c76a8311833c24ae61a376dbf360eb1b1c9247a5d9c1e8b356563b31b80c/pandas-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b7ff55f31c4fcb3e316e8f7fa194566b286d6ac430afec0d461163312c5841e", size = 11280411, upload-time = "2025-07-07T19:18:57.045Z" }, + { url = "https://files.pythonhosted.org/packages/da/01/e383018feba0a1ead6cf5fe8728e5d767fee02f06a3d800e82c489e5daaf/pandas-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dcb79bf373a47d2a40cf7232928eb7540155abbc460925c2c96d2d30b006eb4", size = 11988013, upload-time = "2025-07-07T19:18:59.771Z" }, + { url = "https://files.pythonhosted.org/packages/5b/14/cec7760d7c9507f11c97d64f29022e12a6cc4fc03ac694535e89f88ad2ec/pandas-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:56a342b231e8862c96bdb6ab97170e203ce511f4d0429589c8ede1ee8ece48b8", size = 12767210, upload-time = "2025-07-07T19:19:02.944Z" }, + { url = "https://files.pythonhosted.org/packages/50/b9/6e2d2c6728ed29fb3d4d4d302504fb66f1a543e37eb2e43f352a86365cdf/pandas-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ca7ed14832bce68baef331f4d7f294411bed8efd032f8109d690df45e00c4679", size = 13440571, upload-time = "2025-07-07T19:19:06.82Z" }, + { url = "https://files.pythonhosted.org/packages/80/a5/3a92893e7399a691bad7664d977cb5e7c81cf666c81f89ea76ba2bff483d/pandas-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:ac942bfd0aca577bef61f2bc8da8147c4ef6879965ef883d8e8d5d2dc3e744b8", size = 10987601, upload-time = "2025-07-07T19:19:09.589Z" }, + { url = "https://files.pythonhosted.org/packages/32/ed/ff0a67a2c5505e1854e6715586ac6693dd860fbf52ef9f81edee200266e7/pandas-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9026bd4a80108fac2239294a15ef9003c4ee191a0f64b90f170b40cfb7cf2d22", size = 11531393, upload-time = "2025-07-07T19:19:12.245Z" }, + { url = "https://files.pythonhosted.org/packages/c7/db/d8f24a7cc9fb0972adab0cc80b6817e8bef888cfd0024eeb5a21c0bb5c4a/pandas-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6de8547d4fdb12421e2d047a2c446c623ff4c11f47fddb6b9169eb98ffba485a", size = 10668750, upload-time = "2025-07-07T19:19:14.612Z" }, + { url = "https://files.pythonhosted.org/packages/0f/b0/80f6ec783313f1e2356b28b4fd8d2148c378370045da918c73145e6aab50/pandas-2.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:782647ddc63c83133b2506912cc6b108140a38a37292102aaa19c81c83db2928", size = 11342004, upload-time = "2025-07-07T19:19:16.857Z" }, + { url = "https://files.pythonhosted.org/packages/e9/e2/20a317688435470872885e7fc8f95109ae9683dec7c50be29b56911515a5/pandas-2.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba6aff74075311fc88504b1db890187a3cd0f887a5b10f5525f8e2ef55bfdb9", size = 12050869, upload-time = "2025-07-07T19:19:19.265Z" }, + { url = "https://files.pythonhosted.org/packages/55/79/20d746b0a96c67203a5bee5fb4e00ac49c3e8009a39e1f78de264ecc5729/pandas-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e5635178b387bd2ba4ac040f82bc2ef6e6b500483975c4ebacd34bec945fda12", size = 12750218, upload-time = "2025-07-07T19:19:21.547Z" }, + { url = "https://files.pythonhosted.org/packages/7c/0f/145c8b41e48dbf03dd18fdd7f24f8ba95b8254a97a3379048378f33e7838/pandas-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6f3bf5ec947526106399a9e1d26d40ee2b259c66422efdf4de63c848492d91bb", size = 13416763, upload-time = "2025-07-07T19:19:23.939Z" }, + { url = "https://files.pythonhosted.org/packages/b2/c0/54415af59db5cdd86a3d3bf79863e8cc3fa9ed265f0745254061ac09d5f2/pandas-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:1c78cf43c8fde236342a1cb2c34bcff89564a7bfed7e474ed2fffa6aed03a956", size = 10987482, upload-time = "2025-07-07T19:19:42.699Z" }, + { url = "https://files.pythonhosted.org/packages/48/64/2fd2e400073a1230e13b8cd604c9bc95d9e3b962e5d44088ead2e8f0cfec/pandas-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8dfc17328e8da77be3cf9f47509e5637ba8f137148ed0e9b5241e1baf526e20a", size = 12029159, upload-time = "2025-07-07T19:19:26.362Z" }, + { url = "https://files.pythonhosted.org/packages/d8/0a/d84fd79b0293b7ef88c760d7dca69828d867c89b6d9bc52d6a27e4d87316/pandas-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ec6c851509364c59a5344458ab935e6451b31b818be467eb24b0fe89bd05b6b9", size = 11393287, upload-time = "2025-07-07T19:19:29.157Z" }, + { url = "https://files.pythonhosted.org/packages/50/ae/ff885d2b6e88f3c7520bb74ba319268b42f05d7e583b5dded9837da2723f/pandas-2.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:911580460fc4884d9b05254b38a6bfadddfcc6aaef856fb5859e7ca202e45275", size = 11309381, upload-time = "2025-07-07T19:19:31.436Z" }, + { url = "https://files.pythonhosted.org/packages/85/86/1fa345fc17caf5d7780d2699985c03dbe186c68fee00b526813939062bb0/pandas-2.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f4d6feeba91744872a600e6edbbd5b033005b431d5ae8379abee5bcfa479fab", size = 11883998, upload-time = "2025-07-07T19:19:34.267Z" }, + { url = "https://files.pythonhosted.org/packages/81/aa/e58541a49b5e6310d89474333e994ee57fea97c8aaa8fc7f00b873059bbf/pandas-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fe37e757f462d31a9cd7580236a82f353f5713a80e059a29753cf938c6775d96", size = 12704705, upload-time = "2025-07-07T19:19:36.856Z" }, + { url = "https://files.pythonhosted.org/packages/d5/f9/07086f5b0f2a19872554abeea7658200824f5835c58a106fa8f2ae96a46c/pandas-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5db9637dbc24b631ff3707269ae4559bce4b7fd75c1c4d7e13f40edc42df4444", size = 13189044, upload-time = "2025-07-07T19:19:39.999Z" }, +] + +[[package]] +name = "paramiko" +version = "3.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "bcrypt" }, + { name = "cryptography" }, + { name = "pynacl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/15/ad6ce226e8138315f2451c2aeea985bf35ee910afb477bae7477dc3a8f3b/paramiko-3.5.1.tar.gz", hash = "sha256:b2c665bc45b2b215bd7d7f039901b14b067da00f3a11e6640995fd58f2664822", size = 1566110, upload-time = "2025-02-04T02:37:59.783Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/f8/c7bd0ef12954a81a1d3cea60a13946bd9a49a0036a5927770c461eade7ae/paramiko-3.5.1-py3-none-any.whl", hash = "sha256:43b9a0501fc2b5e70680388d9346cf252cfb7d00b0667c39e80eb43a408b8f61", size = 227298, upload-time = "2025-02-04T02:37:57.672Z" }, +] + +[[package]] +name = "parso" +version = "0.8.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609, upload-time = "2024-04-05T09:43:55.897Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650, upload-time = "2024-04-05T09:43:53.299Z" }, +] + +[[package]] +name = "partd" +version = "1.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "locket" }, + { name = "toolz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b2/3a/3f06f34820a31257ddcabdfafc2672c5816be79c7e353b02c1f318daa7d4/partd-1.4.2.tar.gz", hash = "sha256:d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c", size = 21029, upload-time = "2024-05-06T19:51:41.945Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/e7/40fb618334dcdf7c5a316c0e7343c5cd82d3d866edc100d98e29bc945ecd/partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f", size = 18905, upload-time = "2024-05-06T19:51:39.271Z" }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, +] + +[[package]] +name = "pika" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/db/db/d4102f356af18f316c67f2cead8ece307f731dd63140e2c71f170ddacf9b/pika-1.3.2.tar.gz", hash = "sha256:b2a327ddddf8570b4965b3576ac77091b850262d34ce8c1d8cb4e4146aa4145f", size = 145029, upload-time = "2023-05-05T14:25:43.368Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/f3/f412836ec714d36f0f4ab581b84c491e3f42c6b5b97a6c6ed1817f3c16d0/pika-1.3.2-py3-none-any.whl", hash = "sha256:0779a7c1fafd805672796085560d290213a465e4f6f76a6fb19e378d8041a14f", size = 155415, upload-time = "2023-05-05T14:25:41.484Z" }, +] + +[[package]] +name = "pillow" +version = "11.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069, upload-time = "2025-07-01T09:16:30.666Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/fe/1bc9b3ee13f68487a99ac9529968035cca2f0a51ec36892060edcc51d06a/pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4", size = 5278800, upload-time = "2025-07-01T09:14:17.648Z" }, + { url = "https://files.pythonhosted.org/packages/2c/32/7e2ac19b5713657384cec55f89065fb306b06af008cfd87e572035b27119/pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69", size = 4686296, upload-time = "2025-07-01T09:14:19.828Z" }, + { url = "https://files.pythonhosted.org/packages/8e/1e/b9e12bbe6e4c2220effebc09ea0923a07a6da1e1f1bfbc8d7d29a01ce32b/pillow-11.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb76541cba2f958032d79d143b98a3a6b3ea87f0959bbe256c0b5e416599fd5d", size = 5871726, upload-time = "2025-07-03T13:10:04.448Z" }, + { url = "https://files.pythonhosted.org/packages/8d/33/e9200d2bd7ba00dc3ddb78df1198a6e80d7669cce6c2bdbeb2530a74ec58/pillow-11.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67172f2944ebba3d4a7b54f2e95c786a3a50c21b88456329314caaa28cda70f6", size = 7644652, upload-time = "2025-07-03T13:10:10.391Z" }, + { url = "https://files.pythonhosted.org/packages/41/f1/6f2427a26fc683e00d985bc391bdd76d8dd4e92fac33d841127eb8fb2313/pillow-11.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f07ed9f56a3b9b5f49d3661dc9607484e85c67e27f3e8be2c7d28ca032fec7", size = 5977787, upload-time = "2025-07-01T09:14:21.63Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c9/06dd4a38974e24f932ff5f98ea3c546ce3f8c995d3f0985f8e5ba48bba19/pillow-11.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:676b2815362456b5b3216b4fd5bd89d362100dc6f4945154ff172e206a22c024", size = 6645236, upload-time = "2025-07-01T09:14:23.321Z" }, + { url = "https://files.pythonhosted.org/packages/40/e7/848f69fb79843b3d91241bad658e9c14f39a32f71a301bcd1d139416d1be/pillow-11.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3e184b2f26ff146363dd07bde8b711833d7b0202e27d13540bfe2e35a323a809", size = 6086950, upload-time = "2025-07-01T09:14:25.237Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1a/7cff92e695a2a29ac1958c2a0fe4c0b2393b60aac13b04a4fe2735cad52d/pillow-11.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6be31e3fc9a621e071bc17bb7de63b85cbe0bfae91bb0363c893cbe67247780d", size = 6723358, upload-time = "2025-07-01T09:14:27.053Z" }, + { url = "https://files.pythonhosted.org/packages/26/7d/73699ad77895f69edff76b0f332acc3d497f22f5d75e5360f78cbcaff248/pillow-11.3.0-cp312-cp312-win32.whl", hash = "sha256:7b161756381f0918e05e7cb8a371fff367e807770f8fe92ecb20d905d0e1c149", size = 6275079, upload-time = "2025-07-01T09:14:30.104Z" }, + { url = "https://files.pythonhosted.org/packages/8c/ce/e7dfc873bdd9828f3b6e5c2bbb74e47a98ec23cc5c74fc4e54462f0d9204/pillow-11.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a6444696fce635783440b7f7a9fc24b3ad10a9ea3f0ab66c5905be1c19ccf17d", size = 6986324, upload-time = "2025-07-01T09:14:31.899Z" }, + { url = "https://files.pythonhosted.org/packages/16/8f/b13447d1bf0b1f7467ce7d86f6e6edf66c0ad7cf44cf5c87a37f9bed9936/pillow-11.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:2aceea54f957dd4448264f9bf40875da0415c83eb85f55069d89c0ed436e3542", size = 2423067, upload-time = "2025-07-01T09:14:33.709Z" }, + { url = "https://files.pythonhosted.org/packages/1e/93/0952f2ed8db3a5a4c7a11f91965d6184ebc8cd7cbb7941a260d5f018cd2d/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd", size = 2128328, upload-time = "2025-07-01T09:14:35.276Z" }, + { url = "https://files.pythonhosted.org/packages/4b/e8/100c3d114b1a0bf4042f27e0f87d2f25e857e838034e98ca98fe7b8c0a9c/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8", size = 2170652, upload-time = "2025-07-01T09:14:37.203Z" }, + { url = "https://files.pythonhosted.org/packages/aa/86/3f758a28a6e381758545f7cdb4942e1cb79abd271bea932998fc0db93cb6/pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f", size = 2227443, upload-time = "2025-07-01T09:14:39.344Z" }, + { url = "https://files.pythonhosted.org/packages/01/f4/91d5b3ffa718df2f53b0dc109877993e511f4fd055d7e9508682e8aba092/pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c", size = 5278474, upload-time = "2025-07-01T09:14:41.843Z" }, + { url = "https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd", size = 4686038, upload-time = "2025-07-01T09:14:44.008Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b0/3426e5c7f6565e752d81221af9d3676fdbb4f352317ceafd42899aaf5d8a/pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e", size = 5864407, upload-time = "2025-07-03T13:10:15.628Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c1/c6c423134229f2a221ee53f838d4be9d82bab86f7e2f8e75e47b6bf6cd77/pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1", size = 7639094, upload-time = "2025-07-03T13:10:21.857Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c9/09e6746630fe6372c67c648ff9deae52a2bc20897d51fa293571977ceb5d/pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805", size = 5973503, upload-time = "2025-07-01T09:14:45.698Z" }, + { url = "https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8", size = 6642574, upload-time = "2025-07-01T09:14:47.415Z" }, + { url = "https://files.pythonhosted.org/packages/36/de/d5cc31cc4b055b6c6fd990e3e7f0f8aaf36229a2698501bcb0cdf67c7146/pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2", size = 6084060, upload-time = "2025-07-01T09:14:49.636Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ea/502d938cbaeec836ac28a9b730193716f0114c41325db428e6b280513f09/pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b", size = 6721407, upload-time = "2025-07-01T09:14:51.962Z" }, + { url = "https://files.pythonhosted.org/packages/45/9c/9c5e2a73f125f6cbc59cc7087c8f2d649a7ae453f83bd0362ff7c9e2aee2/pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3", size = 6273841, upload-time = "2025-07-01T09:14:54.142Z" }, + { url = "https://files.pythonhosted.org/packages/23/85/397c73524e0cd212067e0c969aa245b01d50183439550d24d9f55781b776/pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51", size = 6978450, upload-time = "2025-07-01T09:14:56.436Z" }, + { url = "https://files.pythonhosted.org/packages/17/d2/622f4547f69cd173955194b78e4d19ca4935a1b0f03a302d655c9f6aae65/pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580", size = 2423055, upload-time = "2025-07-01T09:14:58.072Z" }, + { url = "https://files.pythonhosted.org/packages/dd/80/a8a2ac21dda2e82480852978416cfacd439a4b490a501a288ecf4fe2532d/pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e", size = 5281110, upload-time = "2025-07-01T09:14:59.79Z" }, + { url = "https://files.pythonhosted.org/packages/44/d6/b79754ca790f315918732e18f82a8146d33bcd7f4494380457ea89eb883d/pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d", size = 4689547, upload-time = "2025-07-01T09:15:01.648Z" }, + { url = "https://files.pythonhosted.org/packages/49/20/716b8717d331150cb00f7fdd78169c01e8e0c219732a78b0e59b6bdb2fd6/pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced", size = 5901554, upload-time = "2025-07-03T13:10:27.018Z" }, + { url = "https://files.pythonhosted.org/packages/74/cf/a9f3a2514a65bb071075063a96f0a5cf949c2f2fce683c15ccc83b1c1cab/pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c", size = 7669132, upload-time = "2025-07-03T13:10:33.01Z" }, + { url = "https://files.pythonhosted.org/packages/98/3c/da78805cbdbee9cb43efe8261dd7cc0b4b93f2ac79b676c03159e9db2187/pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8", size = 6005001, upload-time = "2025-07-01T09:15:03.365Z" }, + { url = "https://files.pythonhosted.org/packages/6c/fa/ce044b91faecf30e635321351bba32bab5a7e034c60187fe9698191aef4f/pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59", size = 6668814, upload-time = "2025-07-01T09:15:05.655Z" }, + { url = "https://files.pythonhosted.org/packages/7b/51/90f9291406d09bf93686434f9183aba27b831c10c87746ff49f127ee80cb/pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe", size = 6113124, upload-time = "2025-07-01T09:15:07.358Z" }, + { url = "https://files.pythonhosted.org/packages/cd/5a/6fec59b1dfb619234f7636d4157d11fb4e196caeee220232a8d2ec48488d/pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c", size = 6747186, upload-time = "2025-07-01T09:15:09.317Z" }, + { url = "https://files.pythonhosted.org/packages/49/6b/00187a044f98255225f172de653941e61da37104a9ea60e4f6887717e2b5/pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788", size = 6277546, upload-time = "2025-07-01T09:15:11.311Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5c/6caaba7e261c0d75bab23be79f1d06b5ad2a2ae49f028ccec801b0e853d6/pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31", size = 6985102, upload-time = "2025-07-01T09:15:13.164Z" }, + { url = "https://files.pythonhosted.org/packages/f3/7e/b623008460c09a0cb38263c93b828c666493caee2eb34ff67f778b87e58c/pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e", size = 2424803, upload-time = "2025-07-01T09:15:15.695Z" }, + { url = "https://files.pythonhosted.org/packages/73/f4/04905af42837292ed86cb1b1dabe03dce1edc008ef14c473c5c7e1443c5d/pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12", size = 5278520, upload-time = "2025-07-01T09:15:17.429Z" }, + { url = "https://files.pythonhosted.org/packages/41/b0/33d79e377a336247df6348a54e6d2a2b85d644ca202555e3faa0cf811ecc/pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a", size = 4686116, upload-time = "2025-07-01T09:15:19.423Z" }, + { url = "https://files.pythonhosted.org/packages/49/2d/ed8bc0ab219ae8768f529597d9509d184fe8a6c4741a6864fea334d25f3f/pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632", size = 5864597, upload-time = "2025-07-03T13:10:38.404Z" }, + { url = "https://files.pythonhosted.org/packages/b5/3d/b932bb4225c80b58dfadaca9d42d08d0b7064d2d1791b6a237f87f661834/pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673", size = 7638246, upload-time = "2025-07-03T13:10:44.987Z" }, + { url = "https://files.pythonhosted.org/packages/09/b5/0487044b7c096f1b48f0d7ad416472c02e0e4bf6919541b111efd3cae690/pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027", size = 5973336, upload-time = "2025-07-01T09:15:21.237Z" }, + { url = "https://files.pythonhosted.org/packages/a8/2d/524f9318f6cbfcc79fbc004801ea6b607ec3f843977652fdee4857a7568b/pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77", size = 6642699, upload-time = "2025-07-01T09:15:23.186Z" }, + { url = "https://files.pythonhosted.org/packages/6f/d2/a9a4f280c6aefedce1e8f615baaa5474e0701d86dd6f1dede66726462bbd/pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874", size = 6083789, upload-time = "2025-07-01T09:15:25.1Z" }, + { url = "https://files.pythonhosted.org/packages/fe/54/86b0cd9dbb683a9d5e960b66c7379e821a19be4ac5810e2e5a715c09a0c0/pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a", size = 6720386, upload-time = "2025-07-01T09:15:27.378Z" }, + { url = "https://files.pythonhosted.org/packages/e7/95/88efcaf384c3588e24259c4203b909cbe3e3c2d887af9e938c2022c9dd48/pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214", size = 6370911, upload-time = "2025-07-01T09:15:29.294Z" }, + { url = "https://files.pythonhosted.org/packages/2e/cc/934e5820850ec5eb107e7b1a72dd278140731c669f396110ebc326f2a503/pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635", size = 7117383, upload-time = "2025-07-01T09:15:31.128Z" }, + { url = "https://files.pythonhosted.org/packages/d6/e9/9c0a616a71da2a5d163aa37405e8aced9a906d574b4a214bede134e731bc/pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6", size = 2511385, upload-time = "2025-07-01T09:15:33.328Z" }, + { url = "https://files.pythonhosted.org/packages/1a/33/c88376898aff369658b225262cd4f2659b13e8178e7534df9e6e1fa289f6/pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae", size = 5281129, upload-time = "2025-07-01T09:15:35.194Z" }, + { url = "https://files.pythonhosted.org/packages/1f/70/d376247fb36f1844b42910911c83a02d5544ebd2a8bad9efcc0f707ea774/pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653", size = 4689580, upload-time = "2025-07-01T09:15:37.114Z" }, + { url = "https://files.pythonhosted.org/packages/eb/1c/537e930496149fbac69efd2fc4329035bbe2e5475b4165439e3be9cb183b/pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6", size = 5902860, upload-time = "2025-07-03T13:10:50.248Z" }, + { url = "https://files.pythonhosted.org/packages/bd/57/80f53264954dcefeebcf9dae6e3eb1daea1b488f0be8b8fef12f79a3eb10/pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36", size = 7670694, upload-time = "2025-07-03T13:10:56.432Z" }, + { url = "https://files.pythonhosted.org/packages/70/ff/4727d3b71a8578b4587d9c276e90efad2d6fe0335fd76742a6da08132e8c/pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b", size = 6005888, upload-time = "2025-07-01T09:15:39.436Z" }, + { url = "https://files.pythonhosted.org/packages/05/ae/716592277934f85d3be51d7256f3636672d7b1abfafdc42cf3f8cbd4b4c8/pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477", size = 6670330, upload-time = "2025-07-01T09:15:41.269Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7fe6cddcc8827b01b1a9766f5fdeb7418680744f9082035bdbabecf1d57f/pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50", size = 6114089, upload-time = "2025-07-01T09:15:43.13Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f5/06bfaa444c8e80f1a8e4bff98da9c83b37b5be3b1deaa43d27a0db37ef84/pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b", size = 6748206, upload-time = "2025-07-01T09:15:44.937Z" }, + { url = "https://files.pythonhosted.org/packages/f0/77/bc6f92a3e8e6e46c0ca78abfffec0037845800ea38c73483760362804c41/pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12", size = 6377370, upload-time = "2025-07-01T09:15:46.673Z" }, + { url = "https://files.pythonhosted.org/packages/4a/82/3a721f7d69dca802befb8af08b7c79ebcab461007ce1c18bd91a5d5896f9/pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db", size = 7121500, upload-time = "2025-07-01T09:15:48.512Z" }, + { url = "https://files.pythonhosted.org/packages/89/c7/5572fa4a3f45740eaab6ae86fcdf7195b55beac1371ac8c619d880cfe948/pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa", size = 2512835, upload-time = "2025-07-01T09:15:50.399Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.3.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload-time = "2025-05-07T22:47:42.121Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" }, +] + +[[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 = "pqdm" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "bounded-pool-executor" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/dd/1b2ae6551a32bf8ae26b90c6e191a889bee5050bf23c88021761fbca03d1/pqdm-0.2.0.tar.gz", hash = "sha256:d99d01fe498d327b440ebfe08c14c84e0dc9ecce6172ef9a31f96bb1aaf4e9e3", size = 13899, upload-time = "2022-02-14T10:16:20.675Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/b7/720988acdc9b5805cd1ef311aa75d6fd1c5438b87f4add1ec8d11f78d63b/pqdm-0.2.0-py2.py3-none-any.whl", hash = "sha256:0da33a22ebee349a047abf8ef7fd00d85403638101d5e374b421a74188231b62", size = 6765, upload-time = "2022-02-14T10:16:18.824Z" }, +] + +[[package]] +name = "pre-commit" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cfgv" }, + { name = "identify" }, + { name = "nodeenv" }, + { name = "pyyaml" }, + { name = "virtualenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424, upload-time = "2025-03-18T21:35:20.987Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707, upload-time = "2025-03-18T21:35:19.343Z" }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.51" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940, upload-time = "2025-04-15T09:18:47.731Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload-time = "2025-04-15T09:18:44.753Z" }, +] + +[[package]] +name = "propcache" +version = "0.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a6/16/43264e4a779dd8588c21a70f0709665ee8f611211bdd2c87d952cfa7c776/propcache-0.3.2.tar.gz", hash = "sha256:20d7d62e4e7ef05f221e0db2856b979540686342e7dd9973b815599c7057e168", size = 44139, upload-time = "2025-06-09T22:56:06.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/42/9ca01b0a6f48e81615dca4765a8f1dd2c057e0540f6116a27dc5ee01dfb6/propcache-0.3.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8de106b6c84506b31c27168582cd3cb3000a6412c16df14a8628e5871ff83c10", size = 73674, upload-time = "2025-06-09T22:54:30.551Z" }, + { url = "https://files.pythonhosted.org/packages/af/6e/21293133beb550f9c901bbece755d582bfaf2176bee4774000bd4dd41884/propcache-0.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:28710b0d3975117239c76600ea351934ac7b5ff56e60953474342608dbbb6154", size = 43570, upload-time = "2025-06-09T22:54:32.296Z" }, + { url = "https://files.pythonhosted.org/packages/0c/c8/0393a0a3a2b8760eb3bde3c147f62b20044f0ddac81e9d6ed7318ec0d852/propcache-0.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce26862344bdf836650ed2487c3d724b00fbfec4233a1013f597b78c1cb73615", size = 43094, upload-time = "2025-06-09T22:54:33.929Z" }, + { url = "https://files.pythonhosted.org/packages/37/2c/489afe311a690399d04a3e03b069225670c1d489eb7b044a566511c1c498/propcache-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bca54bd347a253af2cf4544bbec232ab982f4868de0dd684246b67a51bc6b1db", size = 226958, upload-time = "2025-06-09T22:54:35.186Z" }, + { url = "https://files.pythonhosted.org/packages/9d/ca/63b520d2f3d418c968bf596839ae26cf7f87bead026b6192d4da6a08c467/propcache-0.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55780d5e9a2ddc59711d727226bb1ba83a22dd32f64ee15594b9392b1f544eb1", size = 234894, upload-time = "2025-06-09T22:54:36.708Z" }, + { url = "https://files.pythonhosted.org/packages/11/60/1d0ed6fff455a028d678df30cc28dcee7af77fa2b0e6962ce1df95c9a2a9/propcache-0.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:035e631be25d6975ed87ab23153db6a73426a48db688070d925aa27e996fe93c", size = 233672, upload-time = "2025-06-09T22:54:38.062Z" }, + { url = "https://files.pythonhosted.org/packages/37/7c/54fd5301ef38505ab235d98827207176a5c9b2aa61939b10a460ca53e123/propcache-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee6f22b6eaa39297c751d0e80c0d3a454f112f5c6481214fcf4c092074cecd67", size = 224395, upload-time = "2025-06-09T22:54:39.634Z" }, + { url = "https://files.pythonhosted.org/packages/ee/1a/89a40e0846f5de05fdc6779883bf46ba980e6df4d2ff8fb02643de126592/propcache-0.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ca3aee1aa955438c4dba34fc20a9f390e4c79967257d830f137bd5a8a32ed3b", size = 212510, upload-time = "2025-06-09T22:54:41.565Z" }, + { url = "https://files.pythonhosted.org/packages/5e/33/ca98368586c9566a6b8d5ef66e30484f8da84c0aac3f2d9aec6d31a11bd5/propcache-0.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7a4f30862869fa2b68380d677cc1c5fcf1e0f2b9ea0cf665812895c75d0ca3b8", size = 222949, upload-time = "2025-06-09T22:54:43.038Z" }, + { url = "https://files.pythonhosted.org/packages/ba/11/ace870d0aafe443b33b2f0b7efdb872b7c3abd505bfb4890716ad7865e9d/propcache-0.3.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b77ec3c257d7816d9f3700013639db7491a434644c906a2578a11daf13176251", size = 217258, upload-time = "2025-06-09T22:54:44.376Z" }, + { url = "https://files.pythonhosted.org/packages/5b/d2/86fd6f7adffcfc74b42c10a6b7db721d1d9ca1055c45d39a1a8f2a740a21/propcache-0.3.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:cab90ac9d3f14b2d5050928483d3d3b8fb6b4018893fc75710e6aa361ecb2474", size = 213036, upload-time = "2025-06-09T22:54:46.243Z" }, + { url = "https://files.pythonhosted.org/packages/07/94/2d7d1e328f45ff34a0a284cf5a2847013701e24c2a53117e7c280a4316b3/propcache-0.3.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0b504d29f3c47cf6b9e936c1852246c83d450e8e063d50562115a6be6d3a2535", size = 227684, upload-time = "2025-06-09T22:54:47.63Z" }, + { url = "https://files.pythonhosted.org/packages/b7/05/37ae63a0087677e90b1d14710e532ff104d44bc1efa3b3970fff99b891dc/propcache-0.3.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:ce2ac2675a6aa41ddb2a0c9cbff53780a617ac3d43e620f8fd77ba1c84dcfc06", size = 234562, upload-time = "2025-06-09T22:54:48.982Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7c/3f539fcae630408d0bd8bf3208b9a647ccad10976eda62402a80adf8fc34/propcache-0.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:62b4239611205294cc433845b914131b2a1f03500ff3c1ed093ed216b82621e1", size = 222142, upload-time = "2025-06-09T22:54:50.424Z" }, + { url = "https://files.pythonhosted.org/packages/7c/d2/34b9eac8c35f79f8a962546b3e97e9d4b990c420ee66ac8255d5d9611648/propcache-0.3.2-cp312-cp312-win32.whl", hash = "sha256:df4a81b9b53449ebc90cc4deefb052c1dd934ba85012aa912c7ea7b7e38b60c1", size = 37711, upload-time = "2025-06-09T22:54:52.072Z" }, + { url = "https://files.pythonhosted.org/packages/19/61/d582be5d226cf79071681d1b46b848d6cb03d7b70af7063e33a2787eaa03/propcache-0.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7046e79b989d7fe457bb755844019e10f693752d169076138abf17f31380800c", size = 41479, upload-time = "2025-06-09T22:54:53.234Z" }, + { url = "https://files.pythonhosted.org/packages/dc/d1/8c747fafa558c603c4ca19d8e20b288aa0c7cda74e9402f50f31eb65267e/propcache-0.3.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ca592ed634a73ca002967458187109265e980422116c0a107cf93d81f95af945", size = 71286, upload-time = "2025-06-09T22:54:54.369Z" }, + { url = "https://files.pythonhosted.org/packages/61/99/d606cb7986b60d89c36de8a85d58764323b3a5ff07770a99d8e993b3fa73/propcache-0.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9ecb0aad4020e275652ba3975740f241bd12a61f1a784df044cf7477a02bc252", size = 42425, upload-time = "2025-06-09T22:54:55.642Z" }, + { url = "https://files.pythonhosted.org/packages/8c/96/ef98f91bbb42b79e9bb82bdd348b255eb9d65f14dbbe3b1594644c4073f7/propcache-0.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7f08f1cc28bd2eade7a8a3d2954ccc673bb02062e3e7da09bc75d843386b342f", size = 41846, upload-time = "2025-06-09T22:54:57.246Z" }, + { url = "https://files.pythonhosted.org/packages/5b/ad/3f0f9a705fb630d175146cd7b1d2bf5555c9beaed54e94132b21aac098a6/propcache-0.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1a342c834734edb4be5ecb1e9fb48cb64b1e2320fccbd8c54bf8da8f2a84c33", size = 208871, upload-time = "2025-06-09T22:54:58.975Z" }, + { url = "https://files.pythonhosted.org/packages/3a/38/2085cda93d2c8b6ec3e92af2c89489a36a5886b712a34ab25de9fbca7992/propcache-0.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a544caaae1ac73f1fecfae70ded3e93728831affebd017d53449e3ac052ac1e", size = 215720, upload-time = "2025-06-09T22:55:00.471Z" }, + { url = "https://files.pythonhosted.org/packages/61/c1/d72ea2dc83ac7f2c8e182786ab0fc2c7bd123a1ff9b7975bee671866fe5f/propcache-0.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:310d11aa44635298397db47a3ebce7db99a4cc4b9bbdfcf6c98a60c8d5261cf1", size = 215203, upload-time = "2025-06-09T22:55:01.834Z" }, + { url = "https://files.pythonhosted.org/packages/af/81/b324c44ae60c56ef12007105f1460d5c304b0626ab0cc6b07c8f2a9aa0b8/propcache-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c1396592321ac83157ac03a2023aa6cc4a3cc3cfdecb71090054c09e5a7cce3", size = 206365, upload-time = "2025-06-09T22:55:03.199Z" }, + { url = "https://files.pythonhosted.org/packages/09/73/88549128bb89e66d2aff242488f62869014ae092db63ccea53c1cc75a81d/propcache-0.3.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cabf5b5902272565e78197edb682017d21cf3b550ba0460ee473753f28d23c1", size = 196016, upload-time = "2025-06-09T22:55:04.518Z" }, + { url = "https://files.pythonhosted.org/packages/b9/3f/3bdd14e737d145114a5eb83cb172903afba7242f67c5877f9909a20d948d/propcache-0.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0a2f2235ac46a7aa25bdeb03a9e7060f6ecbd213b1f9101c43b3090ffb971ef6", size = 205596, upload-time = "2025-06-09T22:55:05.942Z" }, + { url = "https://files.pythonhosted.org/packages/0f/ca/2f4aa819c357d3107c3763d7ef42c03980f9ed5c48c82e01e25945d437c1/propcache-0.3.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:92b69e12e34869a6970fd2f3da91669899994b47c98f5d430b781c26f1d9f387", size = 200977, upload-time = "2025-06-09T22:55:07.792Z" }, + { url = "https://files.pythonhosted.org/packages/cd/4a/e65276c7477533c59085251ae88505caf6831c0e85ff8b2e31ebcbb949b1/propcache-0.3.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:54e02207c79968ebbdffc169591009f4474dde3b4679e16634d34c9363ff56b4", size = 197220, upload-time = "2025-06-09T22:55:09.173Z" }, + { url = "https://files.pythonhosted.org/packages/7c/54/fc7152e517cf5578278b242396ce4d4b36795423988ef39bb8cd5bf274c8/propcache-0.3.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4adfb44cb588001f68c5466579d3f1157ca07f7504fc91ec87862e2b8e556b88", size = 210642, upload-time = "2025-06-09T22:55:10.62Z" }, + { url = "https://files.pythonhosted.org/packages/b9/80/abeb4a896d2767bf5f1ea7b92eb7be6a5330645bd7fb844049c0e4045d9d/propcache-0.3.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fd3e6019dc1261cd0291ee8919dd91fbab7b169bb76aeef6c716833a3f65d206", size = 212789, upload-time = "2025-06-09T22:55:12.029Z" }, + { url = "https://files.pythonhosted.org/packages/b3/db/ea12a49aa7b2b6d68a5da8293dcf50068d48d088100ac016ad92a6a780e6/propcache-0.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4c181cad81158d71c41a2bce88edce078458e2dd5ffee7eddd6b05da85079f43", size = 205880, upload-time = "2025-06-09T22:55:13.45Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e5/9076a0bbbfb65d1198007059c65639dfd56266cf8e477a9707e4b1999ff4/propcache-0.3.2-cp313-cp313-win32.whl", hash = "sha256:8a08154613f2249519e549de2330cf8e2071c2887309a7b07fb56098f5170a02", size = 37220, upload-time = "2025-06-09T22:55:15.284Z" }, + { url = "https://files.pythonhosted.org/packages/d3/f5/b369e026b09a26cd77aa88d8fffd69141d2ae00a2abaaf5380d2603f4b7f/propcache-0.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e41671f1594fc4ab0a6dec1351864713cb3a279910ae8b58f884a88a0a632c05", size = 40678, upload-time = "2025-06-09T22:55:16.445Z" }, + { url = "https://files.pythonhosted.org/packages/a4/3a/6ece377b55544941a08d03581c7bc400a3c8cd3c2865900a68d5de79e21f/propcache-0.3.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:9a3cf035bbaf035f109987d9d55dc90e4b0e36e04bbbb95af3055ef17194057b", size = 76560, upload-time = "2025-06-09T22:55:17.598Z" }, + { url = "https://files.pythonhosted.org/packages/0c/da/64a2bb16418740fa634b0e9c3d29edff1db07f56d3546ca2d86ddf0305e1/propcache-0.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:156c03d07dc1323d8dacaa221fbe028c5c70d16709cdd63502778e6c3ccca1b0", size = 44676, upload-time = "2025-06-09T22:55:18.922Z" }, + { url = "https://files.pythonhosted.org/packages/36/7b/f025e06ea51cb72c52fb87e9b395cced02786610b60a3ed51da8af017170/propcache-0.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74413c0ba02ba86f55cf60d18daab219f7e531620c15f1e23d95563f505efe7e", size = 44701, upload-time = "2025-06-09T22:55:20.106Z" }, + { url = "https://files.pythonhosted.org/packages/a4/00/faa1b1b7c3b74fc277f8642f32a4c72ba1d7b2de36d7cdfb676db7f4303e/propcache-0.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f066b437bb3fa39c58ff97ab2ca351db465157d68ed0440abecb21715eb24b28", size = 276934, upload-time = "2025-06-09T22:55:21.5Z" }, + { url = "https://files.pythonhosted.org/packages/74/ab/935beb6f1756e0476a4d5938ff44bf0d13a055fed880caf93859b4f1baf4/propcache-0.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1304b085c83067914721e7e9d9917d41ad87696bf70f0bc7dee450e9c71ad0a", size = 278316, upload-time = "2025-06-09T22:55:22.918Z" }, + { url = "https://files.pythonhosted.org/packages/f8/9d/994a5c1ce4389610838d1caec74bdf0e98b306c70314d46dbe4fcf21a3e2/propcache-0.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab50cef01b372763a13333b4e54021bdcb291fc9a8e2ccb9c2df98be51bcde6c", size = 282619, upload-time = "2025-06-09T22:55:24.651Z" }, + { url = "https://files.pythonhosted.org/packages/2b/00/a10afce3d1ed0287cef2e09506d3be9822513f2c1e96457ee369adb9a6cd/propcache-0.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad3b2a085ec259ad2c2842666b2a0a49dea8463579c606426128925af1ed725", size = 265896, upload-time = "2025-06-09T22:55:26.049Z" }, + { url = "https://files.pythonhosted.org/packages/2e/a8/2aa6716ffa566ca57c749edb909ad27884680887d68517e4be41b02299f3/propcache-0.3.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:261fa020c1c14deafd54c76b014956e2f86991af198c51139faf41c4d5e83892", size = 252111, upload-time = "2025-06-09T22:55:27.381Z" }, + { url = "https://files.pythonhosted.org/packages/36/4f/345ca9183b85ac29c8694b0941f7484bf419c7f0fea2d1e386b4f7893eed/propcache-0.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:46d7f8aa79c927e5f987ee3a80205c987717d3659f035c85cf0c3680526bdb44", size = 268334, upload-time = "2025-06-09T22:55:28.747Z" }, + { url = "https://files.pythonhosted.org/packages/3e/ca/fcd54f78b59e3f97b3b9715501e3147f5340167733d27db423aa321e7148/propcache-0.3.2-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:6d8f3f0eebf73e3c0ff0e7853f68be638b4043c65a70517bb575eff54edd8dbe", size = 255026, upload-time = "2025-06-09T22:55:30.184Z" }, + { url = "https://files.pythonhosted.org/packages/8b/95/8e6a6bbbd78ac89c30c225210a5c687790e532ba4088afb8c0445b77ef37/propcache-0.3.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:03c89c1b14a5452cf15403e291c0ccd7751d5b9736ecb2c5bab977ad6c5bcd81", size = 250724, upload-time = "2025-06-09T22:55:31.646Z" }, + { url = "https://files.pythonhosted.org/packages/ee/b0/0dd03616142baba28e8b2d14ce5df6631b4673850a3d4f9c0f9dd714a404/propcache-0.3.2-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:0cc17efde71e12bbaad086d679ce575268d70bc123a5a71ea7ad76f70ba30bba", size = 268868, upload-time = "2025-06-09T22:55:33.209Z" }, + { url = "https://files.pythonhosted.org/packages/c5/98/2c12407a7e4fbacd94ddd32f3b1e3d5231e77c30ef7162b12a60e2dd5ce3/propcache-0.3.2-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:acdf05d00696bc0447e278bb53cb04ca72354e562cf88ea6f9107df8e7fd9770", size = 271322, upload-time = "2025-06-09T22:55:35.065Z" }, + { url = "https://files.pythonhosted.org/packages/35/91/9cb56efbb428b006bb85db28591e40b7736847b8331d43fe335acf95f6c8/propcache-0.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4445542398bd0b5d32df908031cb1b30d43ac848e20470a878b770ec2dcc6330", size = 265778, upload-time = "2025-06-09T22:55:36.45Z" }, + { url = "https://files.pythonhosted.org/packages/9a/4c/b0fe775a2bdd01e176b14b574be679d84fc83958335790f7c9a686c1f468/propcache-0.3.2-cp313-cp313t-win32.whl", hash = "sha256:f86e5d7cd03afb3a1db8e9f9f6eff15794e79e791350ac48a8c924e6f439f394", size = 41175, upload-time = "2025-06-09T22:55:38.436Z" }, + { url = "https://files.pythonhosted.org/packages/a4/ff/47f08595e3d9b5e149c150f88d9714574f1a7cbd89fe2817158a952674bf/propcache-0.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:9704bedf6e7cbe3c65eca4379a9b53ee6a83749f047808cbb5044d40d7d72198", size = 44857, upload-time = "2025-06-09T22:55:39.687Z" }, + { url = "https://files.pythonhosted.org/packages/cc/35/cc0aaecf278bb4575b8555f2b137de5ab821595ddae9da9d3cd1da4072c7/propcache-0.3.2-py3-none-any.whl", hash = "sha256:98f1ec44fb675f5052cccc8e609c46ed23a35a1cfd18545ad4e29002d858a43f", size = 12663, upload-time = "2025-06-09T22:56:04.484Z" }, +] + +[[package]] +name = "ps-mem" +version = "3.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/44/26189e96f535a3479e1a4b858da3fb75ad25f82e9ab3323e032deab28420/ps_mem-3.14.tar.gz", hash = "sha256:14de44f747effbaec620e1cc783a6ab6bd78b2639c0dcfaa132561f9efef47ca", size = 19477, upload-time = "2022-05-28T11:38:09.444Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/e9/c843b735b12d57eb77bd563a11c530e103df5fd2bbbbb9974cde7d98d515/ps_mem-3.14-py2.py3-none-any.whl", hash = "sha256:43f5cd9f173fcf20d035dd44c02dca828c914dbfb4f202b1229aa0675ff25139", size = 19268, upload-time = "2022-05-28T11:38:06.725Z" }, +] + +[[package]] +name = "psutil" +version = "7.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003, upload-time = "2025-02-13T21:54:07.946Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051, upload-time = "2025-02-13T21:54:12.36Z" }, + { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535, upload-time = "2025-02-13T21:54:16.07Z" }, + { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004, upload-time = "2025-02-13T21:54:18.662Z" }, + { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986, upload-time = "2025-02-13T21:54:21.811Z" }, + { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544, upload-time = "2025-02-13T21:54:24.68Z" }, + { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053, upload-time = "2025-02-13T21:54:34.31Z" }, + { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885, upload-time = "2025-02-13T21:54:37.486Z" }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, +] + +[[package]] +name = "publication" +version = "0.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/8e/8c9fe7e32fdf9c386f83d59610cc819a25dadb874b5920f2d0ef7d35f46d/publication-0.0.3.tar.gz", hash = "sha256:68416a0de76dddcdd2930d1c8ef853a743cc96c82416c4e4d3b5d901c6276dc4", size = 5484, upload-time = "2019-01-15T07:52:23.914Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/d3/6308debad7afcdb3ea5f50b4b3d852f41eb566a311fbcb4da23755a28155/publication-0.0.3-py2.py3-none-any.whl", hash = "sha256:0248885351febc11d8a1098d5c8e3ab2dabcf3e8c0c96db1e17ecd12b53afbe6", size = 7687, upload-time = "2019-01-15T07:52:22.151Z" }, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload-time = "2024-07-21T12:58:21.801Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, +] + +[[package]] +name = "pycparser" +version = "2.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload-time = "2024-03-30T13:22:22.564Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, +] + +[[package]] +name = "pydantic" +version = "2.11.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload-time = "2025-06-14T08:33:17.137Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782, upload-time = "2025-06-14T08:33:14.905Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.33.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload-time = "2025-04-23T18:31:25.863Z" }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload-time = "2025-04-23T18:31:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload-time = "2025-04-23T18:31:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload-time = "2025-04-23T18:31:31.025Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload-time = "2025-04-23T18:31:32.514Z" }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload-time = "2025-04-23T18:31:33.958Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload-time = "2025-04-23T18:31:39.095Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload-time = "2025-04-23T18:31:41.034Z" }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload-time = "2025-04-23T18:31:42.757Z" }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload-time = "2025-04-23T18:31:44.304Z" }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload-time = "2025-04-23T18:31:45.891Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload-time = "2025-04-23T18:31:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload-time = "2025-04-23T18:31:49.635Z" }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload-time = "2025-04-23T18:31:51.609Z" }, + { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload-time = "2025-04-23T18:31:53.175Z" }, + { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload-time = "2025-04-23T18:31:54.79Z" }, + { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload-time = "2025-04-23T18:31:57.393Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload-time = "2025-04-23T18:31:59.065Z" }, + { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload-time = "2025-04-23T18:32:00.78Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload-time = "2025-04-23T18:32:02.418Z" }, + { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload-time = "2025-04-23T18:32:04.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload-time = "2025-04-23T18:32:06.129Z" }, + { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload-time = "2025-04-23T18:32:08.178Z" }, + { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload-time = "2025-04-23T18:32:10.242Z" }, + { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload-time = "2025-04-23T18:32:12.382Z" }, + { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload-time = "2025-04-23T18:32:14.034Z" }, + { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload-time = "2025-04-23T18:32:15.783Z" }, + { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload-time = "2025-04-23T18:32:18.473Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload-time = "2025-04-23T18:32:20.188Z" }, + { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload-time = "2025-04-23T18:32:22.354Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload-time = "2025-04-23T18:32:25.088Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + +[[package]] +name = "pynacl" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/22/27582568be639dfe22ddb3902225f91f2f17ceff88ce80e4db396c8986da/PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba", size = 3392854, upload-time = "2022-01-07T22:05:41.134Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/75/0b8ede18506041c0bf23ac4d8e2971b4161cd6ce630b177d0a08eb0d8857/PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1", size = 349920, upload-time = "2022-01-07T22:05:49.156Z" }, + { url = "https://files.pythonhosted.org/packages/59/bb/fddf10acd09637327a97ef89d2a9d621328850a72f1fdc8c08bdf72e385f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92", size = 601722, upload-time = "2022-01-07T22:05:50.989Z" }, + { url = "https://files.pythonhosted.org/packages/5d/70/87a065c37cca41a75f2ce113a5a2c2aa7533be648b184ade58971b5f7ccc/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394", size = 680087, upload-time = "2022-01-07T22:05:52.539Z" }, + { url = "https://files.pythonhosted.org/packages/ee/87/f1bb6a595f14a327e8285b9eb54d41fef76c585a0edef0a45f6fc95de125/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d", size = 856678, upload-time = "2022-01-07T22:05:54.251Z" }, + { url = "https://files.pythonhosted.org/packages/66/28/ca86676b69bf9f90e710571b67450508484388bfce09acf8a46f0b8c785f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858", size = 1133660, upload-time = "2022-01-07T22:05:56.056Z" }, + { url = "https://files.pythonhosted.org/packages/3d/85/c262db650e86812585e2bc59e497a8f59948a005325a11bbbc9ecd3fe26b/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b", size = 663824, upload-time = "2022-01-07T22:05:57.434Z" }, + { url = "https://files.pythonhosted.org/packages/fd/1a/cc308a884bd299b651f1633acb978e8596c71c33ca85e9dc9fa33a5399b9/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff", size = 1117912, upload-time = "2022-01-07T22:05:58.665Z" }, + { url = "https://files.pythonhosted.org/packages/25/2d/b7df6ddb0c2a33afdb358f8af6ea3b8c4d1196ca45497dd37a56f0c122be/PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543", size = 204624, upload-time = "2022-01-07T22:06:00.085Z" }, + { url = "https://files.pythonhosted.org/packages/5e/22/d3db169895faaf3e2eda892f005f433a62db2decbcfbc2f61e6517adfa87/PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93", size = 212141, upload-time = "2022-01-07T22:06:01.861Z" }, +] + +[[package]] +name = "pyopenssl" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/8c/cd89ad05804f8e3c17dea8f178c3f40eeab5694c30e0c9f5bcd49f576fc3/pyopenssl-25.1.0.tar.gz", hash = "sha256:8d031884482e0c67ee92bf9a4d8cceb08d92aba7136432ffb0703c5280fc205b", size = 179937, upload-time = "2025-05-17T16:28:31.31Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/28/2659c02301b9500751f8d42f9a6632e1508aa5120de5e43042b8b30f8d5d/pyopenssl-25.1.0-py3-none-any.whl", hash = "sha256:2b11f239acc47ac2e5aca04fd7fa829800aeee22a2eb30d744572a157bd8a1ab", size = 56771, upload-time = "2025-05-17T16:28:29.197Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608, upload-time = "2025-03-25T05:01:28.114Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120, upload-time = "2025-03-25T05:01:24.908Z" }, +] + +[[package]] +name = "pytest" +version = "8.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714, upload-time = "2025-06-18T05:48:06.109Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474, upload-time = "2025-06-18T05:48:03.955Z" }, +] + +[[package]] +name = "python-cmr" +version = "0.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "requests" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5d/04/fbe29a33172fc093d998600c8ee14bfb82e6b4b2ce3d08da1afc04ff5fce/python_cmr-0.13.0.tar.gz", hash = "sha256:ac671d9696979427ee1f98104bf1dbe2ae547f8e0cc9f63ae5efcc6d1f436c6d", size = 17175, upload-time = "2024-09-13T22:35:08.531Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/e2/5fa011e34bf81a3d47fb45e3a2ff86baabbc2853439285205bd14b245922/python_cmr-0.13.0-py3-none-any.whl", hash = "sha256:4c71f15ae662f58d0220f533abb662c14937c91f93f66976ef533f369d0f5cd7", size = 14897, upload-time = "2024-09-13T22:35:07.073Z" }, +] + +[[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.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/b0/4bc07ccd3572a2f9df7e6782f52b0c6c90dcbb803ac4a167702d7d0dfe1e/python_dotenv-1.1.1.tar.gz", hash = "sha256:a8a6399716257f45be6a007360200409fce5cda2661e3dec71d23dc15f6189ab", size = 41978, upload-time = "2025-06-24T04:21:07.341Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/ed/539768cf28c661b5b068d66d96a2f155c4971a5d55684a514c1a0e0dec2f/python_dotenv-1.1.1-py3-none-any.whl", hash = "sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc", size = 20556, upload-time = "2025-06-24T04:21:06.073Z" }, +] + +[[package]] +name = "python-slugify" +version = "8.0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "text-unidecode" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921, upload-time = "2024-02-08T18:32:45.488Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051, upload-time = "2024-02-08T18:32:43.911Z" }, +] + +[[package]] +name = "pytz" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, +] + +[[package]] +name = "pywin32" +version = "311" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/ab/01ea1943d4eba0f850c3c61e78e8dd59757ff815ff3ccd0a84de5f541f42/pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31", size = 8706543, upload-time = "2025-07-14T20:13:20.765Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a8/a0e8d07d4d051ec7502cd58b291ec98dcc0c3fff027caad0470b72cfcc2f/pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067", size = 9495040, upload-time = "2025-07-14T20:13:22.543Z" }, + { url = "https://files.pythonhosted.org/packages/ba/3a/2ae996277b4b50f17d61f0603efd8253cb2d79cc7ae159468007b586396d/pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852", size = 8710102, upload-time = "2025-07-14T20:13:24.682Z" }, + { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700, upload-time = "2025-07-14T20:13:26.471Z" }, + { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700, upload-time = "2025-07-14T20:13:28.243Z" }, + { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318, upload-time = "2025-07-14T20:13:30.348Z" }, + { url = "https://files.pythonhosted.org/packages/c9/31/097f2e132c4f16d99a22bfb777e0fd88bd8e1c634304e102f313af69ace5/pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee", size = 8840714, upload-time = "2025-07-14T20:13:32.449Z" }, + { url = "https://files.pythonhosted.org/packages/90/4b/07c77d8ba0e01349358082713400435347df8426208171ce297da32c313d/pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87", size = 9656800, upload-time = "2025-07-14T20:13:34.312Z" }, + { url = "https://files.pythonhosted.org/packages/c0/d2/21af5c535501a7233e734b8af901574572da66fcc254cb35d0609c9080dd/pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42", size = 8932540, upload-time = "2025-07-14T20:13:36.379Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload-time = "2024-08-06T20:32:25.131Z" }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload-time = "2024-08-06T20:32:26.511Z" }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload-time = "2024-08-06T20:32:28.363Z" }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223, upload-time = "2024-08-06T20:32:30.058Z" }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542, upload-time = "2024-08-06T20:32:31.881Z" }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164, upload-time = "2024-08-06T20:32:37.083Z" }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611, upload-time = "2024-08-06T20:32:38.898Z" }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload-time = "2024-08-06T20:32:43.4Z" }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload-time = "2024-08-06T20:32:44.801Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload-time = "2024-08-06T20:32:46.432Z" }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload-time = "2024-08-06T20:32:51.188Z" }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" }, +] + +[[package]] +name = "pyzmq" +version = "27.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f1/06/50a4e9648b3e8b992bef8eb632e457307553a89d294103213cfd47b3da69/pyzmq-27.0.0.tar.gz", hash = "sha256:b1f08eeb9ce1510e6939b6e5dcd46a17765e2333daae78ecf4606808442e52cf", size = 280478, upload-time = "2025-06-13T14:09:07.087Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/a7/9ad68f55b8834ede477842214feba6a4c786d936c022a67625497aacf61d/pyzmq-27.0.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:cbabc59dcfaac66655c040dfcb8118f133fb5dde185e5fc152628354c1598e52", size = 1305438, upload-time = "2025-06-13T14:07:31.676Z" }, + { url = "https://files.pythonhosted.org/packages/ba/ee/26aa0f98665a22bc90ebe12dced1de5f3eaca05363b717f6fb229b3421b3/pyzmq-27.0.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0ac5179cba4b2f94f1aa208fbb77b62c4c9bf24dd446278b8b602cf85fcda3", size = 895095, upload-time = "2025-06-13T14:07:33.104Z" }, + { url = "https://files.pythonhosted.org/packages/cf/85/c57e7ab216ecd8aa4cc7e3b83b06cc4e9cf45c87b0afc095f10cd5ce87c1/pyzmq-27.0.0-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53a48f0228eab6cbf69fde3aa3c03cbe04e50e623ef92ae395fce47ef8a76152", size = 651826, upload-time = "2025-06-13T14:07:34.831Z" }, + { url = "https://files.pythonhosted.org/packages/69/9a/9ea7e230feda9400fb0ae0d61d7d6ddda635e718d941c44eeab22a179d34/pyzmq-27.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:111db5f395e09f7e775f759d598f43cb815fc58e0147623c4816486e1a39dc22", size = 839750, upload-time = "2025-06-13T14:07:36.553Z" }, + { url = "https://files.pythonhosted.org/packages/08/66/4cebfbe71f3dfbd417011daca267539f62ed0fbc68105357b68bbb1a25b7/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c8878011653dcdc27cc2c57e04ff96f0471e797f5c19ac3d7813a245bcb24371", size = 1641357, upload-time = "2025-06-13T14:07:38.21Z" }, + { url = "https://files.pythonhosted.org/packages/ac/f6/b0f62578c08d2471c791287149cb8c2aaea414ae98c6e995c7dbe008adfb/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:c0ed2c1f335ba55b5fdc964622254917d6b782311c50e138863eda409fbb3b6d", size = 2020281, upload-time = "2025-06-13T14:07:39.599Z" }, + { url = "https://files.pythonhosted.org/packages/37/b9/4f670b15c7498495da9159edc374ec09c88a86d9cd5a47d892f69df23450/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e918d70862d4cfd4b1c187310015646a14e1f5917922ab45b29f28f345eeb6be", size = 1877110, upload-time = "2025-06-13T14:07:41.027Z" }, + { url = "https://files.pythonhosted.org/packages/66/31/9dee25c226295b740609f0d46db2fe972b23b6f5cf786360980524a3ba92/pyzmq-27.0.0-cp312-abi3-win32.whl", hash = "sha256:88b4e43cab04c3c0f0d55df3b1eef62df2b629a1a369b5289a58f6fa8b07c4f4", size = 559297, upload-time = "2025-06-13T14:07:42.533Z" }, + { url = "https://files.pythonhosted.org/packages/9b/12/52da5509800f7ff2d287b2f2b4e636e7ea0f001181cba6964ff6c1537778/pyzmq-27.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:dce4199bf5f648a902ce37e7b3afa286f305cd2ef7a8b6ec907470ccb6c8b371", size = 619203, upload-time = "2025-06-13T14:07:43.843Z" }, + { url = "https://files.pythonhosted.org/packages/93/6d/7f2e53b19d1edb1eb4f09ec7c3a1f945ca0aac272099eab757d15699202b/pyzmq-27.0.0-cp312-abi3-win_arm64.whl", hash = "sha256:56e46bbb85d52c1072b3f809cc1ce77251d560bc036d3a312b96db1afe76db2e", size = 551927, upload-time = "2025-06-13T14:07:45.51Z" }, + { url = "https://files.pythonhosted.org/packages/19/62/876b27c4ff777db4ceba1c69ea90d3c825bb4f8d5e7cd987ce5802e33c55/pyzmq-27.0.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c36ad534c0c29b4afa088dc53543c525b23c0797e01b69fef59b1a9c0e38b688", size = 1340826, upload-time = "2025-06-13T14:07:46.881Z" }, + { url = "https://files.pythonhosted.org/packages/43/69/58ef8f4f59d3bcd505260c73bee87b008850f45edca40ddaba54273c35f4/pyzmq-27.0.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:67855c14173aec36395d7777aaba3cc527b393821f30143fd20b98e1ff31fd38", size = 897283, upload-time = "2025-06-13T14:07:49.562Z" }, + { url = "https://files.pythonhosted.org/packages/43/15/93a0d0396700a60475ad3c5d42c5f1c308d3570bc94626b86c71ef9953e0/pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8617c7d43cd8ccdb62aebe984bfed77ca8f036e6c3e46dd3dddda64b10f0ab7a", size = 660567, upload-time = "2025-06-13T14:07:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/0e/b3/fe055513e498ca32f64509abae19b9c9eb4d7c829e02bd8997dd51b029eb/pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67bfbcbd0a04c575e8103a6061d03e393d9f80ffdb9beb3189261e9e9bc5d5e9", size = 847681, upload-time = "2025-06-13T14:07:52.77Z" }, + { url = "https://files.pythonhosted.org/packages/b6/4f/ff15300b00b5b602191f3df06bbc8dd4164e805fdd65bb77ffbb9c5facdc/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5cd11d46d7b7e5958121b3eaf4cd8638eff3a720ec527692132f05a57f14341d", size = 1650148, upload-time = "2025-06-13T14:07:54.178Z" }, + { url = "https://files.pythonhosted.org/packages/c4/6f/84bdfff2a224a6f26a24249a342e5906993c50b0761e311e81b39aef52a7/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b801c2e40c5aa6072c2f4876de8dccd100af6d9918d4d0d7aa54a1d982fd4f44", size = 2023768, upload-time = "2025-06-13T14:07:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/64/39/dc2db178c26a42228c5ac94a9cc595030458aa64c8d796a7727947afbf55/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20d5cb29e8c5f76a127c75b6e7a77e846bc4b655c373baa098c26a61b7ecd0ef", size = 1885199, upload-time = "2025-06-13T14:07:57.166Z" }, + { url = "https://files.pythonhosted.org/packages/c7/21/dae7b06a1f8cdee5d8e7a63d99c5d129c401acc40410bef2cbf42025e26f/pyzmq-27.0.0-cp313-cp313t-win32.whl", hash = "sha256:a20528da85c7ac7a19b7384e8c3f8fa707841fd85afc4ed56eda59d93e3d98ad", size = 575439, upload-time = "2025-06-13T14:07:58.959Z" }, + { url = "https://files.pythonhosted.org/packages/eb/bc/1709dc55f0970cf4cb8259e435e6773f9946f41a045c2cb90e870b7072da/pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f", size = 639933, upload-time = "2025-06-13T14:08:00.777Z" }, +] + +[[package]] +name = "referencing" +version = "0.36.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload-time = "2025-01-25T08:48:16.138Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload-time = "2025-01-25T08:48:14.241Z" }, +] + +[[package]] +name = "regex" +version = "2025.7.34" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/de/e13fa6dc61d78b30ba47481f99933a3b49a57779d625c392d8036770a60d/regex-2025.7.34.tar.gz", hash = "sha256:9ead9765217afd04a86822dfcd4ed2747dfe426e887da413b15ff0ac2457e21a", size = 400714, upload-time = "2025-07-31T00:21:16.262Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/f0/31d62596c75a33f979317658e8d261574785c6cd8672c06741ce2e2e2070/regex-2025.7.34-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:7f7211a746aced993bef487de69307a38c5ddd79257d7be83f7b202cb59ddb50", size = 485492, upload-time = "2025-07-31T00:19:35.57Z" }, + { url = "https://files.pythonhosted.org/packages/d8/16/b818d223f1c9758c3434be89aa1a01aae798e0e0df36c1f143d1963dd1ee/regex-2025.7.34-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fb31080f2bd0681484b275461b202b5ad182f52c9ec606052020fe13eb13a72f", size = 290000, upload-time = "2025-07-31T00:19:37.175Z" }, + { url = "https://files.pythonhosted.org/packages/cd/70/69506d53397b4bd6954061bae75677ad34deb7f6ca3ba199660d6f728ff5/regex-2025.7.34-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0200a5150c4cf61e407038f4b4d5cdad13e86345dac29ff9dab3d75d905cf130", size = 286072, upload-time = "2025-07-31T00:19:38.612Z" }, + { url = "https://files.pythonhosted.org/packages/b0/73/536a216d5f66084fb577bb0543b5cb7de3272eb70a157f0c3a542f1c2551/regex-2025.7.34-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:739a74970e736df0773788377969c9fea3876c2fc13d0563f98e5503e5185f46", size = 797341, upload-time = "2025-07-31T00:19:40.119Z" }, + { url = "https://files.pythonhosted.org/packages/26/af/733f8168449e56e8f404bb807ea7189f59507cbea1b67a7bbcd92f8bf844/regex-2025.7.34-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4fef81b2f7ea6a2029161ed6dea9ae13834c28eb5a95b8771828194a026621e4", size = 862556, upload-time = "2025-07-31T00:19:41.556Z" }, + { url = "https://files.pythonhosted.org/packages/19/dd/59c464d58c06c4f7d87de4ab1f590e430821345a40c5d345d449a636d15f/regex-2025.7.34-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ea74cf81fe61a7e9d77989050d0089a927ab758c29dac4e8e1b6c06fccf3ebf0", size = 910762, upload-time = "2025-07-31T00:19:43Z" }, + { url = "https://files.pythonhosted.org/packages/37/a8/b05ccf33ceca0815a1e253693b2c86544932ebcc0049c16b0fbdf18b688b/regex-2025.7.34-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e4636a7f3b65a5f340ed9ddf53585c42e3ff37101d383ed321bfe5660481744b", size = 801892, upload-time = "2025-07-31T00:19:44.645Z" }, + { url = "https://files.pythonhosted.org/packages/5f/9a/b993cb2e634cc22810afd1652dba0cae156c40d4864285ff486c73cd1996/regex-2025.7.34-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cef962d7834437fe8d3da6f9bfc6f93f20f218266dcefec0560ed7765f5fe01", size = 786551, upload-time = "2025-07-31T00:19:46.127Z" }, + { url = "https://files.pythonhosted.org/packages/2d/79/7849d67910a0de4e26834b5bb816e028e35473f3d7ae563552ea04f58ca2/regex-2025.7.34-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:cbe1698e5b80298dbce8df4d8d1182279fbdaf1044e864cbc9d53c20e4a2be77", size = 856457, upload-time = "2025-07-31T00:19:47.562Z" }, + { url = "https://files.pythonhosted.org/packages/91/c6/de516bc082524b27e45cb4f54e28bd800c01efb26d15646a65b87b13a91e/regex-2025.7.34-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:32b9f9bcf0f605eb094b08e8da72e44badabb63dde6b83bd530580b488d1c6da", size = 848902, upload-time = "2025-07-31T00:19:49.312Z" }, + { url = "https://files.pythonhosted.org/packages/7d/22/519ff8ba15f732db099b126f039586bd372da6cd4efb810d5d66a5daeda1/regex-2025.7.34-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:524c868ba527eab4e8744a9287809579f54ae8c62fbf07d62aacd89f6026b282", size = 788038, upload-time = "2025-07-31T00:19:50.794Z" }, + { url = "https://files.pythonhosted.org/packages/3f/7d/aabb467d8f57d8149895d133c88eb809a1a6a0fe262c1d508eb9dfabb6f9/regex-2025.7.34-cp312-cp312-win32.whl", hash = "sha256:d600e58ee6d036081c89696d2bdd55d507498a7180df2e19945c6642fac59588", size = 264417, upload-time = "2025-07-31T00:19:52.292Z" }, + { url = "https://files.pythonhosted.org/packages/3b/39/bd922b55a4fc5ad5c13753274e5b536f5b06ec8eb9747675668491c7ab7a/regex-2025.7.34-cp312-cp312-win_amd64.whl", hash = "sha256:9a9ab52a466a9b4b91564437b36417b76033e8778e5af8f36be835d8cb370d62", size = 275387, upload-time = "2025-07-31T00:19:53.593Z" }, + { url = "https://files.pythonhosted.org/packages/f7/3c/c61d2fdcecb754a40475a3d1ef9a000911d3e3fc75c096acf44b0dfb786a/regex-2025.7.34-cp312-cp312-win_arm64.whl", hash = "sha256:c83aec91af9c6fbf7c743274fd952272403ad9a9db05fe9bfc9df8d12b45f176", size = 268482, upload-time = "2025-07-31T00:19:55.183Z" }, + { url = "https://files.pythonhosted.org/packages/15/16/b709b2119975035169a25aa8e4940ca177b1a2e25e14f8d996d09130368e/regex-2025.7.34-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c3c9740a77aeef3f5e3aaab92403946a8d34437db930a0280e7e81ddcada61f5", size = 485334, upload-time = "2025-07-31T00:19:56.58Z" }, + { url = "https://files.pythonhosted.org/packages/94/a6/c09136046be0595f0331bc58a0e5f89c2d324cf734e0b0ec53cf4b12a636/regex-2025.7.34-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:69ed3bc611540f2ea70a4080f853741ec698be556b1df404599f8724690edbcd", size = 289942, upload-time = "2025-07-31T00:19:57.943Z" }, + { url = "https://files.pythonhosted.org/packages/36/91/08fc0fd0f40bdfb0e0df4134ee37cfb16e66a1044ac56d36911fd01c69d2/regex-2025.7.34-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d03c6f9dcd562c56527c42b8530aad93193e0b3254a588be1f2ed378cdfdea1b", size = 285991, upload-time = "2025-07-31T00:19:59.837Z" }, + { url = "https://files.pythonhosted.org/packages/be/2f/99dc8f6f756606f0c214d14c7b6c17270b6bbe26d5c1f05cde9dbb1c551f/regex-2025.7.34-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6164b1d99dee1dfad33f301f174d8139d4368a9fb50bf0a3603b2eaf579963ad", size = 797415, upload-time = "2025-07-31T00:20:01.668Z" }, + { url = "https://files.pythonhosted.org/packages/62/cf/2fcdca1110495458ba4e95c52ce73b361cf1cafd8a53b5c31542cde9a15b/regex-2025.7.34-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1e4f4f62599b8142362f164ce776f19d79bdd21273e86920a7b604a4275b4f59", size = 862487, upload-time = "2025-07-31T00:20:03.142Z" }, + { url = "https://files.pythonhosted.org/packages/90/38/899105dd27fed394e3fae45607c1983e138273ec167e47882fc401f112b9/regex-2025.7.34-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:72a26dcc6a59c057b292f39d41465d8233a10fd69121fa24f8f43ec6294e5415", size = 910717, upload-time = "2025-07-31T00:20:04.727Z" }, + { url = "https://files.pythonhosted.org/packages/ee/f6/4716198dbd0bcc9c45625ac4c81a435d1c4d8ad662e8576dac06bab35b17/regex-2025.7.34-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d5273fddf7a3e602695c92716c420c377599ed3c853ea669c1fe26218867002f", size = 801943, upload-time = "2025-07-31T00:20:07.1Z" }, + { url = "https://files.pythonhosted.org/packages/40/5d/cff8896d27e4e3dd11dd72ac78797c7987eb50fe4debc2c0f2f1682eb06d/regex-2025.7.34-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c1844be23cd40135b3a5a4dd298e1e0c0cb36757364dd6cdc6025770363e06c1", size = 786664, upload-time = "2025-07-31T00:20:08.818Z" }, + { url = "https://files.pythonhosted.org/packages/10/29/758bf83cf7b4c34f07ac3423ea03cee3eb3176941641e4ccc05620f6c0b8/regex-2025.7.34-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dde35e2afbbe2272f8abee3b9fe6772d9b5a07d82607b5788e8508974059925c", size = 856457, upload-time = "2025-07-31T00:20:10.328Z" }, + { url = "https://files.pythonhosted.org/packages/d7/30/c19d212b619963c5b460bfed0ea69a092c6a43cba52a973d46c27b3e2975/regex-2025.7.34-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:f3f6e8e7af516a7549412ce57613e859c3be27d55341a894aacaa11703a4c31a", size = 849008, upload-time = "2025-07-31T00:20:11.823Z" }, + { url = "https://files.pythonhosted.org/packages/9e/b8/3c35da3b12c87e3cc00010ef6c3a4ae787cff0bc381aa3d251def219969a/regex-2025.7.34-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:469142fb94a869beb25b5f18ea87646d21def10fbacb0bcb749224f3509476f0", size = 788101, upload-time = "2025-07-31T00:20:13.729Z" }, + { url = "https://files.pythonhosted.org/packages/47/80/2f46677c0b3c2b723b2c358d19f9346e714113865da0f5f736ca1a883bde/regex-2025.7.34-cp313-cp313-win32.whl", hash = "sha256:da7507d083ee33ccea1310447410c27ca11fb9ef18c95899ca57ff60a7e4d8f1", size = 264401, upload-time = "2025-07-31T00:20:15.233Z" }, + { url = "https://files.pythonhosted.org/packages/be/fa/917d64dd074682606a003cba33585c28138c77d848ef72fc77cbb1183849/regex-2025.7.34-cp313-cp313-win_amd64.whl", hash = "sha256:9d644de5520441e5f7e2db63aec2748948cc39ed4d7a87fd5db578ea4043d997", size = 275368, upload-time = "2025-07-31T00:20:16.711Z" }, + { url = "https://files.pythonhosted.org/packages/65/cd/f94383666704170a2154a5df7b16be28f0c27a266bffcd843e58bc84120f/regex-2025.7.34-cp313-cp313-win_arm64.whl", hash = "sha256:7bf1c5503a9f2cbd2f52d7e260acb3131b07b6273c470abb78568174fe6bde3f", size = 268482, upload-time = "2025-07-31T00:20:18.189Z" }, + { url = "https://files.pythonhosted.org/packages/ac/23/6376f3a23cf2f3c00514b1cdd8c990afb4dfbac3cb4a68b633c6b7e2e307/regex-2025.7.34-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:8283afe7042d8270cecf27cca558873168e771183d4d593e3c5fe5f12402212a", size = 485385, upload-time = "2025-07-31T00:20:19.692Z" }, + { url = "https://files.pythonhosted.org/packages/73/5b/6d4d3a0b4d312adbfd6d5694c8dddcf1396708976dd87e4d00af439d962b/regex-2025.7.34-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:6c053f9647e3421dd2f5dff8172eb7b4eec129df9d1d2f7133a4386319b47435", size = 289788, upload-time = "2025-07-31T00:20:21.941Z" }, + { url = "https://files.pythonhosted.org/packages/92/71/5862ac9913746e5054d01cb9fb8125b3d0802c0706ef547cae1e7f4428fa/regex-2025.7.34-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a16dd56bbcb7d10e62861c3cd000290ddff28ea142ffb5eb3470f183628011ac", size = 286136, upload-time = "2025-07-31T00:20:26.146Z" }, + { url = "https://files.pythonhosted.org/packages/27/df/5b505dc447eb71278eba10d5ec940769ca89c1af70f0468bfbcb98035dc2/regex-2025.7.34-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:69c593ff5a24c0d5c1112b0df9b09eae42b33c014bdca7022d6523b210b69f72", size = 797753, upload-time = "2025-07-31T00:20:27.919Z" }, + { url = "https://files.pythonhosted.org/packages/86/38/3e3dc953d13998fa047e9a2414b556201dbd7147034fbac129392363253b/regex-2025.7.34-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:98d0ce170fcde1a03b5df19c5650db22ab58af375aaa6ff07978a85c9f250f0e", size = 863263, upload-time = "2025-07-31T00:20:29.803Z" }, + { url = "https://files.pythonhosted.org/packages/68/e5/3ff66b29dde12f5b874dda2d9dec7245c2051f2528d8c2a797901497f140/regex-2025.7.34-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d72765a4bff8c43711d5b0f5b452991a9947853dfa471972169b3cc0ba1d0751", size = 910103, upload-time = "2025-07-31T00:20:31.313Z" }, + { url = "https://files.pythonhosted.org/packages/9e/fe/14176f2182125977fba3711adea73f472a11f3f9288c1317c59cd16ad5e6/regex-2025.7.34-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4494f8fd95a77eb434039ad8460e64d57baa0434f1395b7da44015bef650d0e4", size = 801709, upload-time = "2025-07-31T00:20:33.323Z" }, + { url = "https://files.pythonhosted.org/packages/5a/0d/80d4e66ed24f1ba876a9e8e31b709f9fd22d5c266bf5f3ab3c1afe683d7d/regex-2025.7.34-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4f42b522259c66e918a0121a12429b2abcf696c6f967fa37bdc7b72e61469f98", size = 786726, upload-time = "2025-07-31T00:20:35.252Z" }, + { url = "https://files.pythonhosted.org/packages/12/75/c3ebb30e04a56c046f5c85179dc173818551037daae2c0c940c7b19152cb/regex-2025.7.34-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:aaef1f056d96a0a5d53ad47d019d5b4c66fe4be2da87016e0d43b7242599ffc7", size = 857306, upload-time = "2025-07-31T00:20:37.12Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b2/a4dc5d8b14f90924f27f0ac4c4c4f5e195b723be98adecc884f6716614b6/regex-2025.7.34-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:656433e5b7dccc9bc0da6312da8eb897b81f5e560321ec413500e5367fcd5d47", size = 848494, upload-time = "2025-07-31T00:20:38.818Z" }, + { url = "https://files.pythonhosted.org/packages/0d/21/9ac6e07a4c5e8646a90b56b61f7e9dac11ae0747c857f91d3d2bc7c241d9/regex-2025.7.34-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e91eb2c62c39705e17b4d42d4b86c4e86c884c0d15d9c5a47d0835f8387add8e", size = 787850, upload-time = "2025-07-31T00:20:40.478Z" }, + { url = "https://files.pythonhosted.org/packages/be/6c/d51204e28e7bc54f9a03bb799b04730d7e54ff2718862b8d4e09e7110a6a/regex-2025.7.34-cp314-cp314-win32.whl", hash = "sha256:f978ddfb6216028c8f1d6b0f7ef779949498b64117fc35a939022f67f810bdcb", size = 269730, upload-time = "2025-07-31T00:20:42.253Z" }, + { url = "https://files.pythonhosted.org/packages/74/52/a7e92d02fa1fdef59d113098cb9f02c5d03289a0e9f9e5d4d6acccd10677/regex-2025.7.34-cp314-cp314-win_amd64.whl", hash = "sha256:4b7dc33b9b48fb37ead12ffc7bdb846ac72f99a80373c4da48f64b373a7abeae", size = 278640, upload-time = "2025-07-31T00:20:44.42Z" }, + { url = "https://files.pythonhosted.org/packages/d1/78/a815529b559b1771080faa90c3ab401730661f99d495ab0071649f139ebd/regex-2025.7.34-cp314-cp314-win_arm64.whl", hash = "sha256:4b8c4d39f451e64809912c82392933d80fe2e4a87eeef8859fcc5380d0173c64", size = 271757, upload-time = "2025-07-31T00:20:46.355Z" }, +] + +[[package]] +name = "requests" +version = "2.32.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload-time = "2025-06-09T16:43:07.34Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload-time = "2025-06-09T16:43:05.728Z" }, +] + +[[package]] +name = "rich" +version = "14.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/53/830aa4c3066a8ab0ae9a9955976fb770fe9c6102117c8ec4ab3ea62d89e8/rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725", size = 224078, upload-time = "2025-03-30T14:15:14.23Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0", size = 243229, upload-time = "2025-03-30T14:15:12.283Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.27.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1e/d9/991a0dee12d9fc53ed027e26a26a64b151d77252ac477e22666b9688bc16/rpds_py-0.27.0.tar.gz", hash = "sha256:8b23cf252f180cda89220b378d917180f29d313cd6a07b2431c0d3b776aae86f", size = 27420, upload-time = "2025-08-07T08:26:39.624Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/17/e67309ca1ac993fa1888a0d9b2f5ccc1f67196ace32e76c9f8e1dbbbd50c/rpds_py-0.27.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:19c990fdf5acecbf0623e906ae2e09ce1c58947197f9bced6bbd7482662231c4", size = 362611, upload-time = "2025-08-07T08:23:44.773Z" }, + { url = "https://files.pythonhosted.org/packages/93/2e/28c2fb84aa7aa5d75933d1862d0f7de6198ea22dfd9a0cca06e8a4e7509e/rpds_py-0.27.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6c27a7054b5224710fcfb1a626ec3ff4f28bcb89b899148c72873b18210e446b", size = 347680, upload-time = "2025-08-07T08:23:46.014Z" }, + { url = "https://files.pythonhosted.org/packages/44/3e/9834b4c8f4f5fe936b479e623832468aa4bd6beb8d014fecaee9eac6cdb1/rpds_py-0.27.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09965b314091829b378b60607022048953e25f0b396c2b70e7c4c81bcecf932e", size = 384600, upload-time = "2025-08-07T08:23:48Z" }, + { url = "https://files.pythonhosted.org/packages/19/78/744123c7b38865a965cd9e6f691fde7ef989a00a256fa8bf15b75240d12f/rpds_py-0.27.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:14f028eb47f59e9169bfdf9f7ceafd29dd64902141840633683d0bad5b04ff34", size = 400697, upload-time = "2025-08-07T08:23:49.407Z" }, + { url = "https://files.pythonhosted.org/packages/32/97/3c3d32fe7daee0a1f1a678b6d4dfb8c4dcf88197fa2441f9da7cb54a8466/rpds_py-0.27.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6168af0be75bba990a39f9431cdfae5f0ad501f4af32ae62e8856307200517b8", size = 517781, upload-time = "2025-08-07T08:23:50.557Z" }, + { url = "https://files.pythonhosted.org/packages/b2/be/28f0e3e733680aa13ecec1212fc0f585928a206292f14f89c0b8a684cad1/rpds_py-0.27.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab47fe727c13c09d0e6f508e3a49e545008e23bf762a245b020391b621f5b726", size = 406449, upload-time = "2025-08-07T08:23:51.732Z" }, + { url = "https://files.pythonhosted.org/packages/95/ae/5d15c83e337c082d0367053baeb40bfba683f42459f6ebff63a2fd7e5518/rpds_py-0.27.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fa01b3d5e3b7d97efab65bd3d88f164e289ec323a8c033c5c38e53ee25c007e", size = 386150, upload-time = "2025-08-07T08:23:52.822Z" }, + { url = "https://files.pythonhosted.org/packages/bf/65/944e95f95d5931112829e040912b25a77b2e7ed913ea5fe5746aa5c1ce75/rpds_py-0.27.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:6c135708e987f46053e0a1246a206f53717f9fadfba27174a9769ad4befba5c3", size = 406100, upload-time = "2025-08-07T08:23:54.339Z" }, + { url = "https://files.pythonhosted.org/packages/21/a4/1664b83fae02894533cd11dc0b9f91d673797c2185b7be0f7496107ed6c5/rpds_py-0.27.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc327f4497b7087d06204235199daf208fd01c82d80465dc5efa4ec9df1c5b4e", size = 421345, upload-time = "2025-08-07T08:23:55.832Z" }, + { url = "https://files.pythonhosted.org/packages/7c/26/b7303941c2b0823bfb34c71378249f8beedce57301f400acb04bb345d025/rpds_py-0.27.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7e57906e38583a2cba67046a09c2637e23297618dc1f3caddbc493f2be97c93f", size = 561891, upload-time = "2025-08-07T08:23:56.951Z" }, + { url = "https://files.pythonhosted.org/packages/9b/c8/48623d64d4a5a028fa99576c768a6159db49ab907230edddc0b8468b998b/rpds_py-0.27.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f4f69d7a4300fbf91efb1fb4916421bd57804c01ab938ab50ac9c4aa2212f03", size = 591756, upload-time = "2025-08-07T08:23:58.146Z" }, + { url = "https://files.pythonhosted.org/packages/b3/51/18f62617e8e61cc66334c9fb44b1ad7baae3438662098efbc55fb3fda453/rpds_py-0.27.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b4c4fbbcff474e1e5f38be1bf04511c03d492d42eec0babda5d03af3b5589374", size = 557088, upload-time = "2025-08-07T08:23:59.6Z" }, + { url = "https://files.pythonhosted.org/packages/bd/4c/e84c3a276e2496a93d245516be6b49e20499aa8ca1c94d59fada0d79addc/rpds_py-0.27.0-cp312-cp312-win32.whl", hash = "sha256:27bac29bbbf39601b2aab474daf99dbc8e7176ca3389237a23944b17f8913d97", size = 221926, upload-time = "2025-08-07T08:24:00.695Z" }, + { url = "https://files.pythonhosted.org/packages/83/89/9d0fbcef64340db0605eb0a0044f258076f3ae0a3b108983b2c614d96212/rpds_py-0.27.0-cp312-cp312-win_amd64.whl", hash = "sha256:8a06aa1197ec0281eb1d7daf6073e199eb832fe591ffa329b88bae28f25f5fe5", size = 233235, upload-time = "2025-08-07T08:24:01.846Z" }, + { url = "https://files.pythonhosted.org/packages/c9/b0/e177aa9f39cbab060f96de4a09df77d494f0279604dc2f509263e21b05f9/rpds_py-0.27.0-cp312-cp312-win_arm64.whl", hash = "sha256:e14aab02258cb776a108107bd15f5b5e4a1bbaa61ef33b36693dfab6f89d54f9", size = 223315, upload-time = "2025-08-07T08:24:03.337Z" }, + { url = "https://files.pythonhosted.org/packages/81/d2/dfdfd42565a923b9e5a29f93501664f5b984a802967d48d49200ad71be36/rpds_py-0.27.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:443d239d02d9ae55b74015234f2cd8eb09e59fbba30bf60baeb3123ad4c6d5ff", size = 362133, upload-time = "2025-08-07T08:24:04.508Z" }, + { url = "https://files.pythonhosted.org/packages/ac/4a/0a2e2460c4b66021d349ce9f6331df1d6c75d7eea90df9785d333a49df04/rpds_py-0.27.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b8a7acf04fda1f30f1007f3cc96d29d8cf0a53e626e4e1655fdf4eabc082d367", size = 347128, upload-time = "2025-08-07T08:24:05.695Z" }, + { url = "https://files.pythonhosted.org/packages/35/8d/7d1e4390dfe09d4213b3175a3f5a817514355cb3524593380733204f20b9/rpds_py-0.27.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d0f92b78cfc3b74a42239fdd8c1266f4715b573204c234d2f9fc3fc7a24f185", size = 384027, upload-time = "2025-08-07T08:24:06.841Z" }, + { url = "https://files.pythonhosted.org/packages/c1/65/78499d1a62172891c8cd45de737b2a4b84a414b6ad8315ab3ac4945a5b61/rpds_py-0.27.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ce4ed8e0c7dbc5b19352b9c2c6131dd23b95fa8698b5cdd076307a33626b72dc", size = 399973, upload-time = "2025-08-07T08:24:08.143Z" }, + { url = "https://files.pythonhosted.org/packages/10/a1/1c67c1d8cc889107b19570bb01f75cf49852068e95e6aee80d22915406fc/rpds_py-0.27.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fde355b02934cc6b07200cc3b27ab0c15870a757d1a72fd401aa92e2ea3c6bfe", size = 515295, upload-time = "2025-08-07T08:24:09.711Z" }, + { url = "https://files.pythonhosted.org/packages/df/27/700ec88e748436b6c7c4a2262d66e80f8c21ab585d5e98c45e02f13f21c0/rpds_py-0.27.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13bbc4846ae4c993f07c93feb21a24d8ec637573d567a924b1001e81c8ae80f9", size = 406737, upload-time = "2025-08-07T08:24:11.182Z" }, + { url = "https://files.pythonhosted.org/packages/33/cc/6b0ee8f0ba3f2df2daac1beda17fde5cf10897a7d466f252bd184ef20162/rpds_py-0.27.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be0744661afbc4099fef7f4e604e7f1ea1be1dd7284f357924af12a705cc7d5c", size = 385898, upload-time = "2025-08-07T08:24:12.798Z" }, + { url = "https://files.pythonhosted.org/packages/e8/7e/c927b37d7d33c0a0ebf249cc268dc2fcec52864c1b6309ecb960497f2285/rpds_py-0.27.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:069e0384a54f427bd65d7fda83b68a90606a3835901aaff42185fcd94f5a9295", size = 405785, upload-time = "2025-08-07T08:24:14.906Z" }, + { url = "https://files.pythonhosted.org/packages/5b/d2/8ed50746d909dcf402af3fa58b83d5a590ed43e07251d6b08fad1a535ba6/rpds_py-0.27.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4bc262ace5a1a7dc3e2eac2fa97b8257ae795389f688b5adf22c5db1e2431c43", size = 419760, upload-time = "2025-08-07T08:24:16.129Z" }, + { url = "https://files.pythonhosted.org/packages/d3/60/2b2071aee781cb3bd49f94d5d35686990b925e9b9f3e3d149235a6f5d5c1/rpds_py-0.27.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2fe6e18e5c8581f0361b35ae575043c7029d0a92cb3429e6e596c2cdde251432", size = 561201, upload-time = "2025-08-07T08:24:17.645Z" }, + { url = "https://files.pythonhosted.org/packages/98/1f/27b67304272521aaea02be293fecedce13fa351a4e41cdb9290576fc6d81/rpds_py-0.27.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d93ebdb82363d2e7bec64eecdc3632b59e84bd270d74fe5be1659f7787052f9b", size = 591021, upload-time = "2025-08-07T08:24:18.999Z" }, + { url = "https://files.pythonhosted.org/packages/db/9b/a2fadf823164dd085b1f894be6443b0762a54a7af6f36e98e8fcda69ee50/rpds_py-0.27.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0954e3a92e1d62e83a54ea7b3fdc9efa5d61acef8488a8a3d31fdafbfb00460d", size = 556368, upload-time = "2025-08-07T08:24:20.54Z" }, + { url = "https://files.pythonhosted.org/packages/24/f3/6d135d46a129cda2e3e6d4c5e91e2cc26ea0428c6cf152763f3f10b6dd05/rpds_py-0.27.0-cp313-cp313-win32.whl", hash = "sha256:2cff9bdd6c7b906cc562a505c04a57d92e82d37200027e8d362518df427f96cd", size = 221236, upload-time = "2025-08-07T08:24:22.144Z" }, + { url = "https://files.pythonhosted.org/packages/c5/44/65d7494f5448ecc755b545d78b188440f81da98b50ea0447ab5ebfdf9bd6/rpds_py-0.27.0-cp313-cp313-win_amd64.whl", hash = "sha256:dc79d192fb76fc0c84f2c58672c17bbbc383fd26c3cdc29daae16ce3d927e8b2", size = 232634, upload-time = "2025-08-07T08:24:23.642Z" }, + { url = "https://files.pythonhosted.org/packages/70/d9/23852410fadab2abb611733933401de42a1964ce6600a3badae35fbd573e/rpds_py-0.27.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b3a5c8089eed498a3af23ce87a80805ff98f6ef8f7bdb70bd1b7dae5105f6ac", size = 222783, upload-time = "2025-08-07T08:24:25.098Z" }, + { url = "https://files.pythonhosted.org/packages/15/75/03447917f78512b34463f4ef11066516067099a0c466545655503bed0c77/rpds_py-0.27.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:90fb790138c1a89a2e58c9282fe1089638401f2f3b8dddd758499041bc6e0774", size = 359154, upload-time = "2025-08-07T08:24:26.249Z" }, + { url = "https://files.pythonhosted.org/packages/6b/fc/4dac4fa756451f2122ddaf136e2c6aeb758dc6fdbe9ccc4bc95c98451d50/rpds_py-0.27.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:010c4843a3b92b54373e3d2291a7447d6c3fc29f591772cc2ea0e9f5c1da434b", size = 343909, upload-time = "2025-08-07T08:24:27.405Z" }, + { url = "https://files.pythonhosted.org/packages/7b/81/723c1ed8e6f57ed9d8c0c07578747a2d3d554aaefc1ab89f4e42cfeefa07/rpds_py-0.27.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9ce7a9e967afc0a2af7caa0d15a3e9c1054815f73d6a8cb9225b61921b419bd", size = 379340, upload-time = "2025-08-07T08:24:28.714Z" }, + { url = "https://files.pythonhosted.org/packages/98/16/7e3740413de71818ce1997df82ba5f94bae9fff90c0a578c0e24658e6201/rpds_py-0.27.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aa0bf113d15e8abdfee92aa4db86761b709a09954083afcb5bf0f952d6065fdb", size = 391655, upload-time = "2025-08-07T08:24:30.223Z" }, + { url = "https://files.pythonhosted.org/packages/e0/63/2a9f510e124d80660f60ecce07953f3f2d5f0b96192c1365443859b9c87f/rpds_py-0.27.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb91d252b35004a84670dfeafadb042528b19842a0080d8b53e5ec1128e8f433", size = 513017, upload-time = "2025-08-07T08:24:31.446Z" }, + { url = "https://files.pythonhosted.org/packages/2c/4e/cf6ff311d09776c53ea1b4f2e6700b9d43bb4e99551006817ade4bbd6f78/rpds_py-0.27.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:db8a6313dbac934193fc17fe7610f70cd8181c542a91382531bef5ed785e5615", size = 402058, upload-time = "2025-08-07T08:24:32.613Z" }, + { url = "https://files.pythonhosted.org/packages/88/11/5e36096d474cb10f2a2d68b22af60a3bc4164fd8db15078769a568d9d3ac/rpds_py-0.27.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce96ab0bdfcef1b8c371ada2100767ace6804ea35aacce0aef3aeb4f3f499ca8", size = 383474, upload-time = "2025-08-07T08:24:33.767Z" }, + { url = "https://files.pythonhosted.org/packages/db/a2/3dff02805b06058760b5eaa6d8cb8db3eb3e46c9e452453ad5fc5b5ad9fe/rpds_py-0.27.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:7451ede3560086abe1aa27dcdcf55cd15c96b56f543fb12e5826eee6f721f858", size = 400067, upload-time = "2025-08-07T08:24:35.021Z" }, + { url = "https://files.pythonhosted.org/packages/67/87/eed7369b0b265518e21ea836456a4ed4a6744c8c12422ce05bce760bb3cf/rpds_py-0.27.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:32196b5a99821476537b3f7732432d64d93a58d680a52c5e12a190ee0135d8b5", size = 412085, upload-time = "2025-08-07T08:24:36.267Z" }, + { url = "https://files.pythonhosted.org/packages/8b/48/f50b2ab2fbb422fbb389fe296e70b7a6b5ea31b263ada5c61377e710a924/rpds_py-0.27.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a029be818059870664157194e46ce0e995082ac49926f1423c1f058534d2aaa9", size = 555928, upload-time = "2025-08-07T08:24:37.573Z" }, + { url = "https://files.pythonhosted.org/packages/98/41/b18eb51045d06887666c3560cd4bbb6819127b43d758f5adb82b5f56f7d1/rpds_py-0.27.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3841f66c1ffdc6cebce8aed64e36db71466f1dc23c0d9a5592e2a782a3042c79", size = 585527, upload-time = "2025-08-07T08:24:39.391Z" }, + { url = "https://files.pythonhosted.org/packages/be/03/a3dd6470fc76499959b00ae56295b76b4bdf7c6ffc60d62006b1217567e1/rpds_py-0.27.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:42894616da0fc0dcb2ec08a77896c3f56e9cb2f4b66acd76fc8992c3557ceb1c", size = 554211, upload-time = "2025-08-07T08:24:40.6Z" }, + { url = "https://files.pythonhosted.org/packages/bf/d1/ee5fd1be395a07423ac4ca0bcc05280bf95db2b155d03adefeb47d5ebf7e/rpds_py-0.27.0-cp313-cp313t-win32.whl", hash = "sha256:b1fef1f13c842a39a03409e30ca0bf87b39a1e2a305a9924deadb75a43105d23", size = 216624, upload-time = "2025-08-07T08:24:42.204Z" }, + { url = "https://files.pythonhosted.org/packages/1c/94/4814c4c858833bf46706f87349c37ca45e154da7dbbec9ff09f1abeb08cc/rpds_py-0.27.0-cp313-cp313t-win_amd64.whl", hash = "sha256:183f5e221ba3e283cd36fdfbe311d95cd87699a083330b4f792543987167eff1", size = 230007, upload-time = "2025-08-07T08:24:43.329Z" }, + { url = "https://files.pythonhosted.org/packages/0e/a5/8fffe1c7dc7c055aa02df310f9fb71cfc693a4d5ccc5de2d3456ea5fb022/rpds_py-0.27.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:f3cd110e02c5bf17d8fb562f6c9df5c20e73029d587cf8602a2da6c5ef1e32cb", size = 362595, upload-time = "2025-08-07T08:24:44.478Z" }, + { url = "https://files.pythonhosted.org/packages/bc/c7/4e4253fd2d4bb0edbc0b0b10d9f280612ca4f0f990e3c04c599000fe7d71/rpds_py-0.27.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8d0e09cf4863c74106b5265c2c310f36146e2b445ff7b3018a56799f28f39f6f", size = 347252, upload-time = "2025-08-07T08:24:45.678Z" }, + { url = "https://files.pythonhosted.org/packages/f3/c8/3d1a954d30f0174dd6baf18b57c215da03cf7846a9d6e0143304e784cddc/rpds_py-0.27.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64f689ab822f9b5eb6dfc69893b4b9366db1d2420f7db1f6a2adf2a9ca15ad64", size = 384886, upload-time = "2025-08-07T08:24:46.86Z" }, + { url = "https://files.pythonhosted.org/packages/e0/52/3c5835f2df389832b28f9276dd5395b5a965cea34226e7c88c8fbec2093c/rpds_py-0.27.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e36c80c49853b3ffda7aa1831bf175c13356b210c73128c861f3aa93c3cc4015", size = 399716, upload-time = "2025-08-07T08:24:48.174Z" }, + { url = "https://files.pythonhosted.org/packages/40/73/176e46992461a1749686a2a441e24df51ff86b99c2d34bf39f2a5273b987/rpds_py-0.27.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6de6a7f622860af0146cb9ee148682ff4d0cea0b8fd3ad51ce4d40efb2f061d0", size = 517030, upload-time = "2025-08-07T08:24:49.52Z" }, + { url = "https://files.pythonhosted.org/packages/79/2a/7266c75840e8c6e70effeb0d38922a45720904f2cd695e68a0150e5407e2/rpds_py-0.27.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4045e2fc4b37ec4b48e8907a5819bdd3380708c139d7cc358f03a3653abedb89", size = 408448, upload-time = "2025-08-07T08:24:50.727Z" }, + { url = "https://files.pythonhosted.org/packages/e6/5f/a7efc572b8e235093dc6cf39f4dbc8a7f08e65fdbcec7ff4daeb3585eef1/rpds_py-0.27.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9da162b718b12c4219eeeeb68a5b7552fbc7aadedf2efee440f88b9c0e54b45d", size = 387320, upload-time = "2025-08-07T08:24:52.004Z" }, + { url = "https://files.pythonhosted.org/packages/a2/eb/9ff6bc92efe57cf5a2cb74dee20453ba444b6fdc85275d8c99e0d27239d1/rpds_py-0.27.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:0665be515767dc727ffa5f74bd2ef60b0ff85dad6bb8f50d91eaa6b5fb226f51", size = 407414, upload-time = "2025-08-07T08:24:53.664Z" }, + { url = "https://files.pythonhosted.org/packages/fb/bd/3b9b19b00d5c6e1bd0f418c229ab0f8d3b110ddf7ec5d9d689ef783d0268/rpds_py-0.27.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:203f581accef67300a942e49a37d74c12ceeef4514874c7cede21b012613ca2c", size = 420766, upload-time = "2025-08-07T08:24:55.917Z" }, + { url = "https://files.pythonhosted.org/packages/17/6b/521a7b1079ce16258c70805166e3ac6ec4ee2139d023fe07954dc9b2d568/rpds_py-0.27.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7873b65686a6471c0037139aa000d23fe94628e0daaa27b6e40607c90e3f5ec4", size = 562409, upload-time = "2025-08-07T08:24:57.17Z" }, + { url = "https://files.pythonhosted.org/packages/8b/bf/65db5bfb14ccc55e39de8419a659d05a2a9cd232f0a699a516bb0991da7b/rpds_py-0.27.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:249ab91ceaa6b41abc5f19513cb95b45c6f956f6b89f1fe3d99c81255a849f9e", size = 590793, upload-time = "2025-08-07T08:24:58.388Z" }, + { url = "https://files.pythonhosted.org/packages/db/b8/82d368b378325191ba7aae8f40f009b78057b598d4394d1f2cdabaf67b3f/rpds_py-0.27.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d2f184336bc1d6abfaaa1262ed42739c3789b1e3a65a29916a615307d22ffd2e", size = 558178, upload-time = "2025-08-07T08:24:59.756Z" }, + { url = "https://files.pythonhosted.org/packages/f6/ff/f270bddbfbc3812500f8131b1ebbd97afd014cd554b604a3f73f03133a36/rpds_py-0.27.0-cp314-cp314-win32.whl", hash = "sha256:d3c622c39f04d5751408f5b801ecb527e6e0a471b367f420a877f7a660d583f6", size = 222355, upload-time = "2025-08-07T08:25:01.027Z" }, + { url = "https://files.pythonhosted.org/packages/bf/20/fdab055b1460c02ed356a0e0b0a78c1dd32dc64e82a544f7b31c9ac643dc/rpds_py-0.27.0-cp314-cp314-win_amd64.whl", hash = "sha256:cf824aceaeffff029ccfba0da637d432ca71ab21f13e7f6f5179cd88ebc77a8a", size = 234007, upload-time = "2025-08-07T08:25:02.268Z" }, + { url = "https://files.pythonhosted.org/packages/4d/a8/694c060005421797a3be4943dab8347c76c2b429a9bef68fb2c87c9e70c7/rpds_py-0.27.0-cp314-cp314-win_arm64.whl", hash = "sha256:86aca1616922b40d8ac1b3073a1ead4255a2f13405e5700c01f7c8d29a03972d", size = 223527, upload-time = "2025-08-07T08:25:03.45Z" }, + { url = "https://files.pythonhosted.org/packages/1e/f9/77f4c90f79d2c5ca8ce6ec6a76cb4734ee247de6b3a4f337e289e1f00372/rpds_py-0.27.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:341d8acb6724c0c17bdf714319c393bb27f6d23d39bc74f94221b3e59fc31828", size = 359469, upload-time = "2025-08-07T08:25:04.648Z" }, + { url = "https://files.pythonhosted.org/packages/c0/22/b97878d2f1284286fef4172069e84b0b42b546ea7d053e5fb7adb9ac6494/rpds_py-0.27.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6b96b0b784fe5fd03beffff2b1533dc0d85e92bab8d1b2c24ef3a5dc8fac5669", size = 343960, upload-time = "2025-08-07T08:25:05.863Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b0/dfd55b5bb480eda0578ae94ef256d3061d20b19a0f5e18c482f03e65464f/rpds_py-0.27.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c431bfb91478d7cbe368d0a699978050d3b112d7f1d440a41e90faa325557fd", size = 380201, upload-time = "2025-08-07T08:25:07.513Z" }, + { url = "https://files.pythonhosted.org/packages/28/22/e1fa64e50d58ad2b2053077e3ec81a979147c43428de9e6de68ddf6aff4e/rpds_py-0.27.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:20e222a44ae9f507d0f2678ee3dd0c45ec1e930f6875d99b8459631c24058aec", size = 392111, upload-time = "2025-08-07T08:25:09.149Z" }, + { url = "https://files.pythonhosted.org/packages/49/f9/43ab7a43e97aedf6cea6af70fdcbe18abbbc41d4ae6cdec1bfc23bbad403/rpds_py-0.27.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:184f0d7b342967f6cda94a07d0e1fae177d11d0b8f17d73e06e36ac02889f303", size = 515863, upload-time = "2025-08-07T08:25:10.431Z" }, + { url = "https://files.pythonhosted.org/packages/38/9b/9bd59dcc636cd04d86a2d20ad967770bf348f5eb5922a8f29b547c074243/rpds_py-0.27.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a00c91104c173c9043bc46f7b30ee5e6d2f6b1149f11f545580f5d6fdff42c0b", size = 402398, upload-time = "2025-08-07T08:25:11.819Z" }, + { url = "https://files.pythonhosted.org/packages/71/bf/f099328c6c85667aba6b66fa5c35a8882db06dcd462ea214be72813a0dd2/rpds_py-0.27.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7a37dd208f0d658e0487522078b1ed68cd6bce20ef4b5a915d2809b9094b410", size = 384665, upload-time = "2025-08-07T08:25:13.194Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c5/9c1f03121ece6634818490bd3c8be2c82a70928a19de03467fb25a3ae2a8/rpds_py-0.27.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:92f3b3ec3e6008a1fe00b7c0946a170f161ac00645cde35e3c9a68c2475e8156", size = 400405, upload-time = "2025-08-07T08:25:14.417Z" }, + { url = "https://files.pythonhosted.org/packages/b5/b8/e25d54af3e63ac94f0c16d8fe143779fe71ff209445a0c00d0f6984b6b2c/rpds_py-0.27.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a1b3db5fae5cbce2131b7420a3f83553d4d89514c03d67804ced36161fe8b6b2", size = 413179, upload-time = "2025-08-07T08:25:15.664Z" }, + { url = "https://files.pythonhosted.org/packages/f9/d1/406b3316433fe49c3021546293a04bc33f1478e3ec7950215a7fce1a1208/rpds_py-0.27.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5355527adaa713ab693cbce7c1e0ec71682f599f61b128cf19d07e5c13c9b1f1", size = 556895, upload-time = "2025-08-07T08:25:17.061Z" }, + { url = "https://files.pythonhosted.org/packages/5f/bc/3697c0c21fcb9a54d46ae3b735eb2365eea0c2be076b8f770f98e07998de/rpds_py-0.27.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:fcc01c57ce6e70b728af02b2401c5bc853a9e14eb07deda30624374f0aebfe42", size = 585464, upload-time = "2025-08-07T08:25:18.406Z" }, + { url = "https://files.pythonhosted.org/packages/63/09/ee1bb5536f99f42c839b177d552f6114aa3142d82f49cef49261ed28dbe0/rpds_py-0.27.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3001013dae10f806380ba739d40dee11db1ecb91684febb8406a87c2ded23dae", size = 555090, upload-time = "2025-08-07T08:25:20.461Z" }, + { url = "https://files.pythonhosted.org/packages/7d/2c/363eada9e89f7059199d3724135a86c47082cbf72790d6ba2f336d146ddb/rpds_py-0.27.0-cp314-cp314t-win32.whl", hash = "sha256:0f401c369186a5743694dd9fc08cba66cf70908757552e1f714bfc5219c655b5", size = 218001, upload-time = "2025-08-07T08:25:21.761Z" }, + { url = "https://files.pythonhosted.org/packages/e2/3f/d6c216ed5199c9ef79e2a33955601f454ed1e7420a93b89670133bca5ace/rpds_py-0.27.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8a1dca5507fa1337f75dcd5070218b20bc68cf8844271c923c1b79dfcbc20391", size = 230993, upload-time = "2025-08-07T08:25:23.34Z" }, +] + +[[package]] +name = "ruamel-yaml" +version = "0.18.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ruamel-yaml-clib", marker = "python_full_version < '3.14' and platform_python_implementation == 'CPython'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/39/87/6da0df742a4684263261c253f00edd5829e6aca970fff69e75028cccc547/ruamel.yaml-0.18.14.tar.gz", hash = "sha256:7227b76aaec364df15936730efbf7d72b30c0b79b1d578bbb8e3dcb2d81f52b7", size = 145511, upload-time = "2025-06-09T08:51:09.828Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/6d/6fe4805235e193aad4aaf979160dd1f3c487c57d48b810c816e6e842171b/ruamel.yaml-0.18.14-py3-none-any.whl", hash = "sha256:710ff198bb53da66718c7db27eec4fbcc9aa6ca7204e4c1df2f282b6fe5eb6b2", size = 118570, upload-time = "2025-06-09T08:51:06.348Z" }, +] + +[[package]] +name = "ruamel-yaml-clib" +version = "0.2.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315, upload-time = "2024-10-20T10:10:56.22Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433, upload-time = "2024-10-20T10:12:55.657Z" }, + { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362, upload-time = "2024-10-20T10:12:57.155Z" }, + { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118, upload-time = "2024-10-20T10:12:58.501Z" }, + { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497, upload-time = "2024-10-20T10:13:00.211Z" }, + { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042, upload-time = "2024-10-21T11:26:46.038Z" }, + { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831, upload-time = "2024-10-21T11:26:47.487Z" }, + { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692, upload-time = "2024-12-11T19:58:17.252Z" }, + { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777, upload-time = "2024-10-20T10:13:01.395Z" }, + { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523, upload-time = "2024-10-20T10:13:02.768Z" }, + { url = "https://files.pythonhosted.org/packages/29/00/4864119668d71a5fa45678f380b5923ff410701565821925c69780356ffa/ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a", size = 132011, upload-time = "2024-10-20T10:13:04.377Z" }, + { url = "https://files.pythonhosted.org/packages/7f/5e/212f473a93ae78c669ffa0cb051e3fee1139cb2d385d2ae1653d64281507/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475", size = 642488, upload-time = "2024-10-20T10:13:05.906Z" }, + { url = "https://files.pythonhosted.org/packages/1f/8f/ecfbe2123ade605c49ef769788f79c38ddb1c8fa81e01f4dbf5cf1a44b16/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef", size = 745066, upload-time = "2024-10-20T10:13:07.26Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a9/28f60726d29dfc01b8decdb385de4ced2ced9faeb37a847bd5cf26836815/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6", size = 701785, upload-time = "2024-10-20T10:13:08.504Z" }, + { url = "https://files.pythonhosted.org/packages/84/7e/8e7ec45920daa7f76046578e4f677a3215fe8f18ee30a9cb7627a19d9b4c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf", size = 693017, upload-time = "2024-10-21T11:26:48.866Z" }, + { url = "https://files.pythonhosted.org/packages/c5/b3/d650eaade4ca225f02a648321e1ab835b9d361c60d51150bac49063b83fa/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1", size = 741270, upload-time = "2024-10-21T11:26:50.213Z" }, + { url = "https://files.pythonhosted.org/packages/87/b8/01c29b924dcbbed75cc45b30c30d565d763b9c4d540545a0eeecffb8f09c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01", size = 709059, upload-time = "2024-12-11T19:58:18.846Z" }, + { url = "https://files.pythonhosted.org/packages/30/8c/ed73f047a73638257aa9377ad356bea4d96125b305c34a28766f4445cc0f/ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6", size = 98583, upload-time = "2024-10-20T10:13:09.658Z" }, + { url = "https://files.pythonhosted.org/packages/b0/85/e8e751d8791564dd333d5d9a4eab0a7a115f7e349595417fd50ecae3395c/ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3", size = 115190, upload-time = "2024-10-20T10:13:10.66Z" }, +] + +[[package]] +name = "s3fs" +version = "2025.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiobotocore" }, + { name = "aiohttp" }, + { name = "fsspec" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/13/37438c4672ba1d23ec46df0e4b57e98469e5c5f4f98313cf6842b631652b/s3fs-2025.7.0.tar.gz", hash = "sha256:5e7f9ec0cad7745155e3eb86fae15b1481fa29946bf5b3a4ce3a60701ce6022d", size = 77795, upload-time = "2025-07-15T16:35:22.177Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/c7/30d13b7fd4f866ca3f30e9a6e7ae038f0c45226f6e26b3cc98d6d197f93b/s3fs-2025.7.0-py3-none-any.whl", hash = "sha256:b6b2d3f84b6aa1c2ba5e62e39dd9410cf54f10a2cce1ea6db1ba0d1a6bcce685", size = 30315, upload-time = "2025-07-15T16:35:20.734Z" }, +] + +[[package]] +name = "s3transfer" +version = "0.13.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "botocore" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/05/d52bf1e65044b4e5e27d4e63e8d1579dbdec54fce685908ae09bc3720030/s3transfer-0.13.1.tar.gz", hash = "sha256:c3fdba22ba1bd367922f27ec8032d6a1cf5f10c934fb5d68cf60fd5a23d936cf", size = 150589, upload-time = "2025-07-18T19:22:42.31Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/4f/d073e09df851cfa251ef7840007d04db3293a0482ce607d2b993926089be/s3transfer-0.13.1-py3-none-any.whl", hash = "sha256:a981aa7429be23fe6dfc13e80e4020057cbab622b08c0315288758d67cabc724", size = 85308, upload-time = "2025-07-18T19:22:40.947Z" }, +] + +[[package]] +name = "setuptools" +version = "80.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c", size = 1319958, upload-time = "2025-05-27T00:56:51.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486, upload-time = "2025-05-27T00:56:49.664Z" }, +] + +[[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 = "stack-data" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens" }, + { name = "executing" }, + { name = "pure-eval" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, +] + +[[package]] +name = "sympy" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpmath" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" }, +] + +[[package]] +name = "tabulate" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload-time = "2022-10-06T17:21:48.54Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload-time = "2022-10-06T17:21:44.262Z" }, +] + +[[package]] +name = "tblib" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/95/4b3044ec4bf248186769629bbfb495a458deb6e4c1f9eff7f298ae1e336e/tblib-3.1.0.tar.gz", hash = "sha256:06404c2c9f07f66fee2d7d6ad43accc46f9c3361714d9b8426e7f47e595cd652", size = 30766, upload-time = "2025-03-31T12:58:27.473Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/44/aa5c8b10b2cce7a053018e0d132bd58e27527a0243c4985383d5b6fd93e9/tblib-3.1.0-py3-none-any.whl", hash = "sha256:670bb4582578134b3d81a84afa1b016128b429f3d48e6cbbaecc9d15675e984e", size = 12552, upload-time = "2025-03-31T12:58:26.142Z" }, +] + +[[package]] +name = "text-unidecode" +version = "1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885, upload-time = "2019-08-30T21:36:45.405Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154, upload-time = "2019-08-30T21:37:03.543Z" }, +] + +[[package]] +name = "tinynetrc" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/87/8f/6df2414a8f38b08836726986437f7612983f25c6dc3c55c66f4850a3d795/tinynetrc-1.3.1.tar.gz", hash = "sha256:2b9a256d2e630643b8f0985f5e826ccf0bf3716e07e596a4f67feab363d254df", size = 5484, upload-time = "2021-08-15T18:24:13.1Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/0b/633691d7cea5129afa622869485d1985b038df1d3597a35848731d106762/tinynetrc-1.3.1-py2.py3-none-any.whl", hash = "sha256:46c7820e5f49c9434d2c4cd74de8a06edbbd45e63a8a2980a90b8a43db8facf7", size = 3949, upload-time = "2021-08-15T18:24:11.744Z" }, +] + +[[package]] +name = "tomlkit" +version = "0.13.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/18/0bbf3884e9eaa38819ebe46a7bd25dcd56b67434402b66a58c4b8e552575/tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1", size = 185207, upload-time = "2025-06-05T07:13:44.947Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901, upload-time = "2025-06-05T07:13:43.546Z" }, +] + +[[package]] +name = "toolz" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/0b/d80dfa675bf592f636d1ea0b835eab4ec8df6e9415d8cfd766df54456123/toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02", size = 66790, upload-time = "2024-10-04T16:17:04.001Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/98/eb27cc78ad3af8e302c9d8ff4977f5026676e130d28dd7578132a457170c/toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236", size = 56383, upload-time = "2024-10-04T16:17:01.533Z" }, +] + +[[package]] +name = "tornado" +version = "6.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934, upload-time = "2025-05-22T18:15:38.788Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948, upload-time = "2025-05-22T18:15:20.862Z" }, + { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112, upload-time = "2025-05-22T18:15:22.591Z" }, + { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672, upload-time = "2025-05-22T18:15:24.027Z" }, + { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019, upload-time = "2025-05-22T18:15:25.735Z" }, + { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252, upload-time = "2025-05-22T18:15:27.499Z" }, + { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930, upload-time = "2025-05-22T18:15:29.299Z" }, + { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351, upload-time = "2025-05-22T18:15:31.038Z" }, + { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328, upload-time = "2025-05-22T18:15:32.426Z" }, + { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396, upload-time = "2025-05-22T18:15:34.205Z" }, + { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840, upload-time = "2025-05-22T18:15:36.1Z" }, + { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596, upload-time = "2025-05-22T18:15:37.433Z" }, +] + +[[package]] +name = "tqdm" +version = "4.67.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload-time = "2024-11-24T20:12:22.481Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload-time = "2024-11-24T20:12:19.698Z" }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload-time = "2024-04-19T11:11:49.746Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, +] + +[[package]] +name = "typeguard" +version = "2.13.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/38/c61bfcf62a7b572b5e9363a802ff92559cb427ee963048e1442e3aef7490/typeguard-2.13.3.tar.gz", hash = "sha256:00edaa8da3a133674796cf5ea87d9f4b4c367d77476e185e80251cc13dfbb8c4", size = 40604, upload-time = "2021-12-10T21:09:39.158Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/bb/d43e5c75054e53efce310e79d63df0ac3f25e34c926be5dffb7d283fb2a8/typeguard-2.13.3-py3-none-any.whl", hash = "sha256:5e3e3be01e887e7eafae5af63d1f36c849aaa94e3a0112097312aabfa16284f1", size = 17605, upload-time = "2021-12-10T21:09:37.844Z" }, +] + +[[package]] +name = "types-awscrt" +version = "0.27.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/56/ce/5d84526a39f44c420ce61b16654193f8437d74b54f21597ea2ac65d89954/types_awscrt-0.27.6.tar.gz", hash = "sha256:9d3f1865a93b8b2c32f137514ac88cb048b5bc438739945ba19d972698995bfb", size = 16937, upload-time = "2025-08-13T01:54:54.659Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ac/af/e3d20e3e81d235b3964846adf46a334645a8a9b25a0d3d472743eb079552/types_awscrt-0.27.6-py3-none-any.whl", hash = "sha256:18aced46da00a57f02eb97637a32e5894dc5aa3dc6a905ba3e5ed85b9f3c526b", size = 39626, upload-time = "2025-08-13T01:54:53.454Z" }, +] + +[[package]] +name = "types-python-dateutil" +version = "2.9.0.20250809" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/53/07dac71db45fb6b3c71c2fd29a87cada2239eac7ecfb318e6ebc7da00a3b/types_python_dateutil-2.9.0.20250809.tar.gz", hash = "sha256:69cbf8d15ef7a75c3801d65d63466e46ac25a0baa678d89d0a137fc31a608cc1", size = 15820, upload-time = "2025-08-09T03:14:14.109Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/5e/67312e679f612218d07fcdbd14017e6d571ce240a5ba1ad734f15a8523cc/types_python_dateutil-2.9.0.20250809-py3-none-any.whl", hash = "sha256:768890cac4f2d7fd9e0feb6f3217fce2abbfdfc0cadd38d11fba325a815e4b9f", size = 17707, upload-time = "2025-08-09T03:14:13.314Z" }, +] + +[[package]] +name = "types-s3transfer" +version = "0.13.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/42/c1/45038f259d6741c252801044e184fec4dbaeff939a58f6160d7c32bf4975/types_s3transfer-0.13.0.tar.gz", hash = "sha256:203dadcb9865c2f68fb44bc0440e1dc05b79197ba4a641c0976c26c9af75ef52", size = 14175, upload-time = "2025-05-28T02:16:07.614Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/5d/6bbe4bf6a79fb727945291aef88b5ecbdba857a603f1bbcf1a6be0d3f442/types_s3transfer-0.13.0-py3-none-any.whl", hash = "sha256:79c8375cbf48a64bff7654c02df1ec4b20d74f8c5672fc13e382f593ca5565b3", size = 19588, upload-time = "2025-05-28T02:16:06.709Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.14.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", size = 107673, upload-time = "2025-07-04T13:28:34.16Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload-time = "2025-07-04T13:28:32.743Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, +] + +[[package]] +name = "tzdata" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, +] + +[[package]] +name = "tzlocal" +version = "5.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "tzdata", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8b/2e/c14812d3d4d9cd1773c6be938f89e5735a1f11a9f184ac3639b93cef35d5/tzlocal-5.3.1.tar.gz", hash = "sha256:cceffc7edecefea1f595541dbd6e990cb1ea3d19bf01b2809f362a03dd7921fd", size = 30761, upload-time = "2025-03-05T21:17:41.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/14/e2a54fabd4f08cd7af1c07030603c3356b74da07f7cc056e600436edfa17/tzlocal-5.3.1-py3-none-any.whl", hash = "sha256:eb1a66c3ef5847adf7a834f1be0800581b683b5608e74f86ecbcef8ab91bb85d", size = 18026, upload-time = "2025-03-05T21:17:39.857Z" }, +] + +[[package]] +name = "ujson" +version = "5.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f0/00/3110fd566786bfa542adb7932d62035e0c0ef662a8ff6544b6643b3d6fd7/ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1", size = 7154885, upload-time = "2024-05-14T02:02:34.233Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/a6/fd3f8bbd80842267e2d06c3583279555e8354c5986c952385199d57a5b6c/ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5", size = 55642, upload-time = "2024-05-14T02:01:04.055Z" }, + { url = "https://files.pythonhosted.org/packages/a8/47/dd03fd2b5ae727e16d5d18919b383959c6d269c7b948a380fdd879518640/ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e", size = 51807, upload-time = "2024-05-14T02:01:05.25Z" }, + { url = "https://files.pythonhosted.org/packages/25/23/079a4cc6fd7e2655a473ed9e776ddbb7144e27f04e8fc484a0fb45fe6f71/ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043", size = 51972, upload-time = "2024-05-14T02:01:06.458Z" }, + { url = "https://files.pythonhosted.org/packages/04/81/668707e5f2177791869b624be4c06fb2473bf97ee33296b18d1cf3092af7/ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1", size = 53686, upload-time = "2024-05-14T02:01:07.618Z" }, + { url = "https://files.pythonhosted.org/packages/bd/50/056d518a386d80aaf4505ccf3cee1c40d312a46901ed494d5711dd939bc3/ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3", size = 58591, upload-time = "2024-05-14T02:01:08.901Z" }, + { url = "https://files.pythonhosted.org/packages/fc/d6/aeaf3e2d6fb1f4cfb6bf25f454d60490ed8146ddc0600fae44bfe7eb5a72/ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21", size = 997853, upload-time = "2024-05-14T02:01:10.772Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d5/1f2a5d2699f447f7d990334ca96e90065ea7f99b142ce96e85f26d7e78e2/ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2", size = 1140689, upload-time = "2024-05-14T02:01:12.214Z" }, + { url = "https://files.pythonhosted.org/packages/f2/2c/6990f4ccb41ed93744aaaa3786394bca0875503f97690622f3cafc0adfde/ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e", size = 1043576, upload-time = "2024-05-14T02:01:14.39Z" }, + { url = "https://files.pythonhosted.org/packages/14/f5/a2368463dbb09fbdbf6a696062d0c0f62e4ae6fa65f38f829611da2e8fdd/ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e", size = 38764, upload-time = "2024-05-14T02:01:15.83Z" }, + { url = "https://files.pythonhosted.org/packages/59/2d/691f741ffd72b6c84438a93749ac57bf1a3f217ac4b0ea4fd0e96119e118/ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc", size = 42211, upload-time = "2024-05-14T02:01:17.567Z" }, + { url = "https://files.pythonhosted.org/packages/0d/69/b3e3f924bb0e8820bb46671979770c5be6a7d51c77a66324cdb09f1acddb/ujson-5.10.0-cp313-cp313-macosx_10_9_x86_64.whl", hash = "sha256:618efd84dc1acbd6bff8eaa736bb6c074bfa8b8a98f55b61c38d4ca2c1f7f287", size = 55646, upload-time = "2024-05-14T02:01:19.26Z" }, + { url = "https://files.pythonhosted.org/packages/32/8a/9b748eb543c6cabc54ebeaa1f28035b1bd09c0800235b08e85990734c41e/ujson-5.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38d5d36b4aedfe81dfe251f76c0467399d575d1395a1755de391e58985ab1c2e", size = 51806, upload-time = "2024-05-14T02:01:20.593Z" }, + { url = "https://files.pythonhosted.org/packages/39/50/4b53ea234413b710a18b305f465b328e306ba9592e13a791a6a6b378869b/ujson-5.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67079b1f9fb29ed9a2914acf4ef6c02844b3153913eb735d4bf287ee1db6e557", size = 51975, upload-time = "2024-05-14T02:01:21.904Z" }, + { url = "https://files.pythonhosted.org/packages/b4/9d/8061934f960cdb6dd55f0b3ceeff207fcc48c64f58b43403777ad5623d9e/ujson-5.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7d0e0ceeb8fe2468c70ec0c37b439dd554e2aa539a8a56365fd761edb418988", size = 53693, upload-time = "2024-05-14T02:01:23.742Z" }, + { url = "https://files.pythonhosted.org/packages/f5/be/7bfa84b28519ddbb67efc8410765ca7da55e6b93aba84d97764cd5794dbc/ujson-5.10.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:59e02cd37bc7c44d587a0ba45347cc815fb7a5fe48de16bf05caa5f7d0d2e816", size = 58594, upload-time = "2024-05-14T02:01:25.554Z" }, + { url = "https://files.pythonhosted.org/packages/48/eb/85d465abafb2c69d9699cfa5520e6e96561db787d36c677370e066c7e2e7/ujson-5.10.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2a890b706b64e0065f02577bf6d8ca3b66c11a5e81fb75d757233a38c07a1f20", size = 997853, upload-time = "2024-05-14T02:01:27.151Z" }, + { url = "https://files.pythonhosted.org/packages/9f/76/2a63409fc05d34dd7d929357b7a45e3a2c96f22b4225cd74becd2ba6c4cb/ujson-5.10.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:621e34b4632c740ecb491efc7f1fcb4f74b48ddb55e65221995e74e2d00bbff0", size = 1140694, upload-time = "2024-05-14T02:01:29.113Z" }, + { url = "https://files.pythonhosted.org/packages/45/ed/582c4daba0f3e1688d923b5cb914ada1f9defa702df38a1916c899f7c4d1/ujson-5.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b9500e61fce0cfc86168b248104e954fead61f9be213087153d272e817ec7b4f", size = 1043580, upload-time = "2024-05-14T02:01:31.447Z" }, + { url = "https://files.pythonhosted.org/packages/d7/0c/9837fece153051e19c7bade9f88f9b409e026b9525927824cdf16293b43b/ujson-5.10.0-cp313-cp313-win32.whl", hash = "sha256:4c4fc16f11ac1612f05b6f5781b384716719547e142cfd67b65d035bd85af165", size = 38766, upload-time = "2024-05-14T02:01:32.856Z" }, + { url = "https://files.pythonhosted.org/packages/d7/72/6cb6728e2738c05bbe9bd522d6fc79f86b9a28402f38663e85a28fddd4a0/ujson-5.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:4573fd1695932d4f619928fd09d5d03d917274381649ade4328091ceca175539", size = 42212, upload-time = "2024-05-14T02:01:33.97Z" }, +] + +[[package]] +name = "universal-pathlib" +version = "0.2.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fsspec" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/21/dd871495af3933e585261adce42678dcdf1168c9d6fa0a8f7b6565e54472/universal_pathlib-0.2.6.tar.gz", hash = "sha256:50817aaeaa9f4163cb1e76f5bdf84207fa05ce728b23fd779479b3462e5430ac", size = 175427, upload-time = "2024-12-13T00:58:27.514Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/4d/2e577f6db7aa0f932d19f799c18f604b2b302c65f733419b900ec07dbade/universal_pathlib-0.2.6-py3-none-any.whl", hash = "sha256:700dec2b58ef34b87998513de6d2ae153b22f083197dfafb8544744edabd1b18", size = 50087, upload-time = "2024-12-13T00:58:24.582Z" }, +] + +[[package]] +name = "urllib3" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, +] + +[[package]] +name = "virtualenv" +version = "20.32.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "distlib" }, + { name = "filelock" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a9/96/0834f30fa08dca3738614e6a9d42752b6420ee94e58971d702118f7cfd30/virtualenv-20.32.0.tar.gz", hash = "sha256:886bf75cadfdc964674e6e33eb74d787dff31ca314ceace03ca5810620f4ecf0", size = 6076970, upload-time = "2025-07-21T04:09:50.985Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/c6/f8f28009920a736d0df434b52e9feebfb4d702ba942f15338cb4a83eafc1/virtualenv-20.32.0-py3-none-any.whl", hash = "sha256:2c310aecb62e5aa1b06103ed7c2977b81e042695de2697d01017ff0f1034af56", size = 6057761, upload-time = "2025-07-21T04:09:48.059Z" }, +] + +[[package]] +name = "virtualizarr" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numcodecs" }, + { name = "numpy" }, + { name = "obstore" }, + { name = "packaging" }, + { name = "ujson" }, + { name = "universal-pathlib" }, + { name = "xarray" }, + { name = "zarr" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9c/e5/defd55076b2b8ffee967d1deb33a6f0d3028da5aaf36551690bc4a1e0996/virtualizarr-2.0.0.tar.gz", hash = "sha256:02ab016d7f5365488d3fd728b14c265321574879137be31c0ce9a370550cf848", size = 213149, upload-time = "2025-07-21T20:17:38.158Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/f8/2095015b0f6ed5f19f7931b6ab5e4fc300d56d45252fea65d21edfaec440/virtualizarr-2.0.0-py3-none-any.whl", hash = "sha256:c80d40fc11bc7cd801c70fa50f06c935f489d248bd8276b34ed54ebbd3a33f74", size = 187279, upload-time = "2025-07-21T20:17:36.375Z" }, +] + +[[package]] +name = "watchdog" +version = "4.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4f/38/764baaa25eb5e35c9a043d4c4588f9836edfe52a708950f4b6d5f714fd42/watchdog-4.0.2.tar.gz", hash = "sha256:b4dfbb6c49221be4535623ea4474a4d6ee0a9cef4a80b20c28db4d858b64e270", size = 126587, upload-time = "2024-08-11T07:38:01.623Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/f5/ea22b095340545faea37ad9a42353b265ca751f543da3fb43f5d00cdcd21/watchdog-4.0.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1cdcfd8142f604630deef34722d695fb455d04ab7cfe9963055df1fc69e6727a", size = 100342, upload-time = "2024-08-11T07:37:16.393Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d2/8ce97dff5e465db1222951434e3115189ae54a9863aef99c6987890cc9ef/watchdog-4.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d7ab624ff2f663f98cd03c8b7eedc09375a911794dfea6bf2a359fcc266bff29", size = 92306, upload-time = "2024-08-11T07:37:17.997Z" }, + { url = "https://files.pythonhosted.org/packages/49/c4/1aeba2c31b25f79b03b15918155bc8c0b08101054fc727900f1a577d0d54/watchdog-4.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:132937547a716027bd5714383dfc40dc66c26769f1ce8a72a859d6a48f371f3a", size = 92915, upload-time = "2024-08-11T07:37:19.967Z" }, + { url = "https://files.pythonhosted.org/packages/79/63/eb8994a182672c042d85a33507475c50c2ee930577524dd97aea05251527/watchdog-4.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:cd67c7df93eb58f360c43802acc945fa8da70c675b6fa37a241e17ca698ca49b", size = 100343, upload-time = "2024-08-11T07:37:21.935Z" }, + { url = "https://files.pythonhosted.org/packages/ce/82/027c0c65c2245769580605bcd20a1dc7dfd6c6683c8c4e2ef43920e38d27/watchdog-4.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bcfd02377be80ef3b6bc4ce481ef3959640458d6feaae0bd43dd90a43da90a7d", size = 92313, upload-time = "2024-08-11T07:37:23.314Z" }, + { url = "https://files.pythonhosted.org/packages/2a/89/ad4715cbbd3440cb0d336b78970aba243a33a24b1a79d66f8d16b4590d6a/watchdog-4.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:980b71510f59c884d684b3663d46e7a14b457c9611c481e5cef08f4dd022eed7", size = 92919, upload-time = "2024-08-11T07:37:24.715Z" }, + { url = "https://files.pythonhosted.org/packages/8a/b1/25acf6767af6f7e44e0086309825bd8c098e301eed5868dc5350642124b9/watchdog-4.0.2-py3-none-manylinux2014_aarch64.whl", hash = "sha256:936acba76d636f70db8f3c66e76aa6cb5136a936fc2a5088b9ce1c7a3508fc83", size = 82947, upload-time = "2024-08-11T07:37:45.388Z" }, + { url = "https://files.pythonhosted.org/packages/e8/90/aebac95d6f954bd4901f5d46dcd83d68e682bfd21798fd125a95ae1c9dbf/watchdog-4.0.2-py3-none-manylinux2014_armv7l.whl", hash = "sha256:e252f8ca942a870f38cf785aef420285431311652d871409a64e2a0a52a2174c", size = 82942, upload-time = "2024-08-11T07:37:46.722Z" }, + { url = "https://files.pythonhosted.org/packages/15/3a/a4bd8f3b9381824995787488b9282aff1ed4667e1110f31a87b871ea851c/watchdog-4.0.2-py3-none-manylinux2014_i686.whl", hash = "sha256:0e83619a2d5d436a7e58a1aea957a3c1ccbf9782c43c0b4fed80580e5e4acd1a", size = 82947, upload-time = "2024-08-11T07:37:48.941Z" }, + { url = "https://files.pythonhosted.org/packages/09/cc/238998fc08e292a4a18a852ed8274159019ee7a66be14441325bcd811dfd/watchdog-4.0.2-py3-none-manylinux2014_ppc64.whl", hash = "sha256:88456d65f207b39f1981bf772e473799fcdc10801062c36fd5ad9f9d1d463a73", size = 82946, upload-time = "2024-08-11T07:37:50.279Z" }, + { url = "https://files.pythonhosted.org/packages/80/f1/d4b915160c9d677174aa5fae4537ae1f5acb23b3745ab0873071ef671f0a/watchdog-4.0.2-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:32be97f3b75693a93c683787a87a0dc8db98bb84701539954eef991fb35f5fbc", size = 82947, upload-time = "2024-08-11T07:37:51.55Z" }, + { url = "https://files.pythonhosted.org/packages/db/02/56ebe2cf33b352fe3309588eb03f020d4d1c061563d9858a9216ba004259/watchdog-4.0.2-py3-none-manylinux2014_s390x.whl", hash = "sha256:c82253cfc9be68e3e49282831afad2c1f6593af80c0daf1287f6a92657986757", size = 82944, upload-time = "2024-08-11T07:37:52.855Z" }, + { url = "https://files.pythonhosted.org/packages/01/d2/c8931ff840a7e5bd5dcb93f2bb2a1fd18faf8312e9f7f53ff1cf76ecc8ed/watchdog-4.0.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:c0b14488bd336c5b1845cee83d3e631a1f8b4e9c5091ec539406e4a324f882d8", size = 82947, upload-time = "2024-08-11T07:37:55.172Z" }, + { url = "https://files.pythonhosted.org/packages/d0/d8/cdb0c21a4a988669d7c210c75c6a2c9a0e16a3b08d9f7e633df0d9a16ad8/watchdog-4.0.2-py3-none-win32.whl", hash = "sha256:0d8a7e523ef03757a5aa29f591437d64d0d894635f8a50f370fe37f913ce4e19", size = 82935, upload-time = "2024-08-11T07:37:56.668Z" }, + { url = "https://files.pythonhosted.org/packages/99/2e/b69dfaae7a83ea64ce36538cc103a3065e12c447963797793d5c0a1d5130/watchdog-4.0.2-py3-none-win_amd64.whl", hash = "sha256:c344453ef3bf875a535b0488e3ad28e341adbd5a9ffb0f7d62cefacc8824ef2b", size = 82934, upload-time = "2024-08-11T07:37:57.991Z" }, + { url = "https://files.pythonhosted.org/packages/b0/0b/43b96a9ecdd65ff5545b1b13b687ca486da5c6249475b1a45f24d63a1858/watchdog-4.0.2-py3-none-win_ia64.whl", hash = "sha256:baececaa8edff42cd16558a639a9b0ddf425f93d892e8392a56bf904f5eff22c", size = 82933, upload-time = "2024-08-11T07:37:59.573Z" }, +] + +[[package]] +name = "wcwidth" +version = "0.2.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301, upload-time = "2024-01-06T02:10:57.829Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload-time = "2024-01-06T02:10:55.763Z" }, +] + +[[package]] +name = "werkzeug" +version = "3.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9f/69/83029f1f6300c5fb2471d621ab06f6ec6b3324685a2ce0f9777fd4a8b71e/werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746", size = 806925, upload-time = "2024-11-08T15:52:18.093Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e", size = 224498, upload-time = "2024-11-08T15:52:16.132Z" }, +] + +[[package]] +name = "wheel" +version = "0.45.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545, upload-time = "2024-11-23T00:18:23.513Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494, upload-time = "2024-11-23T00:18:21.207Z" }, +] + +[[package]] +name = "wrapt" +version = "1.17.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531, upload-time = "2025-01-14T10:35:45.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799, upload-time = "2025-01-14T10:33:57.4Z" }, + { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821, upload-time = "2025-01-14T10:33:59.334Z" }, + { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919, upload-time = "2025-01-14T10:34:04.093Z" }, + { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721, upload-time = "2025-01-14T10:34:07.163Z" }, + { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899, upload-time = "2025-01-14T10:34:09.82Z" }, + { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222, upload-time = "2025-01-14T10:34:11.258Z" }, + { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707, upload-time = "2025-01-14T10:34:12.49Z" }, + { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685, upload-time = "2025-01-14T10:34:15.043Z" }, + { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567, upload-time = "2025-01-14T10:34:16.563Z" }, + { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672, upload-time = "2025-01-14T10:34:17.727Z" }, + { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865, upload-time = "2025-01-14T10:34:19.577Z" }, + { url = "https://files.pythonhosted.org/packages/ce/b9/0ffd557a92f3b11d4c5d5e0c5e4ad057bd9eb8586615cdaf901409920b14/wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", size = 53800, upload-time = "2025-01-14T10:34:21.571Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ef/8be90a0b7e73c32e550c73cfb2fa09db62234227ece47b0e80a05073b375/wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", size = 38824, upload-time = "2025-01-14T10:34:22.999Z" }, + { url = "https://files.pythonhosted.org/packages/36/89/0aae34c10fe524cce30fe5fc433210376bce94cf74d05b0d68344c8ba46e/wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", size = 38920, upload-time = "2025-01-14T10:34:25.386Z" }, + { url = "https://files.pythonhosted.org/packages/3b/24/11c4510de906d77e0cfb5197f1b1445d4fec42c9a39ea853d482698ac681/wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", size = 88690, upload-time = "2025-01-14T10:34:28.058Z" }, + { url = "https://files.pythonhosted.org/packages/71/d7/cfcf842291267bf455b3e266c0c29dcb675b5540ee8b50ba1699abf3af45/wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", size = 80861, upload-time = "2025-01-14T10:34:29.167Z" }, + { url = "https://files.pythonhosted.org/packages/d5/66/5d973e9f3e7370fd686fb47a9af3319418ed925c27d72ce16b791231576d/wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", size = 89174, upload-time = "2025-01-14T10:34:31.702Z" }, + { url = "https://files.pythonhosted.org/packages/a7/d3/8e17bb70f6ae25dabc1aaf990f86824e4fd98ee9cadf197054e068500d27/wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", size = 86721, upload-time = "2025-01-14T10:34:32.91Z" }, + { url = "https://files.pythonhosted.org/packages/6f/54/f170dfb278fe1c30d0ff864513cff526d624ab8de3254b20abb9cffedc24/wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", size = 79763, upload-time = "2025-01-14T10:34:34.903Z" }, + { url = "https://files.pythonhosted.org/packages/4a/98/de07243751f1c4a9b15c76019250210dd3486ce098c3d80d5f729cba029c/wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", size = 87585, upload-time = "2025-01-14T10:34:36.13Z" }, + { url = "https://files.pythonhosted.org/packages/f9/f0/13925f4bd6548013038cdeb11ee2cbd4e37c30f8bfd5db9e5a2a370d6e20/wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", size = 36676, upload-time = "2025-01-14T10:34:37.962Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ae/743f16ef8c2e3628df3ddfd652b7d4c555d12c84b53f3d8218498f4ade9b/wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", size = 38871, upload-time = "2025-01-14T10:34:39.13Z" }, + { url = "https://files.pythonhosted.org/packages/3d/bc/30f903f891a82d402ffb5fda27ec1d621cc97cb74c16fea0b6141f1d4e87/wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", size = 56312, upload-time = "2025-01-14T10:34:40.604Z" }, + { url = "https://files.pythonhosted.org/packages/8a/04/c97273eb491b5f1c918857cd26f314b74fc9b29224521f5b83f872253725/wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", size = 40062, upload-time = "2025-01-14T10:34:45.011Z" }, + { url = "https://files.pythonhosted.org/packages/4e/ca/3b7afa1eae3a9e7fefe499db9b96813f41828b9fdb016ee836c4c379dadb/wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", size = 40155, upload-time = "2025-01-14T10:34:47.25Z" }, + { url = "https://files.pythonhosted.org/packages/89/be/7c1baed43290775cb9030c774bc53c860db140397047cc49aedaf0a15477/wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", size = 113471, upload-time = "2025-01-14T10:34:50.934Z" }, + { url = "https://files.pythonhosted.org/packages/32/98/4ed894cf012b6d6aae5f5cc974006bdeb92f0241775addad3f8cd6ab71c8/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", size = 101208, upload-time = "2025-01-14T10:34:52.297Z" }, + { url = "https://files.pythonhosted.org/packages/ea/fd/0c30f2301ca94e655e5e057012e83284ce8c545df7661a78d8bfca2fac7a/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", size = 109339, upload-time = "2025-01-14T10:34:53.489Z" }, + { url = "https://files.pythonhosted.org/packages/75/56/05d000de894c4cfcb84bcd6b1df6214297b8089a7bd324c21a4765e49b14/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", size = 110232, upload-time = "2025-01-14T10:34:55.327Z" }, + { url = "https://files.pythonhosted.org/packages/53/f8/c3f6b2cf9b9277fb0813418e1503e68414cd036b3b099c823379c9575e6d/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", size = 100476, upload-time = "2025-01-14T10:34:58.055Z" }, + { url = "https://files.pythonhosted.org/packages/a7/b1/0bb11e29aa5139d90b770ebbfa167267b1fc548d2302c30c8f7572851738/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", size = 106377, upload-time = "2025-01-14T10:34:59.3Z" }, + { url = "https://files.pythonhosted.org/packages/6a/e1/0122853035b40b3f333bbb25f1939fc1045e21dd518f7f0922b60c156f7c/wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", size = 37986, upload-time = "2025-01-14T10:35:00.498Z" }, + { url = "https://files.pythonhosted.org/packages/09/5e/1655cf481e079c1f22d0cabdd4e51733679932718dc23bf2db175f329b76/wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", size = 40750, upload-time = "2025-01-14T10:35:03.378Z" }, + { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594, upload-time = "2025-01-14T10:35:44.018Z" }, +] + +[[package]] +name = "xarray" +version = "2025.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "packaging" }, + { name = "pandas" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5f/72/d60c34f61def6a547d65d779171e3063f0c0370293fd73e79eab87e4fab9/xarray-2025.6.0.tar.gz", hash = "sha256:c521c6c1b806fc8e5c9b1bed85d69ce950fd6d2668507d4dd02850787b4c84f2", size = 3001856, upload-time = "2025-06-10T16:50:07.631Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/57/ed/e737a1c9be5d654b71524ee19ea22376c4d81c50ef2bb5598c9dada74e9a/xarray-2025.6.0-py3-none-any.whl", hash = "sha256:175034a388e9b3c764035b40ad29581f0cbb9c596b97b75a7beb93ef2cc876e8", size = 1314069, upload-time = "2025-06-10T16:50:04.747Z" }, +] + +[[package]] +name = "yarl" +version = "1.20.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "multidict" }, + { name = "propcache" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3c/fb/efaa23fa4e45537b827620f04cf8f3cd658b76642205162e072703a5b963/yarl-1.20.1.tar.gz", hash = "sha256:d017a4997ee50c91fd5466cef416231bb82177b93b029906cefc542ce14c35ac", size = 186428, upload-time = "2025-06-10T00:46:09.923Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/9a/cb7fad7d73c69f296eda6815e4a2c7ed53fc70c2f136479a91c8e5fbdb6d/yarl-1.20.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdcc4cd244e58593a4379fe60fdee5ac0331f8eb70320a24d591a3be197b94a9", size = 133667, upload-time = "2025-06-10T00:43:44.369Z" }, + { url = "https://files.pythonhosted.org/packages/67/38/688577a1cb1e656e3971fb66a3492501c5a5df56d99722e57c98249e5b8a/yarl-1.20.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b29a2c385a5f5b9c7d9347e5812b6f7ab267193c62d282a540b4fc528c8a9d2a", size = 91025, upload-time = "2025-06-10T00:43:46.295Z" }, + { url = "https://files.pythonhosted.org/packages/50/ec/72991ae51febeb11a42813fc259f0d4c8e0507f2b74b5514618d8b640365/yarl-1.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1112ae8154186dfe2de4732197f59c05a83dc814849a5ced892b708033f40dc2", size = 89709, upload-time = "2025-06-10T00:43:48.22Z" }, + { url = "https://files.pythonhosted.org/packages/99/da/4d798025490e89426e9f976702e5f9482005c548c579bdae792a4c37769e/yarl-1.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90bbd29c4fe234233f7fa2b9b121fb63c321830e5d05b45153a2ca68f7d310ee", size = 352287, upload-time = "2025-06-10T00:43:49.924Z" }, + { url = "https://files.pythonhosted.org/packages/1a/26/54a15c6a567aac1c61b18aa0f4b8aa2e285a52d547d1be8bf48abe2b3991/yarl-1.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:680e19c7ce3710ac4cd964e90dad99bf9b5029372ba0c7cbfcd55e54d90ea819", size = 345429, upload-time = "2025-06-10T00:43:51.7Z" }, + { url = "https://files.pythonhosted.org/packages/d6/95/9dcf2386cb875b234353b93ec43e40219e14900e046bf6ac118f94b1e353/yarl-1.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a979218c1fdb4246a05efc2cc23859d47c89af463a90b99b7c56094daf25a16", size = 365429, upload-time = "2025-06-10T00:43:53.494Z" }, + { url = "https://files.pythonhosted.org/packages/91/b2/33a8750f6a4bc224242a635f5f2cff6d6ad5ba651f6edcccf721992c21a0/yarl-1.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255b468adf57b4a7b65d8aad5b5138dce6a0752c139965711bdcb81bc370e1b6", size = 363862, upload-time = "2025-06-10T00:43:55.766Z" }, + { url = "https://files.pythonhosted.org/packages/98/28/3ab7acc5b51f4434b181b0cee8f1f4b77a65919700a355fb3617f9488874/yarl-1.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a97d67108e79cfe22e2b430d80d7571ae57d19f17cda8bb967057ca8a7bf5bfd", size = 355616, upload-time = "2025-06-10T00:43:58.056Z" }, + { url = "https://files.pythonhosted.org/packages/36/a3/f666894aa947a371724ec7cd2e5daa78ee8a777b21509b4252dd7bd15e29/yarl-1.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8570d998db4ddbfb9a590b185a0a33dbf8aafb831d07a5257b4ec9948df9cb0a", size = 339954, upload-time = "2025-06-10T00:43:59.773Z" }, + { url = "https://files.pythonhosted.org/packages/f1/81/5f466427e09773c04219d3450d7a1256138a010b6c9f0af2d48565e9ad13/yarl-1.20.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:97c75596019baae7c71ccf1d8cc4738bc08134060d0adfcbe5642f778d1dca38", size = 365575, upload-time = "2025-06-10T00:44:02.051Z" }, + { url = "https://files.pythonhosted.org/packages/2e/e3/e4b0ad8403e97e6c9972dd587388940a032f030ebec196ab81a3b8e94d31/yarl-1.20.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1c48912653e63aef91ff988c5432832692ac5a1d8f0fb8a33091520b5bbe19ef", size = 365061, upload-time = "2025-06-10T00:44:04.196Z" }, + { url = "https://files.pythonhosted.org/packages/ac/99/b8a142e79eb86c926f9f06452eb13ecb1bb5713bd01dc0038faf5452e544/yarl-1.20.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4c3ae28f3ae1563c50f3d37f064ddb1511ecc1d5584e88c6b7c63cf7702a6d5f", size = 364142, upload-time = "2025-06-10T00:44:06.527Z" }, + { url = "https://files.pythonhosted.org/packages/34/f2/08ed34a4a506d82a1a3e5bab99ccd930a040f9b6449e9fd050320e45845c/yarl-1.20.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c5e9642f27036283550f5f57dc6156c51084b458570b9d0d96100c8bebb186a8", size = 381894, upload-time = "2025-06-10T00:44:08.379Z" }, + { url = "https://files.pythonhosted.org/packages/92/f8/9a3fbf0968eac704f681726eff595dce9b49c8a25cd92bf83df209668285/yarl-1.20.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:2c26b0c49220d5799f7b22c6838409ee9bc58ee5c95361a4d7831f03cc225b5a", size = 383378, upload-time = "2025-06-10T00:44:10.51Z" }, + { url = "https://files.pythonhosted.org/packages/af/85/9363f77bdfa1e4d690957cd39d192c4cacd1c58965df0470a4905253b54f/yarl-1.20.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:564ab3d517e3d01c408c67f2e5247aad4019dcf1969982aba3974b4093279004", size = 374069, upload-time = "2025-06-10T00:44:12.834Z" }, + { url = "https://files.pythonhosted.org/packages/35/99/9918c8739ba271dcd935400cff8b32e3cd319eaf02fcd023d5dcd487a7c8/yarl-1.20.1-cp312-cp312-win32.whl", hash = "sha256:daea0d313868da1cf2fac6b2d3a25c6e3a9e879483244be38c8e6a41f1d876a5", size = 81249, upload-time = "2025-06-10T00:44:14.731Z" }, + { url = "https://files.pythonhosted.org/packages/eb/83/5d9092950565481b413b31a23e75dd3418ff0a277d6e0abf3729d4d1ce25/yarl-1.20.1-cp312-cp312-win_amd64.whl", hash = "sha256:48ea7d7f9be0487339828a4de0360d7ce0efc06524a48e1810f945c45b813698", size = 86710, upload-time = "2025-06-10T00:44:16.716Z" }, + { url = "https://files.pythonhosted.org/packages/8a/e1/2411b6d7f769a07687acee88a062af5833cf1966b7266f3d8dfb3d3dc7d3/yarl-1.20.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:0b5ff0fbb7c9f1b1b5ab53330acbfc5247893069e7716840c8e7d5bb7355038a", size = 131811, upload-time = "2025-06-10T00:44:18.933Z" }, + { url = "https://files.pythonhosted.org/packages/b2/27/584394e1cb76fb771371770eccad35de400e7b434ce3142c2dd27392c968/yarl-1.20.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:14f326acd845c2b2e2eb38fb1346c94f7f3b01a4f5c788f8144f9b630bfff9a3", size = 90078, upload-time = "2025-06-10T00:44:20.635Z" }, + { url = "https://files.pythonhosted.org/packages/bf/9a/3246ae92d4049099f52d9b0fe3486e3b500e29b7ea872d0f152966fc209d/yarl-1.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f60e4ad5db23f0b96e49c018596707c3ae89f5d0bd97f0ad3684bcbad899f1e7", size = 88748, upload-time = "2025-06-10T00:44:22.34Z" }, + { url = "https://files.pythonhosted.org/packages/a3/25/35afe384e31115a1a801fbcf84012d7a066d89035befae7c5d4284df1e03/yarl-1.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49bdd1b8e00ce57e68ba51916e4bb04461746e794e7c4d4bbc42ba2f18297691", size = 349595, upload-time = "2025-06-10T00:44:24.314Z" }, + { url = "https://files.pythonhosted.org/packages/28/2d/8aca6cb2cabc8f12efcb82749b9cefecbccfc7b0384e56cd71058ccee433/yarl-1.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:66252d780b45189975abfed839616e8fd2dbacbdc262105ad7742c6ae58f3e31", size = 342616, upload-time = "2025-06-10T00:44:26.167Z" }, + { url = "https://files.pythonhosted.org/packages/0b/e9/1312633d16b31acf0098d30440ca855e3492d66623dafb8e25b03d00c3da/yarl-1.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59174e7332f5d153d8f7452a102b103e2e74035ad085f404df2e40e663a22b28", size = 361324, upload-time = "2025-06-10T00:44:27.915Z" }, + { url = "https://files.pythonhosted.org/packages/bc/a0/688cc99463f12f7669eec7c8acc71ef56a1521b99eab7cd3abb75af887b0/yarl-1.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3968ec7d92a0c0f9ac34d5ecfd03869ec0cab0697c91a45db3fbbd95fe1b653", size = 359676, upload-time = "2025-06-10T00:44:30.041Z" }, + { url = "https://files.pythonhosted.org/packages/af/44/46407d7f7a56e9a85a4c207724c9f2c545c060380718eea9088f222ba697/yarl-1.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1a4fbb50e14396ba3d375f68bfe02215d8e7bc3ec49da8341fe3157f59d2ff5", size = 352614, upload-time = "2025-06-10T00:44:32.171Z" }, + { url = "https://files.pythonhosted.org/packages/b1/91/31163295e82b8d5485d31d9cf7754d973d41915cadce070491778d9c9825/yarl-1.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11a62c839c3a8eac2410e951301309426f368388ff2f33799052787035793b02", size = 336766, upload-time = "2025-06-10T00:44:34.494Z" }, + { url = "https://files.pythonhosted.org/packages/b4/8e/c41a5bc482121f51c083c4c2bcd16b9e01e1cf8729e380273a952513a21f/yarl-1.20.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:041eaa14f73ff5a8986b4388ac6bb43a77f2ea09bf1913df7a35d4646db69e53", size = 364615, upload-time = "2025-06-10T00:44:36.856Z" }, + { url = "https://files.pythonhosted.org/packages/e3/5b/61a3b054238d33d70ea06ebba7e58597891b71c699e247df35cc984ab393/yarl-1.20.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:377fae2fef158e8fd9d60b4c8751387b8d1fb121d3d0b8e9b0be07d1b41e83dc", size = 360982, upload-time = "2025-06-10T00:44:39.141Z" }, + { url = "https://files.pythonhosted.org/packages/df/a3/6a72fb83f8d478cb201d14927bc8040af901811a88e0ff2da7842dd0ed19/yarl-1.20.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1c92f4390e407513f619d49319023664643d3339bd5e5a56a3bebe01bc67ec04", size = 369792, upload-time = "2025-06-10T00:44:40.934Z" }, + { url = "https://files.pythonhosted.org/packages/7c/af/4cc3c36dfc7c077f8dedb561eb21f69e1e9f2456b91b593882b0b18c19dc/yarl-1.20.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d25ddcf954df1754ab0f86bb696af765c5bfaba39b74095f27eececa049ef9a4", size = 382049, upload-time = "2025-06-10T00:44:42.854Z" }, + { url = "https://files.pythonhosted.org/packages/19/3a/e54e2c4752160115183a66dc9ee75a153f81f3ab2ba4bf79c3c53b33de34/yarl-1.20.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:909313577e9619dcff8c31a0ea2aa0a2a828341d92673015456b3ae492e7317b", size = 384774, upload-time = "2025-06-10T00:44:45.275Z" }, + { url = "https://files.pythonhosted.org/packages/9c/20/200ae86dabfca89060ec6447649f219b4cbd94531e425e50d57e5f5ac330/yarl-1.20.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:793fd0580cb9664548c6b83c63b43c477212c0260891ddf86809e1c06c8b08f1", size = 374252, upload-time = "2025-06-10T00:44:47.31Z" }, + { url = "https://files.pythonhosted.org/packages/83/75/11ee332f2f516b3d094e89448da73d557687f7d137d5a0f48c40ff211487/yarl-1.20.1-cp313-cp313-win32.whl", hash = "sha256:468f6e40285de5a5b3c44981ca3a319a4b208ccc07d526b20b12aeedcfa654b7", size = 81198, upload-time = "2025-06-10T00:44:49.164Z" }, + { url = "https://files.pythonhosted.org/packages/ba/ba/39b1ecbf51620b40ab402b0fc817f0ff750f6d92712b44689c2c215be89d/yarl-1.20.1-cp313-cp313-win_amd64.whl", hash = "sha256:495b4ef2fea40596bfc0affe3837411d6aa3371abcf31aac0ccc4bdd64d4ef5c", size = 86346, upload-time = "2025-06-10T00:44:51.182Z" }, + { url = "https://files.pythonhosted.org/packages/43/c7/669c52519dca4c95153c8ad96dd123c79f354a376346b198f438e56ffeb4/yarl-1.20.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:f60233b98423aab21d249a30eb27c389c14929f47be8430efa7dbd91493a729d", size = 138826, upload-time = "2025-06-10T00:44:52.883Z" }, + { url = "https://files.pythonhosted.org/packages/6a/42/fc0053719b44f6ad04a75d7f05e0e9674d45ef62f2d9ad2c1163e5c05827/yarl-1.20.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:6f3eff4cc3f03d650d8755c6eefc844edde99d641d0dcf4da3ab27141a5f8ddf", size = 93217, upload-time = "2025-06-10T00:44:54.658Z" }, + { url = "https://files.pythonhosted.org/packages/4f/7f/fa59c4c27e2a076bba0d959386e26eba77eb52ea4a0aac48e3515c186b4c/yarl-1.20.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:69ff8439d8ba832d6bed88af2c2b3445977eba9a4588b787b32945871c2444e3", size = 92700, upload-time = "2025-06-10T00:44:56.784Z" }, + { url = "https://files.pythonhosted.org/packages/2f/d4/062b2f48e7c93481e88eff97a6312dca15ea200e959f23e96d8ab898c5b8/yarl-1.20.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cf34efa60eb81dd2645a2e13e00bb98b76c35ab5061a3989c7a70f78c85006d", size = 347644, upload-time = "2025-06-10T00:44:59.071Z" }, + { url = "https://files.pythonhosted.org/packages/89/47/78b7f40d13c8f62b499cc702fdf69e090455518ae544c00a3bf4afc9fc77/yarl-1.20.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:8e0fe9364ad0fddab2688ce72cb7a8e61ea42eff3c7caeeb83874a5d479c896c", size = 323452, upload-time = "2025-06-10T00:45:01.605Z" }, + { url = "https://files.pythonhosted.org/packages/eb/2b/490d3b2dc66f52987d4ee0d3090a147ea67732ce6b4d61e362c1846d0d32/yarl-1.20.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f64fbf81878ba914562c672024089e3401974a39767747691c65080a67b18c1", size = 346378, upload-time = "2025-06-10T00:45:03.946Z" }, + { url = "https://files.pythonhosted.org/packages/66/ad/775da9c8a94ce925d1537f939a4f17d782efef1f973039d821cbe4bcc211/yarl-1.20.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6342d643bf9a1de97e512e45e4b9560a043347e779a173250824f8b254bd5ce", size = 353261, upload-time = "2025-06-10T00:45:05.992Z" }, + { url = "https://files.pythonhosted.org/packages/4b/23/0ed0922b47a4f5c6eb9065d5ff1e459747226ddce5c6a4c111e728c9f701/yarl-1.20.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56dac5f452ed25eef0f6e3c6a066c6ab68971d96a9fb441791cad0efba6140d3", size = 335987, upload-time = "2025-06-10T00:45:08.227Z" }, + { url = "https://files.pythonhosted.org/packages/3e/49/bc728a7fe7d0e9336e2b78f0958a2d6b288ba89f25a1762407a222bf53c3/yarl-1.20.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7d7f497126d65e2cad8dc5f97d34c27b19199b6414a40cb36b52f41b79014be", size = 329361, upload-time = "2025-06-10T00:45:10.11Z" }, + { url = "https://files.pythonhosted.org/packages/93/8f/b811b9d1f617c83c907e7082a76e2b92b655400e61730cd61a1f67178393/yarl-1.20.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:67e708dfb8e78d8a19169818eeb5c7a80717562de9051bf2413aca8e3696bf16", size = 346460, upload-time = "2025-06-10T00:45:12.055Z" }, + { url = "https://files.pythonhosted.org/packages/70/fd/af94f04f275f95da2c3b8b5e1d49e3e79f1ed8b6ceb0f1664cbd902773ff/yarl-1.20.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:595c07bc79af2494365cc96ddeb772f76272364ef7c80fb892ef9d0649586513", size = 334486, upload-time = "2025-06-10T00:45:13.995Z" }, + { url = "https://files.pythonhosted.org/packages/84/65/04c62e82704e7dd0a9b3f61dbaa8447f8507655fd16c51da0637b39b2910/yarl-1.20.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7bdd2f80f4a7df852ab9ab49484a4dee8030023aa536df41f2d922fd57bf023f", size = 342219, upload-time = "2025-06-10T00:45:16.479Z" }, + { url = "https://files.pythonhosted.org/packages/91/95/459ca62eb958381b342d94ab9a4b6aec1ddec1f7057c487e926f03c06d30/yarl-1.20.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:c03bfebc4ae8d862f853a9757199677ab74ec25424d0ebd68a0027e9c639a390", size = 350693, upload-time = "2025-06-10T00:45:18.399Z" }, + { url = "https://files.pythonhosted.org/packages/a6/00/d393e82dd955ad20617abc546a8f1aee40534d599ff555ea053d0ec9bf03/yarl-1.20.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:344d1103e9c1523f32a5ed704d576172d2cabed3122ea90b1d4e11fe17c66458", size = 355803, upload-time = "2025-06-10T00:45:20.677Z" }, + { url = "https://files.pythonhosted.org/packages/9e/ed/c5fb04869b99b717985e244fd93029c7a8e8febdfcffa06093e32d7d44e7/yarl-1.20.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:88cab98aa4e13e1ade8c141daeedd300a4603b7132819c484841bb7af3edce9e", size = 341709, upload-time = "2025-06-10T00:45:23.221Z" }, + { url = "https://files.pythonhosted.org/packages/24/fd/725b8e73ac2a50e78a4534ac43c6addf5c1c2d65380dd48a9169cc6739a9/yarl-1.20.1-cp313-cp313t-win32.whl", hash = "sha256:b121ff6a7cbd4abc28985b6028235491941b9fe8fe226e6fdc539c977ea1739d", size = 86591, upload-time = "2025-06-10T00:45:25.793Z" }, + { url = "https://files.pythonhosted.org/packages/94/c3/b2e9f38bc3e11191981d57ea08cab2166e74ea770024a646617c9cddd9f6/yarl-1.20.1-cp313-cp313t-win_amd64.whl", hash = "sha256:541d050a355bbbc27e55d906bc91cb6fe42f96c01413dd0f4ed5a5240513874f", size = 93003, upload-time = "2025-06-10T00:45:27.752Z" }, + { url = "https://files.pythonhosted.org/packages/b4/2d/2345fce04cfd4bee161bf1e7d9cdc702e3e16109021035dbb24db654a622/yarl-1.20.1-py3-none-any.whl", hash = "sha256:83b8eb083fe4683c6115795d9fc1cfaf2cbbefb19b3a1cb68f6527460f483a77", size = 46542, upload-time = "2025-06-10T00:46:07.521Z" }, +] + +[[package]] +name = "zarr" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "donfig" }, + { name = "numcodecs", extra = ["crc32c"] }, + { name = "numpy" }, + { name = "packaging" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/66/852aa0905f906bc8ef0a6eb686d50c7ca8c46a38677c32152a8003bcce37/zarr-3.1.0.tar.gz", hash = "sha256:ace5b111dc69d5315cb1655dfd0f816c5acf9798d2ad92f43b608a52c8c8ac2b", size = 312546, upload-time = "2025-07-15T07:48:53.105Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/72/c5fd70742126cab7403126a1719b4161a81b816d83a2fdb78b390d8ecc47/zarr-3.1.0-py3-none-any.whl", hash = "sha256:bd3d2f88d602d43f81df82e26dd115ea66635a2af5bf6da261d3c640bb4c1ce4", size = 254089, upload-time = "2025-07-15T07:48:51.334Z" }, +]