From 73853db7b4d7b2f9bb916d97bfb797ee3bf43904 Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 14:16:16 +0200 Subject: [PATCH 01/50] development: Emptying the repo Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .sonarcloud.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.sonarcloud.properties b/.sonarcloud.properties index 65c2cc4..e1deb80 100644 --- a/.sonarcloud.properties +++ b/.sonarcloud.properties @@ -4,7 +4,7 @@ # -sonar.projectKey=alliander-opensource_weather-provider-libraries +sonar.projectKey=alliander-opensource_meteoforge sonar.organization=alliander-opensource sonar.python.coverage.reportPaths=coverage.xml From e52db85d6c63e1ed338a647e714ab11fb184eb5b Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 15:26:09 +0200 Subject: [PATCH 02/50] feature: Initial base documentation Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .github/CODEOWNERS | 1 - .markdownlint.yaml | 7 + .markdownlint.yml | 2 - .markdownlintignore | 1 + .pre-commit-config.yaml | 2 +- .sonarcloud.properties | 9 +- CODE_OF_CONDUCT.rst | 5 +- CONTRIBUTING.md | 80 + CONTRIBUTING.rst | 79 - PROJECT_GOVERNANCE.md | 52 + PROJECT_GOVERNANCE.rst | 55 - README.md | 92 + README.rst | 115 - SECURITY.md | 37 + SECURITY.rst | 32 - docs/demo_source/__init__.py | 1 - docs/images/gitflow.svg | 189 ++ docs/images/meteoforge_logo.png | Bin 0 -> 1518050 bytes poetry.lock | 3080 +++++++++++--------- pyproject.toml | 86 +- src/meteoforge/__init__.py | 1 + src/weather_provider_libraries/__init__.py | 1 - 22 files changed, 2214 insertions(+), 1713 deletions(-) delete mode 100644 .github/CODEOWNERS create mode 100644 .markdownlint.yaml delete mode 100644 .markdownlint.yml create mode 100644 .markdownlintignore create mode 100644 CONTRIBUTING.md delete mode 100644 CONTRIBUTING.rst create mode 100644 PROJECT_GOVERNANCE.md delete mode 100644 PROJECT_GOVERNANCE.rst create mode 100644 README.md delete mode 100644 README.rst create mode 100644 SECURITY.md delete mode 100644 SECURITY.rst delete mode 100644 docs/demo_source/__init__.py create mode 100644 docs/images/gitflow.svg create mode 100644 docs/images/meteoforge_logo.png create mode 100644 src/meteoforge/__init__.py delete mode 100644 src/weather_provider_libraries/__init__.py diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index 8fc3572..0000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1 +0,0 @@ -/weather-provider-libraries/ @rflinnenbank @wpla-alliander diff --git a/.markdownlint.yaml b/.markdownlint.yaml new file mode 100644 index 0000000..6cad451 --- /dev/null +++ b/.markdownlint.yaml @@ -0,0 +1,7 @@ +default: true +line-length: + line_length: 120 +MD013: false # Disable line length +MD033: + allowed_elements: [ img, p ] +MD041: false # Disable first line heading diff --git a/.markdownlint.yml b/.markdownlint.yml deleted file mode 100644 index 0744779..0000000 --- a/.markdownlint.yml +++ /dev/null @@ -1,2 +0,0 @@ -line-length: - line_length: 120 diff --git a/.markdownlintignore b/.markdownlintignore new file mode 100644 index 0000000..3225ea6 --- /dev/null +++ b/.markdownlintignore @@ -0,0 +1 @@ +**/LICENSE.md diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5d8e049..98bf8b7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -54,4 +54,4 @@ repos: rev: v0.41.0 hooks: - id: markdownlint - args: [--config, .markdownlint.yml] + args: [ "--config", ".markdownlint.yaml" ] diff --git a/.sonarcloud.properties b/.sonarcloud.properties index e1deb80..7c0c449 100644 --- a/.sonarcloud.properties +++ b/.sonarcloud.properties @@ -1,9 +1,8 @@ -# -# SPDX-FileCopyrightText: 2019-2024 Alliander N.V. -# SPDX-License-Identifier: MPL-2.0 -# - +# (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) +# (SPDX-License-Identifier: MPL-2.0) +# This file is used by SonarCloud to configure the analysis of the MeteoForge project. +sonar.projectName=MeteoForge sonar.projectKey=alliander-opensource_meteoforge sonar.organization=alliander-opensource diff --git a/CODE_OF_CONDUCT.rst b/CODE_OF_CONDUCT.rst index 57c8310..91f4640 100644 --- a/CODE_OF_CONDUCT.rst +++ b/CODE_OF_CONDUCT.rst @@ -1,6 +1,5 @@ -.. coding=utf-8 -.. SPDX-FileCopyrightText: 2019-2023 Alliander N.V. -.. SPDX-License-Identifier: MPL-2.0 +[//]: # (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) +[//]: # (SPDX-License-Identifier: MPL-2.0) .. _code-of-conduct: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..dde97ef --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,80 @@ +[//]: # (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) + +[//]: # (SPDX-License-Identifier: MPL-2.0) + +# How to Contribute + +We'd love to accept your patches and contributions to this project. +There are just a few small guidelines you need to follow. + +## Filing bugs, change requests and questions + +You can file bugs, change requests, and questions about the project via GitHub Issues. +Consult [GitHub Help](https://docs.github.com/en/free-pro-team@latest/github/managing-your-work-on-github/creating-an-issue) +for more information on using GitHub Issues. + +## Community Guidelines + +This project follows the following [Code of Conduct](./CODE_OF_CONDUCT.md). + +## Source Code Headers + +Every file containing source code must include copyright and license information. +This includes any JS/CSS files served to browsers. +(This is to help well-intentioned people avoid accidental copying that doesn't comply with the license.) + +**Mozilla header:** + + SPDX-FileCopyrightText: 2019-2025 Alliander N.V. + SPDX-License-Identifier: MPL-2.0 + +## Git branching + +This project uses the [Gitflow Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow) +branching model. + +- The `master` branch always contains the latest release. +- New feature branches are branched off from `develop`. +- Finished features are merged back into `develop`. +- At the end of a sprint, `develop` is merged into `master`, or optionally into a `release` branch before merging into + `master`. + +![Gitflow](docs/images/gitflow.svg) + +## Code reviews + +All patches and contributions, including those by project members, require review by a maintainer. +We use GitHub pull requests for this. +Consult [GitHub Help](https://help.github.com/articles/about-pull-requests/) for more info. + +## Pull Request Process + +Contributions should be submitted as GitHub pull requests. +See [Creating a pull request](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request) +if you're unfamiliar with the process. + +### Steps to follow + +1. Create a topic branch in your local repository named like: `feature-[description]`. + See the [Git branching guideline](#git-branching) for naming conventions. + +2. Make changes, compile, and test thoroughly. + Ensure all install/build dependencies are removed by the end of the build process. + Follow existing code style and focus on the relevant topic. + See the [style guide](#source-code-headers) for more details. + +3. Push commits to your fork. + +4. Create a GitHub pull request from your topic branch. + +5. A maintainer will review your pull request. + They may offer feedback, request changes, or approve the contribution. + See the [code review guideline](#code-reviews) for expectations. + +6. Once a maintainer signs off, you may merge your changes. + If you don't have permission, a maintainer can merge it for you. + +## Attribution + +This `CONTRIBUTING.md` is adapted +from [Google’s contributing guide](https://github.com/google/new-project/blob/master/docs/contributing.rst). diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst deleted file mode 100644 index 9bf77d5..0000000 --- a/CONTRIBUTING.rst +++ /dev/null @@ -1,79 +0,0 @@ -.. coding=utf-8 -.. SPDX-FileCopyrightText: 2019-2023 Alliander N.V. -.. SPDX-License-Identifier: MPL-2.0 - -================= -How to Contribute -================= - -We'd love to accept your patches and contributions to this project. There are -just a few small guidelines you need to follow. - ------------------------------------------- -Filing bugs, change requests and questions ------------------------------------------- - -You can file bugs against, change requests for and questions about the project via github issues. Consult `GitHub Help `__ for more -information on using github issues. - --------------------- -Community Guidelines --------------------- -This project follows the following `Code of Conduct <./CODE_OF_CONDUCT.rst>`_. - -------------------- -Source Code Headers -------------------- - -Every file containing source code must include copyright and license -information. This includes any JS/CSS files that you might be serving out to -browsers. (This is to help well-intentioned people avoid accidental copying that -doesn't comply with the license.) - -Mozilla header: - - SPDX-FileCopyrightText: 2023 Alliander N.V. - - SPDX-License-Identifier: MPL-2.0 - -------------- -Git branching -------------- - -This project uses the `Gitflow Workflow `_ and branching model. The `master` branch always contains the latest release, after a release is made new feature branches are branched of `develop`. When a feature is finished it is merged back into `develop`. At the end of a sprint `develop` is merged back into `master` or (optional) into a `release` branch first before it is merged into `master`. - -![Gitflow](img/gitflow.svg) - ------------- -Code reviews ------------- - -All patches and contributions, including patches and contributions by project members, require review by one of the maintainers of the project. We -use GitHub pull requests for this purpose. Consult -`GitHub Help `__ for more -information on using pull requests. - --------------------- -Pull Request Process --------------------- - -Contributions should be submitted as Github pull requests. See `Creating a pull request `_ if you're unfamiliar with this concept. - -The process for a code change and pull request you should follow: - -1. Create a topic branch in your local repository, following the naming format: - "feature-[description]". For more information see the `Git branching guideline <#git-branching>`_. -2. Make changes, compile, and test thoroughly. Ensure any install or build dependencies are removed before the end of the layer when doing a build. Code style should match existing style and conventions, and changes should be focused on the topic the pull request will be addressed. For more information see the `style guide <#source-code-headers>`_. -3. Push commits to your fork. -4. Create a Github pull request from your topic branch. -5. Pull requests will be reviewed by one of the maintainers who may discuss, offer constructive feedback, request changes, or approve - the work. For more information see the `Code review guideline <#code-reviews>`_. -6. Upon receiving the sign-off of one of the maintainers you may merge your changes, or if you - do not have permission to do that, you may request a maintainer to merge it for you. - ------------ -Attribution ------------ - -This Contributing.rst is adapted from Google -available at `https://github.com/google/new-project/blob/master/docs/contributing.rst `_ diff --git a/PROJECT_GOVERNANCE.md b/PROJECT_GOVERNANCE.md new file mode 100644 index 0000000..d080ef3 --- /dev/null +++ b/PROJECT_GOVERNANCE.md @@ -0,0 +1,52 @@ +[//]: # (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) + +[//]: # (SPDX-License-Identifier: MPL-2.0) + +# Project Governance + +The basic principle is that decisions are based on consensus. If this decision-making process takes too long or a +decision is required, the project committee has the authority to make a decision. + +## Technical Steering Committee + +The Technical Steering Committee (TSC) is responsible for: + +1. General ambitions, objectives and goals of this project +2. Guidelines and procedures and tool selection +3. Guidelines and procedures and tool selection +4. Architectural and (development) infrastructure choices +5. Raise subjects/issues that are important for the direction/development of this project + +The community council consists of the following members: + +- **Jesse Tjebbes** – *Product owner* +- **Raoul Linnenbank** – *Technical lead and lead designer* +- **Derk Weijers** – *Infrastructure and deployment* + +**Jesse Tjebbes** will chair the TSC. + +## Maintainers + +Maintainers are responsible for maintaining parts of the code-base. Maintainers have the following responsibilities: + +1. Coordinate development activity +2. Make sure code/documentation reviews are being done +3. Coordinate pull-requests +4. Coordinate bug follow-ups +5. Coordinate questions +6. In case of long discussions or arguments, maintainers or others can request a community council decision. + +The current maintainers of this project are: + +- **Raoul Linnenbank** – *Responsible for active development, debugging, repository management, and a backup for Joan + Ressing* +- **Derk Weijers** – *Responsible for infrastructure and deployment, and a back-up for Raoul Linnenbank* + +## Contributors + +Contributors include anyone in the technical community that contributes code, documentation, or other technical +artifacts to the project. + +Anyone can become a contributor. There is no expectation of commitment to the project, no specific skill requirements +and no selection process. To become a contributor, a community member simply has to perform one or more actions that are +beneficial to the project. diff --git a/PROJECT_GOVERNANCE.rst b/PROJECT_GOVERNANCE.rst deleted file mode 100644 index 0f84d32..0000000 --- a/PROJECT_GOVERNANCE.rst +++ /dev/null @@ -1,55 +0,0 @@ -.. coding=utf-8 -.. SPDX-FileCopyrightText: 2019-2023 Alliander N.V. -.. SPDX-License-Identifier: MPL-2.0 - -================== -Project Governance -================== - -The basic principle is that decisions are based on consensus. If this decision-making process takes too long or a decision is required, the project committee has the authority to make a decision. - ----------------------------- -Technical Steering Committee ----------------------------- - -The Technical Steering Committee (TSC) is responsible for: - - 1. General ambitions, objectives and goals of this project - 2. Guidelines and procedures and tool selection - 3. Guidelines and procedures and tool selection - 4. Architectural and (development) infrastructure choices - 5. Raise subjects/issues that are important for the direction/development of this project - -The community council consists of the following members: - - * **Jesse Tjebbes** - *Product owner* - * **Raoul Linnenbank** - *Technical lead and lead designer* - * **Joan Ressing** - *Infrastructure and deployment* - -**Jesse Tjebbes** will chair the TSC. - ------------ -Maintainers ------------ - -Maintainers are responsible for maintaining parts of the code-base. Maintainers have the following responsibilities - - 1. Coordinate development activity - 2. Make sure code/documentation reviews are being done - 3. Coordinate pull-requests - 4. Coordinate bug follow-ups - 5. Coordinate questions - 6. In case of long discussions or arguments, maintainers or other can request a community council decision. - -The current maintainers of this project are: - - * **Raoul Linnenbank** - *Responsible for active development, debugging, repository management, and a backup for Joan Ressing* - * **Joan Ressing** - *Responsible for infrastructure and deployment, and a back-up for Raoul Linnenbank* - ------------- -Contributors ------------- - -Contributors include anyone in the technical community that contributes code, documentation, or other technical artifacts to the project. - -Anyone can become a contributor. There is no expectation of commitment to the project, no specific skill requirements and no selection process. To become a contributor, a community member simply has to perform one or more actions that are beneficial to the project. diff --git a/README.md b/README.md new file mode 100644 index 0000000..fbddadf --- /dev/null +++ b/README.md @@ -0,0 +1,92 @@ +[//]: # (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) + +[//]: # (SPDX-License-Identifier: MPL-2.0) + +# MeteoForge - Core System + +[![License: MPL2.0](https://img.shields.io/badge/License-MPL2.0-informational.svg)](https://github.com/alliander-opensource/weather-provider-libraries/LICENSE.md) +[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) +[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) +[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) +[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) +[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=bugs)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) +[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=coverage)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) + +

+ MeteoForge +

+ +## Index + +- [On the MeteoForge project](#on-the-meteoforge-project) +- [A bit more information on MeteoForge: Libraries](#a-bit-more-information-on-the-core-system) +- [How to install](#how-to-install) +- [View License](./LICENSE.md) + +## On the "MeteoForge" project + +The MeteoForge project evolved from the original Weather Provider API project. It aims to provide a unified interface +for accessing and processing meteorological data from various sources. It is modular and extensible, allowing users to +easily add new sources and models. + +The project consists of three main components: + +1. **The MeteoForge API** + A RESTful API built with FastAPI. It provides a unified interface for accessing data from sources built with the + MeteoForge Libraries. It is OpenAPI-compliant and easy to deploy via Docker or custom solutions. + +2. **The MeteoForge Core System** + Core functionality for accessing and processing meteorological data, including support for file formats, data + transformation, and extensibility. Includes base classes for sources and models. + +3. **The MeteoForge Sources** + A collection of source packages based on Alliander models. Sources are installable independently and provide access + to meteorological models usable standalone or with the API. + +## A bit more information on the Core System + +### The goal of the Core System component + +The Core System provides base and interface classes as well as utilities for accessing and processing meteorological +data. They are designed for use with the API and source packages and not meant for standalone use. + +They offer tools for easily integrating new datasets and standardizing data processing workflows. + +### How it works + +#### **Sources govern models** + +Each model belongs to a source. This allows similar models from different sources to coexist and be validated +consistently. + +#### **Models are generic but unique** + +Models use a shared interface but must implement their own data retrieval and formatting logic. They’re standardized in +usage but uniquely implemented. + +#### **Equalizing the models via ECCODES** + +The Core System uses [ECCODES](https://confluence.ecmwf.int/display/ECC) to decode GRIB/BUFR data and standardize +parameters. Unit conversion is handled with [Pint](https://pint.readthedocs.io/). + +> **An example** +> +> _A model defines a "200 meter wind speed" in Beaufort. The ECCODES parameter 228241 corresponds to "200 metre wind_ +> _speed" in m/s._ +> _The Core System can convert Beaufort to m/s using its registry of standard parameters and Pint-based conversions._ + +## How to install + +You can install the MeteoForge Core System via pip or poetry. + +With pip: + +```sh +pip install meteoforge +``` + +With poetry: + +```sh +poetry add meteoforge +``` diff --git a/README.rst b/README.rst deleted file mode 100644 index 6e539ce..0000000 --- a/README.rst +++ /dev/null @@ -1,115 +0,0 @@ -.. coding=utf-8 -.. SPDX-FileCopyrightText: 2019-2023 Alliander N.V. -.. SPDX-License-Identifier: MPL-2.0 - -.. image:: https://img.shields.io/badge/License-MPL2.0-informational.svg - :target: https://github.com/alliander-opensource/weather-provider-libraries/LICENSE.md - :alt: License: MIT -.. image:: https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_weather-provider-libraries&metric=alert_status - :target: https://sonarcloud.io/summary/new_code?id=alliander-opensource_weather-provider-libraries - :alt: Quality Gate Status -.. image:: https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_weather-provider-libraries&metric=sqale_rating - :target: https://sonarcloud.io/summary/new_code?id=alliander-opensource_weather-provider-libraries - :alt: Maintainability Rating -.. image:: https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_weather-provider-libraries&metric=security_rating - :target: https://sonarcloud.io/summary/new_code?id=alliander-opensource_weather-provider-libraries - :alt: Security Rating -.. image:: https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_weather-provider-libraries&metric=vulnerabilities - :target: https://sonarcloud.io/summary/new_code?id=alliander-opensource_weather-provider-libraries - :alt: Vulnerabilities -.. image:: https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_weather-provider-libraries&metric=bugs - :target: https://sonarcloud.io/summary/new_code?id=alliander-opensource_weather-provider-libraries - :alt: Bugs -.. image:: https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_weather-provider-libraries&metric=coverage - :target: https://sonarcloud.io/summary/new_code?id=alliander-opensource_weather-provider-libraries - :alt: Coverage - -############################# -Weather Provider Access Suite -############################# - -================================================= -An introduction to the Weather Provider Libraries -================================================= -.. image:: /docs/images/wpas_logo.svg - :alt: Weather Provider Access Suite - :align: center - :width: 50% - ---------------------------------------------- -What is the Weather Provider Libraries (WPL)? ---------------------------------------------- - -^^^^^^^^^^^^ -Project Goal -^^^^^^^^^^^^ -The Weather Provider Libraries project is a project with a singular goal in mind:: - - Easily accessing any data for a multitude of meteorological datasets and meteorological site-pages - without any prior knowledge of those datasets or even their specific content. - -That is right. Without any prior knowledge of a supported dataset itself, we want you to be able to achieve the -following: - -* *Make requests for specific periods and meteorological factors.* -* *Transform the received data into one of several supported uniform formats, allowing for comparison of data between - datasets if the fields are identical in nature.* -* *Transform the output for those requests into a wide number of commonly used file formats, flattening the output from - multi-dimensional data as needed.* -* *Translate existing dataset output directly into the aforementioned supported uniform data and allow for outputting - that result in the supported output file formats as well.* - -**As a secondary goal, we also wish to achieve the following:** - -* For motivated people that have knowledge or affinity with unsupported datasets to build their own compatible model(s) - and source(s) without prior knowledge of the WPL system by being guided by the base classes themselves. - -* Allow for the easy access and plugging of sources and models as desired. You can access the data you want to use - without any need for installing more than just a singular source and calling more than just the model you need if - that is what you need, while also retaining the possibility to upscale to a multitude of sources and models and - even connect those to the `Weather Provider API`_ project for a fully functional API based on your wishes. - ---------------- -Project Origins ---------------- -The Weather Provider Libraries Project, or WPL, as it will be abbreviated a lot in the documentation of this project, -is a project based on the original "**weather_provider_api**" project found at: - - `https://github.com/alliander-opensource/weather-provider-api/ `_ - -Until version 3.0 of this project, every component thereof was considered a part of a singular whole, but to allow for -easier usage and the easier building of new models and sources, the project was split up into three components: - -**1. Weather Provider Libraries** - - This project and the part that holds all of the common components and tools responsible for formatting, processing - and transforming meteorological data, as well as all of the base classes for creating Models and Sources for the - project. Finally the project also houses the Controller which allows for easy configuration and acquisition of data - over multiple sources and models. - -**2. Weather Provider API** - - This project houses the API implementation of this project. It uses the Weather Provider Libraries project to - transform any connected source and model into appropriate endpoints. This fully functional FastAPI implementation is - fully supportive of the OpenAPI standard and can easily be scaled according to your wishes. The project repository - even comes with a number of example deployment folders. The project can be used via custom deployment through its - package or deployment using the readily available Docker images. - For more information on this project please check the Project's repository page at: `Weather Provider API`_ - -**3. Weather Provider Sources** - - This project actually consists of multiple repositories. Each repository houses one or multiple Sources that can be - installed as packages used separately or from a Weather Provider Libraries system. Each Source can house one or - multiple Models, each representing a specific meteorological dataset, site-page with meteorological data, or fusion - thereof. - For a default set of Weather Provider Sources and a list of other known popular Sources - -.. _Weather Provider API: https://github.com/alliander-opensource/weather-provider-api - ------------------ -More information? ------------------ - -for more information, please visit the GitHub Pages at: - -https://alliander-opensource.github.io/weather-provider-libraries/ \ No newline at end of file diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..4c4821f --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,37 @@ +[//]: # (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) + +[//]: # (SPDX-License-Identifier: MPL-2.0) + +# Security + +At Alliander, we consider the security of our systems and software a top priority. But no matter how much effort we put +into system security, there can still be vulnerabilities present. + +If you discover a vulnerability, we would like to know about it so we can take steps to address it as quickly as +possible. We would like to ask you to help us better protect our clients and our systems. + +## Report a security issue + +Use the contact details on +the [Alliander.com Vulnerability Reporting page](https://www.alliander.com/en/coordinated-vulnerability-disclosure/). + +Please describe clearly how the issue can be reproduced, so we can fix it quickly. Typically, the IP address or URL of +the affected system and a description of the vulnerability are sufficient. We may contact you if we need more +information about a complex vulnerability. + +## Thanks + +We don't have a bug bounty program, but we're grateful for all the reports we get. We offer an Alliander Security hoodie +as a reward for significant security problems. + +## List of Currently Supported Versions of MeteoForge + +| Version | Support status | +|--------------|-------------------------------| +| ***v3.0.x*** | ✓ *- Work in Progress* | + +***NOTE:** Versions 2.x and lower are part of the legacy code base under the name "**Weather Provider API**".* +*These versions are officially discontinued and are only maintained until the end of 2026 for the purpose of +providing a stable API for existing clients and can be found in* +*the API project's repository +under: [alliander-opensource/meteoforge-api/tree/weather-provider-api](https://github.com/alliander-opensource/meteoforge-api/tree/weather-provider-api).* diff --git a/SECURITY.rst b/SECURITY.rst deleted file mode 100644 index c970f71..0000000 --- a/SECURITY.rst +++ /dev/null @@ -1,32 +0,0 @@ -.. coding=utf-8 -.. SPDX-FileCopyrightText: 2019-2023 Alliander N.V. -.. SPDX-License-Identifier: MPL-2.0 - -=================================== -Security Policy and Version Support -=================================== - -.. role:: raw-html(raw) - :format: html - -.. list-table:: Currently Supported Versions - :widths: 100 100 - :header-rows: 1 - - * - Version - - Support status - * - 3.x and higher - - :raw-html:`✓` *(W.I.P.)* - * - 2.x - - :raw-html:`✓` - * - 1.x and lower - - :raw-html:`✗` - -------------------------- -Reporting a Vulnerability -------------------------- - -Please report (suspected) security vulnerabilities to -**[weather.provider@alliander.com](mailto:weather.provider@alliander.com)**. You will receive a response from -us within 48 hours. If the issue is confirmed, we will release a patch as soon -as possible depending on complexity. \ No newline at end of file diff --git a/docs/demo_source/__init__.py b/docs/demo_source/__init__.py deleted file mode 100644 index fef66b5..0000000 --- a/docs/demo_source/__init__.py +++ /dev/null @@ -1 +0,0 @@ -#!/usr/bin/env python \ No newline at end of file diff --git a/docs/images/gitflow.svg b/docs/images/gitflow.svg new file mode 100644 index 0000000..c1cffa2 --- /dev/null +++ b/docs/images/gitflow.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/meteoforge_logo.png b/docs/images/meteoforge_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d3d1683d853ff295689e09953c503a95075f5bc4 GIT binary patch literal 1518050 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⁣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≦̸EJ@6cO~de0g70LK;D3B z(V7a8SbAhwIRPl}+Z8^8eH!JEzWCXj;soCP-c1qG@0bE}#R&jrNtF7B%$Gyc&cg=? z0VhmGsVrEq=yFE=N9EFA(8tpiA3a3+j>Rxbp|B9ouqjdkbER4t1vQ#r8792PsKR^S zzwckku5e-*1|=q^PMQuUX+_hB~g1i5?(POAIHr+sFOK%m7ZCCcY# zN8$BxET4;2)smyRN)Clqkz}QJ_k@{k@4u;Qi zBd9UM6DOt=`g6nK#$))<2VcOgn>Ri_FCPBaU;gg*{r9LY&`zrmjEv!~jx2t-m%fX4S=Du`p-ya)LM#7_pekF%V!0hpJpuwha-bYLHrC zwDT%*XgfAIF~q9NLcLM~p%#GQ()$EY$@)LzJne^I!|tP8-L)z#EZzT$uAT=L3mHz* zU|w%X14zPLEW&R=ePDjs)2yfUO?grQg!2K9S(6LHi570bQQ{l zGltpE!0EIxAe+RU&arY)0GFN2wOIyeG#L>NZbT8R73j8x029z@N-dw#z|-w^#1LWh zB6W*GiyqLO`K!{{E3&KH3AXt&=BSGk(wcjvf%yEbB zrz<^P%P@E`b9L|pL~Bs^3}Y7%ogP)_(M?L137MyK!^Nr#x04ne<2I3KTtUzXqR7IO zt|Owmy2A0jdF29YytKVzI?1jYF+_<}<=k101F?#xwK~~haWHkKn!o|i!bGhqnaKe* z??hyxW;yJMh$MDKskSU&7s`PetfhbjnPfoK-KgOmPw04S*M&^Y<)3nNxlg`93+;1;MI+*0W?Z~`*g*6VnxdN3xiYd8Zj7_kokB^FJJ zp|;p~o$IPA8enwD1aFe=p%PyqRZ|Iv?wV5##ouyO<(qCTfLJlqdT6DkYu(iP5`hrF zGFT9^Mui&(WUlfPpm5|F0`5z%QE}?RVX%TBQXH}R0^w#DASz@B{UeS9=;>qjui4c! zF$RM2RR|H7VNICEW@AKfYT>Hwg~uXSgM$?!Z94u`z-b^L0t3M!#hI4|0N`LAF;OKJ zn&-o|^?{}-IdE|1qCpb{kTaO0TFTzPsY^o)3|4e+kSa|RW;K^j@lzC z4vaB2oL_$&M2-3AV%~fE4lmz*ea?5^2|Rf7>?}4s_1rV~ow(wXZMl6{r^GlOntUaTgG)Y8_J{(Fw8}=`=W|Gx1gKYM)3b8fsX}Vjio_$Gbr1 ziEX1ge=9Tm5Nwi=bHdKcY*X3jx4(16*?PCNp1ps#66c^R#aXupb}2aNbba5ZODeiMGj_BDziPJUB= zTPiF~s;F2z!OG~kN--)kFsSoWu6i`!rC1P%pZ&#O@&Q&AtSAIaikT-aK%+Dx(hAL2 zsL9P-+g@qB&h=;m2Coi7PaH5Cf_bOHEl|$D%(#2$2pTBvj@R4XzWR`;uCP9&j+({dUca z=!2XI)~+D(%H{QKLMK5zcT~un-(~q@3f)5kAP&^JI_*Piv3DPYSnG$C1Y?OqVVy~@ zUD&L3qS0vnf-4-P8>N-Vc2`hBZMj^rgG;?YtEuSk)5C>aU2VaZzUCCOq}a)Ri=y>o zbdcXjJi0FGrOcH8^wb~r<EJ$5`i{eIqf<~f{QyOw!4 zBshb|M?4;9a=+|`+!LWKA~i&PkgKmD+>ES$D;74*5cfK@LFhZ=0Ax8G8BmQ^4Brc- z{T&W9p+;3K5feL9X7dtlbPT-6+HoWrx-sS$sAm4qslEeDvql`mHY^06)3A|~?{3E! z`gk_wxDBj3v6Q3OSkpmLAWa@9)&haziie317dTjH)gphdyh@rn>%{{YVp|g`>nez@ zXwqX!BYioHldmF(FfszdObc7vL{~=LbDWysHC&Ze6}N&W*2awBR!WW*&X?XlS3>8m z0IEtNdrDW3bVWR-7smlcI^dy#=;%ZybR2;q%KgSU6ijt6J zRNmwUl|DG?gY0JtlFUszS6A$|o%)c_BGhG%2zn?}0HX>_O@$1PEA{PS(e3e}QLMbu zUrL_*5PK`bz!{rKW{0aXq`o{mRo2USM!ODjVcp3LP16F27>Th{t}lt9ffxcq!}hHl zC?M=}Rgg!~(kN-Vd6(+-texlzp;Of+8L)IlEU;+_(SdHNp<{GpY09M9a-5VQ zNioU7x@6vX(=esrwf28Km;>IO$zj)3RkR6^kB>l+%*qgO<{;W0N0^u{gbskMxDea)g=<+tu;pB?B)5)L)K;S4O!t6+DdtDV@wBs1lW04> zQ>8A$r76awK!ah8D9I5(ma8=HP?YN6lx#yMEXMNy4q}@EteNija^q1c3tm7wTh-5p z-cbZS%p*iPAA$h14+0!rk&sS|Z&%e(Nv2{m$FpeB<@kj&I++3$k#&ZBY%cd&yQv+vp`~ zbo)-991tT?)cfpYKA|E(+Yv``L9>(^8E-Zp8cg9TJhFq$D^D5gTu6^hfP`3?<$New zp2k(&>3z0?LT?{C$?Q1Wz9RrLAM`xk#;T<#Ujs2(Mpx+_QwYG;sqAULJUJ1>%v14K zr3%}+-jEIel^I|CemIwF)&Y6MNxv)lVAQP1d?K@)_tVmOlYTF}yFfh8ELubZWE4B{V3b zRS-3~gJClrj7Wmbpy;H_20J#KL^!YvWcOgx>*219g_4GYPf;-K5SucL6WzMoH~JVl z?-OMzfEEPls-Fq++V^z{V;MiKR%5rOfcu?R18F$0BtcHF0yl5n!VAwohbM18_Sx57 ze))g-)h~VdPkikg-@NhY-8Z@KIF4ISU_A9KZan$EI6vQ_YL1JGM=m2B3&o5PNRHs> zu0N({*Rx;L!Z9V#Y>G}^-VQKb=AueVw%bcW)X}JTLyANa;2srYh8P9~L{wB{Tro7F z!>TrET)=Z5wGA5>GY4W$aCo41H#h~rU|Qp#d{qo6Zwy~{nPCzXc*ai}_%DI8Pf2kzfG~tCEvrsW2H02NkIS@t8 z5h57t$|@l@7&tgl9d*qDbIjx%MU8T|yHiQgCiCLF(J_*(M*7aIU}E<-6NRoQzP7%_XD7LJK473U?BD=UKj!u=U@}a|iEeeUfhPhfL{cfI z?nLP>0eb)$YHlI`+PwFMFo0rk&?(0vP0-|ag~nklAwXGCh)iD50j54&PF}`M1s4AX z7|d=snh*fU@zl)FoYQF53c#G4l^mQAhposM z0q!MQ$T*WPRL$;e+Y@JJOdKEHxsQjhyp;3pAI!sH%coy_KR*8HPrvi2ANkS$;MP-5 z{-qzh^6EEV`Th^^@X-afZNp(?BaBWM;h50?zrlXEeY8NeV-BqNo7Dh!-*e{!P=y=p z#8O^83T8o@A6N!pVl9g|K_C`gKmB?=koHEc9Lkr+39jHWc7EsYNf$q=izMha zjp4k@1sd6Z6<7S3xbod{;0C7x2G;962d;~oZpqQV8#h=jPdufor7VUKOBZ*#Xy&!)Ehn6g z_4#9GA)RZVKJT=j3M~4-cH2oBd>nrS7xl>xAeyqR-~e55>E9C~ub=DaOWsWfj#&HxS;sJ% z6UJxykfcM+IPFdQ)lO;6-ScMpdDg{O0^UhCO#0LWA%}u}K{_7j)WJuydSkPMcH8K+ zqW%IMlIwj}n3-3QOK-4C#8|UfP1E7}{qV)nDNr@DQ7EY5;H#&`cOURZ@C*_tb|V%= z2;NiYC!H*Ia;}0(in96M)m~LXC9%u=IO23|tJ^pn6NdM+^GXUude8nVGBF?!K4)Di zNEf7`3PTPmG3dQqCdIpE1EPO-yGS+w6qr@WBA$EhIeg+1AO6tA{Re;HAO6}u{O^3} z_x|Ae-FIFGa#UV>V!!o)59isFw`;_}-1jjrE~4f!3C;%$^$Rgal)MHMryo38 zp_C{aB_o4QFe9Zr1fYVY;D!j~Xy7bV(MKSM&eM#6!Km6Yw+YN)5ve*^{z34VJs6RY z5_JuQ*I}Q@NR^NXR+?SmTuc;T8J1cldZP%{XtJCnSC@=hDFqUAPUyfVDEsVVq&-tB zLl7~kiN$C}oTu*DBIusRrr?nBg-RqMMiy1xOU2xiBq~BuRB5vE366^dG^ma_0jeym zH#8Glp#t=Z!&*%eW0z~G#PCpxh{e>1u}f|TKq>@7={29BlF?x~ZC|=aT8S02C>eYzA+uy~NOVX>Xel;?kP`xk zGUuT|VmDPuQLTaPo>|Xj9RSz)QEH5jku+H-g;zyP=cnoFuHkeUFN?M{$&HXI0*MjG z39nzV$7R6zZ`1%0!Kf0MFJ1hp$QsH820N9f2h{6VyAi0L9I9FSLi)~SU@dx+peN}L zY)6I#U{gf9lj^=F$qFW7ixg>_+zr>HtQA#L)%7*1hc+Wh-&GGVD66-#+7+WJ$*dgd zPI$K5Hz8`kP%WyE$O+D*8pGJ}AC2_~ND4_UM=c$ArRqRc0AtFXvKP5|EmMcD$^nQzr3ietqhL0z%vB1 zB4&02>nWfUE)B$p%qci@PiiWfdB;K$xTrHVfY?C<2Lv25g_lgwGPFc-ATR|WUkMH6 z)#O!TWmhtiz#fbZ5ixvP!4fks$k~k|n1V++#aXD3@}UxhS>-~w+E<-0GJ?VIcFl0E zSFFe!?DyoJ$yG@X)JQ}{sn4;(qfh|Na{&X`kXgB%fn%FEKFs;>!G7n5Kg53btqkz+ z>Rqxw0CYxcHf>E|7&aIg)Ke6&)*o zvQ%a`4=PP>fpfD3EG*iilmGtrj**-@tyYEbXR>SQlXT{-I`V2s4Lrh>)C;DEa zaQ!9(YK$3fwKllvJf&H!4eW#qfg0T$uJU8G)Bq=zAG*K`E;jqpQlV!8IH?D*+9htAu(Qm^(0J&^hWv`WX@JyUD0 zu%L~fzDH&@-t(Qk$qR~#0gep|YXZehcCC;=LtYsIh3-ElnT%`A~P|M`wZ5o%bok& z$$g*u<)hpmK15v{G3Nzp&JE1Kd_<5tqLg1^y6iL)Wa4-UMTCo>}Ke3G=D$_MM3~$Jp=LxX`||5jZ`#IO=yp!(7tgREUg)B19b@?cJ*FZ zJre^GWAMAF6WofFp~z5mkcmdY5=Vmhjl#6g=Dj*(G(=?y-J=lM5Z`}`K+)6tCJ=E6_{q>n@dLH*cVh1*7EQQq` zr68{m7SG3a3Sbn(hZWE+5wU?$7||R8f7~Sy+a-u0yO{y7GU`COlQ(#TMPoefm|#gT z2)mwNv-4s#?E_FGzXK6RWnvq2=T_rG_yBY;1D&z(wPpZEAcmF80Qa#IsG;#tN8A7O zJ9Ry5MaDqzLZ#it-~vj$GcYf0zhYbwTY~(L&oOdGghW`3_vsD=z$1W7`!Ce&6gc(y zk2tQ%&oEcZB?yC4M?@X~^R*En{0II1yVi9kFkJR5kCX@^@`&K3UQ;SSJ5g{lGLIrJ zWtg!*r7Hu6C!UVO`HjnKk6*9t{2Fo`;%qxhY=bcp`*A-c8C7!<$8mY7mgWHlF)K30 zEMg1|dxR7W>?Tk$*}FjCD}`Y?Mt4ot`>xP2%@bPXvN4d`0oXR&fBQb~f9;@KE z#*9P=HCiHj1HhgkkvpILE>5G1dz~9hC?pVMuD39FpzuXGP9c!Zpbpxk+r*HIR=!M@ zb3E{rze%K533-PGtJO(;7OOq-bY%5Ar^>2ZFOaMH-*LMHpM1{^dZ<18lwb6@!4q7xAI`|v^b z`V0`0i5TTECvAJ>ht%Dq|0~LmR_Ni|=CVp3cthcTho8wC=*<`P zOTIzpl0LAesRUGUJ{f9+x(83xJzPyp`*Vq&d*2&u49y8pn%p!4q{W_j~ z>KVN7!ZRP8_wW91fBm2Q_MiRDzyGU;{c=a%e3Iwye}7zi`e}?9n8(ZD+!3=dR?ng= z9s``JG@|E-3l!r-a8!lL_kA8WA}dP)0tb3|e?=e)egF}Ppc zyB8PlzJvMTPRz@T;C?v>03#9eh>-(l*KT0Db^~YE&Tu%pe!PD3*1Uf0oEMjuXJcb! zY!w5@92@{L24f%&XV>!(+`&9n(#jKKM9Ly>c}UbG6Ela$JSkR>3?%otv1%sbILR!h z%@L6mjBOl<*b(7sZKT>0R1M~cIQLB1U2K}EWJ8y6U`D2D=)3G^?r<5hSi(kR<7#3g z$=c-pt7aiKY{4jOV+U%B7`y42h%C%woh553Rj4Fm-+)AFaMzZxMUKgsRfr_P4Uvd3 z5p(R1j)RfR5yxU22I?YnL{;oHcout&7=gezlC@1@-*l)#XBqC$9>*9+rHTq}XJNAD zd2Sh1*tyT(mdJ{%oD8N=73oILNsVl_tOLqL>k%_5$4-$#xQMioF~IXA_Bf>f9;H5p zoTxh6r_u3kJ3^Hme`f?HSalqTL}cv6Im#%OT+)m&$AM~zI#yysiFHhX6@gK6_(*oLOhRk9|dHXt;(eR2SU*coxYM^sbYk~DEJn4V2JMd{$qssY6U7{xF};*y$% zHAiGB*sDC-#-;)Z_ZeWZ_QBi`qZl=g7ss=dEc_)?gy~>pP0k1$4qJ*jk8uPl)&I{E zJ`;HW_X2Ylku`Y+>GB6SlGyj+HZo_WI)Os`nE)6uvJ#lgQHU6`YNpF~1QGju4BETP z8FgUsGIJ<~%NT(@Mh*hGm+Hva;0k%n!|`bOv=K)FQB(~UoGesqV`K)v%pZwEbjx%1uN>?z85IN^G$gBcm`? z!vzC#V2^zyH)I@Vaf=9PB4Y$<4<*JyfIA|xI3p{8j3OeARbz;+Q#q0%JODd2H+=vD zntU-!%!!Grm`tSL&an-#t<+i{m)6{i;zS}cGsXl9$%q;XBFTD4sK7B4T9hERG4zbi^>DfH|%)sv!He&EjSDK*B`UtjGv5u}8!K zz@8NrCEO8tNMbSz#bLx9jEn=B74!0PQ*%#FuyP{jnc~AVKC@L-ATUY9tl~f-MQRJhy-->s?`xWxxy?pHadj0elf8pZiKmRj-X}k8=|NIZW`ppM#z5Xg{5{HqA zEo+)4?j|jlj<3YNR7H4nJh)~|ceTIc)W)|;0VW9yB6nd%OTawl0u)x^lAYgB#l&#( zogHpF!0*-thpb9Dp(M3)ABVY}I|WqO>Y4E;K{tP<|GazpGs?|uGKYF6ILYpG(0Pcf z-Edyqqv4&FyOQ5JME==TnBxLi0LA?Mdo4P-2uaOkXi2r8^at0NOuf%!D(_qj06{6e zFsDj)p+8!N-10G;ZlCL4b=u7<0-mORou)RQm=Wk)6NaE8kTqp#jCF|+OF7-__C7I5 z8Y^!&t_+BE5xDc(=t{nm>h9LJE{MK|Ck;KiPQY0hi*saL*#z}0w{G(0I z6+5DV@=#j8`mMvlca8A*K^EYUzKq1eAlHS1et!ZgyunHSqSyG;uq@WoNKavM`2Dq+ zJ-T?Ls_Y9)Nf&YHf{>HmwtQ)DLP{zP9&4>&8?Ez_-mnHbyzb2aXzV4qbZ^>#`P{e3 zbv-39Xp{=!N|#V1psVOu`_O8mu(~AKrG49+uA5N`tZbAnWds-4U_;T`UV6#X_lUs> z1MzT?i)Ik`EFc%qz%C@g1uw&`s$Z#C7wbDDIyw9AmEEe4$IUFVGBd)$mFdk?t0&0h z#Kho;OeTwy0B%3_7(VuqkH%q(fB8G#{KmiaPk!^CeBis^{5mj?I6U`>{qYw+xM53> zv$7_t7>jP7T}1GGNkH>RhxecmqF87uj}|CEw*aFUsbFIuDn@ER*ETS=GxFgDE)jEo zbiw1rqu`^5yuAA^c<;@D`4Gsn1c7n=8g4!LR6X_7lYH#^wOyM?$)cFLifkkPFRmsHPLFtiGeXT0K|+?59F>Q|8mZ$0kt)W7IA40U{mgOQrHSXE#W zXJ;LOow7Yg5L?N|)Br{vRERAiP}s|L-5`JNNK;$m_!GY}%9TlUGDpG8D`_FjTR>N()cOVz zBL~35*i=oWE1-J;N%`WOVSu`HF9{skGF}qfL?&Vc=ByQqg1dvx#I`BE5Zr4qKF1w_ zKyE6Qqn4_WTl@o&5ivH(_Up{=)8oKG#`$nK=)LI^TytqrB>;@g!mksmEW6T3XdH9M zu1ni+cDs-ghZ?{T7QM#BmW{bIA2LT4+!xI(6Nc17t+z{cr?E0dM9dhu1-5N$ISw}; z+`aewwe#^@AfCOrJpSC>yZ1hN@13_k{N`J4KKtm=!)tfndH1o`UwJL=z4bbdmyZy2 zM2&Og^~dLS{W0X(HJ;smy7Ky2#MwC#TOuwq!Kgh%KfIh7i5em%DKfX;Sn@Vtci zU-`;czm8cKQ3#A2-FvQ<4-}R{J>Xcc5$w6*L$&ix#h1G-3ElH9woMby9GSUKK0EP8 z2jZvy(nOPRCAsIUoxp|cgv;c+C3fdn1W<{Q_PrS`9ug~Am9IE`a;JBwfJV!P+b9ik zI1kg$Io5A79-E-jy<-sIfYRVvg9NMf*hX*t@AW=F>!|tl5abm=$lWR3kknv@c1!oa z*~|1*uP&snm$VIPz+s|whkg0b;}6?@qf>hJ2k2c2wVu0MgBMxIzq7_YcEV+`b~Jc^ z6Zx>?F#^a5%t7aI?wPc|0jAwd zLGGNm*MPo!f|yLLKUKc9ys-$clQ^MVffJf|1!S2B2e!+)7yxUbAE0|y(x0qm;GY6pVBK7a+gzp709VIjM6)gy&BQGQDiED6 z0s_I4s7o_3)`hT>*WWtXD58b_+B&bRZ!kjvtj@G%uKGe5U625=*$+9?C+rr;eI9Y` z+AX~Q#rNSu?|<>}*I$3@|M2e!n#e>X8@ z{5P<6M&uZdSj2NEvsj{FIi`epMP^Y^31JCkA%PqNc{l(uX4FIlF)#Ode0UL;ci)Nq z-8X~#k@eu6fn?-1aP8)kc;eX?@XQO(KYIG9r|#c=>h_n;X6?^B^VDA(=hyxrv3=+6 z!~1VU&Hdh^3*5c`5OYo(FLoSxG&4d-XjzR^OaqwRlt%tl zgTZmg!2)9P$We)zff13cX|ZBg(rN}cSW)KM536z<1dWCSYUNKv6AQ0%R|u4r3M}U= za4_N+EGNv0BVew6V#17e1OiicS(OPZZ&b3f7y=hY1@@dcG}}Kc9_+M4m7#`M1nCSY z$t=tj3_5iLq3JL%7|c*tgA!yVfLp2!ZL(aU*^p5N2IWdU<|#9W!)2okC>5te&dD+f z$n05@0QX=FqN02g6!^%!sVpp(o}Nhnzx>~xx&?Y@O}3bxIo4IZj1Ejsfwa3YRh4#_ zBCkHL+>3DX1D`!s*(N)Hh7*u*4j2GJH)9r8BLh07a6gGCJ)%MR2xWvyP-T6PiFrzD z!wMVg``vKjyPE-&b+TkXvGzpv&@l`JzRA|=JZs8}qh_i(KVp!q6+cx?950W!e&ZUp z9C+;JEnK^ChV3wrNStqncC04V`M@fcxJNW&ma#9Xy< zLaHm;IlG)-q2{bg#CCqpI9yN6xV-oBE91crzcTRXT|D!lAH&ao;U{1E)F1imU%c~h z|Eu5q_P39B?>+=sncH9hu|?GGK7FziAbLWK*0x33l>f*UcVg45SXrnNE0aUE8i6gu zdRBpqt1aK&ME8q?R9>z2dZi%R#mF6QWnH;x7cml`;ycN^%u}N0O7+S@J4Og6t~|j4 zOP^~MZJpYRyoPRmIms&MK?ZeKoGPsEDEpfX6+;vsXi}5qSkSbGp!NAz{NSoM`*_cF zR~KsF*R$}*N;lao56Ff@DGJjVEL1+d-v*Ua~`XIDouRp&>N9fQfxHt)|cfUH;JDyIIk|8c9DVod4z-XjHj|~y? zKn#gBKeX>GgcdOaV}=5uv579^uS=? zrah;W&4w#KP9_PbhpHe>qkuu6hJXWA@cpooneylQJb3RDu@qF*<5boXPqT;w0<~l4 z1El5md4y;))0LB3=hyM0pZqwUeB!B}`N|*s&i~=p{{FB2(KlaxN!-O3K2|rMeZJ1F z-`FsZsLKmg^E2lF^AdJg;@4OrH z{@vq#|Is+!c@?og+9EgHdg3WO{q+0r^z-lI2S57pZ{2?E{9D&=-~Kx_^FMod@!;!x zbbJS_M~^Ni#@Uh~(mr z_O$Pi!|YDTWVi;38ij))ux!g#jeRdrs6bO6HVX@V&FJ1VfK9!!b`zj+0Wsyc)aD~w zP~2A!TnkqAT@;8&^hhR{0!W4F7zFkR^vI!81t>8#gIUE@RqphIeP>m%(|0!_?v_x2 zL#{s;BQ>ENCLhKa(gxJLajs{N4mNXO8xj&nY0WegAT8(vNR-;9g0^yIHz`l4)p8tO z$IT!5*$MXrHjBac(!GpKB^a{9`uq;W0qCA~AYy<*1ddw4QG>wg;HSxQ=%8ID z8rTalhUuz1y62HdjI^LpLc%^~w{6s%T?KOkv2lI$+zYu)pf)?!M4ox>w4bSp*h1n$ zfpzvWLb6AwMAnXolq$^)twF3rnD7d+YtE89+0gW#J7W*%!g7vOmo!Zo3eaC_Y+*x!`J=}8VHSgzxlLje9Iu&>2J(;Hf z*ZyH89b-n#5LO>u@soBer;>FA$wZ6-_5tSbI#<6WdX99*XH7GnK}6Mxp`sJ+Nc-H~ z=QleE$iOH@_n-!Pl8_bc6(9p32MT)!aApsgDVTi@PrW@Wv9at#^AZXtH5W=e znPs53Y}xR3K3@0UZvhZWzQS>EPGYL>-G6U7`S94(EU_sa9i8tKa|rr(Syb<=bz*_13um#+#Urj))uE zC9gf1=g&MH*Pna_XJ=;sEB51M^5PPa8xb?A0;8o%2sGCzq=t|km!su=pcdLWII+*M zBe0DPapQUc1N+^(`Ode#Lf&~bZr;3(pZ>XDy#J}s{q$eH{`l>G^YxcsdHH)UzXH_6 zcG$q3=I_~^u@JEd>|41Ce7@~J6&L`uQga0AWS0#tiiQovxzR?S=xkxp`Pl+=+5xLT zBCk~B6&1J{mpav3$oI|>XkmeXzOm!Yb67br7dHyf|s`bj+|KYZsQp{%l*W2TQLH5kL2ZU(zpo)7fif z<5OL^4!A(7rE9?jB~UgvivO`!2cu2{!_=*4ZGU_Gg@AQXhbxD=eW*5tz3Zz8O*D10 z6A4kFxi)ka=Fv19UjRc(<>!wWx~L9DCqtDq&%2`0-{H$Tk?te%X1NmGK*R!W``go- ziPQ5V*7X!F$W7lVGo!WfdN+El&!+(k0Ga5F%Al8n-)0%8syY~5z+Omn_s4X=hYHk& zb=Y9>sbO{aQn5&`pLu-4(mqtNjvq?JO>^2O2gpCse_wPTz(@#Hx4}aogc=qvIfBFx8 z>o@){f9r4mjb|_3c@wz#`0@JlKNi=XeSQp1g2&+T*qg2=Wv{Dex*rud~jPY?-QXsi0L|0YmqC zCrs&+mvWmY5>wR2BN1Cj+i5iQUz4x0hQJcReM3IlC3Ht6hrbG6fSk^(w z>;hSXO1!#_B5bQ8QM23<6{cA?kQ4%~CUk!R)I5oDtxBj#1fj)H0PMAhtKhEpUsyJg z*iboDx#zAT*)9OF<#IHXGOq-gI>%XV?^s%%IstP6V<;fUT8}X3A6S^XL5mUL3Y;Q_ zSw1t>v4w#S8y_W8em<{pxhEM(%xRy=vVF8?aV1+cducj}k`eBFSAv66O<={AF!(8^ zk$rrefc`48*g&;ASdy>h=z983mY=U}Er!>mR;y+A8Ovy$;==|;3RemqUY~||O_l*W zeoL<&hm#whVKZf>X|{HLAj|g2$-qdF$51X(q$d1Oqu9FLQ1v_Czrxb?>G_o1Nv*i! zN_9CE@3G8&2-yS4W1R{oCGkZkd#M)1%5{zub~PZxE6fi4y~ephfPTfA-jz8bGGgup z%`KUeRp3sL6XX0GH*em=&1>hle)Gn5`>~tXavMK-d44uVF=Jjl0{5d}%2JQ$X-{>?Ms_RTAY&q>f}q%} zi)3Yh_Aq#Mer;YpJo4@Df0y;z_YT*_9xs0A!}ytB`sLq!`eQ%(=U;v0l`p;ay>AP2 z9RN0sAui_;1^EpzD%!_*xQ)*w*u^M;#}TKN!hjRd^!<_wi4DzFO1R^tD=a^B-rm?R5|qHgL?l@)y0A0xi2*a_M+2;A8oeLQf7`fJWzX{+Wbi zLDOwo?B{Oqpz|OY)F2jX;ws?M@qJsF^|S5w>olqk&K-N20g=83STh^9?Wf z`o8eJZWz6D#|8(h^M|lKF$e(XG-};*T-g2#-Qt{xpZWYRBUciqfWL)cVHCzsqkqz2 zPQ?nsgoHPh6bmrun-)=;b4{JX9#?TfN}LEc8vxq4X{Xl)ex*pR;x#qBn<$iEotg&V z3SdUA*_N^1q2s4c(Ct*x!B9Yq1qWgF52wRMphvR-ME7f)=$Y{4(9X~a@9?@X`ijUA zl>=%G5#R{`iBPrCeV;;%tq$pA7CvMqn1a3cQ$d=jx;7di2V(ujE6I)zW+*8Yd&gE| z1(_Xqbzx8m)B=al>7PQf{>#7hYyarq{*8a|H=nyWKB{=^ z{m1wH$S1+G^KDiHA6?EsjZi^3XXMPPF{wf3`fNqs5ryK=&wGs&-!sM-9ODq&wnA0T z;}OTZZ(rVd>uuoeR|Yu8`ORB+>iPHM10VhPoge+NAN{M3-@f&$JNN(3!w36o_wKxN zynp{b?%#U=j8qR|QTps7i4h|zK*pp6Y=nq1!cF&dr8*N?q1jJLG`pG(3%1yK$hrws zi4Jj;m~|VFav{D)x59-tyFSljjjL4{83v9nUWSoVw+d_xz1vB+p-zB%Pvzt4g>G6x zg97TO@#!;?B=F7vR6Emb;-0I=VPkE&R-JM!{RacFdVq;BG=3(4N(8EyDO)m&4vNiqcNJh8uJD)bcptLXCHPQhy;P{9Ur zb>gQSwVaPmlh-hu7)l;dzH5e5xT}JhVG6YkMX3L~kDS@3W_x(8oID}Y@+=1N*XX4X z5YSa#=TAV4%y@^{PN=!gGI{Tj>CObZGvK6NQ zsoU_1(}|fA(5_qskUM3I((wlA*0D}{J^Y~H_dTKSs_qc6K?SNSzDdI~X(Zphm~f2I z#SGu&bUf7UY|>mJ1{oFZzu)D*f>;#O$Pui`*0Lb$)Hdi!`81H!`#ajtx_m5_i472y zyaZ*RMN{UA?umjl7+oaPa=#vy>98O3wxtU)H_^j!l7{w5QOqkdaX=wg9v#Lszsf6w`ILo% b7&?> z1KQv&0JlS32RH(l9d%Cq9-`E?;Gk{uxtdWc9)@F@>BMb>MZ9buyX_%KGb3PT82$ZW z*#|ar8hD9W zCHi^hhQs+8p1yqxw{G1&Y-joLsQq7h{nc0gmG6J=2Os|CSH6Dz&DVYq$BRqE`3-JQ zzkl9*=Gi>IcAddF>Uf-m>8T6>4YOR{&Af?$K}IG}bMCcaV+{fK6FY%T0B_c~e$Gqg z{_xdT^YZ&&KaAreeE7p3!B2eQ=fC#p&-~PX=^Nkq*6+Uj!l>4on}gg*SMI(y|1p%IJLjn~U{S8NCF z0uh>Kq0dwf*Bh*d6bhothcsepiO7=@eg_!3DMEf_c+;8kT9i&^7or~R-MxGYo|dsk z0FXd$zbD1+u{Tmus_huz(OX;XOh>2b|40KDU3qkZyLz``Ia9zLZcS5eprjpbTXhZv z3^SZ;3Gr1A8(bZ7!m6AYFdBDN@xQC@9UPR)Zrvj$#Q0R%XfHzO^BMrqX`qsr>af*I z>*tAniN(S2g*L6CSHD|5;ET5oY8xsCoZ;ZTX`2!TyK*7X02HpQul`=$n{oOZVj%V%vV%FjLAKjmN@dG20G~y-gxunciw(?fBl_1xP0&c8J=sK8Igl>)&#Z#Mrm|* z`<}`L1tW4`mWx(k`F8K~dI9Z!0q(?=nH&j4aSF1W`Y-8D$F-`$u1jwm& z4{vV-VonuwTbo1zGQE!t@fLE3M!fVg7#iyyN_^J%o<`aHSj*vtI=X$-(GxV0!|a4pVw@qi+MJ%~c?EH*re-=8V*6DzE5bz$#lYA$ogeo1 zIyn>26%Hy5=GDo6sQpl%>fxyh*eh`u(=AC(aNVMSX3li5LE$(1m4JA?e9+O#Q1OHf z(!e%K`#myk>nBQzBewHOFk=JeQ6>jhl7iDevS|(M5Q>X3By5=-sM$hWNZAjovsfTv za>WFFfCw>d_MIojrVBJ8JFu4r9ipRqmpg`m7Cusy|LC@-AZiAN^&`MOI|hpr0>G-? zTj&Y_q$`2R&^=4V$_~DC=L}FpS!YU!$kNcEZ7u3ld29lGFd~zzE7R6G;Ul>wC&jk8 z>h2!xEa}zkE@+Jr8wNrRJW9X-R7v%V`z4OYBd%Y+fg3k&;Mr&2mp5))dvTzC@twEc z{#XC;?|u1?|KKZsI3B+BO3cGe9-e#=H=lkg4(DgcJk)Vsg!-EqRw;MXI#ubf?6UEQ zEKUZ8xk?c^Cg-kkGkL_>Ax0eH;+?nS?svYijd>4GzVG?@h0p)O?|k;BfBawm`ZvG- zjqkto1B^Ud@i~>>m5h^|)fA z0p&!69jzb02yD>w+UVSOu>fMliFyyMdjoRm)^3%ruJ}is_V7KQ;jmG5{=|xI2d-Ox zl`Yx#+wBIn+l2giBG&ZgfZ8v+mt3G>KVJ5WVZ7K6u7lWhhOzXH%1`FRAAa51hjs{zQmFW z676b*Quh8;=;HTnh;~T14hy1DyVG+;C-xbu_rt@G`=OUN5a=O?-HPYvz}h=gMxRzzA%=gvF0cyyHEo4|JMfPL>1 zCgD9!DxsjOT7{(ui$FfY%a*OVBmxLB z2=u7v4$z(Ka87KIs0|o}20>FcEQ&jUEluqtN_6rO3 zB@m{%V_z+m}Ou9fCIk2t(+0u z(xnun6H6y3l08cvYoefpyL~Fb(rB;95fc25tI0(mFb5+F6KwF~G$u$dDu+Kbqhjdj zrlKUyQHerrF*Jr4>j=s@XT_Xk98{{+-l=Xaqc)SN6S4w517oTH(79l^yCB@Q;U8r= z=dun>>_{9ScWQDmP48hYn!o%u`adHP9xRa&QPluAFta!qENPd8#N$98rkYuqGGtYY z`GsiK)*e7cW>TZc0-`%b6WnwQ3#_6#1Tlb`0~s^Otr&YYSmN`Gl0s5oUqCUsj~0o{ zO3o-IHcHZCb{C}z0xnSS2*!|J!YqBZvT3={fl-C26#{Soa?(|=a8Mn=onVof;mgAo z$_mG4H7RY4hz+QT>AGAx=G1!V?njiE9hzpUsa_QrZYZs^>M8f3_9MxsR%}eEgAcLK znHmr|ORXdVNSR3O7cwJfv6?Z+3<)cCN)5BIiW<-tgOxMKWH5LHaVX?8y%z@I#AXR_ zFoRj3v|qwiztmW~A}SFZK^0XLFz?lzrg>=kifMA@_vU}g@Y5XCY> zBbXRw6e)HJXE`*9tGH!)E;__=bIWK24+M@KDs(<4d@YHb0~j;rRH1$ZIRdd`1U*wC zHm>uO>JM&a)&}N`L}bW6WGIH>p2bmFGiyY}lu>L^Xrcmpkio%`Q}MTBJ_L}GMYYJR zBJKie(4?NuLPt~p2e~&@th3ozfnbGOMVl9aq$U!mfJ|`GQn{T-w(Zu%o|Fh)w=Wh; zU=zf=xORRMFFyOs^~WE(@khS;&9DFK-~8&=|LjZO{??6$5AGJW^Ey2CbX|Y?nL2;+ ziE$W*to@k#f*KG&e%3z z_EFUG26)5ObjR@4%V|ci6#q4!_oP2SCz_oS+I6l36$^mna`6i}aIPcm0uPIF?&P*; z-yb@%st%irV6%v9dd0db`E}b$u>i`YEw1|Ebdf8qHM6MbeSG20dux6;7{_8Wn03`a zD;z8L_pQ7RP%OyStm*{2>r4K57kG3>)A_f-{VVay0`~hqn>o|H{!r1frvjw&S>qh1 zHSgHvJ**48|4K&{t!l~}dPF+(tjH^ZqXrTI7p^ACb5lWs#+ec!#3{d4z8w%tVHlJT zw0I&E6s$t5rT~~C-)<|Zmy4uP=oPtXBNM3E6>uMta41*_d%f`%sF9#bt|ZeD6;8p8pGw($8+`P5Jg|EU8$>vL|5`vFz?DHJPZz^# zn$nIlBJXPQbe~vJGv3P;E5sG^6*LVHrk9)$ww|#pu-9mg0h8|O(B&PcK3HcyX;?=J zw|@5O1iTYgpheXBKrU5MU!Fww@#qq$c-m`n71g@(ULga;C4zwW{G66BT)ZOo(&u(- zgEYDUass)%2UrrUe?ma}`7`1w=?C53kgl5b`O)8{kv*&`;fRQRKjN?re)N+c!|m(W z{)@l=dtds?|LE`h?OTr?U0{3u6Z`ECeqcL{!OMqtQO6lM^jSsqGuB89!Q#z;a@~m} zBQ%nmEGprS?U1H}&$}M@eh6Cf4x0+?LU0$owx5^ z+`Wf8ckklzVj@$N@~)x-u95{-PqRP>^`T1ROSxYo&ds(cBijP5B>SkUun)Pnxhp(U zDW48B2_T&e#}$wZa0Z9Uz$VRPRb&l9kXVQ~0#e!cdu&1M_G%2~RxGJI5A_!#fGf27 zfda-*l{aJrNtg*X9StXzpbK3o3+1KZATqpe2!jF?D5vu?VnrTs7d{mx&}Xp?8{Icv z?%x~j(0wOrU{PA4i#r4ugM-B6u0YbBb4z09h=lYNPj?ogoHBsQC7~cHC44RtV@w3M zKn{X)P_pJH8ww0WPC3a6&7Four5z@+hPs>>h?wa12;D&-Xh}Dt{AEW*5EaB0k(gO) z3@Rj~(@|6u6lAvz=t`;k&6AOHR>5L&=51{ zY^^Uq8kOe9)d(aaG52a#m+UERXl3)tfv746R3;NqI)9OcS?gCMuouZC5I9-RPcqiV=&J! z?1Sds?mp8K7Ch$4=%s-I1~_JBMA3IVCNUSoo&glQ2YDb-IZ>ti*S*?fV?0%lTj1zD_01bSRvN7FhKF+j|U$RxyYoro!0>v$ugfD{KJ%n<55 z0R3#bJwZ%?5!G^qutor&S@u)GcF1SM?&@0R5-x0ZO-&-Q0vw2Fa)zz16PjQR#Fz|V zaH2-)GaUnFPX_7045msGr^LtFQOwAQsvfH+WR2)Cr>ia$Sk+;|1hLMUsG^6u-<+J< zBDLR89G6ijrb~zY?uvWMNwUmvHc=}(R(6GScU7{8^RojUd-`d7;Q43c;?bkey!GlE z|Fds=^~-+L#pSr%k0gqDlCPH(hhpUjzf`lA zusZ|~$o`Uu!-hORn-AW-6ZgLL4dU*r`C~uzN8<~>^vl0}xN+l8egAvkdF`FM4=~0+ z_x87FqXpf9RZKIPTfi??(#NHLa#g&rb!M8X)^vE~Rhm{Zt&P&TfZB(q?=cqpu=iA7 zcv^cx_P;Ei-2gxr`%mvOMvcfaQ^QeYMs8Xm*8jgBDv4=zGI}|CJPR;UsD@ zQJ!Xp=)ypV8PF^pNR(Q6D;F4`gC{^V`rfd?W3f5h-DO6E{KqOXyXBDfOR_`y!E8Xv zd0b2a(F%PAfeL09>a~^x1aT_n!c2jF@BZD+cR|F@f8kfw2HUsU;TI5H(WOx(SCjQG zC-jKj9~vvT>;si2=;L&TQ&q^AdeJNVHm?}4GC*MUPd4Sg4-o)#Q5;1HS2@C$V2gIU zspDx>Eu)sgJb)FT1KPk5y-_yGHk1;`P{1GW0S9~;BM<^#`^ftk_q&9QcUP zwfxPM%Cat3IymZNS3!d|QcEmhpYngx!Ah%Q_It`enKj`9)=6Af>3QX#MWvVqUguUK z)?WMlYz$ycgsYSoU2GepXo{Q81k07T23(@6`lrjP|MoZabrq{)b=sfB)*={2R}`^X@x1Jogbi{(%q8$Q<){ z2~5uzr4VxlW9dh*FDe;K+cN4rlZYG@xiJoh43LlR-r=3^eLM2r8@TnmQckOGaDd~+n6oN*!Mw16pho_yOODC1%2$n*b_{QOc5koAVzi@ z1_m<%HS5Y;5(Z)rRh6<`8!NyiR%tubqv0ZlMrWj*gAMQWSTPAO=uW^uo0#nd1Ttc{ z@kWi7QGtvT66^vI9D;xdYy+6P<5U2X=D~CWtfoOlfSK4P+Yv&6fxr|Z<`o7_2N$3! znPIWM&6UN5^WAS2-RhAZi4+k7scz10%K|bp+}>uwbvQ_^9m%w@9YE^~c}2jXFf04K{ zl2%TcRW3z1AaRu?cmi`dbOwXYi&8^*hj_m5O)#wlAO{7rj@UR( z6mg%u+JP9V>Lf#v(@gtfdtbe>VyOwtFmupgL83w{6R60fqedFv$z1d3V~fE(6jYWs zPr#%3e@$uvA}i-UDk6d*T^4z8b@QyOE=QtfsaqpASLn2U<+5+oL{vl!S4pT)7u2&L zITBIaL_^@}5!cTYCbq;Na%vANlTjz}OwD>P&npX57KV7JYSR)FAF>I^h*LLA1&f&~ zMa>mGX97FzOlt&lf;A>JVAGfkA|j+vLqraS4kQRJa1V1PA|l6_vD}VyX)=jP@v5o< zl@&@)vLX@5B(Y;eZmC>WkV+Ki4CF@C)U=PHrgw<7ri+tX1~~za!-%?^-SaQ&>_SYp z%@T?moC>-62vlSY5Zxi~sVKx`41qsr4I6qLL2E{UPKI>;cEJ8yk?P2SV#J)2^LWJd>*u)r^wW6inJ3TB z#^KZNy!-aQ{*B-Hoj?1v-~YW^ckaFkoIf?sUic86eEwPH9tuhi6sfEgz-%{q+P7FA zX(s5@pU#)E7#&=MD^FKYZLOJIl%F^4w3c9E@syZ$ABz#NuE{BD>qO4$5_%`*6=5Im zjXZH;5;$O>Foj%1=B%psz3?JF@!=2Me)F{-{-^)h-~QXb`0cO!F7k;F9dCW|Q)Amk z*2M)#^-krW`}qK#;4~Xp&yY^t4?2;+mN=Z`r6{QdAMns;r%RpNAgtS)A(4;*N2+h9Hq+^C(Lq#=y0+GaRm+VTiJ`?(M9JF-Cxs zjL1+ln3;i$Q49s@&N`G-FcAv4m@#m1yoicucZW0O$*TG=v11q7KlJb6`yWI1X5aT@ zcAG*r>N=7!`v}S>5Shc`VlaRic<|^!Mr0u(qRf&-x|M$LICnIPydeWMSjmwY(;4mn z=Hy7^9uTEZ7dQrRadDB6Q86+(N9CMSmNxfvMr;7~wriaxg>8gtg9IYDN_fatZoT{il;iM%ZgD5HaYs!kYKNtz@ z_D@xe4E2rxNTh~t?w7mhCrO6@Q6r*9ez-v?I!4P>(3M3TGXz3pOjJ>U`w2f5>qNFg`x`Igc|g>tJ*VUA%mXSXu)D;O z3E*-Ab1E5*0VIq2M2&#OH=SUvd=#8}6cS@Z2m>(^mI7yHT?#hc0(DeyFcUGTet`9p&Kh@SmNVV|Y^N?;lTl>G zVEgf@6paO-YT`t)mOtqpYNUensfCD`gRMBNk+mCU?V~E@01SwltwOM}Ft)?0w#`Y= zWIjLpe1GJ~V$6l1V?VyJ$Dwh`1_l^P=AB^76s<6k zY6)`ag%PW$FakOk+9i+qR3QTgf|t8KIg!+)P=CFOau=7CFpEaaPO4RA0ExtrY7o+d z85MW{X`k$R&hDN+-A~w02XVZ-Kns$}ff%4RfC+9A)Gfy7C&M z0v2)HFL8N!q5g0L_E`d>11RpuvAJI((3Q}U31o~wa2u%`<#@rbyOObRytCQ_IzMoA zFh(YWCKe8$c0J!df%6SdKK%@ye MyngMMzVnr@{+qw|kALF}FMapxIWZ9Ld;a3d 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

5hODgEFMf#L*w`HzY2(hV}inY}Q#Fz12& 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"Ws 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�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 z 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

9PxFO$iXnB6H@KMgWZ=>|M>u!37)5 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%0DoX|DS{_QnX!h~$*ipQ8{NuO1!0B!vIZHFn5> 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�h(dUrM3YNc+QGXs_s=Wcs9frju&l5X0B^yBuCDl*L%tgN5EwlkHb*F zUB`JsJcY4Caauvg&L@fBWQJy`@;Mo?G&Ssid*;ZP&n{wHG~ZW^OKRPTT1(u0IwqDo zb4LIsO6q>%6apvk4dnpQLD>v)Yw5wB_-+i5cCM%|0=s%u0&)Ha6ZA=Ub*GcVOm1PV zJb4YLGR}n==QLRB`HKS#X32c;sH>|4)#~hr(>DhS#l8&byuKx&qfL7{TtZH9fLijq zg4H&O-M-rHs_@PAbk%k-=Wg0m{0nzi&uI{g8nHeL+RUmmqZR{LsBJr?gP*p0VF};m zKF%T?u}Z+R4=cExr!egYXU$O4MUb;JV-NG^bPE#D$8ji3z3(cTrs)K4eI|i0y*Wi; z-)H?|$5zeq^C**`>FzHzOfM!QmgihiYdRM-otT)Q0Wpt>0;yDUsdJ7fjj zsuf}+VLhYB0}z$zeAF1-zDOM=305_L4Q>YASSXmWOB0Eo!TlPaca9AQ)a1-30L~2! zE#G>=onu3E=>IU(+uz@iMQJiuPH7tK3qt8Ln39a0;1G8d)7WFxn}$WU+M<<*zcm~) z2=cWwK^6%p1Z{U>T0{+#7Fw%r>UZDO2R`Qmc(}c%|NB4Z7lG-I>8-t}?b;_a0{xOW zt+k1xIO@E47GpU9U{{Ks6-GiT?H06GL*0Mqcl~Dl;xGDN?>D~VYx|8)ege1W&$J=k zd?+53=aCEW0ffA?g*lpO!OIaaPJ|#PPD;7D*3jL z)ANcL`HguFBrY^81U?jaDj`r>8VmB&vrBikH8z5+J9GzL{lIJbOjcWC#e_p9-O?U|DWK;6r2lm`7)_r03+DRP3VEiE_-3m23edgUPkPF> z5wyEws?Oz+AkE0ZS{~Olc1sDo$CcSXHT;eh+iUUI4!{vC72+?U&fJZw$-Rf1OMRl+ zMFTj82)$`+lWrj;&JM~mRB*hgNr-Jw2X~_7>R;`MbWS4FUiV%a3f(czYk#iHveU9D zM*l)IF*nU?Zr2ZquJTx-1NXLL^R22pR}D^wX=hfE zB5)_9NZ@snu=9TL+4Z3Npz-5#YKyG_TkFN%M36t{?L|2l1xiW780>QW0 z=MWJ)#ND{I_zNWCaE^c;8I-9Pp7-Gx7i`ObiCG0VGaU#9juV5Ef94%GMjrA6E&wLg zpdtS37b7ABd1$9Jl>}>W=1p1d7I3D+!@v_6AUQ^x9G_kAZl7I$~6WY6DTq_hTs zw4FKNLlLRax@6@Xr+Xq-r5ZPGGyv6&JL`h+N6dz}K}koQnRE77Bls03MD?^9Ga5ZU zlH0g}=qaNKgL8K3h{G`@8w6#xFGZwNw7}iZPa0SpLD?jW4wnhCsOh4#4eqduNmiYl zYYf%v;e!F7wbmmRg+oEX^B8HSFzK3#F&U7^L;C4*I*4?|XTTgC_Y?xJAl@9omt4&z zOP-+*aj4{XRj4XNjLam*qi@V?O+fwZwG%y7!0@@;)ab4u?ZgqY#f!Pza^S)tO4#T5 zWx}kG)&z^UV7c&AL`D}X7YD$@uNEWnzQ+%3O)9F2IE{eZ49UT@b|bOG7ykYA3x35vSN%O- zr#Ce&?6}QT`iW`XOtN)H+qEOj-COVS2I=+2y9gdcm<@C8{Z+4eV3k?zljl4o@SsiQac9h@*G6t9u1Vl$)K5yJPXUEA!N#cO$=wtt<5_?j z>@I5 zxvX+grZ)E4rhhmDk)7UjK5)KA0j)_{1BV8V`R@~BjDc%nk*Z;g5kl52+bgy{u_kdc zB4h_&Vw9Dhe? z!|_Y38TYjn+V|lMfH|EaVcjGpuv_TBqr1*{-AG=JLlc3(a~{jQRmM$?)d+x!x9j9* zJ;v@RH$^+75aIt+^&*UF?6+8>AeSG8jJItt82*P^XFSB6*L{|Ac>}Ka-AS&C=mk|R zaN8$)>2=J8kY+?trH~h)W>(@eBZ4tzwjD+Rpp@GVddO1e6l-w)lIFIM>Z^)N?2K1X zzO}Agbe}|TH^zjF$?P@nYe80ZMuAxDF0)C)OXkheFB(V$SsTj2uhw+&0k8&Bbc-Sk zo1DFDe?}(x@sMC*pP~7=F*{=Afhol}dCR!~lRKtr~+5 zJMKhcDruS7I$w|t8P+sunm^JhfZ01=AYK`GARi^j1#qV&to?h6n`kBj(B*I_cN1v$ z83Eu_G!HSVq2vx>(Gl^}yt89~|Ghg-HjX$6Pu>vW6vGPX9K6ku9t&Vhe5tg6?|g|l z2UpM2*b9iR&e0TVY|@%oG|#8upV$C*Vu~$=Q6dL>aj8$PJ9ntFqDWo>S4nt+Wtr>Z za`jbf>Iz{TaPrdvv7Pn8ZQj-}>+0Byp)1i+TzhxM0d^9{60w3ZkJtW>idR8G-M;w2uc5JMlizV2$m8p0LA;;Zv#)C zp+@ zvA4eMYyUWY`4|0*eDk~iI{y9-`~aT6_9}LhFC|NS8#((lx=M5?SI|{Mlvu0~WkXvz z0jZ3yOr~i~(Gsa6@G#dP8Oe@SU2#uQOQ&EY(8?Hht}0Bn%C*sOcmANmC`)AYTv&W0 zje*iuL$_!3z7Kp3KKfsL10Fv1t^BwC#9!p^{4M{2zmUcUVn*6oH-7D)3$*=vn|4~5=& z!UBkz3#j3%FY2_#E*OwGw>=09nj09WB_coLet^cg6*@E4HfIHhP9Kybyy0+SJqu!{ zm0f&Ye1WX_We%=W$|ZyPC@)!nuJrpI{vqCOA?xxGeQNa$c8xL zs36oxW4GLq=VxGZ#>za5)squ>_p2!C#Hp3fO@&G6qY24YeQ$Y-YA(%)0Bp6<@^U4l+`a~>{0Imxr5qx;7sPz#FI ztV`#Pj~KrlY(lz&Pj)5#e>Hy6Jv$J@h~)@#=zQoSWAB1Zk7up{@#G{hh~0!FiPj65 zBux_7dp8NyV#KGbRw~NeX&B{+&+f`#+Om}^2`6UjDkmr6`XvP9PcWEZK`Rb&bpbzb_1r7 zzGK{`2b#FC&Gc!+2v$BoO!;ZE$TIP?2+q|gGfR%-ILknS0`_v~27FaEB2+QNyKEAU ztqd5f2h1oeu&^4a5f2~bRRYucc?iulW9faZH-II`uyY2I?!k?5P^#q`LI#GCHej}W z`8pR-i=~d;rIXolQdMAg1|08;5~`ri2G0nu{aAcc;_9^a&X}PI41nY3=TYW3+nEez zKlxlIPs`v2O7>C8{u{sMyR!YAqE`hwOT`+TqS4U3Nv1a`UvCvO-X ziTD?ta~~IE&xXc~r^{Uc1dvhE5RoQ7IsfjQcABG*b+ZMZVYz&h3ksd$*|2}iPZerF zM`oBftl(8KPMEnKGG8!GRC(x{Jd>H@>}mb=&(trtYH?{*9Zcw6}?UnPU-4^;31#DU(Z&RQIxD9nT5ekV&(ohZNc}}rs@Iu!f2$G z4#0SasTzo6TYb*6HkLYdP7)x+fTIb5VuuuJtO7$O*pv-I9#_Cml0VEbv3(72j?BF0 zRM4-P(Cn@6C;}WN2wr!|BaEO6xdxI-MGypUraa!UNeU}kG2T9-$H^asX@z%pN+?8?iPBlTq&)t4Kw6WUVp81n1@W|Ye%cKEbwoDr*L`SY{WFQY!P#Ku`ri+#Rsu zLoi^nCcSg`)8H?pZmA@#b5FV@$L`(P5kKJ{x-e$_1Af;#hs{{<|a*A z?>oL2bO2P;fQ-3AibpYdSaxb|ofMEhe#up|2x&Q;YP)f!J^64iLpaM7s>&<#QX3?O z?32L_FpPiF(JpMb?RW#dCElJs!z(Y|hmU^4Ujp9vetgy6_?!69um2*c@7f@I%TqhQ z-u~F>&QpWd`;AXS zE0Np{3K}}AF>%s!X8SGg{p_(9fT~W=luzwmZ_oOp1FrzWkPR8mwWtwHKkmsToWg~=QS-gWJaG- zb;7~6hac;~Nf_)2>p)=6hwtqrsFhK((PT<*{3$PZLCW~y4pi;fvS%`9#@sP31cQ1Q z-`Ev7gj3&)S4)V{rFA(f*fXNs-oF$UR=KTu&cn4A<}6$!@M=_wV-6Y~|Eo%})xvf& zbBJmNo8(#B&*R~m@>+z5il<7ZKC@k+g#2e|Ea{0+&|csqC(YBwU78L{=PSI!w5@ze zoTw3Jjz?jNLKuP`z%5nYApvyS-P0oqlM?T=guKb70DYP z`_{D%Ga9guUyJ7oURD7b!F6ILzq5a1Z@Qjiz$6oY~COTI=7~Rk4qK-#2r{aI=IP&v@ zmu*!VG3^XP|8N1r<3mKazqV{}mI>~C-m5XUROn#Ch z=OSs}s9QQXyt(&r&|ML=N<|-XyGlag1Y<*abMAvg1k~Srfg3K*a$q%j=iK zu=2bWCkkDMy32E+xFw9bnxvjKMA3v#dh;gQ#nFSq+*g{nGQa76o<}DlNuOb7hB%(= zD_8BLY71J*Flr@kOM(S)29!*??jMKM>8EO!rY|O!9a7IpKjJn9)lK>D(K-e(4>NpS zr;|hE%WQE0Ixn(v1~y$aH>fmo&4qB?oqL6&nK~mT@>x*>T^S$g>Gtv0`53gj_vcJ4 zSLSBM^Hkn&z%?rwv-1$QPx&O($XghU#HmY*vzDVD0D)W;A4ZE+Ga@;d*{cGV+-W)I z(wP^QB4D# z^CVS@i_Q15rU2x#eKa-}Y8$}Ys*`ML$cXs!Iv~g3Dy_Hf0P@cmlxQ$JnkzYh<4g99 z(}t$A?~ZfVl@_Voa;`-rx|>DTdtZ4S{m}UE-}sa0{f2(%M?ZyM^^g6dP;bgv&zUc9 z@?uwV247u@N|y#R;TL<(xwLJs{G;t|XlO2U-#x_n#+&czw|?>e3ir?cdCt4{18$`H z4s^h8Jt7>%1ueNW;0g`rK4*+iswBns>B$?clD~o#Cbk=-2USFGz$0YiTT@)nAet+G zO{2z%>AfBWEd%-sAZk#B?RT8c7?_DG2a_3*4B$=0p#lc!X4;So)jE0V!o9b z+cjhej*>OxZZsAO_OTs)ei0UGKS?!G5yapGT4>GO=h8XEr}E-tKxgzc(9U~7NB;=b zY4BYjPE6*hS0*zc#6q`|T54Aa3HL5wr6a&yYBm1k1RgtSQ<~ z+(aNokmUk!Ln`>6-QF?t9T+e!9pYr1s30Oa-ts0fB^T@F7&%#~fDUUoN`jy><=qa3 zK8V;plxE%amzZZkLtn5m1;4fAcvunCPSr_Wv3Hjg>fK5s6z=l?Ar=BVczZ}$lp+}U3cy2Hx6Mf7eb7%n^p zzyb3LYm8whZxDk2_zJ&4$HDy7LXQn*>2Jr?_@XLlMxrL>{}-JZMHt+0${k_yVq z`#2s!_gIEZqm+So_ah&To+{i4i#`153@8SbL^S=wN_u!|0{y)?L*D5ydo7Of!l_c$!lzTejyUN}4 zNXTecp^XKXr(94Zc-x@Zwbi3ZAaOmp-Rj}~faZ*y%P82Ye6ioCuZ3w>>18 z&B@I;5JqLa=f%UZj3cnHLs7myr%-D4wljS8o)>ub>TCFs@BBOZ)VKcm{p#zVjd$Mp zG=Iuxy&fmBd~zamm{F%mjnE*=LPSMw1V1KZ?}T!N7ih54chEk!(Ype+YTa(w-T0iJ z_H&4;{Zs#upSxea{RUX86TXaHCHM3K7D|TC!4Ou-95mG!yWK7Rw_M_Y_PH~f5f6(Q z1F(DqT@khG+C2$&qz9(j?GMooAsyd6IeqP$70UClQ5xe^H$6!Z z;xQ3Er10Z^WRl>t=wHbNBK4{4kMiAv)u2{y3^XN#%~tV#(gl~!Pf1AKlZPbvq7Sp^ zItfNQ!<8jlOmFB8$l?<|n*k=QjArL@c=vyGvVP_=kaQ$G9_Dd@Mso$C=9*LsUh}R}SPsfPNn-B=Qp8^9n^dd?wq4w2a9J5#3fgl+)DhG{;xUZ{ zr$`g$pk3o7Yy=7xJ7dQ3N;FZb+zOrZU`eMinXU7@j@O9`skK);QI_S{uL6n_pX@_t zq=catdh!WDR9HOFLq9_hc#rIB1QeyJc3H+OG57T{78sS3i$*p*PrQhGquE^%!pnZ1 z9CPd|0d6|BgiJ9^Sc>o@_UW7+e&zt%yz`u6t5jqy#}y^l8Dc@f{6n@h!+*o)!m|@0 zTWO81&^qAcx*!lD@?c^zdGnlqU4F$_Ie`GaUmO{aAg3hlZj?u(?gC8sCkyOgSJyA5 z?B2P>D=9e#ANn(bYm;*@(F7xy=!Z7Tmv|p%pfNq2TtEIVCw3^ozN%?~0f!`@cEkjE zHaI{CC;6T30|o*lBDl~z#ybl;OufIrczK%*$=Ko@Li9r8<@+o|#^u7~Xf%WTxk=!M zyHL~_y(x8`)5}`dX2-dlS(@3neE+oGyLUBh9-%n^VZ>R@KP-4Q3}LAKu2NyUw=HAx z!(Q6&stI4@)VWEO5hyN`6QV(GAwl1VpjxhjSNRr6ioUKD+f4>-gtR$CNQJ{Zi5mhU z7U!_Ht1Hvyk&dKh1kH(o)GjS#nQo>> z>~?|NAZ2=bt7pwJ0qXCzhfBe*xCf~@r+%`Ypqs4w173giJ@pfx{sjKXfA)XNpZuP$ ztB-x_e-6GRp1pVh7ID8j&GMCHjN=K@&hgYPrZh9@l=IEX{^d-CpL5JC-+*J>V`jdk z4ep!}MjwrKo1xMfr=t)Tl$#NyBJqFz zoqquD{MZlb^M2v4s(0RabKOlGm$AmVnGWDsK=)f=t_#Fm zXI4O_(L$Qt(`Z*f%LE3Ac7>Nm7sc*lc3C4FmL&;DO8R?L_lkp>02P+?+s&VNGHxDBPKF{~};`G@VN z3pcjXW%2kwfy({hvOlY0t#rjGMSud>y%<`Os+#3MTE{FcVqJ{% zc&sZo1!nJIJpkHqEMl?BBfkW62Q!;GAvzUi$Ks z={(deYJ#Nm4+Ce?v-G72W$>YL=jFs2*_B%@LjLqMI{G#nL zx5Y4>2Yxq7#T9&K4C@&gkGRAU^@Sx^M?=UdU!`Sq>{RXzIQYU4!+tp34(G;``L7D6 z;}$h%PxddxasK`kE8KuXRH#he#NO?BP#_*G*jS4@&_b9xv!jMPL{!Y64>I_Rmy6Z4 zJQgxiEKnH_m+i;Rt*-D81XqZRqn(CS6*E#dZZKn0!A~jh3z{}PT`6kVEUU9 zUy_Ntj184<6)@<8TBGJMdme@n!Qjr{)Eo&09I`QIvhw}u`oPe7wo`%H7+Lbkf9F;) zb{%wTgqDtJ+R1U^Lyo^Y*L7+N3cf!WJhr<4>!XDhu>%*T>KIJz`CSV(%mE5f5P*(O zpqWFPgxiUl6LOcV{UQ~xBO#jF=hyPjf#U*tS`>v4K4t=$`5c=`W~j^UZDY*G|1s6j zP%)D@3@a3N)CVAI!4Yzar|rpDW>Z5V4CwQG@?})<@7d^prF?$Pn!;D=C~HLI`nL$} zh``!2r+o)*?DgacA#FapmG1XbdT9BxTJ8Y6dk~U(@^qmeoNz)Bo%7;!H=ZOp-u>_# z_su3z)*~oU>jc^ec8spVB)~=HDn~m%_3+i+nU!^p+DU-NBfy~HS9zE;NVq4ZT0sk> zP%8qtoc*n|+~Opk)lDt8?kXT?E4O00)Z*B@0cDmdt@0-1xSUq|I}Bt_GI(4(&Nvp} zYina){{Mp585vNz`I17|ze8wjI7k4g7>F1FDF=reuF*3(_-Ycp%lVBYJr6MV`RlZ% zJJ2@ft`I7A=B z8D}-gE(^`ZWXsBi;yQrWKIlfEOiB{Tse9Ar1Ula;UB@*f8)1+@BFAf^and;8DooM-!yp0=!R+)3!c`BP*=3~flDm@Ae#VsrOQv1~zi0ULV@+;>>F zu%Uj5-NL;$y6@N^p1$%b-fiGxfAc@n8{hut`~5%lr`N|n_2c+mzvV-wvH;c1;{vR# z`Xa2{uv3z{;-!BszB8bM1Ipqw9_n_As>52=9?S%dV{`{n z!bs;<9B;#80xOlAdA{izNwU;CIBQ?`aVIZ`tM0^?eWge7RT#g8o4p4+daVtYEaPiT zcs=UcNDwJxyduwpxYLbODB>9{Ou=QkNoIlbq&=80t!7j@EpcJgoeK83T_`cLCTZzQ zQz1WLKiLFz_jRo-P&=I&Lq-J8=B(Ft1UWMz@cJbf9m2K)GyKo~>pOrE2vCfT-Duut zv}Mp5}_!m6$ul z>G(SO{M0sf>PqLY5{XyvJ?4Azcj4Jia^J?mgNtg&Y}#+e0=$-$Bt2ceN+Ij6_^dAH z9Jx-d7lR8&yTQey@d@cbfcx@;bacudAjdiILb4 zCrjR8Wee?KWsmqyF$&{@RTyi?g91(M`Pt+b);`NSD6S`-ep3q6)bUxd^n<{nyF2=WD5fhxWP;9FE{TKNn#dVY5>(y(E5 zS{N}d17!_}Vb~Ka<+82!VJ0NufNhk5_Fb`N+XE~u`tR}H`~toAyZx?v=a4&vF$u5% z?sRP=qOAc7muvyR3}lHYsaFrEf82WIRjnjnr$gp4Re^+yKmr512WoWKoheZmHrSfx z3ZbDzJR#n(3sdr&!`oAjhU@aSc9bb#MP#xA8|$*&2peb+J$GP|4eV>hONC!mLnJgj}W8(p$)#y|%` zzHTPT58$C!TUB-!_M>R)b(qNT%A{3)W`XN5yKBejj=s$RWiNYp0SxIG+Q3PbUp}FE zDxq`cr%q>rf0*XV)eo+CEf1p1^-KS;U#PdD(CUqK3<%nsif>vutU8;y9U^!zx z_IEr!dosk}Ie?P3dzrOZB>GqU@?UGayFK&uWK9=!$a8g-*JCOhlUQ8j0#bY~E-Xnd zllCE(?NnvQs*L89`?5L7(o|%Unw%Nz?4FvCur2siJcSyM#RZkw#qcDTl@-q- zc#JnOcfiHu4~=F2ka*NpDDHGX!r00grQ`J?m{e{jo=;qGFMW;w*AerbelSB9P?d^! zyHW=yhmIfagqZ2WPT|4$hmX4R9T|t58X8V2teh`R#dp>l!6YH6G5TIZB*pY_e6~x; z9U`<94WYTwiGpvrOnjcoqLPXt*!BoL#--L6ykmRI9i>NF%H`GuBl_I4cOmOWJkCc8 zXT&U6#wT!V&kLkrvn8lX3l!S?kz@2oXQUpQ5akCf)3uY(DivP|(@&Ho4t{XoT2J^@ zk|f|1H_SDRPjNIK3&gb!b}hL_u%yR^_3NeZvQR$HTM-|ylb&3)I6pvqC- z1qiX%E~)qSOc(3PyU|C+>A>AMM97dk?2MmkQeQu=^|IicAh@GsV%EvE&TVQufc_C? zKQW@C;}e^jlJT6&5R1uBX8VJpvsH1%J!Dl**@USR68j?dD(AU**@ZF&)G2lkXpRlx zYC|^eIYd>8;pR^>5?e!R)Tyu81q?POEEez2XijdKz~V(fRj2yMGq{`0iL)4ga9-9g zc-nKvNy^EL8R3}?%SMtIxs-9db5M}BQ!ji4U~fd)JhqFop~5(44}@}@nlmh1b6}Tq znYDHL!w_+Pqw0AMB$p@X!K(zseCAaD&#s5{?@nuWa6ip-%?#sWm_ZSRWnnQ2Dkqvg ztcpdX1>{kM)6-EtK^q&*(=bZMk_Gn=r7cfoU=Y3+Go-+zbOwFXNe-!wOq}0K#sukMAwX!~JO|F17N5B09s*KFA^NOd@oMc!YRM2-p6_LlJiM5u0C}nq z**_k_WzLZ>E$)?rI344Ny{>dQ-X^f;L&WnTF!3<+eP$F34t`9~#aXhrs*@?^T$8Dw z<+B@rHiWiVWm5AQd9tLPQ>q;eSHH$8H4XwBF!oCsGg z3!LLiP}?fNm}*POTd2!M0#wb)=S?Pwg)1h$dxI0nBSdr^$B>lCcuenbNT$l%mI{ld zzGbFh4;ozssK+k+F;J}C5JzNhgmLAjLJ{;)^D0u zJ8{yT4E6^V`z;FH>mpeb4_v7+-s8Rmp*c5UNWl|qbDwRQRNv_23(djCG*!0J6iR}(Dyen9 z-}z(-U-d`744;1I-TJ~`_Z#co4}TMX;OqW4f9&slU%&sg58}PAy$`G2!wsimKTmK9G$T$9l=Gz~yf8y8wCcg9VCcorEzfOeovNzb+y4`}a)*}WgZu%rR z92vti(`=iO=5~(hDKzOnJ;8nK3tc1^tbWoh?fS32{V&&hKL6*hH@@qy;b}d^dio^o z9Ow?YGvGYmhRhG!7ul8#2fAU&lo)VIBO@4#9`pC)&ycj0nAafOdLV=BCJH-AavbwG z#lbx3_*t>!qB}RPQE6f(I4%_opUZCI7BaQM1~jd!;_>K#sv!%OU?wa0yxdub{H#fZ z_$(399W(xD*BmV3p8&*k;&o^+A#Tbu{o9G*9m5L3g=(hNykRo>Q6hYtQ~Q7q=98?l z$`mrL=gqIF=D^al)8)WOWDa(E64GFwxQ^9F9Ds`2QWc3iCc!VZ=aIy7n~%FAa7bF* z3C5v}*xu|oC0-(saqudP`(akmTmln@U99Q~mKp9Ng(MCMj!+buL=BwNHFy(Kp-jir ze3ad~iHwP!rn)$_g!365@ft9mBbw)*mI|?Ty2d2*?rWn?(qvP<)6c!sX^Ecl%|-J} zjxo<6W6KPDkG&f6!uH|HvF$61Q#uJzoS~&HT+{>7Ev2B7*ynt={SngLp;HJ{$O&>! z;D$8W4`dAwoubTHgz^u}RFHd{1hgqjhp7Z{7YSU9=wel=#*ZeQw*DXEi{Q$AD&Hhv z{nptuo8(+x2lK@t2^&_>9dcCAvhvx~bnaz8S8|dH3X5wv4h+lyTtK70rjEMG_>aBi z{{9+=lJ8M1sC%GvLpN~us_m+@$9M>X^IgqiI|)P;H?W*v4X(=zO(r-a)6M~sYjF~9 zLEQ0o0WWpkepExE?aBENHJhB7N}@6(P!9YM%&cvUaW`328PIpmX#cx-{n;hU#N>Y2 z$0YMU?>1&5mc){fyHl}J@W4gV`h8@A{)&k$kKj%|6wS%g5i-8E@hI1|LpWYN_*(HF zHm!6y!E00wc*5g$xPbeE77Fsc9NC&-DjtVU&q)}V+a&rVx`U<}(=%*OKuZEQjEbE@ z+MrWIV;z8^`TlY0 z1ZtnPP+!#yW0k2W4r1>??Is1HY&Eka0DL_x6GXgb8f01Gw&X~Mm(H7%=4aU;2P` z6}TFiI+v=C^-l6zlT^yPZ^x19)WY1e>)bQnK7t{xvLN00RtC0J-FO zI&vmvB#q6oOyaMxMt{b9kdJW|?^METR>!SXq}&p_6cSBwq|E8H7n-||9}njrpk-${ zyb%CbLH&&Zh;gC~JJrL=0j7@a#MA?Pz|5o*8JF?vDA&A4V5^Cv^)Y8|CMt*AbJs=C z!EtI{q5^#+pCEEi{2k!3-4wvy;Y97DTpJ+O znzmsttae)e#-GvcofEln{hfW^fEFK24cMyz9XbRsL>;0b!PN9venwLPWA-%1vF2GX z7j02L@aeM`cfV-a7RYjVRU#I?)x)e^L>%@%;X*V$x zr}8F}YdxvGTem8F{QJL6uYK_I@v(3Ii+Xaqfw!lwfsJ1w+%;t*b+8N(xU#YYfZKp5 zwCLGfAObZC)~L*=GUv%9JNuy)?&Z?Ki01UV*^f12*C2qN7W7N?oG9I)B6q8`)1^cm ze(xN+SuxVH$VrqJPp)%v5a#rBViGtVqL=?XDr>o~*K5!Le>N_ApczvdXnBF@c}^eM z^cNmHF#gl0*#5EOpelULM3D`ISO)4;kSoHCJ-OE^qY~L%az_h>-^N@u70`RSK;n#c z1;CO}libE49R|Q2?{tMhx=rbjGZxBxHa5LRtAky7BBagPaay=Fv?ek;DJfle)uE$J zvkrz0sqcT?P+8J+dK|z`)D1}{L8p^3YnFc=ABLWef_RElOWc-j|J=H)h|4+ufwl_w znu?v>9ZsR5`s$q1O-3F=KEP|GRwj(y#bTki$p_e{0O9kB>8J^&Q8VeAgs$y2>YRna z=1!;psv}=LfXkpE1(_gt94zki#P8OF-2|vAG0XvoizAqw1gxQ9b-)Okxy!_4_x2y> zm3`9;%;eLFlH;Ge07?%h9gi$TYzAsONF9s^0j!499IoZUpRrHlIg`|9|B0z2Rsm7< zk~Cf#kk;Xps7Z>EA_1{`Ds!gJ8oqRR3bJO^bXzkXiI5G+6Zf ze>gQce>V%h^3XwVXKcFG2n`PI@j4_gf=7((*XOw$Eyj;E&S=4m;f%YR{90H3rLa-n z?-(%*R2lo04Ke2aC>M;+M0`9lM&&#q_M_Nu9iTn%30fO7T7kK}L`W7mhfO%l$t0!b zh!VK9kSn3ig1O2qfFr!;1*-NwYerN~vNRxwneFH^`^O;{V$gnrPDgL7v-4f@Oe{~k zum9fBRZ$`Lfn@J|UPy^1eCL>dzI)nnvS{&^-oR~OHVb*MN?4v4`St98a?fL@6<6Ju zD~2$J-*W~;!Pm$987*pvU>NCE=M`x|20=9CinM=i!XgbqMOVu#P zX{oAcFJuld;mb^>uk8xr^F9#-XBfg+p@Wo?uy6@hQq%-7i57wpJ%Jn(@&QXLSgH;5 zzD1-_jgDYSRxPF2%4`F`mb?0bXQ!(Kll%t^I|mDRfo<2p(CSXzwp(i!Nwl5p`1Zn)zfA-;j)*NLvW+mNkF1dF zf8wsmy!9OKdG;Rs@L&CtfZoyGcixD)?@eM=9YwOLz9)b>&uE5`XIi&JH$vF&Y)6>@ zPx~ORKnP#jAIk@Oa}wR2oDsFy5cj=x-&@b0F8tYl?+@agmv7^DeA&OH_3VyM{H?!O zKlpWjN+12N{x+Vjr}(VT{vh7}!PoKp#d`%w_xl6;<(77H@4M7iVrU3UIfp&!|AbbE z*8o9C=r&W;T~MQ*tcB+)-oB{~F)(;u-GmyzJdu&E8K~6B{J<4RH8O0AT2|#<=XF#pH8>vBwc|DvyVeo zpGQEza8H#_FiG#ZWzD9!rCz6`5-c^}+ws5{q!ioYB)*z%M+mIq%tVLeZ*t!-1t~x{ zY=(bE6IyrN-$1MBVlZO~aLekTG)Y0nSC7~@xjuc^Bcr#Hw6GmBt12S|mi{yDh#=rN zviS6lot~r|xyUS)4X^*zV`m(exVLQ+?i~=?qDW4-dOW#z=oEis|E3VeOiY4?)Xa&9 zFIlN(P{3XlJd6`e!4auM^mLj~3X#DtN0?M?%;O1^;N^5NjLm0M*rN%;v@cYb=UNo{ zPsHA~3FjL=$DK0UXdYSb#Or0^c}AHN8uQK5S|v0V1z}KWAuf~IfbvaU8f^!^ zoeQmF`|;N<*4Vy!{9;zPcd(F;O0>>24VuA0{&D}!Iyqns4;$Q7jq`T{+IuiJ>`GH1 zK5=yX)JSUebk(M#q|&)zyHDP?PFD=lRLxPNdVp`k#I(t(R$jkd8m=O@_!-C*cky@7!%sl8l3wzqINC>wR zY&3>0oTQr!E2DIkVVLB?eCcqCb9^kjU?-$G*sW=6@nNhOWW?E0fAw{Qb4P5=Oz)%M zTX7cR_4f%LJ+7KOj$uNzarbF-N-`Qb7#Hb{xk+bGHww%5)1P@t_mpmsDlUQL8+T$H zu^zZSPFMb2##^p%2rb;fLVJAkIFzuxJTo>3@sZZyWDvNH{-gD;Nxq0t%+RVs@|Ys6 zxQmRABmtNJzF@M$wecOK8z9tu9Jlv#Ybxd(aNA5@xA(P6iI*#mJv*UTJbg=5!2*rL z*ts%ZaKN7mjc{n?bii1_SeU`#(>gTyu@fNISB#8o{b4QV9I-stZ*doI+u8&p{?O!! zD;?XyoE6xn3?eTZa9h@pI11Z3cDl~t6NuKr(I)~G9wC7+@4kp(#~TE=vc~l1`0hz` zm3(hNopDXm`(aDZdGqya(?V5X3P^U2xqE<<;!pr%z}T%CBxL@eJs9A7%KP4deory;PX4RD!AvV3*I z77yrfFY?McV9s3jen>x~Mo%#pLaHGwMp)&VXc2$agwlscTA-#pTQ6QwXehvecQL{jZgn1-uv47@PW_yY`pTp_wmK6@59sgzL$LRB(cPrEt|q! z;NExahnLvzKJb2T^=_A%*A45%3%=*|SMkd0ui^F2dL2)mzrc@u^hfdE{Pq8|Km1p| z5})|?uL6GZQq)%uR)gX`vv(8$@|HPBzsv)I}Z%nsn?_J&Pt6H^Iu^)t2pFGpYf9xZu zCySr_=Kq-M#VhDuXlK;kn6a-RzSm$j2T*f?O02OTwQ6%iRV7!AG>D8n&8$SP#%K>1 zSS?5vv<%SnNKfX5E7s@tf2_XjIN}Rw9P|BGL~n}$I=^W&+p{sO_zz&jPmg~MHc&}R z3$@+52Eqh>L70F@+8|b&llE7vWJY8DAEK5oBeESXO&R{;X-fzmu4xV*+FY9daDK_xMvOmrtVJ>B z`(V1n%bKphkPZcdLgGrkva6^9>yBKB0n-p}E-Y1intf~m_C1yPbFFA(0az9h){tAV zuaPjJV(wr%JpB%B4U-d#&K!xeMI0GOI-VYknJzG6%SL|Dp>c-Ffy590Kh0b*oqR$> z)3XCL;;W-IL6g?J@&8BFpGWP!ZdXCzoa=eNz4tlio^$*DrcVeY1Og-wAd=7v(usvY zq$w;Eu`Nmmf<41QDLQb7qohO&t3)WOC~>HRrlbn70YMa`91<9qND`7ua&PXv=bmOa z-}gRi)*o}O=iRv@x%ZsCzwdp2zo%JiuDRw~i;MC21#~5Q+37S?%U`qNQ#>=j||K5Sv4#=)_k}f|QjF zC{4zw{$@s#Tx+|1@*3D;=YEI>Nsd&oNFeR>o+Z$aMlC+GWnDWdf zMJ#RBD-C?ou$+LFv-qRtJjpvh(|#!yI>DoSPV>6KAjjVL zs>_L{#w<(jOa;T00J>3cE(kv*||7G1>g=K zUO3GfmfSdNPD|CTufb_QaXdqhVaKtvxUnjI_8}HxoWwb-fV9m52VmN1Mn*EwA%N=u zkDIwV22u4Rx%>GCafy1!hEhOX*}JqG!iA-7iJtFfvlApiHu?_Ip1qUpYl0^S2=-qB z3=+5qZNd?KH?S5~8%Q+?Zf%r%|IhwwjOiYdCE4s)^a}eL0!JUl4nP@bchEw%@Va!?a2Uwys#wpsBO$?&_M@K zRBM}JIiuyAvi1rJEp?r~5PmC636TAaKQA&#OX@bWQ0_|ZyFl9%Y%=vvu?S`_hq1HE z0O?FVLWC_9$USZsQy+E&UCncjIEPo1P0|i9;TQyL*FANez@U&|h38iJKyhh9SO~e# zk>XBGXb{wFk$~clfU~hpw64zOf(0*LPYvIwJ8UzmwzoJj7UHasCZY#2NS^GNDJe~7 z{@rPPPVg5@%ApM}c(^c-%7N^!a@7P}fXVi$68E$qEJv!VMNzWU4S&;7^0kJtXU z@jrj}-_k$z+y7Pm*+2eA`0oGwefwQ)0FMf9e4LLy@F~3Vf%oC=)hBqeo&c*X=d8lx zyF2?p*$?e*O0E5H<^9upT;F*IpZ}r1js3a5DL%YSX$!dE@f#nm-|$cWEBHVB=D!zT z{qc|cE&$wnV@t(N)uqachf6Q2+THO~*M{{e8H6UdzX`}Z%i*^)wk5DT0G;m7;mfG0 zzb2WA@7l7@=u*xI0oAIcTgiehS9D+T`jf}_!B78yKJxKT@H79-e~M3j`!DZjZ@*n~ z6NlU;PyRsg1LA)Tq%wSqLl(D_AR1iYcLOz|p6HO2fbnEQ^Yi1(g+pTi6cgmkX7%6+ zgC~=o&df~)dQ>P%Ks4ob+QQ6Y&mE6>X|$F^(*^8Yr*iKOn}uzAz8ff$Syw69#liS4 zcpDmAiG@re$6pTE!g0L-gx$IRV=#K&V=`(Ixrv6$Y$SES$=GIW->*sh9AdIlnZ|gE zq>L?oGaqjs+9A{Z{VoMS0$9zmIu7u4J_PR|F^>O@ffz#p_sLqz{%_=w)_7YHnC*)r zu)k7{QnF*#Te{TVuTBP&jjQ^0ONOl`Z3WRGCp$7F+o z&nWwKCHvZ?C@A^_;C|#efbpB>j^sec82OI3ilismhQt9>D33$l(%PDa|8C-!s$qY8 z-0Og8jx7OlQF;?qZG5pfNk89#_UrMK{OToKE&>JBCfm#iOVI`pX}*}4>{j!kuKk_+3gQP>)LaTHA?X2O?E@-}I?V&AfnRoReftdOz>Z!vQ2V+UrsOOA2n z#h9f6fr}r29_utWCcr<`k*!$*@3>}6r(kDk?Qsnbc{X-3O!H!1NKW&^T=T0($qHo8^Xy8%XqLM` zG{^r(1;SBGyo5sSmVEZ=7&NQic+ONz!>J<@(&WwizFOEdKFu4;lwwSMCx_;YU^n4z zjD8$Q(A}}u;|y#lOS@CFMWD;$Hk!$ZCw-pa4^U=v0MpDt#~F2MnGn*5bC3~*HwLK8 za}~@FoO`7J_MBpL*Qz=JNVh=vBP^=HKS4>yFa3rNV`tf?a7Qpxz|Y z@EeVBJ5zI4gtj{q97fNjT5)Q1%YN9UCZi=e`>;2VOogMi#!AYbt-5&*T34{zu$@@AEk| zHlOQ;#t#LrjY%6j4=Qdv0q$PK2fpO%`7?jPx8fiCb$=g!`Zs})$t`aR8z5*y$)m3_4O#OHmX;CMO;9KfD5;-rx2@AcvYLOLx zS;K$x__xWRg6?6nRCw`l<=v(9zW2Y*&wcg>^s)DUlt1v_{K@**PyJcAfBIms6!3X# z7Zhh&A-*6^^Gx@86m>~Zp8#ki|0!Y1?H*-T_TIJw)nrFr?l?Y%`hzPoo~IO--+X>Qqz4A zc^&^d|3k&@bmRiY9PYTCW^N&Ghy=Z}a&$4liFyu=?sqI$&86OcuW1yTfWRhp0*E~A z>2e#lJOKx8Uw)dTblgYI+v1!KTTe%@doL^FOWWw?X@D2!e`q3w0A> zvI%IoJKwK(a?SWf?JAH6FrU-Yi!h6&RZfjxX$}I zliOmvBm{T4`7w~+J#igw=LkZj+{WftQFrk8o*{RWEDOf4dPdtLnAf~a?pRIfXt4am zq8_hk-^!id4cLi`aGp`f{>8r*D>Kw>0w!13Gd-?m{W5+tp9SG4`3L%%IJI+4%SBtB z1}+0yCj%}uiXGbLCBrrKr*VfdBRJ`E0%i<#>(>{<(B}mc^d7cZIrqMRL(x<&q;MN! z00ET|v!g|D4ZVNIGVO(UTMU4nAk$g2EXK)18eAh#?3OD?n z4{hHXBbjZv5h~di%+&AA;cK0K^51td8UBXY(@_sJufp{LT<`B6Lwk4K@eWrmT_Ktr z86OPSAIF2Fj~6FZGh1c{c*m>mwDH9UeF%5!ihW(G3)I)zDlE@8ggdJiYen^O0G}^Y zVr)k~+ZTWs^4)KL^7SVX9$%O&FaowJO)4a2ohH*TCO$D;n9n^DEI9)n>jhzvy)Ac< zOeXb2LOG-P9jaNV+uZTN%G@Ut$w;LxYN(7!OB>CVlKlj1K+fNsT|3IE0irdr(=j4F zXZ04P1-y)5RMtAi`4*bxMPf{WvksFrxyjrENrH+niW4fpc$#FbW3=#64+e`8=9$~U zdW~TZ*b3n_r9IAi*f5H;Pr51&oX6&z+9mW+>x^QdH)b-S_kRLkCi6W+R4)2TSi6DL zmJPUw@l@XkhI#+Fmjg~AE1weBkCQBJ^{&%Yby(G&1C2ZrfrG9I0DaEA&&pVEujS3h z@kW5U#`(xa*%v^KYYv!e6bI-URhe0uz{ifnwrXRhd7LyULX;_i4F%Bp>y4-&0xq_q zhJ%tY2e^q=Q?*S3Y2opcSM&pa?oR*8mo#w$-Q^l+!LUvJr-)cCE^r1*4OLQElv zaXH7JcxQ7inRgkxBl*-3?V$zTAl+-B!BA8yK()qUifbCv#lw;C7;6`ZxN&{EL6N{`z10UVh=7XL$P7n?PSt zmy6!_`s?`62i}iQeaXl84L|Cu_>+F@kH%Mi*(Y?jk{>+|!1l^xDHlm$;m+qWsmQXf zm`=c?5h*&NB6lHx+BNF|zeeT6bT?9%p~-w9L5TUPD4uB7fhJEzd(LSBQ)c7XNNWoo z@c!u09Uzgo;sft}FTeZy|CYY=lON${{^Eb7kA2H8#P#|Pug_nYm?j5wnJ3i{);RYl z!9d6d`3$bu38aZsQ4~27W#&HA>A0MCC9#@NISGQ=;C8l6@HpFxyuV{(6PLm|6Ni>P z?{DrB)4#&WLVv#ke3RDnI%{gd0guN?(odC)m?dA7unP`;qEa~O9wMqIWdHoXEC;NU zkRW7+rDxOY_$(MBM|C{g>?wMT1dTII1kUpVd?}HH1qowsZ?rFj-WX+ZRiQgt6jpwA&d$UXh{W2se$o;@LTP+RkvZE5Sio~9 zh}5(nr-a}D6A#cvmxHO3aLgWfe6Q{F&?z2a%G^cZ7XFT}w>fuT>%q;K1{VI-A(E0v zpfk7AA0;^o-IR0kq%o}o!^uIhL9RQYyRLOz&tl2dqUt zJS;3e@T$Vn=0@SdnC-r5T^{3|XD`HA%Ev zSm9)mgc+r5dz#FF6wV=iHI{C8YT^^>;INZ4n|n0#SMkya?k>z!DiZcF*^1kEaQl%} zNR56@N{9j_Y2kam&@`x3FlWOP<1leRcR(*<+q{31415W0#_ngL+R_;b*s{%^=b41K z&xhl!iydb^jX|NR+ZPNwa=t6|w4;p|!kpb4&15%6HZgU*h3#baWK&UKwWUCuER&gC zDIFY>*;EXw?Ms+odSfz7e#*zA%<{vveL*&TyGA%cUi9Yx`mjzthrt@5%(RC=VI!i- z3B7El$GDBeMEM6AcVPlIj+UKvXwyN%FmMWr4*`bKUYD zdXs_FnwDIFp8cBPCZkY3|UOOP8iYaNYmz?N;#?0ZN>7=%wzrxXWK zXbZ;t`!$p#9dEP&tIz11=rmv=aACPUHsmHz0VD*l)rloS(+J?2J|){{*A~GlJ58Ru zL9Un)s4NR%_+*=DK!C&r5xa0H<{J4FWT&w3J&~Ud`f6Pl6 zmJWDXaZo}?HAGKgpu3s&I1c<1NaP0rSnl0K^7##Vgi-cq66KCpd5EW}@dqve^r>IZ zDtDMVCmkI6&0lhyGltNcdr7R9sRE@N@T5Otprpg&`S*JEI^`HOcbpj6|8&?bjPyM} zGd2he2jL?MgsbCDhBMiD0bNwJyfI_5;W7wzB!`ogYBxjj^Ik9(;p7Pv7_tg%b{C3i zw39l>qas-Y{Rox_?Tw^?q`tDie(n7q;P?I4|A}z_4DUYuT)q0rBlK>OOT}H`>?3Ck z&MSGt+~wP)1z?C5B)#ifS>2IVEdPCA09^BcDSnNfngPb1WaNE_jbWpEjwXfG;5N^n zfrEq_HnK_a()PvF#y0-*yY|X*5Zk5;A8HoCJ!_N-R#r$i$5t8`^=%f|E;A zV*-Oo!=!xsxCL$3dbf`<$R^68UNmI6HDBD8-EsF-pZfTR@n`?i|D|Q6bnT0oOU-HXDZ|9RnVf79kXu_s}d^PRk&M z8N%e+n{M!8BnrtxQk!Zg-UN1usaHEmjVeqZE?Y_aS8)usmG?V|hzwoaqq|s4qQ)hn!6#igfNu4R z4!hV&!?E}?yh859A$y>{=%&qWOk!VU7NKR&eW9P4-7U%dmrU~24%kJ zgyk(*b=!dD(WUa-4&U^>jF)%&?@_t{yk^e^nOzq%EwK`9hH4r7z)4AP0^`VdI<9y_ zT`vWuOlf^c!6Tg?Od2(=fMX|;NK1Jbrq7Ul%zO~V1!60u%HEev;DVH_l}igb#CYkb zBMYucJf>HJ?qkG{y+Tsueg~5SmD2@C9iYm14}~PQZLz8!r*?bpEa0=rDgM`3b2r*^ zGLzQS85m`s3|kGdLg6S6H;PmLS(^`hNre?m7m`*?@nl?OxcQ7T6{RJnJlyuDgsY5_ z7+pot93+C<0Ccf>M6m-^r#bZkQB{{OzV+7b%jE*rmC(fzh1fe>qE!jnS2Z8qtp{*D zTDMqZlDtf;cu>7F()=lqUfbAzUOQRQ?eK(0C0Nz7+NkUGCd4w!yz- zwo?`6vgS&7Y-nu05qGY%+pW+%pA9?@0pg@h*aSIqB0Ag9>Un5i{5lXFbz_d4kf}VO zVZ4vi6{vw3RVe`>Qm+DPh+abdl3X2Btz6Mg2U)m~4s&N>njLhnbM6oWn%I?N;J6l3 zj)+>c@Kf_E!ugl&6J}V_<0N$I@o*4H?u_Bh?TC&%O4AX-oRPAMBr2qGIwm*_u(;o_ z&l`4Q_pR0t=xlJc-zp0_Ay-^oNDIG`GlhFTnV9!>CbrlTJD_yHhmvoy$>@xIOEXZI zX}1FzHu+q}Lp->HGEZ{pgx?C6n!A6Tgo5NNEcF7wNa`TpZ;hj}EEHNR8P`JfFoO%A#4|hk@Tx`$0*1Yzn?=gwoXD-% zoP@fWSP>om++-X%ons?`x{Qgy#I(eftAWR_y}|GM^M4Ase^+lldy9`BKSu8z-AC6@ zLFs26BVqX~N>hePCeuME0SgH!#M~gz0iy_mm^X&=4`Rm5ePO`9d8f7ZG&oX z>Tvq56SM|2A8`NhpcZ-U#_o;Q1NZgX z*XskX4_93G#(w@n?5hhkihOi;$5j_pE!E5v3UtCm7j`K*dq&(O+`>h`;!6J<=Ksq= zv)pGl6HVr^YRYfos7;V@0K!ee7h)O-_$Pw`+6fQ6=qGJ7y2@GjC00>YMfKKC`w3sq z|NOuB?~6}=fS>-ee}Yfm^M2E${*G8d+peWGLA&g;NsXFecY19)qGRP^$&K-vQt4Kz zt@+gMu}z^shNSc7RuhC*pH*ofrv@Cf)^d>IgOvLm-h9F2nR{?WMM=|2ChCS^W(;=^ zQ1uh+wx5R+D9k>(JjKxCZeV&Qz`#G38atCU8d*NZZVjvs*c6}?j(7^+kPhxRUsG1TH<;uKS0P`na+9Vz|z#w&C9(^6;bRWt{2-gYumRtmWb0bh=_ zTmwDkrS1KiaoDJ@jRCJ?k|4kK-&3Y-5IY!OTOl}i^g9y)eIdi-?7p(IA%p#9C zvJ&i2JIvErp6ojZNa`r}$ee*Z(8LZ^bemNJ3Cq}dMvX_1eBjBF|9)8SQ3(bLtCEcg zsgqpI>GN~Yq32}u_zBEd-X6u+uwf3a!SD+19KS%e*M%`}gSjd#f1oVXq&$ZBVd9qA zlpv|djzV;TjJ=!tt*Qc0Z4S$$$nnzMRmktSvtZ{laUhsynkItgXD%jNvcTr$M6(D` zLt9&YH9v7u1CEI*Cu9Nj@Xp&S49yypxukiHBGFy7_w(m?^ym&0pH4|Q(l`(=m3OaP zJL5o(4LfB5HS0dj3Ce4G>nUg3W2abin@)Pe9wEVhg5o13t2Qo#hYTAh`ZE*w1R9() zZ}5nfF*iw?!0BOA=SH9St&&hnj>5#T{C)nJI3_rrn%|oQa7~;LD+!;IV>@H|t>&I& z4H*Sq?)==|h+K|x4)cr&&o%*fllLz07}tXb;nR<2KOyka#+gV^m4rY7YF@92BY^89 z!-uz(6TeE4$jp^L%v1tnBKj8E7OMaRE=#LWWmSYa zr8X|>@e*~4Q8)o$>=3|GfV~>nlxWH7D{p)NpZ=f!0`cyr^}T=lhu3=^6{X&_7TsOl z8?uw~hTBh&AyS7a@AF-at~x;6lK+Ei2x%Y~{OLZy9OdQkWjiv)xuOe^mIH_QB~0L; z!8QeH;_-r7ty1RBhcMEN#G$OZScP?2SeN3X%cU-NkJjTycUpHBT`qS3go~SYkX%Gn zu`b}9?c(L}BXSj1eVftE-w7^?BmCc>X=b+LxW>;0Owi-PO|1{h8l{|L{Nl6RPK5 zz-RuKzmB`dj~tvyVDGum8HAA!)J3}z$WYMA>2xY1%0b1Z!o+TAf+eCWZ9?Xt+3A|m zur0JpjYQw{Em)l^<%mmK~Tln z2XBt51MqE&7=nKbM~pNM$4Qg9x!%}zvuKi3Lg171@#Gjl>k3#jgPI;n!l|>xg&-Tv z8MRyxS?+$^q5k0IXFC53p;0i!Ha!LczyXJ@#x~g~P2y~P&q+4Rfh~`crqjH{ zlKGP$@#(N{oosY$OD>_EgFEng`GOsdN6XnEPuDRkay7Z74eagrb28NUVcoQ(*rY2@ zkn5&Fo&@{0Kb*sF12{Bsj+7VnnlJp?V;x~IPeQUVo*25`B88gYg}-BbpmSL&HTDE%opc2;ro%1VSP<92OTFgC zaDe?FBa{xlnZIN@lflg{tfZCoXV#bwm<}1nWSaa9Ih#tNj6)27=+M2s$Vi2Vsy9G! z?Xfd5C?@)Hcd3nuOodYm?)^kvmhM}{3s$X1ZQfY}#vlmGJGL%Dv0vzwCy%jO4`5p* zx(teAPHrStRFW8?WE{NaeA@0X`+o}^gIB|(O?fso=Q4;n3DWWNlO?x2#2qf@r0&Cz z`@8*o3cgUtLb;6W*wjD)=c;il;r1t(WKEDUiP_xoEnxBrldJVno?ZaJRSJ2SV5)py zOq&=p8#fQ(K>#7HYP|5g&R9IfB`e>JhSaV@=*BSF2Vy1oN%Z$4QsG0c=o%^2_KaT5 zOMy4w-+*?X%-kUv#u(7wIb*?6D(8BTi9L~8+wz+B{QX?3KEmqrqJD?`skXsV=>$k- z@`Y)Jh(ki;qD3B!juR$M(*;mD8VzzT zvN)D!9+rj$bTJL)($7M$lRITYH?7nVdP)GWV%%zm5{Jbi8Y?Yv(7rbX32BCB4G z$VDYW(9d=cgf@)LK?d?mJs$TrNIIi{ zQ(p!SgWi(6okPT?mO3*V0b2~M;{g21N6~X-=T<#wA7e4(1 zjn97<{@5S?)Agy3z6y2k;$>OV9732Ad;8rh;e=mFA?+Nanr0jOn)PZNs~8W35O?Q{ zcv}PuY$Lf{38*9sISe*5bE1_DkZp4`)U6gx9&HV2X@8LY5Db@%MXz&z5_}un&ZYDC z;stQWk}*vi3U**!m~h<3#L>V3FHMdTF)BJA#}K8AnVM*g=fI4xzhtRha!PqvmE6P* zdH8rfYvluJO)XrQ{fpymL;4mf;$*Y1|fz{okn?b zUpSu)sZ9)b@8FM>%B?$D_<<#4icsMG(q< zn9b$rX};ShMzJ~4OBikZqo(HERcMivQ}BED;5wbUXS&7*eUmMIg9?_i_@-JO|^v66<3^l0gv54DppL;l+B3|7yVn6x|>RW5|OsY!inE74Kr zAY%qyhJzX9KPMP-SZu)z`DEK zUGMMj9Sn~z#h?KI-MWAJ{BG49GB41eJMX4uOVwNMIH0~S)gwGyU;J{V7>PMNFQ7kNK#AU=ls_)H%@g>1=-+Gm7TR=Kws`?zU8``9!H>?mHx!Rb~8Zi{X^ z8zA7{m)9m?ka3{TK&*E9(jcpdVoE#yIooIr~6VTr1KQ~*rO!mJ{Be7my zu|64US`s<4J`|19IHuYYcl--u|y5GUe_B{!Ob6ryPMfI2aZtGK;HdbTk>CF;>O_ z*quMhB2CKOwIg15g{d2+w8f|jIDQW(GlB&-B{IIte{(K%{!>hb!n>Fwy5Q7Rdj;h1ZR#3kentz zBtqOQcj+9(K{DN#TLw)!2qR=VC>)GRkE zWW!lP4r7dR=TL7Nv6MSCHK{Hw1{O5s%9f^OH5X=lpff7vOupZL@WSn$mJRJgnjA9D zPm|3}YEV%N3^>e)K-UTrKEre-#UQnUOZywA8VB!yM!k)*xK-0mu_aV-Mmve^uVp|YY;QZ@ zUl$wf6ni60#2j5tCb1?x%dlo62&}V*(-aLPcDFH6!PybrY^=tB(NXQ??hdF`&%XP= ztzY_Uek*?dFZ_1bB(9Y@aI~G?ni#H=nbtH7QP#=XM#svx7$ZQq@;)b}=Ku7BHY75} zp%3MejApg(c&CX+k_H}a6_0943h3!zNfT?%iUUfTPZN1FL4~a>_k~j~Gp)o!VeDIH zlm@O$c6QEALSj_w6y7ANDkPhnPV0tky2Y(>C;Q6%-UNVcd_wm-3H=x!Ob z^kTW!D1Gleg(c(%4Ys@l!X(fZZ4buN5ovfL1AK%;=5qMI?ZSK>Y(nvG{f>W9pZqc3 z$hZEd|F4Tx?IRM>2ze3j6Qd{q0j}(Y<@FT}{S^VvMWi+!tZD3qLqx}noq%HUvI~;x zv`hVwdj($%1{AtXXYkCz8F^OYfeT#&Z*L9I=Jyo&LWPQar}hnE8aXQEBhnKzRwY+UCWe>MS*DkMK+E3LOdksE6Nd#hw zmInhLHx@8N&bdUAcuX^Y z+}JnHb2d&w^jL`GuV=WUTJDXaWgBzucr4pU)Rp!1{qUo!vF`5d(5#rsx6E`i<$P)F zy;-$Lx>Hh5tE^H{Mr3Y=Myz#*x~#Wv_Y^M4*x4$qgL!V7G3SpMHOx+#gO8QpFGQ?; z%kJ|#2*yKf_PMvytY>T#9J|aEvg7hG;kj3^^IuakG55X3z5v;Q2^C)It`8n^bb5oa zX6UA1wXjC@k#(=Aws_8+gZYU^Z<8`YOZmHokVq227&@g8r$3i+dHvKKtX)nAdJ)E9 z_gvN;hX>ro=yAJ|NQ{89y~LzHEIs7Z3g-#4#|p{{-Dbvm4(SBc@e!TB)2I>r&*P9Q zpnb>an1S}w4oH<=YRB;MqB1Loxx@qH112X!J_Y}|eBv#8N8qeOo!RFdC*Qb;=XcV( zE?EG7q=}4KUncm}jmW4QBc`!_#SIDT@ssViN0sif18tJcE4T{Sncn^IP`h&96X=Xx zMlj%u7x(zk``-5swAt59F6SmFLuM(mA_5^Hn;J-&#pWJ+2ex`xVXu9)W!w&AtG2PT zGJ*xvn)5;elw9EuXT1Yn4z;y=t2Ae80==s34*i~>*q?UqJ!tzJ26bKh)|qPQ{Ztsbd@KPjIdfsX}) zdmN5sq`e!o07X;w&@oUmqRDs$YKxlz+xKpjN1{_K+0u6c075{$zuf^jt|!&4CXZ7$ z>f)T-E{MQdHx)sWXzsIM$KR20+LlXV^JWA0a4ai;7d?%>JlV~)xWnLD2;fYE%Typb zVLbk>hoI_eSJR}9NCgyDcfP0qlory|10&+{n8qO(6WNW0oDN_ZfaZT0>0MmgDN%B_ zSmTe$3XYp;x+ulB*Urxlrm-G9#+%>sT>`HCfBScShcg_!jKSBI2rOqVOVEmrh!OSm zIhP7@CNa5>gp^cw&*Rl{Ru`ON|2k=*hM6Zpn2Pj9Q=ME1#Pn$VOjs| zkEFW+dhr$eW(-hUN_eMyN=5O;xEh8vP1?ltG!bPe;&zz+H^(UrpCFzhJp-JIhT;VG zexTGEk~LY+M!M%$*49SPk2D?#~K(suy2;8<)qAZGaFUj}SDZ(n%D~dA99pXQKnhFD8mz zri_j5g0`d664U0xhs-Bqnb4>NmZm;>&_=L_Oq}_?828hcKQ-<3Qr73_q!|@Nf5d;IEjJF`Fg|i7d`<`Q8=0uA#+Eg0 zJ+giWIz6R|78Gfl*ohpL)lm9Bwe3WWWg}6Pv?DG-=Cstw!vN)m15{_qZyG(q{x7AU zp&OL&u1_#8sMX$NYB{viO{9pDCa|8J3UnMd*jLG8cB5G@IMNNU?g?y3(`iLO*9o)> zy$S9@)YX2@P6NFJa9+=Ti8%GW@|K+hL8>TPOTnTYr|7HgW;aa2A^Yv%Z)8D|8y{9U zy#y88*|G_=6g$R})a7zZy+p$LXa%SjCTDrFqRc@9qqE7U?)~Qqr`Q&kKqD}E~icm#oAfx9XL6mv@z)Tjp;Sf$M4d%~> zLH0a2!3lVhDcc16;U-N?j(Yl^bouuL@3NZvs{%j18rW9b>3Qf@0 z@uD?o1ujKd6KOYYg3lqA5HvBHW^0)=%3xLh@9H7U#wA0iSHQ_!#!#Hd$uDY~4FKz8 zBl=vL8?dY}<92630K*!FH9N}^$7$50lWrbH!$z#o(SRM6eCo}1E;ORB<^=a~8v-Jt z1SG7u%9fxj&mw?wYgH(RC?{Y9)Ml+4&Q2J0dKudkieMq4Vk|`1CnamE39N+7EZ7dc_XX&ttm6>$x{^|NI4B zeeFG8B+%FAPp@@4^1#i$j7)H7&#@}@=Ek^_aq=5Z3fTMGs*#KJ2HIU)0Af1Kj@i$5 zOc}HQ_s3?cul%8`wV*`RJWeIX8uTYPQ_I7#4;;T8_&BhclsK>KJ;2E_0A$DDmkq72 zQJD>)OEFMV#um1xaVIl&?rbh-DdO1!SiFdq(=|YqR=}zmY#upqu2fwxGkX&gIcrHc zYn)xP{ndiwy~>>X#&fQ|LVPij*}Aj(MCh z^NVb+b_K!2=83R0LJh2tERFO}@!=Q?(`hp!(_mHzxnVb~BP~O$$o}p7w~uaST_2j% zv91cF8@JUlVI}K*axH6`8yWU-$_R6>yK=|9qLwa@h(xTAP7HB?O3RTOc4f2h__bHC zfB1X(qrUO)toOb4gryFb!J^!MV%pcK4YU-0G68%HFK1r}WsGf%N78!6@zXume}A$L zoa#FR5{n)TJ_*L8hg)yBR0JlOlP3-1WtV9pM4;zXSJ0~~RQ;&QiE=Co$K4kDFr%)K zUgv7BqI*OL-jQ*2Sox$bw_jMY{#snmn6DU+dp6Z@HJSVWdMeEB9I;~ocaj4zlwto(|pTn3@jENuGjkDdtPH* z-r&>EeHM3hxsm!odsgC;L$yyOm+mn3%vu{QH|sBQ#YVi$NOXdLxu2Byjl$HtHa1EfS-Ge8xaUoIg_1*J*xW)=>GvU^zF3GBwv(;f*RPb6b6*jZ4y0twK=N>6cKF zr(Dsfdx&!%t6)+c2*|3~*)bE|`7gEjz>`%|EgeLNMUbtFX%x3wAe z7~b?z9m)27f=pV`PzWJdndvAMdJhOwg|$!50w#k1pTY9)PdpM5D9PA@D0an;Gsz4D ze&&QTna(G#y!zt);bB&49BoP_fcqC4Y<<;3zW{i7*m9Rfx(8HOC7|9G*&)D#8!t=> z`);gRxs+bt;wMLN950Fy^y;PeL-y2e*6j=8`QmvQcM%@Zfq40|BDTQ9CjlELChI6( zjhC$!87!oiem*2P!m1;-&{(4<#?1OfslmA;oYskBZ|5CuaR%G*5p+ez)+J~L(%U4i zd4NOSo#6Rg-^<3}e=ErtWpJ>Nzt@T;<*~MLwI+a004h7utNdr^(S{G?Fd5LZw*gR7 z-<4dGNyX45_AYkjxAvtNFb-#GH>TEWQg*Jrn}2WYDb`Y&cu7DXE*c}9Yj_d*B~ZL^ zTTGG8yZT4AmK>r zLcj-lO$1}}7o&B#Vi@Snx)EB+I$>bS!ptx|1jyWF5mz5ZXy>e>z|Q>P9^+)A*Qv#= zF#=G=nq+-fN*M^8#!M)9L|Tk*B9NVP*D+r=2O0#h_Ffn<;A@rejtOKA_1?!7VFwh?>eqA3MYssxXEso{g&c^5K^kvkS0 zPIo&Sq})eYNw8_qHN1rs$*4MVxHzcD4OORV$c3g&R6CJ>MHDR<#OL2ts#pr!cJlf~ z{rq3_a{vI>>t?swwa{Mn2)jICfEm37uR$raqJt`LtE(vAh<;^4v|O(n-u?tcK>%HLeCtP+nib)$u34#YISKxi2X?b*{f(;0HB z9BVqvx9y(?w&O1cg$tyr>6%W{;lS;DVPt=KtC;Ox2M z^8a^Jd&shx=4vg4gXiSE_S`>A1$77f1U$L^D-|vV*F#DGu7!0H!QG`cfJd*r5BrNh zguC~=hKIJ2ZbniXBn6Op2}QUbJ_Q#3_V^HXCll(6%3P^MSREFVVFJi?=}L$Y2y@QQ zWLn3jVK7Spo5eNoRqk|DXNMNY;eVhT}uR zB+Uqyci7&!bLMDibo}(`anlHX_3ye5z=Q-iiNrjj0}bh@FRfw-MjggZw&67%%d+WN zQyb?*XObs)+-_wB+buIw(N&yI<(PHPxlXcEwILSvnqV~<(^wFDpv%FzuC?}UUxP0~ z(DlR#pwBm_@4`zyEO%0M6qpc&sv5+IIrO)FTa#dqS68yBVNK#?$Lhx(WZQadL}N%T z<_?e-0+ASuEIfUQGyx##mcggt%!Oep)+@6aIdtV7{eCd~d{Cn^38y*W8!c4-& zh7})r;|VVN#gBdd?sN3r6SxcX8Xl_vYVQYbG%xPl*pCb1o!)%0_w?K`-jJDrlSl!Q z6quc{sU(spl%hT-c25ka#CQqIv%ig83mFekjh#4AlCe<^{8(w5brUetNgvF2kheIu z0koA>o(SeX0*(i9RO9a2k|0-|cp<$3`j$*jbYVZ5`>xr~iL;2&xEyTQs=(j@NFZy@B9FW`(G8S@bEsUR;0<$1XQ){KMZ$gi>!h(Vr<93Yn4 z9f2?tOwR$Ab1l`_8MlydV@82unKhyfpG|vwJ+eZ@bK&fFPFL#02H}6{1#$}3ztWapmq5kvTN&_6bUCOm?YcS zHYWR{a}WbUj49_5Me-L%EVVOJAhZ=j#|h3j8-xZlY}J}l2%l#S80jfxu!JxV7Vy3R zFYtI?v*h;uF&oZ4a(ZzhPBldbI!1+Q+#dPtY1f#|66=&0#9f0Y~eH>^Jw>H4OYn~_~ERDZrYCqF! zVJc)#3w#D(T$9~NaNi!li6XTyOcd1DTqv71Yx5XI!${H)jYXW0w)xwbrc($m{~a+} z6caU5Q|hBNb!kAOHT8`^1uVUE=OfMb{#P<8Zrao6s6iTo7ji|wqSUc4>G)b$c|u0T zY*4eAHAO|E6AvXf_j1ql7Py)h!sPU*PCL~jn$l2jS^?C8L|oAN%CG#C%RRhWv_8X%b%>vOIogzrdM48lAXDYT1JbcL$i;K&<16}%XBorJEKiUFyb zr$OAXACukQ8&XC?%)D`x<8vQL3A9?H9H3-g{ed`C74`%lCyN=9b3hA1{Q1v)J6cjN z$C}Ch${rz)SHK< zg0FrAQ1`7Gjxqb2)G0KsB0&9U2dN#pTkkC4ajvi zIG}S2HwDqW`4YuZEr*;jI&!AH#AC!09*hBndu~hvK4-i9{@%yf`>^FEh~{CuDGm*- zZb-y9txQl`SYyK5Gx}mPjOAQj<;H@@FXiy}talhr)y5DG15L}dOUl$5>Xb?O5o;y8 z#+Qia^tS5u@0lP>9kXJ86>6vkDtKWOze$+VaX*eUO+hYbGUhv38G;G8$JMvV89BM7 z6o8L>cn|O=P`%FCz%dPsZ7_>LYzLVbJY)aWtzdhpFVp=dn17-a0V*b>2pR3wvz0y= zuAQTx5M~A)k}qc6*iUnZIAH})XJp`%_U9YmF7#vuO5Bo2{@YtqIL}I*m|)=Hd=v#P z^m5W72N$RDg7y0+HuEY>`3I*&54So;e@3;O>p+Og^hDw$v508cre{R#!jvj2_RRp- zb|$!5T`5E4*ucC>3D>It;PuyE|DNa1o*7SCn&y+2CdIC*s2_WM@eG&uyiQDQ4>`p> zqo3Hs0{UK;SKhO(4|uVVs=&OveZicOyifdyBrG*pP9`Zb*6AA;^-iAe*rmL4PAk24 z4#dj}D8?@YKA5BfUJ?NV(@$gUJq2|d^=0cd^#%Ff6yF4YmeWTQ`{&pXk!m9RMhqT8 z^Q26Z06FF7#weD7@bv8p`o<|ZoP_v<5W1}aL*^WaiKyW)r_<`Iv{uQ*Xq-)fgsLl& zHN=gHPXjm33(sZGyEtEqspe#UZblgBC7B6w5#0cW>GW##n;qFKR|0ltY?4|+7H0w$ zv$qE0fM>q;*)%VXo!kbK#qN;|V`|xwK5;EtrEVCVjLDQJ5Ysr$`J(|+k;zW10yrCj zxscgx;26`f<$dTYuX9`&0Jp5ez;QV zC+@KY?KI}7Y}ke5b#F-eUa+tquAFgaP_iZ|ix7f=v*(uCC8$%8i+TV29;UVrti&hm zNwCp;c2cQV!xXc+%>Y(6^xzUZ1O(Vw6 zPoDsv|MmnY_j5~0xw%E^%-Wjf&boa4@_BZg%-_+$;^s81Z0^v^}^RO)|E zTP1N4Z_X$aIOBx&wDyY4IcJIJsOz%(aDdoxqJp}k*u7=4oE2i~dY9*Ljd2`MRhBUa zLK9OQz%j=#!8MuCxZkmHYwmWQtljD7wnit5;=L{s(=0C6JRrqJGSfV97;GRI198!DqV07JsZILH&NyghjrZ@ojB&% zJvnBJ^|{Y|0X3R9{-y=?}fnhdF2z&Itw&MA`k;}>4OJN|zET1!=A0@7r-P0j@{ ziBYqVgd4i)kdr;7B%la~DfGcGJI@%f66%7IvUCN{XDJ&`_eY;{tfY%UVN* z_B{BlJZUh+oPHH;tBwP2oq6$U)e6A~A$4jYM*`AJ-G~P|^P2uEPW=&?ZenMe{<6V|!X#Oy2QM>(0SlN?se_-(-bey?4R+1tCEUj2 zWx}tIKb!M|<4+H^EC997bI{K)O`_53&@X+GNllV-Y z!H@F%M2d;ZjkW98{nG~u9H9&-!4ufyF2^=kOz|*Ixd7+t76#$@ybtj^`$6NO8l*PJ z(Cp4U=;bgC9a}K^GtDx$53IZW7oyL{;L%&DY6H0iWAivzlLkbNVupnqljxtB_Q&Vh z7>Q32Gx&L0gGdCEnPi2>Uw%FtQ>Ecs9K_L>&f*O4Uvsm3xFYYIT!cUzOb}X*LE?gh(arerTzk0Xsu04w%};UOoZ|NU(&OBC_mZk6}L7B5hjp zl?GXrae)h=VRtv=>}No&3Y%_P(uy27f45>N78+ff^K~RrZ<>hPM#JKJBaN3-_PL@t zW7o03IVD3G#WwV@n-Wl_)rUho#w1|MR>aR<*0t%1!|z3jz%&4oopkY(6?BYl6A7+u zq{w-`7^RwfteZj4)-dNI!fybUs40dM=l7E04yi~ETukPu=ADO}C`c>n96@Xf`z86F z_t<;jt{YXI0sx>V9TgzQoG(IfU$D9MAqH3E%^FKTHmH(;&yvU;C8l%iD4BA;U1>Dz zEL|jo6{4f1EwlSPO%k2`F)dZviGW66YkRuEp|pJx=61QD zE++umAk%f8B30e%0!fy9xAeIfPuJSDP#sBSZ`4{oZE3e?4`|Dn7HJuqUzM)N-B_Oth ziY=V~_A3kS-W@|ScnLr)SE#_9$WTT6@DF_k+|TizkA4i#pWox+&1!p`6?<^Yq}zmQ zoPeLnHbo7+Dp zqs2-$L;aF%Lof6x8_8)(>Twi=#j$6(C>YTkUB3?6{|u#_+G?Bgc0KrLC&XmS6BxmF zA0gWs%NH#wqQaDpwfSd_MKSap;wP6A?wTK0)HCS^K*?Q;{roqHcWjY8OT!I1fay45 z8=AWnMc$mf$@UlIMu14c*RG7wB!=FQODfrF^{lDi4l{-}5^5JsW$g|A?YnQtk3Kfz zfW?y?a4;nmXGX-$PwWal>CRkto`A*;B6F$*xa5biH0{iixeiS7ZYrRyaA=%xW^!_L zQbw_RCQQ<1wBd%DB6EcyknI4?H(>7&RRwbEggzoBiD#Tvr`m%}xB=b5OiAz>7J6Ga zGUNIVo5YpGrOk-@EgC;h&kqx{jx47%p-xan%tV3;iOR$(J_Eij?K(46jM*ecTqNiI zSLg1#L(qwDvi?4MQ}8dy$(s_>D?_~$Y=!$5Pd8C`^_5qC@cHwnNj!REOym=+!t3vQ zKQ4=(f}Z2@>Z|I#gRkQoA*A&yu}SP}eeeVCzh3X}uYD3&!TTqv7>t%0#0j`D{!TXn zY&@FA-elFL+$v!Pri`LOI5~x$?}Ot9TZO)DM+8$xPIUs~{wfw4EfF82hfVlHHJpBq??KR z^Z{m!6YCtvzIK!cI)Orm&8s=CEcX_0qG|RNRx4y}8R7&&xAmJ#)z^KGM~`3oD^-Pl z_ox&m(es_15T0=V6IN-sc>e1cZ->AzS`ud`gAl>`i zIoJkZYb_HQS!1`S$r@CkCMQ`fs3Sk6q>JcE0FR3dJt@T*)4CTs_bptubjIlRuxK#^ z9hc{?M>o*v^W?c*g_v1;8WCQ{k1mQh1Mizg(TC zLbrv4uGT}cNj#Y;|1_Z6Tyhh9VOK}>vI4*rfZ%iL^>n;xfH}3@2BnJAb&auipSQb3 z|DN)D0NKfwg+X;-RnB0Pe*(}3c6@xhEQby7VV>7}PFQ6lnw(nQQ?r7R&N(<{GUu8s zg?-QVjHk)?*^rq6^)jUgBgX9`3_Uz;K!hqi4crVPM!N~wCX6K;zCV}%Zn^C7(_UUp zQN0s?O166t!Z-#E&`;oB9Xsk)r5=A66b)h@&YqF@f@~XrD3(~Y^I4nM=P$56_M`gG z{)ztppMLW#6z|l%9pVVp(uy51p0-BW>m%C*3;Gja=y)f|j&fm*A0?G|g{fxwUZ zX}?52@0WZ>-9PN+x`1m5-I@Qe=RPx+)>F*go{Sw-v7`Mb5#J-9C1K{iLl8E>bOhwo zTjxLNR54L7b8gcvDED%P9T@b`pxS94Zbp40TTLBzbMvkKw5eGHgk?_A@hi|^muZeh z{5D48m4m7&%M-AuE#SKE$qT`{=*<`J;L+c zHp@z)W7d6|ohj2o4N02Q5NkKt9Uc2Ua&_kw?FB`Xr!`)_0g2iPcv^1cW;{BeCY#a@ z4oV&$3Ajlvx2R@c9XAxvQLs3$tCRs11T(5dlc?z_GoxnF2)E(Hu*ZpFCbt*^y6egb zU{T@1w-HBK%ZVWY2(;F4rZ9xQ**Os?TPJ82kdkr6_Ekl57_8}$#H#6Q;gVpbr4gNd zo{fu%N1COi;A$A^6QVQ<-OD2Yy=oBvYzUQXhtud=Kvmx)$sCO5%~~W){QB!H*&RS^ zNu_g-LCN8)HtdRFm8b4^BDQ{4zg?9j8SP?OjBcX%iDLBdD z`OW#WV~0$>mawP)+sJ25K;}o^+UCl(?NG0rV?p*gnqFB!e1%rGGwV1#31SX0>ge2f zIJ|L?cqr2`;!Ka9>e(YAA7Du2VK@u(yYp?I^E>icXErA)Fp< zdnF;HDWl=o*<+WQjZrSl9y&&DC!{IVZr|4m-W`jw@;ti6M|4US66kYIt>4f0*9)t5 z3B_2Z!Q%>%G~8zhVVCWBgw{>kK2k=({Ck>oVc1H_;4pEQYhIZ;MQw01w!LBR95(AL zM4-b0*g$Ioyuc$qcrzg7%R6#f=S%>d6X$!;)4XNaq3+wAnxsf>Lr1FJxtv+bI9~(q zI?d?_1atvPa=may)yEx3#43W3%({BE^LGh83XydIPnWE{bB!7_LK& zSKs)+-?-deaNRG!y1PAp6@<;<=DN4;UV8)A2jJ=R=U?~u@e_=s5=w7Uakjp_ARy-C6@*CG*ij?8euP7?2KdIGOXSfDalC^a%*4%e(#N&{mlPo+mdnU zIXbzkM;#C&*8nz~;6n1csL57l#-`+EWhcOO${-gZ=bXo0y18EL!eOeD6%p*XhR<%^ zOzm-Kfl-z8MC0aC0*HYL!jC8RQ8%f!psDF2-I!@$4ya>+*ZllFpX?;K7x^J;l+#R_~6(4D1xuxm;b7N z%z4vQZq7}2m>n>f|LNiNCsDH<)Y9vIOQ?Gl%?yOo)wSFg+InW^T+;h zzxLjb)?fcypLXZ_RcVEmdqobxmM}f-0-bCeqQ~WdfHV3<2yF$yVcc^cp!D@gJB6Bj zTS^9k=jdyKxnbehKFC(x!0>UliK+-ix{uiP1d`2`iWmIe|L8x*fBr}QUB3RKe+E#|$T9H6a;MwD zJiynsb8n%O2SkD~>k@A9M)18RAUW_hNwn^fj&q2xc)N2*Q*5pqEQyV-R_C0lf7#xzz z$DB~PIl>e{5pWaL{3z09%XLw;Y;nb2ESdt&^n-vP#-g@SQvNs40iDYZ+1 z%iK-hmkCy_IxJI%>z35p5XU!HYp$B_bfHw4E|!|9Jbdo3|K%hd&hvR`v;bV@P7GkO zUy7VUIzV~sTk=p9@1VX_UR&15{p?xaJ$hBwt?yeabWshUO%FB#?|<)m)(?F82VMmh z)+%6UA<=ViSnRH~u_T(*28myrc0b|zgFb4Jnj4=|qw1npXpO5w2#t}gDWHAAx=rBQ9-JUiee58ZNwhc1_dI~~-u@9CJ z%LJAh=QuEI#Z5zT?gCesBjBth+300IjRLfVx;*)-s0F=vU}J|(7@@KIYNM+A`oKqz zUtwQg^wW3V`j*#Ue-D~wtxhLhKy}9@H69)wp1HJoZ|K!ZaYH*_Q9+m8`T zz66JvB*YOdR8UCnC{iVDF(I<<6M#1MOO|O){3;WEmbd( z_WE#ACWZ>Il$+u6yTC5zM5U8)<{;$aRLE=!dwjv5k^*1xd#=F#Hd< zpy|`aV3A<_beSEWD~=i>VOH~`iJQ$b?hRWA4C zFfR{i)O|)?baoOtv_AmTLpC+a$3ap$8dA<;`5G3OGLgwd7$VM*|d` z2dGE|CmUq@XfDL3TCoeDxPVi%85b3XGbEP#m21>csgORMa-mzvO8ZU)2Tcd&L;+c5 zZONHEGa(vwNWiWFGEJUpv^}(P(+uF%n#|C#(x(A(Omyy1`m;^QXlE)oB1e;4ju_bKrdxD|N@l%^nud?0 zc7mltG^bC3?R|z#&Py39rFj+Sg`*Bo?kp1za*jaUlW(=+LMmSQkoJ}a9}Jzp%5|H% zCTyqgu`ZXoyIcI?+wbDZ27$Rmz3XWRLOl7SxkVCk1!($kEWSP}Uyv0d!WqJA1sRXVk z0b#0=I1J3m!hlQ@G^A$$C-Y=J- z5wMRb^BYWq_5^{$Uj!>r?MWtc0VW6poIkRoVPLPx<(eEkvr*alG&^6@egXqGI3_gs z$SS7-G}^*&k!2*c{A?!f5;zG3Zk{(9rS9U2Xr)g>N~n|$en>5s&Rd%h9MgBsX`m4x>iPY3-91LHM}O(Xix*fd_d#vr z+94Ijo+N#k9!}HQAj*RHulcG*V=z}@;g|k1@!Cs{@1-PTE_&|D@}p}k&?=k;U`~V44fgackemJkGEX+Jz({{d%LLp@WDB%>D1|7!VD=Fz<7o4X_h3SkrBR-3AHMeRjZ_;{}dDTs?Bp(cUhH7u9-BA7ct8cvV zLN8v70N0kxUEBcLIY(ewwFJ+c9?NA?*sL6j=Nc8{Q|Q-91?cfIb`%xm?~TDmFd2#! z7T2fcVw|KaZZ|3+J!whc>D1vfq)0rs9kX#w0N%}{j5#0xWD+nZ7U!UN4ubJvQ&liG zhsr^oXE5E|GIQ}-%k)LE4PlPMX|>$N&@}%kH^>SUCK9-fskYM$vWPpi^A)hn+`Dpl zdZou{2`95;&0l0oehU_627O>i51+Tkm&OGI6hW>gaxH1q1WF}97Yftm&*5g}btl^} zYahE1Gbu48M^i6)v5}h#3@riBlpZ<@GF|iH43c>BRbg1qGnZ_~E`XBDjMR+^h$zx+ z546t{P8Zx;QWNn9@$uMPX2?2_}_Iy$1AgYB@!w|E*Ub=d&y<_t9bkIX5CB zG^G-;Pe+Rzx`$c!`D-RlCGBiSlc&Or)QhS>0vEamhWgePxLAOeaR0@(^ns6mRO=(( zfM543ei^>-`Oj9B8=KIz3lU~Up)*8of)AT!rydjnw3KXs1Z}DJl>pbj^N0Q@e(OK@ zt9AGOFR%B0>dW!)to3C-^Ox6qzvgGxfA?qpC|-Z`SikQN{-=bZu&AZpdvYvbz8}zJ zYI4kwR%f!Py(TM>qPRF0L%frhbqkJR@ADSUdF1Eed?B(6XIsmri$k#LmW7@*8l~KX zV1$m9axTH-Td6ho#Xs1NsNxhG!V1ZMSt;RqX#Dh_^Go~vZ@keDm)G#6-~Q|P!LRr+ z^|{Y|9`_FqC_L!$B}= zR~~lt_<}etV4dL23L#{)`^Z6{jE^II3~b*x!!VZ5-4GTQMs3?an?MaN@p#UV$e?=* z7g0+?F4;CCswV==Hy8uQC!BMB!>50or?Q3$Nt^sAlDr{gTk9F${@Hc&X;!i`M_g0h z=Q~TaXLnrYb9<`F=09{(BMar%q!LMFYVE1ww)5)@EW)vy!>m~;6d0iBUjpKydU9>J zJMY_`*}U3k;#j+2s{AU63U5;|XW`G|B(#NtR#=J?bzQNKRnaX-CTq{!&k$EU!B#r1 zp0UCzPJ+Sk%`|z%j!N;$+^?k=6s0gOwN z{V}|7erw*b(Ws@tOTLZmh;CtQ@tm7RvBWMD-8Do%Z!%8+!++a=M-yon2osNDccLiJ z>rdtPeD6ClE&KPb+_#)y7s_I8_cRHxV#aV*FVSM++4MrWzZG5HvCPadutQ*a<6y(d zoY3a+AI7_GEHG-pg(^J#V!i&p54T$HRz_CDd?X7UBQCx1xzGLp?q2_(+&Hk}U*h5I zm>PB24{yE6$FIK^FB<>x_2C{XKd6KLbdtiyIS@dSb3@W1g!`aEm*p`HgY(Pwn}MI> zb6+ClgEI!}o?nX(S8&;=y$6N6JoTJQpW{q}usuj@82jsA-yxQrcu1gwOMXcs(J!8L zot}1$6gCm3B=aVL=%WV5Inyx(ilhjFw7ouyDP> zugpQ!;Fh2)Upw5{s@8sAkK{J7=g%u zPWeuE-6Y!Oy2wmEI%)&OXx}seW>z}?-kjRNx;@{`)j7oF&8ZnUo-A!Z0?@eNI*fEk zhub>qWb%fwM28sZ_Iz#$+Pm)e3$*q-mn}UZ`$1Twfn?X_G?m37^w6kRUMZ}l=kLDz z+U2#oi(@mg)&&n6;Q3j=WzeW3Y+69|=?EOlDc6K;Oy?LQyiP{PL<5ea1{)ijm_9|Wi3E<~BC;~Z z(ff?m7!wm~ za(yvOLq}%hKseLzM<(yEd1OfhC;N_@XBea9z^GU@z(DSzYZ=YH6F2VTR%>Q^FxjR# zlQHy}4QmM%Vc5{n0xDSsppw}$%{Vu6v!<^qgj*@mPQYhrq8;UF7TN(wv5z2CZUC62%PAAk zSe%lEbFj}@_32iT@4WpkKm22UJn-bh_|S*HOfRm63G7`7aWUf_JA*K~!u01rTBBH2 zD23l?P_@W)cflX|lYb8X*suH5;Ok$*kN)_dj>bkmJi}X`|9o9O@PYc0Z~u;k_kBHo z^RNBodi=^8`mVqEJrKaldIX5rFYa-@3Y|mSr28)Hl?oXFa+9i#MtSN8la2)SBa}sG z^^KZ5fWU#2#~t6eMoURu5YbVrX6#jLAVLZp>k?1LQHh&0L3zHr7+_sQH##!&ZlYDV zUK`g9Y&EVB78jmgH~!&&{&(Z<$sPXNKl3N?p0EFf^@(r(yYTkAZ}a}$ckmj3M~@$A ztExBoc!@0#?iezG2xJ)f@0SE)0mut)lx zz=P?~4B*%>CNKf_k@R8!Qb-L>hG8o~TbjaR*zcF^No;>4_P#487le`50+;lGNPxAo z!4udY;5g$$eeZS@2kESU+7n_}eT4W6-(MvIobQi9&M~6ko^ph+{VYK(4J#q%&0fZP z?6zcyK-W5fv=>$LxpwuOdvUdoagx}?hyTSuKel1dy4zOiO0SRieGZm4u%**z7%V6q z<)(Lv?eyR~p7Mm=8Lg>|)b-^z<}fhe-0@zFG(5gKVmqX{;YJx7jDzP5SaTuuzJrYp zmG_eD$E2vRb6yC7nu(NCv#fCuykUuGc?o0dNI}bo&3m z<-9qk9FJO!0oR5bwxNqoes#`=a@S5Alk-pVB$6^QIn4!4n}>nL&Av{|kbXj0_d3w5 zgUf-*qpM&HslfmV-Z|uUMZkNDcPcSO#|BqO9^;Ff&m2bR#7jU%I43^f_Fjy<#tNT_ zKte8!XZ6~?RIEJED)`Fxcjq)tb0L>s1cii?XMS!bcUZgQ&$B|SGtN9ssUSSGu6Vfb zula_rd%NoTX7O%%-<%+PE&ua=e*cwx`V@NQwY8%SoSN1u&{|im_4pB=fAMqc2{vAR za{2VWZYT%SiH-oHNdUyo`jFf2?*XdFnE@wxmOgcawolfWovGy?HImb3gI}D~ny=oh z>7CxXoZKPpiO-FGO0nKdj)SryfJr` zIyitX&#>#M*!H06k&U`=$2I>Um15TryMkaqzt2(FV3LDz3iXn~QEb(a12?ge555Vo zsgd`BOwfDS6SIrC&&kN+_8+U;6Mhp3P=sL{C*xwKHtarP024%q3d0Gu(=*7)zTCfj zuj`wHrD4i$at{uZ3dKqyh4*#>of9y%Xk&cCl>n>Kl*jMBvAdpAKWnocI6ZoeKm6IxyzkY!R~|6| zgJWLKM1w_aym)ba=lvh};4{2wrMMm+2vOXxHs z%5`?&oW>dLhA-k&2qR?b1V6*Jho>fEd==+J0@!KX(HUExAQf|V^TRiXnwq0d<^du$ zdWA$X%0f5~)TYR709R#{6-NkEpoohI>ojdi=@&tos>I(gXE9Qs z(Oig$8%NI-a8;Sp&0{hgZ1_#FCv7qH=;Ddx!(97pj62eCb$U#Dzjx~==Pq+|QU zngO9>!+^*nuc5UWH_iFntd+`9ojr@E-b&bPJ1*hn)jNiM&R9O-oWT=sPs{<2vh(B~ zufv)E!r>(bPNEeI(CwB*NGqp2qF{_Jghyp4hmXEFJtGQz4P||(x3YCL_)8=_E9{4@d9nA{4@0I`P-`NR@0s0_I`nP-u$9I@e_VLKJqhv749DzKkBQ$ zvOoICpQyk21D_Tab@%wvm%GB=_v)+f>?PJfvCWu(EjwmusKx;rCd4@d1h!Q&?x}JM z-eoo>GGBPjcTR1X?I@OP4sSrCL85Y~OHyb28U>`l*ynT6gjEZwrRvK$b$f4JE`>*z z!m2{6^xOZne+%z@^cern@BF8){NOj@OMdou@YN5zSI^#k$9MUX6Wrt_xTUWTc=Dl- z=(R8X7X17F+CSaD^pP|RcxXm5*9n!V8uJ>2n-7Q=Rz3<5f@%-)2 z>%-srch~cGp4oh#t`D(-DZwyV8IMt8B>^>6UC@fsBKAuGuIZJK!Wo}?XMnBG*&X1d zIsp~peI{k(xz@3Cs?1zNYACHzxqUZ-OC*=Ioc{1ZiE!Y!TesJ6;O(wVzJvV|(V8Y= zxRr^G;7u4<=D>D?W1*ewH4?M*Nr21l$~4gp)CL)kyn14lH9ol8WIijkgE)7C85uS` zK6tbawtG`A+s<6NZ4esjPE!|vOL<85@bPNV^;sh4&&9G;A-{QT@CJ@ z^W%6zC(A~-40VD$5mSaXC{^AbH`VS_THv=kHg`i>Zb;n5Kj0WOK;2Wl7&0OppnNup zgP(oQMyWodWbL7M0;Zvc6g^h2gZdO(H0f|a`)!ooDBRJ&iottXcQ5n;*(tn6U$bszs1?TNcO9z5b__0Don zX$63;)5A$;(Q!L}b5cf(6Y^o27&6#)Pvj*4nkL|lv&KVCYj_^x7NStC(`+3mY{~Uw zLzIki?QzVo^TQ{)NOBW^N+YIH9*Qq6W2fi;0_8mn@!R{Y#4I2P@9=3plK zG73MhOYZE@x|iS?z?e3;*O{&mNm0a1pOrO{N`5ajtv;}gBL+b5vG4CF-!t}i=MHtY zaC}n>Zi$OqoIB?YPU4i0WK?Z)F74L_xBE!uOi%nfF-PJlhGeMV)R*+CgU$Px)ezq? z#X3RS)cMVrl3@}+gz-)wa4ulJBA1FPGk>Sn8z(E*?M$f#Or&l}HLQB-8`5nzEqE|x zb>RG$5Zzm{$Q_Vti_AR#$V=G5(sXm2kg0ARB7rol8$5G>+mXZjFy$~fT|C#pzn{f6 zYj)5cfKE0;CJWFLcR4Ex9K&F4-yI~c*WMre@P{Az*%zv6x_pH4I`wuV-UcqOzK%D4 z_=hi#o;-S^)Lkq^I#zLv0)nWADmfH}Cfqkhzpw!nbpD7%;d zXV@M)DBn!^nse5ML?$sLTN$IT1bHYxE0xG3YBVQ8QLYZ&mT^zeg$BnER16MP8i`G= zn!!8*;?qEjd;C#>lrEU}0`pc>W8zZ%q~$?eIila)ZgGbfzAi{p2Hmtj-a>8fvw**F<5jd>YrfJt6ytOZ7fqQPY~cfqz}8l(mQfW2P^ z&tvK_MS5u%k{%jEsw~j*XT#7M!*9uHrur3=xBUwC^^17V2ftQtKfTAgtmK4@p(2$z^?U+ZUE?o^ z4PBfXL~-#ifA{y|Cx68!t6%$MefXPx9$vitMQCqy0e4^*JKsbMek}8PH?#is)Ow? z9!$ajH{ZoOFH#~8XPgAMV5dQ8ilKO9rjV0~Hbg{`-Tvt@_Zep5+v`=CG=W@xCX70z zLfG8*6}mPqK;PXhiqx|g5BkUd#eWm8+&$s%`fb0Z`}I%ZOMlLpF$~nYjP&=0M1ZAXj)JJ1Ht7B;>0xQJ6FpbPA7;(5^Bd8+jHkfxf^gVM$ z5f@~=wML{lbPClp8r4nC2)(S{M-Th?O2Ec+!XF*9Kst(-U3I4>U_@x zJ11_P=CV0b_PNT39cz+}7&*n%_}O_5j|h+}%!C8f*<_@~d}zWG>maISAE<#j*3WQSa=~S~~J!%<}^fm!-5=U=bHCeDSS!UVQA! zzWQyvc&AuyeZ*>@g5EfRmud97*I&oeciy}_E_{{JYGj9|$(CU)^6j_Zst=t{>jXN+$tJXSoq6aP2yU!{9Q!qe+dfYMu|r-&qRJ9AHOf2t!`U$= z`N1)leRwp(qkz6NL_`d*IHfw7r&_~+NBAoOOHlRgyvJxco!tSH8R;JS24ZAgH!J1V zbgB2^f>DvQmOwQ-@r9I*g2C^_HeX}JjROQ@N5BnSZ2AuS8A{fog%AOKTZds~HFjFp z0D{SG7`hCr;b6j1ie^fRd=Bcw+_ydp!xH-(rP90;3RLbv?poE@Am6;{E1((0MfYX! z$4Mzf40*vh2fSQ0Q7F!?z<_kEGixah8V(GiWFj><`s}>}m@LADy!PhPr_cCh-}Wo9 zpZ^d(@Ub7$pZ)xsShX1RHD&`-ZsU*iDF!LHCzjT_;J^7x-?_i(M|~}>Pd|UW%iVkXcm3Oc z01uGr@(Anl2p1D1(8HCwHm`f5TN%geDTo6_&HRQSDa2<*CQbpBa?28YTWoo1>R_Eh zO2KRbgl%$g(M?x_CC4(v8;|y_*hR2g*S*2+Ywz6`Zrm;6?$I4osPFt=zi)r*FZ$o{ zwO8M>fA7Ei+pymE)%fzC@g4Q4pY&~b`wL&hvoE}fs~vdM{2uVDW|ScgN*d(d<2zhm zJjEMd^|f4|_$m0;e%o)t|MBfU_xo)7oFKC6#^ z+pog4H(xw^ewztx7DmqKdVRLGroESm%#d4JE4q z=m6ZA@|%CGj<|bb8@8Zk4NwlTjwZWT5-C1KJxS=8Vf&Vb23f{#3=Y{MN&}>m#%!;T z*SehP!o=3LZ&gHdWnZU2(ARuatcrcgjP5CHvu(0fcDtfvKmEL?1KbVk1=RLAW7DY|(PKV(<(2>Oop+z&vX<>s&AIk-zW4R_;`_hv`@d0_S8(^_uDWlDg#q~uVLiT7 zKS5qokCj{Fhho7NOdtT|o+<*SFKo$a1)ohi#{t0& z$$Aza*<_{zVQTy)I2j`__5>q&@$b8ntU0MOEnt$uGY71$^quzT(r`P2FDwwzL6c0G3A( zLQ)fb#d`AUixsBu%DmWZCbnJFAPqtnfP$H@$u;s9hh?)Rku z(CCbj9H4On>{Ck`Pm#JS*;Crk1vgSI6&Pu|4Q0S`aM@s`b5v-c#b&n}s^zRTrx!>c znI&_+k)|Lcf1HY1JGFqhmk5yf3jrCk#B-(&Nz2xZXNH?Q2HQ|mE2u*@G0Weuq$b3{ zILB)piYII`v1a=n(Q;~^ozajp3v_G%g>3S3VH)aCzLS?lU0=Mw(-$xF@t^*8^ZL#g z>Z2d~3cdOEbFf^wn9Dn|E0Agr%_ufRT{lpRfBG-{CH#zU{`$fzALx(%ESuv{o-4A<&8J+Uy z_#eRk@IQSwANJN-i|g?ttUC{3zdk(h;d+nWSDenfjNOvl2kXZE= zM z5}|$8#ciAjg{*T}V>dnFUkV?2-~dj2adARx`;rDNo=*^X2yi)o>CsOJy_CQ#aliWt zoZg&1Ail^29D-3d0iT~cvgs*->Z^4DOjbuMwYv_&x35ATj&GG65wP zh4JV!&RCe-J-w8ZTtHHWNPuS3kY~$f9#Uz3uRu|S&1|)FRJ-R^p6n~m*hx>1$$t`*gaiQreCJbL{7-~HXMuh&2H z;AG{d@_m4V2X2B@x_|x-N!4p_yzle(_s^4C8r5Tbq!SI*MDsPK@Ek!SUx@ z&1dGWrmSX~&ySGT`;N)%U~eZC(C)D(S|vU-+MNASg6za%E(a@@M^6;3Wc~AgbM^+a zRU?ugDlveL*>I=iItDsXgg0fVw#e0E({XMg6e&@GD;Pe^xWTo9UEJK$X?W#^n}dZc zsTSQ-YaG(HBYimofD>GX1wR3M9DMR!7;8Jm(TAVt5SGSq7Yt*AAx83oK5XTzADBF` zpU2tjF}6_=An%Vjk{F%w7RIsT~? zs0Gjl()|qtpq3=!$&<%Ll|J|R&;8uTufF0S<`}Vtz^Y5}{^<)ndgVQT>hY6TfW8+l z7j$oS+QUvWmZ^Ibc*+~JVytlUFN{;OOHIbpH7VkX!ONjd6s%i4AOsz0olm*3QJ-lTExJaGQuUFCARdZBVP4&KYaJ(uMhF82FzUST0)cAV zvow=qG4fF!pvY^^F+C`oQ|liLsUl=@z@RJ4r)9e<4nFeR)TOD~O+!cR;Z%p5H5kJ_ z#ySG%iLqYFwq(g|+~$|c=fs_n5p_fZDQB?(wqt3Y47j~Ip11%3002ouK~!&E?B4i* zaZy+vf>-o71qTNc7!bM`VJGec=#ru#KmF-1Wjp9hCpn;FtVwc;=X_fr_mb8y`zM4c zLd&du=)RCiid@V$QC(1#9lVp*wzlJl3+Sqpu?VaS2Dr6qW>v=-)NS3Nb9P2$;@#g| zi@Lseric3%_{6vVV(8%oKlp)9;Q9SMc)4g_8`sFm8bWXP6>Dr&?OvBV{JuZh`4;`TKlXpcH~;vr#-m41^wa*%@6ccQYu}3|aknmd^7zqy{OAr`OTB^K z_qy&Y?)9+uHH}b>+@d-wSltl}Il5co*c1?8GZ$~*Fpp~NjCVpqdt<-Ye7HVft3hsD z*3#YG>bkqb<#N}Xi{JORe~{ntkNorfB?yi^1BV5)6fAN3$9=-RqkK($Ck9^DDg}2{% zhKJ|R#dQ~mO^8?IQebHj+-$^;Fdc=;jX7s(##{{5KE$kZgzNTq3+U}ecL-2R_J|w8 zb?zZyA{R2=B%&NBq|OXTsRVEE!GFe(LHW9an||@nhlBSg0Yg*AyL^R`)+e;TCeBJAu*>mdQ(!Vrqs^(R%5T3DKR@V9B+O z++Y~bwT!

cPYZ*;1So!ghO}DHYsSwf6_?y1S@nJo#j$6mM@Y`&k9K}y=Ma8 zXXJxbIS87+)r`j}Sw=i9S841vm0;s;1&UUuz%xPIIcIvw%*!5ViLvc&l6mFyQ1R!^ zh%c0b_$GOszk`DV%ej%{y;Yv>HYpiMnm9sWuLQ+$ zSks5A$(~8Oi)_C#XNAX}IM&o8MGdZ&PkgVQOe!$N{ z3rXMn!S()+eGCtU?<~^TRyHspC3vX|*5ZfWdi%{wz4jiaD_CSC>3U>ROsf|6J5R-W z6(9M~`~Js=hmFfxWg{Bw3))Av6L2miHx913_0l23J2m|$?#$cD-wDDMYkTlcHrnN? z$9K9uHe13h#dZ1azPV22|@;f05mELA^EDPA0KAAq%J^NmmY(8>p zP}e*k@e*qYkf`PTa%==lvdGuapV1*WcFN#3${01@?X^bW+$7ACuo+`vIM87&a*xYt zv#HTwhjS>7L$CpoFL*B=kaO&9y57cT;2>*+mC8jx{1d9NLF{D9SObQ~K@(0*PLsQl zM1&~|W#cEEg*NIM89(#916OZ8+u5Cz(_?;kI(BJDzww%R7jfezUj|0vWZSM|jGb$> zw7Uq*%u(bWl*?`>**6JO4#d#{6j9`U@$?xkPoDf|cXy9)ed|qM-;Kkcr!6%AP`y#F zysBQ0`+NSzcYWilk6-ZtYwuBOS+FeM(gpm@_k8$c*q{4Mb6qyOl4szly)s9fMq&*I zS)rlNYWRWEr~@ddnJFbE8@WlBLwXjhbrhE65h(SB0!Xr*EsTUs80Q;eD2AaU@o!r) z*UNI|JS6B_a8R4x-g~AGQlqkU>@{SIFG#yq6 zZc!O8!gD#K1*}GSoGg->W^>8_*8rUc26oPY2_+)hNY`8&mkw0r9_?%(!Xlzh1N~E^ zF953&JKJlzc_t@;-BxT6zzWglV8U%p(rjuEkjx$04m>Nu&eQWIdDc2k7f#>Dshj0v zewg+JrPOQ33tmPSzz>ltQEA_bn5P5D)mXAi%3^>!1YBA^u=VQ@KGR zXYCl9hi(tHaR%sguDn6?e6rFLPq8vQ_Q!Vr94?p)nRHL7l`gr{OnYh^ZP8~UxB>>IRmG<%}MY~)H%;~ckxG37WB?Y<1+x?FUhJ$&f4BbOU;C?oSHBD&_@-}L_s^diSl)RM zkdKwr9eb2aQDq?@QN0@g`w9;a=jwfZ(QkhC^Y!%YFXE$L@m2hipZn|a$)EY_arx9Y z_0HRG^ZB#4!9vw# zY1IX&iZ(4;xJiqFs@=A?@p;1VPegA^N|u1@{WE;TWLOJ2xv{CT&qrjF-UUl)5$x@6$E(@)L zX)(y_RGn6Qf)LSkv_}MXMNG{bNwsSfU$j-D8)2DXaR*WVHK#`wZh**Zs%?AK1}vNfUbI#B5yQp?E6qJa*NM$>blX8-jqK3V=_eJ>WQGqxcEO~Bb_k(q5FMo! zJ=@s9;nIrdh|jL5I1v69fa#hc$CrCL1=kpySQR;m2+h}OsD!`_CVdsc*2gEVi;A?x z>pP9V8^{dJq?gE1<7xu+(mt@aA?%uU$SG)d6VPPd1&Of<9w*@EPrbTatqO!Rn+9^4 ztzvS$xdh$g-vUlBoETI7;P*w;Uru^NP99ll&w7h=pR>4JFUB1GG#j=8xisfjU2^|` zoEM)^j_sNg;~@FOFrF?5q1uX16J(uO4IITp+P?`toSg3im8f@u`=(X_h_7C^vwO8=!tMBCKTK6{0#%>;g`54I z3fQqj5W14E8q}IHmz5+Slif^5Uw?1pIy08@=K52L3&$o3^H9fPT>KsB!L>&woRDA= zrXAdCMrX{&tkJ}mFgOuUKQZRqlWfqMw37DjO?9gsz^L)XpGmAHy zRT|c}Qh(z5yzY!(%c3!1fD;~*O-`;><<6jC`A@h;AR5U4-CGvWjX@$EjAIxkq8a1b z&Rk3dWyW1cPJ4E0;#V{JJ()n?=jpi3Fpw+*?E)B+`@%o9Z$=F=utfUayq^{m>77=DlC{ zQ-8+g`+wm3uXXo$vOQ9>ilxTG+TEZ1;730G_GkaoksF1)A)T2jFf=}6WK?zmx~V9`H9rZI9U;?^+-37Q2h zA6h4om7r>z39$=q+%h)U#>Rcl&?v2w242j108L!W;~kyCx;17rH9{^4ZDO|Sj66}yc~wJAQ4(s?>mW~Ilt$QLJ7@OP zoP=G!g97-jC2QcD7y`9iR$|k!R0F{RXk0EjHK}gyn_AhL;~fy=tT(!araR}#HDg=Gu)-TgdZovqq#ygXR)1 zT~`=&UrZpf$>Fw4X%wPulE~o zzWI6m4}a}%@DKf`e-eM<5C13l!Vi5{L(k#k^qTmdPxJ@A^vBhckAE0=xUYBLehW`O z_jzH9Ynd@rxfXw2!K)8PpaWKb;(Rx!Ub0W7FkqBOx_M{(WMMzt@oQMz?e!C>q&R$z?`t zIwKbXxPU`1`wXw~yMh$uwZIF}so_;h+K)r&+6llMCQr@@Hbwz$28hWE7sC}hm^$6j zo9+Y<5MhhteC)u4L9(tOPd+iWwK}ragFl!|D?BEa32f7=sHTPZ1PGI|5}+uhz;sqR zia3GOb=cMxKta5MZ~?rN48A_vij5~AuG8eSXribZMcXmIe6rz5Y?u(p_j<{Kw&}{X zBqr9tq;`O_gK`x66q;cAJqWJ+#zm=@7rff!2ocP7Ph$oLZT50Y;MT-)N9E=y$dGoy z9aNYEf?;@ia3~-O~O2wZXc4_+uabU*CM^ z*)yzLeC72du2H*HMP~zR`(=lz^S1drQciJ75g68p!%oJx+U~}k9tY|J>=vPM zewsfnxY%RilnKCwo{6&@hL8Wx_YQYIXAbTNS^0h}JIuBp@Z}!qWYTFP6KB)_sS(CB zSepROXY|%UEvz$+Sg7~ueB#{5RbTwv7vB8j*M8kQU-*lE;mM=NKc3IueGBX2wbxFL za=E+old4C0^jg2Tf9J{F9lrejd4Jc1f-Z}7k<{ImKSF==Z+-gVn}6z0`L4hIKm6A} z4p?hlF4Vqavf03fJB}yVX>jEN#{zoYBa;IB{z-pfSZ6Fs?G6h=s3=^3<$l;6(IQaHtkTa?TTz5lxbuJlg` ztGh|8Y0e3P+L*cWew<1(5*-DF1LQJorAYHCoo~x-!$d*?go2zItSOn9(r=8CW*e8| zjPgrpB;5!tK*yN1Js5V^O$9J4=Y#|u^^6E*G*2>?aLuPjxr}2{r7wa~i`u?lr)LL; zwKW^;9IYLWm-NWsLs1Y@Qg4FLb%Jz@xD0(@?DDw(SY^*|B1o*AdN6}kvaBSsTsY0D zUT#XF%F^q$7I1^n6dF!4_;TO(UsBX9%w4fCo%Fffk7~V$Ya!F)0{;#}-$fLrdV* zb@QGIV3xKgz$xJAyKh(BUGRx-{iXcDzxFry8-LBO!f*Puzz09^_56| z|Nng_{>&f#4*koeFWA*HvcOhPjw{wp<7p|#q?4aQeyY2v%z<>;ZCrBev z-R3?dt}?QG_`+v-uVP&mKKf(626gxKTI&%Xo(y1B45yx8A+S```Zo zT^^p*wcexZ=WIR!KlbC-`@i(d@Z|N^M2HVBUU0v-;`y6D9D4~|E*J8$K(z@t5!%fi z@QVVuIi@thov=^6u*v(wo1#!5LsL9uzpcjgL98Oa?Av|;UOaz>FMRrk_~M6tXyM^m z*Zbec4}RrW)|1yhfQS2casP0S%j1hJR_=Y(in^-9PdeM-N)wahr=$t6Z7tXjcghw0 z#B9^w9IMI>VL0FgjVqY)!N|rJ(I@)xc^$tynG+u(s}twyvImz$al`2kG-xD23xrm2 zM!gwT%o_JCnh4qq=ZcOUPm=n?FS=!|rq7PDRt5KiNo}ndB5+BbxzGyuE}<} z%IBS+l{8wmm#Hu@i@>Z|Az%aPl!IQnNH6)~5WOi4ovL^|^KD5{IXYcp&peN^EGs z*TU(3*Ns5%c{>OjDM*|Sg@fsG2yG=wseJ9k4NUyvd$(|SAOCL73MM|xyG|>4g$(Er zR*S~r3I?AkWf-#ato-c`mz;dt5H6vJQ=XCwK89czxG~iEI2%VBr#-hKo5UCcvak%& zeA(7b5%)ANV}iGt;eJfixcyre6ERwFrW6oRE@nMWvYcT=C3vZn^w|1i)Eyu8s}I#P z&g&F_FqyY(Iv+R=ZC}bW0_XqFc>DHs%0v9;O*;dGXi)&`1RDeDCn%b0LzPsQQ079d zm+va71CK}NTDz7bpz_KuH~FT#f)~cdqRcu8(@}uFdKEipo7sVo4&DZ1+A;I&arpO zy&s3a8Go}v$#0!Xg^DRU@YpCfcVbv;8z~3UJ2VjzY`8hZ3cI=Y*tmEH)Rt8Ddo{4C zU3*7_ULUYrMbN-SjlGDzzR;5ouKd!se**Y>zJ+(c^FzG# zoxh=f`G5RBVxt=CF<$!VU%;2X@nt@L{z-lG-bdhSEG~@Ip-QD3+-}nkX`_tbPaN&Zkyx!Mu{XhSA z`o`COYyrS^Z>&dal9&FlJfq#Zb~`^o?$RPYfDAik#(V8f8}vuzl{Cr*Yxc_ z`w!!TXHT%Ou%A7{_1P1A{NB5)kfP)zJ^?ds&6aTy9?6Lqg8C?i@;_{aE6v4JAJT1nBAahNGjqo*<=VvWe_HygiuneRIU!|u}hkm1dvo~ zsL~{WLwIozi*4EvH!NpG1fse{7Pguz_G|b*zid;BN}u`7j^>?)+Z*8OeX+yU4k4&1 zHb15P7Ky#JnIv8$Mo`nwkYZm_+izxA9=z67sxCr16$8HMe$PF~8I9JeBzIY=sh!Qs z1{#~rBu@XSm2KEJ5uG3V~9q}p7 zdiM6>nomh4OAALjLIqP$Y}XbR_C?^8DL5!pSZT)YPql?G=c5vWce&Cql}SRf^PH~T z09|rO@wf$u<}#sMVhl*HelSH20dh<&OOqtxr4;^bl=PazX92`&?|cKeBmKGMCHA5< z2jA%U$D1z_cQ`GPE-eLue~>F)Ahw{&88gBnSxV@W!Wt&YG#DUTCN@}5kI`+s(iE!%CG=5-mks zK=N|O7f(LM!iAsv+!z0~-}=rEur3vG^-e`5Q#RqCgDVG0xM2BizJ!Ro|#=O_*1oVBR=S;WmvQPBkheX1?u@$o00=MTZd(@OX1_EpWyX3KK&nl z>a{ojhwr`hJHQt|7hrGn;!?}7kvg3UJgBQKVfu9zrvR7slnflVwe7}umVBJZN_LlF z2{oA+qEqwC>^BS!K!F*FQ`3`qE~3OqiTjpll}oF-8rm^HWoODfY7hg2E9!)Kghn(n zf&>qC<*|YCksG>S4?sYCtRCFnbf8050(aK7s(V5gqFXNdXn!187Nj0jf5441c9m|I zEoa&GLWqN!OXf?ksr1Tm@EQphO-~OBkt_s8t|QqufLvbH0;iAF(b&zyXy`GQz_8( z%ID8s;N$l`BuQLqtuKD|a}A(B_qjJ#%VddNjPuW^NhvY_(RnMwDkiI=7F}l2AXY7P z^ngfV0jf{ES^ezV*M7n0@4N$dTy*np)dfoyO1;BU@~XL@4$MtCIQUoY?*uV%;~HDL zg){1AoNDfjm=en6K+Dsot6h@hMjDlHDPEi8^C$i6i64Q>Wuli_UTu#z^+j;zgif&8 z7ItjK@uvYn9;;?2ya&>IEocF}mb7ju8j!1redz&vDSNT=(g4o@IP7?2rOivQ0Zfo8 zN=sG2jX8D>%`Cjju2!Wwzsas0ns(r#g{p*=W4qlYrFD0Hx`4H+1t*c zxrnlXE@#AeE})mOnl2tMEhe03bycy^zUsw@JTIESlQk@yt{uV*rDT``$UBzLk|eI_ z?wC>O!pfPdA%}SqG-ZLYKGh3?$vNXXS4$Z8G$xQSZWoH^HdzLf#{ecTo~pZ(6mY5) zQ^9n|h!{b)U2^8iQ=_w!-qCL75Zr4lV27FYO%_!ra05b)N(oPjL(umiE_;)y@xd)0Yr1un zTHS@Upu5Z7AHJtAe*O!%Ji7Z2E=&dFBtU0L0logIS3djpTkm`dk6!^`snz0|FvV+A z7JYf~$#dN8=j)4K`O1$z{_rUt-CdlO)5JVUe)f>|^DiBd=X&U&4jB`C2M5iXAQm`n zi9;X6v7yZ^<#!TdDmdao=&FLs3GwbL~IWZ#OJogks;7h=jS+rDw?#lJa z^UpaQrXp1ZL1&njt>CGIDjQ7uP#Ppo3}~h=@hO<%&xUjXbZd7v?oP6Z3_0TG61FRZ zcB5umUneklNC*V?+pFB*18$+x0;&wE(?2|9!8AL%-6n!9!>X$>!Ff$d+6^Gh?qJBw zSqdB4l#zrf2PcS*P+KPxngsw&W^|&%$_7lJ#{vEva>8#7Af=JE5LSRq{~ji5#}kN7 zrr0hcR>iv?Bd(NX=g;Gq$TYmiA$nUG+B2-zv0!Elo<4ns*WP&b|4=WziYFg@sP%Zc zOWi}#^YI~b?w{A)tFNM$*6;q#cmBaQKK)trHHj)Oe9uL?UK{uK`xig^^`E@r<97)@ zLf_K7Nldhy2(r1De7sk|&#HcaDIGa@A+*k>+4<{y0_gKFhqpcAhjqvtpUS-kiWLk3 z-4%l-S8BOjA~qpi+1j$XcQj}BI%PmdVV^_x7$RiGG~G)op)^CsF~WE@7Ha^ux!*O; zoj^Nb5L8l~9L{7>$DsRKx%PWLngdqOSz%6-O`GSKE?es*zZd zUSEr}GK%kO2l$GqOs<=yb^--F%HXaD@hC`}%!ti-Pff35VcXzr(8U&MZ-kBY7&IxB zgLzUf#-h7zk4<;`4N}g_WIRmjIH<_48&;W|^xa8XB3>?l!@Pi*!GzGcjnPZ!fPKRt z|BgX|bL}8ewSC?^zY%BLk3g{CeecQU*~V;OvWO{nt38$@8Hwrb3-ep9^4bK8t(2e9 zZ()%LpT}FcGVCYZ{xH(U1wt7KX>}nuKjkxRAv3QL3dx|6b9Ny>+m`qNp;gA6e$PBk zoIk-PmU#eNpL~Rm-gy`AeE)~~=$*Im@jGwn`6r){ETC3R?J?&y{GU^}l~b8m6+`F( zPI=gWY>Ncu7ML*M7r4p*C(u*sA7uYYJ_qtqgxe#j^A|m`xB2MQN zDWG;Zw)9dn=gSLY`*DuLWHyVV4h*}|=;t)1hKoENy|7(PcY414*C;lwUA3yHS`N6i zj-Z_j=8Ul0Q6#3M+orYc&jpkgMl(n&t%h^B8<0!709-w`4V?li@9<`;_TU%VymR*f zT!gz*l4Ws88X#^wh*{&eYC0BdaRm@ptKMuGg2dklbn(`~FFg7V8K>#AgADSqjfGYM zA5@j3)+y&L7q({)-6RyyAc4EkDLdYD&|5a6*>azM?JV4K+1da?Q(?KfwV^`{444LH z-aK=)j`=EQ7A11=*buU=^VevV8ZJ>4juL9C%4dHFPN}y`l9qweyR6WoaP5IK~4o)BqOkUrDf9~ocaoRCLn8W=vHSUnmdLShdC)MLi44QhUbs*opvYxGW zd1=~*sbS~{ETWkbO4>&f0;khns@yCAjz3*0i z?yKOw*P;^!yXTq0l%n|jqYsF>!^>}c`ma8H^2BG~42&PA6t$ipuA^sC0VAm^%Go$m z3BY82Z~g9Uxum|Q*L|?0kfEzyi^;l+ID(xU;n8AmYPO7NGr@ym?%`h_kZ?$RITdCR zppAHmuM(30oiiSzsr-!l!5k+mnS16gYl3l|qz|MOauy~WG4aq)%z<8*xLl`AA~3;m zgn+`d1uZaIIT80jD$^R1g`Er-9+Yp)2j!+>w{U=Dm{lutrYwyK4I!%yLWk{{?xvei zUIV*t``&%}ed5CW8=-UzR*>(AF=;PKQmvS5>ZoVh$Ydk3sZ;G`hA#hZfZZ;Y4cMXJ zF+`jLa+voV3_!e2^;Hh0|5@e0cnsBS8ILjB?pvJzS~zpEeIeqIk{P(a-lL!1|Ft(h z^94M6=PlKGq^k-MLjvHekL||3ULM^Ek3aSNKl#PK_36)j`n5-OXF9%9-jF%2MGD{h z(T_g(sh|EsA7OvI`g(N%UvYwS(oqp21_Se-UXOx-e!+&)3};}v67q>5@pj6^PFRF} z&YHc^qQDf5AtNAsPGca%#0vhHW(V<8Jeh8vFFVxhi6|s9`S!B6aT=B~uN!}(C@KoL zR={e6GAtao;~?y0hW0{i@F^*u%SfcpI{}tqU9Ow&)6m$A^YI8wAYB1r7=7nj<#Lo^ zJ)MF8lGPzHC`X#bJ30U+W_J8(jF}Oy9GpIMDMZ&bPvx&li-1JJ1)6!utwWgg-1Qnd zZX@&$EM$anT|P^~jUjEJd!-6l>Gh7$Q!W?`-WQ2+pp(H1sSlg!`P;*b46Dvj5|DS2XBctYu-suP zL~)c;W--+8Y<>^K1=^!5jx8kmb|t-zzF@wi$?$cYGi?;-#3d;5^;NQ@u~6xH>@JAu z*)dTeXR{kAQG!*dg{21emRqKT?d}y~8Dw5o@lq6OK~+8sJ-|R|Mz5AlJ5t@}Ou)_o zY-ovSr+itc0nHP&SP7)%IrX+4H)@M6NlGjl`lhg}EfAza;|}Zc2#+p4;g23a7SX(1 z+?Ha@5XVm;1&qkkrboKa38vXjo|e@}2fl{n-71Z0MCl%$E|5<(`-@qAz$CezENHXCB+ zSSy}n8mI`>%o4fTJ!Dvm*QB9>+b4{oF+I{~ViQem7#rXGvatedOHgePE*73vGsR?L zN=zq7#RyaRmYtr^&7!uZ<#$}PFZgPX&B3fkw<6>M46j+pT2~S$lNeZqC{d$F|0a9T z1v^)hj7?{up>k20jEjH|5^5Cg()Uwlq`Sv%nF^!6+%Q{xNl zroTVyuTW&!+j@`?hlJWnvTfR86~9P;yL2M5;MXlFJ?z3}YQ(J-;WMDY#Y22ez~D2| z2K@QIGQ({Wy&T{+iZiJOL?roaUW~Wq{N7hho9~Y!P)&ca*%AtuB%5rAy(O2*wF97exB(@aBFr_R?toAXB)M%{S*U<(a;w-> z%9;kK;s6ytqrm|~Dj3vbn8h$O@b@Ki=ynEY;Z26d;*FEmfawAKJhLBNYHuTq8_M>g zb27n!oXP=I4hmPQ4*ag1KH{hs-vFu+$&wq1gc7*$^#1<4KlQDzeRBQiM}>00!3R}H z!nPez6fI|>j+<3J^=xNR-8!X7kWFz>X@**}bN!z#>0+&m^ z+ZSJzilQ;Vv5Tm&7jxTwg!OsZta6NhY|>GS(86#1BOhm z0jIFqHlbV|Yf&Y?jdK8L!6rSaVs1Df2m3aJV91&3!!SGJDh|Z8tyMW&PP*5s4!Dbb ziJvhb2~de`s5#+2b92d@Fch#Ven3cDiEXK3d-Ho+A+<8%I<~?P3dB+BU*m)Yme>vN zh0D&O!aR5@=@2&n;RLn;ieo$1hz9oLztaOfRyJ!1=1wZuD!%7}Vrp6aTT^9`vok@+ z0hy@u_!Y5iE19ZJjJ>pVVlfKTh#zFpx;+56&`jxahZ>8v&4i){@8olirg{*!y{$Jj zPkKJzXZ*Goa|b4AqeUdOm=Mg-`)$$^<3EB0nCBZjr&JsmdszsU{$Gjy;y7~NcRVdq z7Z)aDv<{BGN3BYyVtU%-!k@S|UV?(y>Lud=VtQrOl& zrBqPozSs4`ck9Q#{!`%N%fG+--YpD^Sc5ZJ_OFf{(v}*AXADQ{~0DZ8Kg=ocgUqC=#T-0f}m%w&w=hd{xwJ!lGf+`85M1jn3D69--X< z&MtQxB}~N0x7zcF9nhl4luhIaM9{Axmuo3Gi+rYw15Ikgu(Y(GtImZ%j*A7ox=V}# zJYDrXjDG_?>OiiBSyXuU&Sixsz?!u-QdPhW&N@ACLI7@ThUIo3K>L0SakvUOxKGF^ z3?RbcAgHJSm2;x#NM&c$(x$ z^EN2$8#@~k!(9!46VD3P=kPPR|6ZT#c3#nD%d0~<+n_}d+;jH?mrFu$c6*3G-Y7_A zKU$o)e~RZP3)*C2GdQR>X+!9;j8Ha-C-7;u|8he){ag72dm2yUj^_t#GdvYOxylOEV=dtT0&F;!v{D49uU?CQvR&?WP(VtN36;EsS6YB4y( z^j=zw&1y=&hUYzfE|Vik%!2lXBreJ%Wys$wQV&*Q}4TV0(+xraXY$ zMrB$Zk$@`pRFgT^$%=(cL?bkJ{#Dr2t@F;6`)%C@jZ4H-FLSCBDC`Q3nXxT>3PFwm zQ~Q3G=WY$a76Qnz1nv3Fmn zEg6{aQ92^${^dRry7){S@m~U++gnwTL31j%#Oo1LMg=c3knE(PPI9MQR-KXEwT+Dp%UaCTZG_p^6@pwEBxo513~{`~oKTr6zJEboP4Z;u5IO;HCLb zi&N@Bi-<6RH4@A4e8vr0b^>Q5@nX|E`a7Jh1vu3U4=T@wJX7M3?6PCNWbLOic%Jo; zWlF1aV%rx% z=pwNnIP7~1Q%Va?mQ`@6o-YT=Wk(rcWC5t&e*S>$gAotoGTxQ}8cKPMAKas)Vi+k{ z^vvav?j6ZtVfgz5`14&jfl(aDITM;h<-{Dgk8f)FI$TE)$PV-EaOOwT1dWHjn9W$ZR2 zfoFd?xH1~#%{BTkdJNDONwAWC5R#dlPoI?W5C+1!wy3Tea?${iETQXI;v#!mm@<^A z01gk4zqbm|6h!#}1bRjM1bgxh23IGy2tfCKR=6xmw6Lf^(s7h{E$kESj0O&Zv z?|U)_M*fWPf6xV-OkgSy;w%OQjhh55Tu=cGvb~z?f+_zJa58n3k1)tB(53^EO-6!O zhh74OtegH8SAF5T)F!SP`cx#>p+jmL3Nt{V^5SEQtq+l z6nH&wG;bE;`?#tpXybwqck}|_)vU(LmX5^LIC z(NKBRCSkM}qXxOB zj!17B3>H=N!ARAQsk(A!L;0w%@;M8Nrn^w`Y-tXF9}$@NO#ef15+B@9_{hmLWu^AP zQws?0%S#v50Qjk}nLg>GFG8f{E#4$H#s3|9J9rAsBRP(S71o8-7y{}<4p$60H;&dH zi6kfl!j5kvOOLuRqP?>Jnuc$)Sq?oo_|&bN0B)tjai3$YD`G*RoV=PeA=HOROdij& zB$ZokAJz8NgE5WHV3~>Pgg#75BtaSB=4hr(;-LPii^`!8(B9w4jNc5iq7RV$6yP}= zS<{kzaW~y=Cpe>e3S3u~2>)(%(R5WKr!b^pTe z{N~@TM{j`2axP(KjPn`pNh z-Bx{{KMVIce%FLp%_cja--pGuV^QBqC&pAx0J|0AmvSq>**80>oEwf2*V*`628f5b zaHh~5>Ak%!EdxUN^m#l-48}&*2;(U7e&p;8+;_#*6jn-+%SfU((YLKI$YSm|jbn&Vga6Nj-K$RN^TvFb7gNW2Q0IPwgA<=75 zuyEc0gLQBfx{;2oV^0GZz1CcO0LrbpI_c^$_AbRw)+oUj^KgJ9h+7<_jSpK>N$;*GF)`|Q7ovMcPFhfwQe7{We^z^Vi)52Abk zU6ow?gEo>%+_dKB1hfBcQEA`+P-1|iJ4fe?V~W_2EW${#YD4>0a@Ps&9;}0JeSnwu zJKsa4Qr`Aps)>5Y+<6afa4jOG+YvAX)kh?7M^Ix#Jm;7U#NNf^;>Xs+FDpHlWZEb^ zX0#bHW57S0p_A-TG)FM&I~|6cGq@JIePO0GjPQq^5iGGydsK|Lau=qIfHC&7631ge zRk#SJ3~a~A9EEfs(f;*j|46VKSKkMmA1hN2hMNs^O2-1eMr@2dS>FL%$|5=7oVKcA zvPn=|2>}!b9@C1OnsaB8iNS6t4^1GD-?IiKRkL1EY=^O->lC8nG3gj#M5l6MD)-z$ zrXXFiSW|v#!r1n{Fs)01DxgqaZ3eJ)fKI`>jxFH%vnRNJaV1b__w;kq1(7ryn{13H zae-Lvb9EGiBd*wlTan_Bts??dttNyQFFqD{!HXC7Iq7v`MPOr#1N3vZbAK_UYlcT9 z=&C-aXP}Os^<-OYkBV?We)EG4Or~-KE(`Af)u_kQBBTLFe4Bp_{Wm=?ZV z-<-3CeH#Pfwh7l@MF+1pHjTu@2=i@h1mhAIn(CZp&XD$3a!nGd=O><6}5;IJi>*6o;1+<-^ zfYrfv5v7j9RHb?|xB_Ix$j1Idhw@34D*;6t>t@jy|QjT;yQO3)4MKb6{peY zWDhO6kj%g7abxv4Gc!BOCC4j%d0L!(PkrhXi9*jF(&^bA-;D>sSZL+I%pl#tsKEx6 z_cAg}u(c!YlJ&D~IYZm0WyGIRLR2N=gD3H&_)I64T1FeUmIaeJhgi_Vm;}}q8=F7b zNg}`h055v7hcPN~&fVCqO@M3IIAr(d-FqI^%i|WYhzNQEEb!Q%w$DC=3!?23=rF>K zVugu!zTuqbzTuzQw=JLdYkp_Yg64Cp`0hLJ>e0(D*EhfU^?&c9_ut*x;*%#&x^V@r z!0yKVwek9EZ{Yp!|M0){;-mNR=qG;K71)_bq`CidKJQ)v-+6EG(c}8km%sGqUOan& z>)s}Obr0blqggXdsbNC)lh?^4V|bHx2HM{SR_O#%BXpCf??&QdlywvIojHL%Y++n|Ady&B znt$+jyZ|b7Ik& z)jqTgfX#J*WG;0%v6}TY38#XSrdVBSF>Jw1%qZ;WjS%c^Lg-p%$~RNC=zCPtHsD7E z0IUeq9r3Yq_X{0jK^tgZ9AKfK)i!?czKI5>;}<3$RdKYQ(~NdTpvCCBjXUdr)l$hl zygmmtT#EV-5ROp<$v|{Y=P{7oxCWmlZG;h)8KAKwfGcM{j(`clU1gw3AYW(V3gAqX z?~2uPU3=tlI(DOu^9t-}Nlbv`0A=`%<{~80;;K=s^`xRWDL`}*L`A5#EN(WlT7YTC zz%}<%6g*V?mg%Jo2tZJ`wS`4KayMP^C6uMfNlq5Gv_s4$LlV)Yn$7M*sOeQ608f+oKb9K$xqw0|J>2ea1GfHL+s zce2}e>0#L=7ZgS296C*zt)*ZDPbcxZf&jK=GC}uZGO2}YoV$A^e1m87O3nW+_m+36 zaF!}${8TU!X!TAH?|3=3u&+}ggv^Kcb0?lSR7bKK-V@d&gaG-@5~odz$SqmIsephI zx=CjxnIP3gb~k0{DW5*Xj^OH~B@r{#rMOD2PU0<)^xYzaRz*z8qg*T;D8gmVk`=cj zJeF6%q-_efz>P2_$$Gbg>Bgx7v(wUs0qcjvVD0h! z_Fmp6-Lj%{-&PmEE3{^h96)vg^&y$|x?NHVY59tc8j`1TmUts1T;Vi#>4uH_kfOjT z!v(U}4sN{X4cG8v*iS@In`w}Uzw)VtOi&)J2U;3~8f7Nm3#Vf~xQr)i3y?UUI=Gz5)k`XraUW)u7d zZ}S?xG7%+eg{U5`I9A-hZELEt*XZEKoKv(80xe^3CnY-J%^^i{3#E#N$}}IIA1oNB z+r6c*e)_X3!M(7$OgG`%kD|e*Ws4uT$MV7jY}*UX3+t z5zpUym#@D5I$nDD_5aKLv!`GZc-SF>2Aa%0P2ZTYV(6(UYaKEG2=Qq<;aE<$iVhiH zPWr~6qXK&ifb=b3O&Nb(eq4@s!Jz!5ayzflB zmjBl+jxgChEvO2q9bY?%xUm;ZV$sIW?-bprA>n|0X6(?k_9$)o6+b71Yz}i#3|nS) zGntyrW9Sl~#koCLWZVqnd@)x_AN%}GoMa-A8VIB;;xIdP3z}!AiXhV`Pmjq}GE%H< z5OZ)`{(KHkz*kQRbl7ib<=65~LukyxO>GBo7+IabCJ^eNINh?bx%c*A%0{PJB1DG* zs@ijm{r-csbaNV0!gJWftofOJDj&>M#M^Jb_w?)E_~!d~`p&vG9N>B8s}ob+>{Vo; zue$r}XZYmfPu4qc{oud)(#tOcT&PX=v(aqqTEvH+e2h=M@#dd@_07-q)3?8i_0r4b zYUrFCMbL&07-~Rj14?K7zy%W6@>Qrlr!z%vt)QAzrH3RiXACk%Jy*u}y+*;tOk0+v z8y4nDmV>b<3?Vh1V9JnPLg&3nQXmM}zm|PTo%v2U^?T z9psd$_HpRqqJ`T=tg_YtHijWl8U}%0DP@UaoVnG>a9Q=s2tVb?JY0hS7^M?aNn=%8 zlQULXc8TK2yce8B%>yBhThsiOJ}e7JwcmP#5upT1QsI*O-XpGz4oL?>wF<`TK#CH3Grif1fc?IE-We{$`Qp!4A0b<8kHL=_XG@iO`yA>`#u9?q~ zs5n9^b%K@5v8%rQq!&F;$rr?SfQIlv@TGTh46k(*s(Tr;m!zNiz6uSUcQzh`BsCJ+}$i)go1;DWSH6vs)s& zP?6?##?Riz(GD%Jl(Uy?31=cfB}kv1_0Tjp*@Zo1<6+8)Ip0aL^{gMg;>H6eg{aYe zQ0%OG3mG9{i}n@Ju49=1#piqr<>z%P5mOdcK*sXbN|3~Jw~AN9XF8YJI}uGDpUFZ( z>IpI%5uOZ5h@wFyACUG+VnWBRBDZ(UbuR)RoXtr}4<_aNd=b1pIBbPFFH^A0{YJ{%wtNwE%yNXSQ*zG$! z#E{)96EJNIay%K|ajWg9Il#0|zY-HP*)q^68QuPxg9D=ZeS-})oT>93(B0e+-N%yZ zIi=phogY4sw@e`<(*ljtva*?T>U99%;4`kH+5z8WzAi1>&;0Qb3S>z3+jN*SROf)i zvj3a(r7f$UXU5Y8)LUL@lZtbXc1^Ovt|_r;c4ERlbYt2Gt@n{&0tzv(^QDDEVD$3Z zzwN;$2`Ds8D#N7#_CFMaor)3%Kc|PX95-Nul9PxV3|n#qE!pB|gOn?XoF=gV<}F!K z2Lm8?GmO7$)|%&c6_(wZTF_*GNnh;T^AJd&x>2!*zI$E9fo5usZ5VitwT^8E9jYB$ z0ob4}x>mTunOIy!Q?RCKjj=|`xKLQswpv|<-Og#bwZ&e1$lE`0JXzx-oAc2%u^=gB7@!nnAwE_C9zRsjoN{qmQ-@hgAj|MLbv z_tm;SdqKL5)2uooSeo_*0eyY?zP|R8-`X$k@Bj9`rs^+uBtLyffDIEi5+ViX*6N3W z?vMpl_I0Hp(~&`_#ziK{+!||B?0dN51O0qA;_TpePP}_Nr?)oQhTCStPR=eCjG zmdgO_1>hRHG#Cn?+x5b$YXFol&VbxCff-^Xuw%qxeC%~oFmGct*euc# z=m|E4#XO1xglz0>L=I0s8@UFcA7`x?!khOO zg9qLiO$QyFdiJ`NJ-5$@iM6@r`JEV0Ini@UbS19 zFvgodm8fKcYqpdI2fQE*b$}^j6k|@^i{DJLP!lry)gy>dUBf<)+49Tw5a65+9fNs8 z5LZU|AZTp%WK(7ufX(OkcDTiHg}K{cJ|%P~&jlTK@rH4G={_7XYpDXevDo2$90ki%t6cP3Xt~V^RX?+q*Xdd6@YgTdF-kQKc6+EkMmxqKWM$*QEgB+4KAOzUnoGzQGBAb=c!E?}bS}ooD0Gr1v(4 zuMk<-FMvmnw67cPW8ePGkjnltFG@++*r){tBV$B>&by8<&kAC$N6;CY znIp4&7+g)P3R16>B)L~7ymeMgY(VXpMI!%yO`ja))1Y+%!G!PS=Ykcw~ zGP3hIB>BI~`FxChk6k$b%z7X`?fosAb_fo(-B}iLX|iR>FkV3LLg<10*ZfDjtw0M9 z%cAM=9epyMNzQSQ%ft`yB@p1mV%eOBIn7c#f$3NUu-g0_ib8?B#8s-;NsDumYO(z$ z;tT`Mp=fIrO@#y2tw867XQ8xF4pGLcU{$%pBZ*JSK>LvH#xn#`Sy2s*O3%S3^5-S7 zI7iOoAq9wM!WO#-T(T%gX8D3euIHb8vUPvYZ~pWj_`UDG^WKNRvRI*YtV#mcQa`#Z zko&*#;d?*CD_{QlrLWJHf*FH^d?s69E$nNTUOcTI|H+^D&Rg%kbARGD37E079RCN@ zP6aE56!5Y3J@Z*q?7c~#Icq*n-p>aM#Be2(6`I7BVvjNQBo1N?*1@^-a}jS7Ky26d zAv^u~Q|Vn8++zDt1TK~R%$bsWe;Pv=YhD1-22}(7&p9-~p$C;8Oy!ixl4*g!>;b&T zqkT6C9K;{G0wqZ~PPRi65#*g0iq)tdE11ms{7`3s;c^*g9sKR38cq&rWJ*656Ib)B z?~y>Cf8}y28|sC>f|HgJ!96S|k1?JclbCTl5~i2CdU~RW!wYL+##Np9csX>dIT+t( zU=wScwd`aZ2*Dp1#HeS*PG&oOWMr+sc>0eI|3D z(ktYs3suC^XV3BKYoGe_Z+!Z5c=Fco?e)@2vC_8KPChK|zMy*Za#_$zFZXwU>$kr6 z*-wA^<*m-#wiq)RkX#;J@Xin3zJBWu{@icl*}Hi0^a*%(hd^o~rIK!W@DcC{_CMS- zerS9W2Fv|_MtMsIgYU6^QxX^S{%fWsn z>y>Bb0S}efFX=su)yw=e-EArJDv1KsmaL(FibftC}|t! zY=({Ol(0{*;S1n(%tZszNs#_jxKuQ-{x}Pn&B3V0v=R$hC2NB4eb3`>ybu}g$ z%7@M__m;CY$F3-6>|}(djT)e|5>SArOU3qBH(%&Uo#Vs;zezw_EProQd;u+a5UcN? z*Q9{nCQP?KFIdaEc?ND}4sh;M2SA6km@}bF-|EB70r4I<{vZKEn`jtux-~Z3Sq=_k zOA%DM`X6w(YI?}R5KhiyDLUmw0<5%@nS0*D(~KR)Ar_0tuvv4&)d!`T>I4A`@4fRO zb~g&B7uQzWV)Fgj2iu>)r!jm*^=OX-NEVa06h!jHeWUs*AHDpBdhfDz-%(7`3- zGNG<%b;kubqz5kBf&gUfz!3BVxz*q;kc6`sebUWyx8qs!`9~kazT0q%C!V(X#Z7k8 z?J*c*382);5Uoz%X_Rhv5!^ob!Gk1;of*<0Wy8*v-6H(Y08_qRih}7$C`CKr#)E^v z%=n)61^FFUEuhm^4vp1UZI7fYSgNM0(CVmwR03|^UX;lyO|Wu}xTAt>lJF^ld;ICZ z7$#`Ze0y-Z%eE7jlo=Dp#PVRE82#q7-Gpnm_!T7VflNbG1WU|UJgiW)Be)p=Vjs~k z>I$}MvVDe*6YL^MC)|F$41LCnxb4dn!tOfloMt+*Ao7UOlN6AG)%;x!SO^1|Q%#Wc z*_d>%W6hbJsz^+GpMCZUNkDppX2vIGA4|0XbzxeeJks_`|Iq|Ub5}W?wYO8>39dm; zFGy73Ew6+1)wg=ys@&UP3lZ4+mK;fIV@~u6PH5}esG;zL3q+MG?;Hy=gyD$?L3W6e zGPibG!|2ZUJ${pEubUWQuJ72WEnI_Tm?CmjY>p!o$14qh73-v=6o8uiZQ4;;!RkZq zhmDx~))Tnaz(7#j19|1PpPd*0(Ri>?a9G^2Ykv0mjs&Q{DGsPQNowE(+#8h1)zKl@ z#TUE@*NSRWEv9-gx76{NQ`v{cl`1@#xi8u4-G~ zU>b~wt1E66o`3QLmkaQfuYKd+`{@0Taz<>NOAFIb;#`T_mz|gkjzL6E<#-NR#VDb|+V!BBLcwAFWVQmB4iS879+$I#X}F; z#C!AD`#A?k%pHx1PiBVRmeOA357RvM;6eC2syXsdzt0$JPqA{eIeI8&g=Fx4-AD&w zH1CEWCuBl&Z(y$+*7V)oT=0}b5u-?%=m{MF;)e}WC||0%fIM-Tja=u8JH|rV?(vWS zTuzpLl4p={j9Ee-fC1n;7roUUuTn_aae}2VsyjipQc7K#{vPF7ZSF8abI9*66BNin zo6^G5lrnogtW>PoO>l7DvCco|s3O^m{7S{28RRdf(j%8-53Err6DqUp7areT@XCdM z{i{Fm6ECiB{a&$FY7UXGh-iv5-Upg@uYBgK`n})z^;bpx1D8j4eg;P?21nRfMZEjL z2lzvO+37-=eoVH{-b>T#lxU0D(}?ith?Znean{?}&Q$@3F}DsJV&q)6N>8<~p(vB@%-&3YOn+5E0$!VbE?H-Tq1KBtB#p_rWw?9EaT9M`qTCCN!!R3f18~WH%g($SP zw9p}nh-vzE45(W~&9T|=sr3=YNvuCOu~Np0hBzN>g|HUTCAQAYe_`$yw{6l?jSRg` z;}2zaDHFt`uoudi6+2|XkVZFfZ~z;J=p>Xn->C@T*wUO+w}GGx!Wn&(uwW$63(SD( zhBKOk3qq!&&{#~k4Hg5Yg`rZ})gag<-0b3v9fJ@G6(y- zHtrOEQ@FL*Xko-C(Lk^9aTC_i;&L*ivrdL>>wQ2A$7iN|+to+#23~>YC85pS6O#dA zyD)1rGtqs=TN-t=oQbg+h(8X=Q!BXQwn#Og2!ePuRwr(JWE+Uox+9%I z&`I!eki300f$j(xW4RG(f^Ymvyx2=7>0pAz02n)}@Ui=oz3a{hEmqzy7?Ylf zUVizQSif7<*dTwF!thP7>$^su*@$}N!7vPv78Sv}oOR7vOD0d;=SZb}Bk$t8zPOW^ zm{a9R0B$ek2tMSR0a=ImYhuWEpP})62v+uipPyolLf!0mlz;v0NBrOxAR>P|LS&sw z*~ceE+a-w?u0Hq1k8J^4S(~a%f!LlM<)o@$dOw45u88(j7noQOKwV5aNE=7g(^)l~ z&ejRanO9x$c^YCn7|mcYWpZ?OgCs7{c}&BKE>k7ow4*sRhRC& zzw*_uUVi1T{grRv?o+s2?v~OwHZv(yf?K~Dc>EIX-+c?Oy!u(Z^2#g!=8Nag!793? zOu#m&HbQxQx%f3ZYm{T($;jVMvvJWr+(*_k@t|?Z%1O+{BmhL@S?$=gZs&3Gj=39S z!=Mlnl@c=F36sXno5)}+s%dnJkrjc^bYbT3%?g zvjwf`A0EO$Cdf|1%L4%$gef@zMNY78Jy`_@cpdvPziHqge>ZWmi8G$ zvDirlcqb8U!>EXs`AZUDwBVEvZEWUMa&YFUq#NVdQzjFTx=ycJK6@NrDSc;(@d1Wv zyNNO~nT#Bnd}nt?6VaFaowtAV@i%_@XTF1dU;FusO)k1?8Rf9>3ZSnf`>OkX<H=Qw@X;q9W8drF{_3~>n4bU6ueI(TDdkUWp-YFI z%2`VY?EP}w?^qjYNIDl$+vG&0z}NOu>FH|VG>4|WV*FE_2%J|p+6E)+G9D8E-252^ z89`0%Baboj6bI$pVQ9$1aY4ymc7_Y(KBwgSc9pH!B@}dxKNoffb~_XpM?ZJQN?HoV z2It>=D^!c(_MbPWu-nEZhDU_6bROSCqFHhflK@pa@9d&sgJt%JJV6zy(#?ib9Ck~? ziaT)deX7AJeSmOm3$4#Vs?iQ?Cur!|DMCiUG5G#ys7C-SEG~j9nUp~O*?pAOsaVU% z7B^-VY|fq-MC{3zc*#@BxB#dw?vY9wU6WC5AHBpa06eDADG3u082iNu35F5&x>FEj zMe-XkJvPWsICgkaW4s0GYYg21+U2<+-}GU61NB=(9P{G@BwoL&`yd zYo38eujxPdfBeU8nY>hmopF*}Sl|^9d|Hu7rd=^8|$%E9PiN55?ppCKzb~Dt7Ig%1me~jK0cF#RD^j$8K~q<#Gt; zEavw%#=aPan=f==iB?ah2O0Xfe#K@@ad-}p;gqwc zy~MOF76z+j4Mk|uOA3h%ukkI@qzIrbq*>TOmF7%CRh5d6%+ASpp`%Mu0DDbm!8G=c zR7xt_VyQ*|VzSH4Q^nC}6ws4w8Q^-+gS7~r(_!+cbYo!BSpt$+_w})L8@27Yscy^| z;hD&(fWO=;=Y(C%Z4g&D)FS#pFbgT zX{L_zlu8cVF?0`EJ>ut6Y#h0@o>r8Q6Pm!-ti4Xh#H5XVENw@GTP0Aseh+3rAjyg4^9Q5$ zGA+AI%DGI?7=xzj1Pyhkpxr1>ofp_42R3v_{jH(NXSAywL?y9eWII)WP>YS~;1>&0 z?r0tiWxFMd3dOy2k~GVcpjb&WP2yrU z#fxbL&>lxZU`n{ScU~Yc_5^oxRWO9~Au#+M>tvlK(*zXQ%f@(0XVI93F!xE~7{Q~y zTg1s41TaMCBMv1`5+!xVuk)Nf_++0dgE7*vAcwF3rX+@8q~qu`>jd1cg`7=p_i_H{ z?RW6yFMRf&zr6A)K7Q|A)ZL{wYQ;dc_F``jqN%<6^2%fNqgVAyf8%fd+0T9Y)9AXw zm7{e6;sU`9eD{YxdiSUP=pTQgr=P6-{5eo-w08<&*=zxE0PWl}`@t!wLQP3sT9+&o zbkgJ5{9U;iTE!*{87O0TH?b*lM^6@y8&C$8izo1o}&u8U+R%ObMa?rY+jk&eZki36YJq^HoSS4>=xQ;dP~;AS@5CRdsRL6;bA?E%213ylqRMm6nj z-t5tyaiOJcaoh?N!9v^9*pS$lf_r4jZ8spKah497o*R zZfuQp1jr?7QxEiS=zk?UWP1*Fv589Ra*buFP@@xw(7T&+u~< z|Dojy^qUP?bMJCqI|nr)t;~JRQVbxx_}9IMYf3^>XS#5*s-TG8aDSf7qs8I8r`36s zkcI=^tkWRW;HokbyOjx_QA6C)v03eUcF<4gmRvIc%>65H+i@n7JlQd#9>^+Sh#j8x zP8HIReXdKKJ$x5@_6yOg@nbVJR&S;w~{{@D*$;d%w# z%5$mZ0N_^TGiFX{VY|dOSXihyx)2W7ZbFr*_j)_=)?=;Vp6}fA z1PkWuV^A;lXujMHz-7}!G&&Cc^NaaW2lmo>+WGT`?G=#=>%88gwJCz4+9gw15-Jh-5Pl%owezlS070;N?r(zU6I4YzvCQ}9 zXu7{1K+V8Zc&blM4Pgx@SLryWm`uft>1Izf`8AoS;MV9BG zx;v4eE=gv#&(v&R*8(DcYb%}xfy6Q-J@h2^3t3~S(Z!qQPlzycX*M6e?mjEzV4qk= z0ex9`_Vzo#^%=kQ%^&}dKl%9C{kkkBm~6%C?R~{-FTalW-umu;=lLfe;ng4eaa6Z1 z!CB@2au^|i7xwe#KtJzqeB-CS``*VNKToXUycKMBOLL-p0Ej?$zcx5YWKCtOlHtvi zv|y)>R*NgB`}hAnCTW&sk!~@RcqXXzKHrSNDM7&iLX8grxpR&a1MCU%Tc>r^gHnij zKmYYG&%qj+KhqdS`_tX0it6k$#&r9+hgN9Am5dtpx=)0J_`aUXtn7~y*;$xKtA3NNhBDdsmI&!Hrm%nY2@42`ZE)Ap!1S1VjEKvwB=~^GrHNBs9Ou;D(_{ycl!Dj1ht3@b8AcMC zY!7^`yzcC_GImb)xvv2cZG-P@z+unRNKmO49A+-xNzXF^uzVrckUvwhgnZWonlfjF zgp|s;cYP<=Ua4q5LUKuYpHeYQwk!L|4ryXgKO~%kww2lT8`3^Dqnns9 zj}!DauCCOvGKSsA1g6>lJqcYOGG~u#@}>K%s{Ag;6hOJ(-er7 z&jB3^bx2yJZXk`jR!sNrNB7)dD}mSCzaHCtNX<9|CR88{^e&Zi;BOx=><%EmYojqj zpnj&akjN@y`odklS>UC;?zIvu0!cl)%pVPxS~gs|S(wgdSC<(XTwgrHqtAR9x_*TJ z+<*C>B7k~y_qbg0*x2`t`wjFao?owc{@j_F7uOB-J+6DBUu@zUQh7 z|JvXAZT!|R{yX~2&-^J|ubX#w31Z84(BPunU7Kv)O5;|w#@CwjpaF!F%MC0>1402# zjUmgCcjN&gL8KyPRGh=9Mw0nsnQ}d*{aDDpNs2gOuGRTSq*i&r6?AMvckLqnD^jMneOi>edGe8 z$3M~bw2?Ag>9j^|c?tmuPYc}$zI0H9kjVZF+ffHy0=l846DFc(GEvC&lUekiRXCiM zb&0ny*6=)En9}^t7@#7w!UPoL>Ng+WjxA!s)lT3MQWbt3kJFvc&ONtV2)&$Va{{ZW zMD&8NDfOf%6VR@SZz0V1*vTeK?x*khax-P|{b3r|Hw@%F#|b=j-Y1xSCpQJ&Y)1Bx z9jGycZvivu15`?K6g_x-SA{2k5>#~0D<@3OEdTD?CBa^vx$Qev~<>$hRUZc=-`10;gXnU zYAzGGVp<9v6Zs4)g+y~6FOOcv)9?L;zVwsdY(9GZzyJ38AGm96Um@M2B-P%$yWHV3 zU;aY<`d|OWKa0!DxV-wx-4=My2ANUK+FsYIns<-7-+kx49=}mP`OR?_p!Oj++1wl3+Y@q5~w#MgJ9l$A^Cl>}}yb3n}GluD4EU&plXdJkihl`2|9 z$*O~c`exH~Y+8ci_#p?k}( zbBr8$gW|G-*3R$Be%;P&|LVK5h+lSy0TJ__X^NxKs#)j`&PV2LCqbZOYk3x0vj4fE5UIrI#nAhVuJa zz$AfkfUkjJE_4B?)ScYQ7#;M+Smb1*raXW8Y;pCGKiSb_99(1S({p$>%LRJxM?l0s zQKx>%!T1zfFrbRJmBp>QJJ;(FB_nVb_LG?Q1su`7Q?r^ zrUW|nZ>U+x{Rruwz1h%Bu@WpK&DA+hHTXyY0|VNr*=uKt21Lascf)$e_mI$7 z2@#o*TR3*UP__$mw(LiQz8ujxp*?~r6#+fAy-(ao@}W)khcBkwgI9d^=l)^*;(z#W z=uiD){}i6Tc!9MRE^BFBh|4N10FUl2c;&KiSqqQuE?Dc*m&--#(FLmtkM4-eWnrxg zE_aXhtKWIM|GuC8cH_0L>Cxxk#D4OLd|z%^g9ZD$V?x?3JV|B79x1jkmMXy08D6<{ z8s`Fq$x3!}h|G@vLI{_P`1H2V$u`h+sW%$3UiMixq`)T?ch*)hJvG5iF(tk@dw>y2 z$Wz+J*I)>k$UvTeJU0B0WR3z%B%QN38JhCc^N<@L9ZVe1oWmJV=@CpBsd+vtlQ5jv z^L9+;Z*WD~KCFDrR1&7T#nz^U+Jn6+87ddEAG|d87*oA4s}Ng42mh%By9J^NRa@@ykk6&o$=0?KG-S_fz*Q>GlwdqUoQ90&;3bd* zPZEf2ot?ppC;K$d37~63+~*EBYYreSRVff~033`no*XB;7hIGITU(>TOhZW3qAPI9 zz{xrZMSIo>1{yo+i*6wpQhdfDDwaB=2XxNGY5(atYdY)T7w|dX0eFz_-;mBsjrBd; z3S=Eqo=QlxATATv0Yz^4>*nl7V}g5`7qS10pfp5a_a*1u$aqxVL6~%i0{UnN%sYEB zM4TCK=Pn}8IEgDY$aRE!Z@7uzb_L?fp4j;%YM=VMV`{?A_V)CQ&aJiov|^Vu;mINR zEk-*>GMfV=3Ft(Cxr7K8Ca~KiHaGC>qxCaC_j4b<{ozNydQpS5Qvc=(2a&>sc;lr< zKm8lO{MTQ_8(-X)%OhZ44?HwRFUyscYCXE+hi`v(ec_8=)BQdEr%#@IWLxu)pge(Y zs;BeclbAW!rsAWP&)J?Y(f!&pV%g)942fR;AJ_Nt2y(IHJ~)&!CWs zPRY**Mh8O^P#w|)XC3;)lVi{PzX|l{Z-u2*vQJa)d!s6HBIlw!$e_*m4(&0t-ket3 z85S~Opkin`;&E}3@d6tO?(@Be5uG&);Ixu=r}sNYK7mI3uGy-NA&X;AI0j%LB40SY zJaM*_v*xv|IXd}Q;Uc8C88S~R?2WQhzZKciu08xYkBbfM*k;%J{kv`&V0cj_w z%}E?aM-b}r=<@bkZ@u{1H^22)*8Q_}{p1r~)~ai7aIKW3Lahx5ks_gAN?KdPcHrB8F{($8JZKa0=6|i)QdR0 zOnR|s%aQZM1iZDUcjgGPqbtF#4seOOIh}zVazsGw=ob=HhBU_E7J*eRhO6|YVLG3? z(+5TO^6J1p2b4pyz^bNAcPAc}_5hEmx!rkv;s~c8$Z9J2YU;vfG|?5#2@h14QVLJR z85B!MfTl7wK0XXO!d#&td~L^(bI2DW9?QQK(rnmJq;Os3zFeY^5!!x#OfVHNlq@0% zI~Wqu;u6esTART4Zj89!N2vvMMBoh7yopz?s1e9(c%RH@=0z%#ZzWXi$u(hX1&`2y z;vObEmuCzt+F3c;I2)lmv>MDi8RyBM+8!6cDK;z5)kd-i)1O%pyu=u2lY!~tz*@2B z-N`zSSAo}@IHk0q_5J?=LyVy*m1-+zXR2H2_z$qtirCSEtOL=*jT3{6MiQo9)+mg?(xafHxY_(OV86=W6%H|NTGutN7+0 z{!jA{f8+DQXTDWm{JB5H`zIeGzu3{d4vAKnvfPlcezvZgD1`{x)?0^jfG}!63~{RW z+Eo`QoN;u>SsP_QZ<7zU0ViEmAVAlUl2wGNioswMCj(P4fE7sW7~QrmBTe1WsaxYf zxa~1r?LfH!7x|)xJhfsU*rxpS z+5d!6KwZX%p5K|CbS6|Buv!TVD#0d>uxco$37V;7?2WM*=J+Ng>2EK|{u9s=;o0O# z0FYV`HY=^S!t_i)H*7vcmkCOgQeNkl3V|v{^VX0d8F3d?HgF|0{Y+CL0s0xo?n6E8 zE;4t8$Oa!mdoUnIyTP4uU?=!0+f{i2jIXqkM06A78T;;IF0hs{P^vMC zCQ)C1^a?(D_x=C&`|rPpM_>9H`uWqd9uj)Q6pI4aLUHwe=X>?DfAkN&|NS5S=to<( zXVxS{(mqz;iPvs;^rk)HN@`am`G<}X8tZ+|iYrYrCrBZz=Tb-~={)}q21j&OkkV0~ zbuTsuVKqHk6vjBri;sqg{q+Qgu9H1ey5eXniQqnG+7Esc-5fhJhT8XS3&x8Zn1Ed& zIf4Ft80(jb9HK z;LQndgtDw=FQxqa@*-FUNvT>x|@1jX4V+PcRLi*2kLkCVLOIWXAABl#~cWQ1joELW1DivQ5~3f zl*x5WX{QpbL0_nQi`4R8c)w3r&O>ryOsq*i(;{GLF2GLh_>iS zamHXqBKH6{1R#-(8od!iLkd_$XYC0%Thvr!(S0?Up7iDOx0P`KbZPULvr!ppaGFRb z5!eVjz5=aU?ryJ|i4(*Q=nA>eaExGKD%&?C6MssquX|#r1|*uNCj{?6?pCjjW5r7Fz|CVBVWL6FTC`swh+%d}NR6`(~X$ zfT^gl;bgktj&4Kt(YC{EY18=88V?K9wml6lRDh)`EzA3d26buSCO8PuqLh=+8Qq*? z-42Bkv*mKENDyP@t|!<;9X;6<9-h(P3e<05qt8BgX=OWDV2uGvaNy|zt{Nc0n%0Eu z6`2V_5;p2KevvTFu{FhFeBx*X)xl6%dV~M=IFWp}?^dQB0cB}E+xQsc;UDPp$&G{A z?Ua4qJAxUl$mZtH6OYM6hpf4*3jj~7BEhMM+qvI1Dn8v)@;T}`Emx;Z&_dAM{MtT4 z7w?m`Lfm$H6P$CeNMIiZ4Lqn8D2a0WiRdhDjb)vxM(0POAA)wfy+Y<`mztg=)X+`Y ze++d~RVQ;Tv?pLh@RU3y4Rjkam$8@{o6R2ShG1spcop4Fv{c%d_8NIA44C)?4AaLV zQ7=8hli&SK{^YlRW<7fC)&JRtAH9!SzKcbr>TzLr<11hJB7Xf>e(4_5t+(IT5z zQz1uhSk3o)S}JcidhCYRIp7MDP>u;IoIm$2kB^9*<;D&%ciORr$e@V^aIVFUubUL? z@s9@@O#<*1^b1qQF@HZ7efZ&rRkJ4X6C)Cd4+nuA7lzY#zL9PYK+0hr$)z_V$dRla1v4yG zsu(0YmeIwJ>tWbwZe}SJsHv%McNI*^Z#4wBQ*yeS*UkvH_EQGy3o$ za-Jj!fdoz`ecXj!5fcK%j$=&8Zk5<+8|HL7R`$mEcc*q2=<=Clr52!#k_jD`C*6`; zONHi!M*waTF;+X z*B##c$~XEmU;ie%uYB)!zrUWo|9!M=UjdEvnXmWarO1mh^M$zFJ;vQjcU*Tb-#vc( z(th;n<9hPpM||<*6XTY?Bv1jXbYxK=)9xa`c6G!)V8a{i45DSqs)P1nQcO~fFqZB7 z9>;B6u4GFbPo!%RFRngpn3yrTCPol@B_tGL;cPb?X z$5SZnIh@8c<^JC@>d%3e?coMVkG8waK_6nZvWo&{^cb7q>a$kvf~o9J?(EKW9pD!X zMF7QxPJvi}FF7$7i&J{TQIx`80j7(JHclax>L5=*9G=SG;KAS~kWE z5XSCQWh<2>AuwaEPCyXt48#`LP!~mDkC2U^;?%eK+&>&0Y#{GuCb(yX#VgS3VB&Bq z{uvo-3UcBhBofBv=>!omdnN%8!me}8{T`SjKqoq)ofRZe*?*&o{FFv`(nxd@)1Wrv z%F(P$CT+|#18bC0TFoWG40$1N!)JO!U^%2t#6#LNO`6>Vi@>Yz4-PoQAql~gNC3xw z`A@o7uG)zRCUtHCh&g#qf}HVd!G9p6HCIHeo=PfCaA#;SkX1t+J1wjvT{aYb2RL9^ zow*p!c&@}w!3Qdp6KaIeP1XgiD=VWOhrBmnbJLoyAJJ=}pI?O!zQ;fKNB)uT|K3|4 z{GKVVHN=9Gt^yvdJG}bJ%isFtzwwK2;4|OAODtUb8vB0%w7a_sOK75AdhIp6^EZF_ z^75xYi%-4r=Kn&!_niTuF(iJX8DTd`9oxFWjy{|8t;Y?BAUnibT+PWqHT-DnGcLn zx`1@~Z09vRNj^@$laG>B_a|X<7?s$}$uS@Rck9I5d5-*FSiZz|=df7i+3#63Y!RGs z7}k40at`Pspz|Syy@bE|SO3~S{q?VW8Q1Hi+D&~lCTK1G=6ApQ z{?Gl1Kk+;D@w@D2&ro+46H?20Jq{(66VeONMdSih7O5gC!Y{}ri-9kl@Kr`Ac}W*=`E1+&zO&>c<=^<-O5-E8Gq02Zl>P+aMS z1a6SK9D5H~rVIPWAYJAiGvv9K;qe4as05J7?z*xwYpUrOnp`_=3pJjL`AS<_rG+C6 zk2YSTw&In*=`9q&x@9{OO#r1ByxVv9uI?miY?QA07X3H2z9zC+1D^xPk}BY z9NX0SyJ~2;s0}fyKJrA6jm`WxohdlT^9v4wJ4PPkJXlzf9ZK1vfBuwd3)4(j%XR%j zrp`0E4k4LJ4Obt~#h9ZQA{YL|Gju%0R1G}1x0+IqF^{w7aPYOmqI)rpr@_!2YJ=h_ zcNdf%TyTV8PnK_in-QCw(q|}DKePWiHXZOxq1%1H<2bY5oHm{59knC%c~kLL?4k)= z$5IKKF7v3VW&yIlN-QP0>^S04{;jID0Nvy1lPCE2qYwD}$uqq9^)KnGfBfh1<3IoN z{k1>wC-q~0>`&^8KlL;9nQ#6CKJ$~`z-PYsHGSr*U&EVU{A@pd?KP~&OV{g*`tY3} zvG1SRMy^Yk9O|6!1b#Et@0=NGDtO(3H~TsL#pUZeyv-qfD+>Vqo|aH2SsOU+CrsHqZK$1Y4CHa5WW z?Y7PCWFE!SCy53+*=9`Ji$j@IiJ4U%i~wTiCH*U$C=tzVIyS`_$Ht>P!G;^t8sm3M zFkV)f_s6(dpqYdN>_e;Rac?yw1BT2>%;U2+z4j--I#Z(vCD3zO@BmtHgf-hU#c{+q zT^-38Cpwmy$u2@3lIR)eIK-J_ImPYyQpY5LxWFY!1GIAi<2RB3$RMz7E6+aumD~1p zM&XUWE~SNHGRP@sb+*Z#Z$$bA#m4L58WdR}Ra})+z~b#(SZF8qO}Hw-ekZKfx?$p# zJLn8Qj|C3yGxzPY3R6W|n$sn4>0s#Qu$v3hT5~wtoN2@Axn~ZfCL2c9QFmOz(Fy|X zf3LCEtcAU@!|@rKWWg{3!7muB;+da5%DKDVV^XEl)w5yA-=IzUq>|QuK(u8a&Dnl@+v>){tR|=XzEqC&cbJVdIvC zUc!dBl8`~J>q?(^tf)z+PPZDbIDm4MQZX>EZH;lQnJ2zW3>6@@i zGh##x0a8$}X$L?(dRd?R@b_?m@Xc@j)W7u3_rHg`bqNL3r@~qk-hAVAeDKcu|KbO4 zeP6Hq*w;6i7@$q-XDCozx7A{-j6?e@#MFB$8vW&c0cwzWL;W$3p4if zR;rK5sRFf9r8ac7gI33wbz&hw$A_CP8oit7JjB;isl36osbsLt9D$DQAA1^>bFy|@ zn5xLcUv=zPF10HN4R{^@WlaUR+6^*3Uot+@V2F^lNStjzdhq*9f`d|JP$q8_ZM~bW z#9X)`^a0BOCZ1s1LFhCW*pB3SJ7GHx7eG6TJ|M798$iI8BJ|N2*R;c-DH}5z7eJ48 z2FxOVz%+UjBZz_kn=y`AP&LpNP(awYQ6ugAnK!1wG*w7h#StLvQ8ut_d~^&zO5}{~ z^1Z_arX)7O_*~!feB917pbqHb*i|O;*mF>azR1@OtDkJYrk6E;UpZ_mPs8k?`)THP z=XZP&R6t!W>%9-&+n@Wful%{kFTISXKm1|q| z;;Wy2{U;txQx1R&`(zx~y5OxJyoI0n_P76;%S$igqwoJN`RGyPf(A5IDsgj3uFk>i zojus6tqTDoZ8`oZ2FR`Mr^Ue$Dj3;n7v3l7lD(hgK>}QfojR+q_dDq}pU4kTMJ#M8#=f zvdaFe>BXH9ZT@l1XfP#x2n(&n>7IMbh>Q>FfLkki-cf2;7y=DLWsV+!gEO3<5ul{i zN$VWBC#bU&7uc+&biMRxrKJOt!wQ#5Q&?9e;{LG^?_vl7v*F0{runcCCs+@&UF9 zPJ=W}lHq(lvnEv&^EYnDYO=jPsKFH3)^m~&y#U{zeIx%p4$<)xVV#AI0vC%#sW+Z~ z{4qay_Z@uj&fDvwci-ca4?g54AAf)+AAGDQAAg7^AAQ27Pd>)eCr|6yvuC(}{+!w` z$hxTN4q@tBuI2R%R2fWo>}DB=b((L4Tegbvf61&&hG5pqcPj+TWCMDLbpPN4MicMP z)QRzrkP~ubbFMCOZ-LPhKe0tj7a?8x5HAFZJ#iKQ`n5D5Y|3Qf@1i+!z#$KXmpH{m zw4CpnqSA9v;^zhXXXVA?TZ;ttPA|Lfkz0EMf^<7&#KrTqlw|nMc|^YEfQg+upBl>3 zRnsQqma|MEu?1>da%>VO)o9zXtT7|@CAsT@*~6M!RUYiQMwBfy*z93I>CzCgum*$N zzQuDs^4XY3kj{=yfCfUfz=J1EOgm$#bH28^XRXsidqB=)nl}NY-`0tAmlK+_^RMi@ zcOyjg>SLFXx!_^56HCU&)SSQVoHaEnN0WT?DIMVerP5&xAcrW5ooNRe(7IK$4(Z#* z5Fv9guzmtfQfys@1F^46jjrp>{aH*jZ6Y(sf^#Qwm*G8ELly@Wz|dh+abm;1=eb5) zxPeUc0bv!6IY->qmPr;dd29;g6}Zkd4cX{;K|Sct;0tqj+HJ6!+2kkK=4h!TV=(av z4uhmDH`wx|-25MLQE?}rN3vcmw$S$tSM%jvIepGf7dc6E(Ino?$%!Xc-X6!GGIIS^ho9i4p%>b~6J`pHxEeqMk0=YH=0{MK9VzwpHCn{CG-*iH6K zUO2T}xV4Ao9w%YXJt=JgbQ@FWK6VTavmZ^jWl#Jw<-(1`nQd!(@NQayck#BaV1jr7 zD{V~>rh>{uP+p3>yLQ{un!=WDQM0M^9S`?!cyi!Im?Rq;Gy<#3Lz^hmz|R$J?tZQv~s zFyn}E%3OqpB2c+;)6S=BB(Bx{-n*=?j?ZG z4uRTrOHq{2UDes!EB#CYFv8!Mvxx_yM~FU!FR9z`D2u|7%frZ-bGgWitwncXBXi1o zM%Jdl*6-pxtABT@r(8c8gRyI7j@THDWAxv;jG&ZD;^WI9Mj!`!7(vG5&+L8up4~jj zDHIMX%doLI(L;>-wx0GGKwDH8dNaVee+PZe(i4`^GRhLBL)p2h!%28>J$mI1RlZLf zH_nI#Vjx%=a#Uz|j&tW7uQrhyaIGHQINK@-qH6Kx;7_C&+tA~aIcMrNuY=s!je;`* z4}RFrZ$mzx0mfE9cI%5gTgacNW&4%$=SGOFVR|PrKdwVKJVi?!?KRtz{A>?y&j#ph z7)vR6Tt0PFX4iTX8HEh^|J(h9xc#dlESHQ<)F>M6i8RS&-A6MnBhsc&;T_$Sq*^(8 zBooY~-6eh?-qD92P+D9zLuOgqra@W6Pq+Qbo}>G;eAyA(6=NWPQAuUH8`u~@W<}JnHCAWq@u{ao33V}ftF90PR8>T@g#&6PDFkD=}q_#z`lX( zxzC9O#^i7gYG|u7V8@`hFhEK<@-{U$JMC&f;gIh+i^hkOZgilm5IA9gP#_{DPMIyb2TwDu<5|T zm?^(6( zmVVc^eoYW+KmbSSJZG?`1<=hxvGu-oUg}di<-bo7Ms9A*LLpl13wtOJ3lNai(C5c(ZapOiUvqcFx3f&0Lj`1z3R6A$x=jPEaqnZ zzS&*aJ?7f;69r-%^+u5gZS5iTlS3@KnVg2^EHe?UKB_{h@DvVO^f4)Ks|YKkc^>0GIC|DtiP z%}<`+<9C1b!zX{@7yis&=Jf;Ycb|fHcJ5wwp8D&?g6_N4}U9yHmSnix_hB)<}lM4pk zJ)%}JF%uMP!0RXgp@tG9%uC#iePrqh#Rr*#@jnsHTIK#BOsS1-M_4M22K1er%>HDm zPY-U5O{uKewt*6EhHLH@4%K-xSuyk@<};NM!-HY=!jREN+YK)`A7m5H6-VDuO>(<% zo4GwqlXrRqY5bN(2ID-BJ?5zxp05ecOW>5>ndX!#!~p;n>l^zj$X?%-CTrHsB8Q{Y zKA8!>cI6Iar8J~u81V^sLVyafUBhl44~Y;q+W;D7#=9E4`i^y_AGPGtJDTXuXO+!a2c(iG3Ap&;8MW0AP%EEDOo_U3vgVwNwvkgF zH+wr78OPSb5x5*%Oy6CN-_H%7@^^w0H$j+L?6&uq0BVyOikySj}*yZ@ILLK|2PW^pPQ{s@q^Ep}1d6$q_ z%${JSoWu zMkjjK*tV3NJGdnczeu7Y_S_Kc3KhqVvGo}fW6Othfp+@ zknJi42gYuXNEvuL-+H*-*{@j--xSy3jSHOMDHbie9;#M)ki2?eyK?U{;*42`<5v}* zGIwvRkZq3ffJXaHzKLKTEihv&oWAAxOu}&FaIO$W9^TlxPav*bxR!>{M4_?Lwpb5v z8WOCVFQ0@<$8YfHKlmRkczJ1HZjElf+jrN|XIhOP_CMSR@v6G<3^I}2)4rRn%Shq? zU17$pB2#bt;%yzRnyEvjCIe>dcxa5U1hG>D!mnzcL^acFlumAeLy5D~fpZeO5-}TdHmsOi3Cr!v+*>aHF z_gB>Q-QTI7`u4Y}xov57!t|Y3GmWnN6{KBp76GR#^tSdQc29gd6$$`$ zQ1Q0!wOX00LnlEOgCBP_vFSdaPo#QvTxL1|lM42o96R&ij+xKv6B9Zl4+iJpZLf9@ z=_7;JZb8_n6HMCNSO6!1W_f>N5R`>?X|qDr910av`akb5dMGv_?%{f1=wPMo#)3t! zSGEgbC}4Jv%cWgYh7qtc6(ayrX;7I%im)n`9>#2fQx?APw1coH8v@2Fqxuk|>_tUS z|4$uf+S#lUPLD28n7W{$Ic|qM5z&9V@4M7{y+}11v z2`Cq5YVA^4>8xIJlWo5=>- zgO*s~*%EZj_f&2&w{OgVr^#0n3)niO25dmhR_ElLpf`Yk0jY+E6^2V-bwoTK-b}g7 za!RU#>6G&}2|uJyQv2lDP;|!5PVJTjrcyFG-u3{ud{|0*iE>b)2P71n(KwtRX4>J7H9w!MKqLM68W5HHl&sQ2GO*+L ztC&3?R!^vp^rT+{j=j${7kSzLn)exiie&ZoVX`M^ZwS21&xfQjI7s%$#6`t1j6EF! zvndp}AWdsJPWdKWU9q^Zw6r=^Id_07oGKg)6C#A9Sq2);I9kNbcW|NC=&$HF5ECKG z>siYptrBWYCL%Vr0Hw~fG}SE*^wO#w8wt$Blm<{G&0OAT?;aL8u^mb^B1&>*Abz9` z0X11_3nyww9pASEHEBrqvL6_lOpF5t-%UYZxh`no`qc_erEeN9L+)iDQxcrVkx3f@yDaWpN56gF$Aqs>S+7iD7aQwQ(7r! zMNV!k2ifANX>W_6Sp{g%8M0k2gKXa$E36m5b{agBjQZGYgy<=0n&g8h4>c^n`5|X|r=@1}EP6^J;h@Iv z?Vq*CW?_cx9Q~2Wa6te!xOT9M@q?A6m4Ks#4Tu|!jZ@xz)9>;B)Bbhr`k2ybi$l(x zVMMB&H96qaah3nXHqQ2sNP7TuNHLojVOm68Enqu{ytgIV&PV5=C;$1Zh5@A=4+lNSWT@KtZydCWfgQ;|u#jyCS6_q<5 zkPM4@%{{gu-@Z#6QdvmR9}FCn%s=zh0|va7_Jh$U35nYBrFTim5H)$%i61THt($I^ zKfT6o#=ocK5AISqf|-*Qfx;8X~EeZ!qQ7}^t5p)DwpF=`WUD0c7Q3ly+6c5J+T zzvRG+VsN-vW~uXet3-+%AJr+>{c)LbH;N0W!pH@^0jmw)e9 ze)-4o*)OUdy}WUKff-@ev$_7+T9=ESK7G>c#y9_-KlFe5`27#?=+R}j#>R0B4>pyQ zo1by2{!iH&${LT=#}Ci$2|IE{%ag5)JZ$f^iH9yCA zciUtOW7{vVN5d)4vO4!>8j1vKQuMKZLl%y{)A-Cu{zO{INm#^M24xukOu32iZwwoxWJ5HL zZvw4ko`>uplpbn-&H`O-p~4Z)>54c-jE@A5#>sxk?`1O-QMy4`rm+A3E5yV&0?3Z+ zLCv?b16d!>A+@9Sy9EeraqZTlx}do5_PZbctv~W7|K4}|N54@o+Lt53N6rr@W>U`T zz52N?;^TLI$iMq*zxF@*{O7-fecdO+-b-3=#Veuuo$r3{qrdML{-M8g`Q%4>{@(jq zFFkUQVuR~!Cd+}nGJu{)>lIY?q`co^US#%^F^bLR~970@!E#vZ>n zptNkK1tqjK@H_;8`7=Yo6)=`^Evm~^2+?S8?&Jp0OAcHW zf-XqLn&t$j&c=I}_YcJ7a><9QJI86uc%dMoQCw!o5`sW z>2;Yb-3~F7i7V>E+$CJV12>PvP_d6z2`flzvL*q*NVBX~xpyA{Kq@yhPPTsn93hoM zvM=tUrYGc-79lT|p8WvVys*Dn5WB6d5&Id0mpoxRV`UF>$ovYif_fb6P8Egk zpoSc4SDZ2DSY3g$A+9)CWZBkf?(^)AF&}e=5d$+T-rQJVvZP03(;7n^WFRr~X#KBr zJ*v{fUBX~;?no5jMobJrILQ(au2eDI8B7;@58!yBnxMisZzX7AXDSdvaE64OwzMJb z-7?h?b3^pAbV$^+VC0TqT7oTuqN&_VfONrdF6Q-`w~N0Mu{99^H1mk3j2_7p`RhD_ zaHonmr)}Ci+CO-+6Tv_NrWdXxO=rjik3!*MAVr7X8zqt2L&|^!Pf1{M%E1MLaR(oo z*PQchoL8KEify!&-~_}Y=AG9aoYx`SK>vSG@7LH}Qkt`R#x1cYf`!<5OS#Hv0L~wKxk(tTyYl zTrB`x9HivcjZaHQ}hjf{g;yCt+ zD?t|`=I%^oQ6bsqF|@uKzIaNoV)1}5<5@K0mtg{v>5Q6>@3qUS$U_N)a179{TbW`g zaW7bJE8;Gp=MVs>wu8N8wg_G0ggPS&HRVFUgIEaD|Lzre@0A!O37VL7tf~P{}gt2E3=&11>PMXj9&w$<5Mz zq^&FN?jF_ee*XtAe*RDWnLl6qlY0KiGfzmW26&}_Mol5NTy}F=ck8oX*5CYVf9cy_ z_}u5ebXgV&DNZ&`T}7;y9`mj5{*Yhz@t^po-u(QJ;rVa<-R4WLfl4EP4xjrkgBf;s zIG!jZgiK%xCpEpHL{>qGc1+1Mdfi;$qvSDVHk8 z2YSA5s)l%YxPYge_X1VNjlw50z0lTuFu74BMtleh6Ec9wABJG@w@iQ=SzI%uX}&jYvTO z8!EIL{a1`}{6yXl(5{ggj{%Ia55uaa0VONFm2k8-<{Y{Q%|Ii4`2rQ#~$|JDN_ z?eE}Jd@@$ve!Ni2W~C=W(UgQF{^St440pvF37$|+2ExIXIw>Q^CmViUhfNTm)7>-<;)f5?A5_- z4wj1+KT4fAS0fq_i8?f;qk=p!pdgq1I)DbS(W00@Q>dxFfHPXn1|>FXi+$E__R=;_ zp-m^R3J{AM?GhD;*N}_Z|6~;BXiXN(zZ@Npg5z3IL%N;LIj`yv z`T@avDv$uUC6a9>C4So==3t`Q9^>~AgVqqXE}?0F5k>a*qJgfdPL(qOwAWQ#yap@R zQnRy;KHTqa_3obXgZM%R*1m&X?z=8K;t1U;I#%Hp&wqyCB2OX>Ib+xn8BU-$_!OK< z#<6EUeS6j+(`#gd?YTvoc-j>@_SA*(rdTr#Czq{~TtnrQ-&$Efp=)z0f;uaG3l{ul zF0)2Rfwb_HGmVn<=-43^+LIJSVApie>r~G%_Kyp`f8m1h;QBOd2I?ZmSSk&^!~=p# zaGOVgq4B)9Jx7+#D;KGgguv|9wA=|`#H!bjVr6osgi_bsZ~JlG5+U(_NTQ)r8ax$l z%GicGUQGzGdYVk)|7$vKY-`eDRL6I_!e;u#7u9<$tjk?L{oViM^3#9xk3aw9 z{{GK3J^z9=(?gu~zHZ?wU-|O->woz#{`Xpimp=PxUawF2aC(VV3_MJ_s?m=~zWuxW zgMavse)7>LpZxB#{T!xLQqwv1bns~m#fksQ@7fP4?+`5SahN+c>Uv@~+%zD(qc%-A zt)}_>b2pTvTr79W1Y`dbudxq7(S69F!vjx+qRmfitj0eGXbZgNGWp%p1{?-8ACx#R z_+;l?x{5W|Urv@V_B7W!$H=yRs;ag_4HJXoJoB^6ofy13xyw{v#jafE9^ZVnOxY&u zJb`JlOBkjiPJ9Q}oSpImv4KjFaRYXMUJUq7#DpVN0LgX@vL(P0dU>Yo)Ki;z z%L~V*u?;Mc#4xrOX-d2RVETuKb$3bspf24GRsP(pjUTzf2#g?zg?Pp}=UFg)K{@!6 zdqH4K=BSa$FyX=P1!lCfU^D01Bb5R>WQF&Hmvf|ZnX=|~R(%z*+vCNae)JLe>T7@g zi(mU%-+%Wvx*k97eYG)fu&RZf(8+A>6^}pnjehI*ei!e3|M&h^pZnbBJlYq)WJny4 z;!22beebPb|5JbFKl5EZ`QGLJ+0z!w>aqqnhgr7~XK>^gEMKEwg}KoQ)e7QN+jVr@ zg(k)8^jFO@I~!AESj2tnF$$q%Jpj07mbT5EIpv68Qw>w4c=7npDc@%HXiQcCBNy*K zA%LqQeguq1Z+TLwWR7k6d$_L?fnmm*oNAl0abm<_6cFc+WHP6dx-y|u0GgF*-66FI zi*5E0NIpdkXK~jANyzz17Tln@&>6O*@vgkJ$|&i(5MM=QR6C(p?4W#6Ipe<$`WeP*3uj_j8z)T$aAQMT z;5C3|Cl+gJ^*bN%O+X=GwLq zl^Af`G%I(Eu}_%I9*h&yICt5bL}{%_p=_%Bz3QA+hLGY#w>}s;!MO@FJ9Ls8dNdZ@%=E{4VYB$*zE+sOB``(#$FYXYNLIR)yTjUb@N(|0o ze9?xR=c6rZd>_9txeKK2vOrmw&fKNgXfBJ(%Jqtc#`JBT3My`<1TH!tevic)8HmA> zeZ}MicBAU@2v6UCo9p_d|HPmC)Bo=ueD}LAF6*W8F-w-&L?~W+?RC7g^$+~|Fa6Tv zM_>4GzMZIKmY^?5+pc) zAPJJ9NLk_}O0?`almHr0m$S<+7t#kxfaK zNYj=?Q8Fix1e=Ya(HI&)1L#K2-S@s{ul!hRo#$g31kru_``-6?&e>=0wbx#IpLyx4 zU*qMN`i_r$9Kr6_` zv*9LC!6(R}{>+6##0vBg>_V-PG57C^_Sibh!`^@fVk~UWFOXIze)QN%E zJu*pqimnif5jACt%u>@rC=iV+6;%h$xu%vE6!#DvxPq4B9jREH!XD@&8X9REk3599 z$Qgs-dqDaMh6BLG_q@9D058}Eb=$*x;r)J*t;1wN0D_z}w=qbnHa>Lv9Rj#gJ>_Z> z0C1euem!d@W*-9Ngw~0*1JWKiH!)uS%mxz*aB)VkVXC}E9K|}?p#H$|rLR2w#UJ{~ zKmA$U`^NF=%P-e)xq+OHCVZ;j&7cviyRUzJ*X!Q0e*M?~_RqcR9gjZLMO^9tp?8~O zz-b(J@79;T^yK~bf8_iB)rTH>1TTH@^VdF_%WUW%G*Xlm$`(W*)KOdwCr@{ab>+n6MBUVv4-t!3x%Jti=I5Q-UK5vQ&MEQ>2JxHxmeO5U`6Wr&lvV@RGiC}0+B|YcBK8+49RoGXQ z<@DD99Iyo+?#tW}RnKmjB6`rSQmGQ!ssxhYQL1*fDy@Q0#mMh)3*^e!Y-`Kw-+SIP z!mdvr@YG1;Y4(g2L7++y%228p&AuDCYWshEulm+IOpYr?5-cmZ3(9(Z)?g9W9@^N@se!S{kxkTl#8mQ68^>!wN{+ zqp9eD5;>xGIA!}<&obdnf2WqV?T?8$)`md4pFFOEZoOvfyP^G2s}8auir=&3uGyG_ z)h3@;LB45JEV}3%Rq?FmmI*%Em&=@$zHb|zmTmM&q(C-aReLWI5K6ZvNW+q`5LE)p zs8b!LVJC&g#d(r7+y-SSr{PTAGCieH{RLmbnn z-3Q*F8jJ`%iG1$SA&lXmioxMlAg>!$%}2p0S0m~dO9}wlX{B9Ket5t`Crqjio)`ii zz8C-Gc)>mrcU1K9nq~#2W~+J%6fUmD;;7B-xaA+qxB9pi!OI!vjiz-b-G(-YNI#Ek zGB-pIhP;&*_}r+~Hc~6dKUMgpt6Ka_mh6^_!~5IY2i5t!(ia>X%d=GPuf0aa3xaX= zdxP88atdD?k0vGQi|Jr=9gUm256<(S{p96cANX!O{H8bllV5rI>nJlbT|o7XiWCF9 z{cUf-@BYCj{(a1=_?Gv5pzpu@5{@I+r>30cXJw=6(yx8#iF*Hsz87zN^IQLS&p-Dp zj?2v)#+1{FxnrA4qMR6{tNY|n^3aHnn7o@Cmv~Z)B(d7@uNzy*7+`pMc(;ZC#oWG< zG&!-tiM(6sm^nvP8}BEz;tCG5atg4--!b`C%lG(&W%GKsfwU$12m1?Axq1}F^6e2E zpBw@=F3;l=kpG_KAIg;)%BiPd<*IP?BnH741!}ezOix_UvuNx|2{;0?0ePnqW89T~ zTQ8LsBM!shHA6?v#TgHSX@lKzr4y(*Wu%^nZBSUghMeaiDIim^*}Y};;?j~=vgKevEM)kT|=iI7Qbawua?WgV08qBnTdE-AoDS$$q|zQCydIH=r>oFWsdYJ4A=R1U+MCfR3qVUp?W8G*u~ zAcp*uI_C$~X{J7dysB26${MofNl&Qkgr2l+Ij|0!(xXU)cHr_HAsA%X!gW~Yu%e|P zSAQ$#fyc*iLYeEHXUkNInJ`SkRpnY1kF5;Zfl%wdtJw6|cy6W1GMQneu6`0_BjDAk zgh${RXB#?WtU59GpqU8)*cK#;jgV=xHlZkxWI&2=B<23OvD0&JIP&(s_;0KF48lsK zd5)&kClKNyVn>PuPgmC>8q?d!8?x&x%U4{)x_Bb9F@E;UI;(b-wzpn?dD!M4P3#K3 z^tinfKnN5xRyFFtLZ}xn)C<2EKOwIB{_ho&-qzF-N2yy}t zsg!bThWwcf;!MF?E8{Y;^V7YG2dINfp`XE}$JZ1W zUllSH37gW+HHzPt68t{eqOGx0s2WbAu7C#wK4*3{@V$y1a!&hE z1CgLRe!+^2vkb)}XV?|di~aYIHFUvFF(Gt|sWU@1Cz1-Nkc&IPY~!$aTw z+rRc-zl(Pt)u`ij&!DGF!H(kp06Yr!Uwv`aE8pOE{ooIN^~+!V+Ltbu3vd*!zIM0r zJVsARyoE9edXC&qZhO>DnLO796kaPtX#C;wzyQzkKv~^t;Syklrj}6Z*Wt2%&gak` z=MdIFlw?wrZs|YlSDo8N$ul`aOS!Ug@rplHzG*dVh=%bqEeLmJNc>h`7TnfdA&2&V zR5$V(b&4;!3q|WQw{q1Xt+GpIsApMJ5!X+M5W686n=qKOi(RFKU2rAawpW=B>!j-Z zijKSAaVS#?+s06{cJ;OZZT_L-%_4X;U%wGzjz9dc<%2-8GyZd71CtAJ#c-AXkTiW1 z_!ayVz|~)^U!Og+$k0F!s9=!ICw5=y2J+T*rw`GSRso(Yd(A>61sMOHXSFQ<91PS_ z6|BYBpED_{FSjEFG{xaTE2|o_D1w4T)MdT$>MMBVdgs4*$GhJ9JiqxR-6>s1E-MGY zTUTk<6<|N~hBpnt`@i)Yzw@uX@7?b?W)^Bm(8l|N>I(tzxLo@4Pk!;GkNnUN|DWzY zaMQ1S^F{RK2B2j=V&Z&JPYgSZ73}Cdu)o`0U0ulMFc5YCQ?l(iNso(hoeu(;j7=v9 zyG_oHc#QZ18oh;xe4ExT)GjSmcYL}Jz#L{2w~@k?Z6DdAU1b{-s+DiH9jmQ+wJSTV zi3Q`}!2*kQm{IEPj!e{5u&Np+*26KTV3{H}gxtwwuF64@gwkYF18tAeaUGK9o3{_& zCSZ=kYZk>rfgV6mSjauFIi@z!)IU(3I-TKmg)68cApqczG_1tH(&o7&RSj$EL77ft zfJsN3L+(g7m?`^*P`i^>0ModZ>(6r_6{gC78@eQJY{uzUO4vRxjq0hIgzpNb-j!;A zi0pZWUAS7n5$NgxQws9BLAwgLh*ZghVGqV@NhB2ws}B2g%_GtLL4z^4|F!cGjY1zd z@_;@YkkOCP6j{)bj?oCV;{fMS86bJBRM+nO!|euEH#8+f zfs-l7`T9hiaS!4f;KCBdF_v!@53`OToHa(F(3b|fJu4_x`(k;XiO!HW5>l9{;+OS- zt5W*%%61)7xrrdv^Qd-AKWf!Ck?rPJhJe%8DxN|E*NbP{L{;h5xdM8evMh|sHL%_c zHBtdIH3SLe`3VP_NBNeB%Fuu0O3DeRZq^Ad0I{g`d?2T*!_pFMH6Q(1-(0g~kF9h+S==?W*<;xPUDO&E?FE7q32TP;xq z5guK1#jP`#dX18ksj8(}R$Yzp#|6W;%_jDBT;RUMO)5?Ss%eJHy6J2<*%#<9(lCh`p$R%i(h&AtGL{` zT!;e~kC_n>#+~?c=Qkn=>9ZSN&F)^l+^@FFRXmHeG-(!c-zY=hGI0LXiedI6b%jaU z*q?r}D-wL=A}j6brNXMSTm5HJu+ID)D>BOS9h`$?Hi7-p=`R6r^*-MX!nYspXg@P* zr9=GAE~6lnB0SF~N*&+->X@P5qt9l0K{G@gX~$3|zp)HL6p+SBmf_kJE6GaY;GjVQ zFq3vv0(I`p8^2H%{sgmp#&<%N*eGam6zn2Q z1T=QeHrjq$(oO{$yaD$fg1eO>EYfCha0TifX5GikJz(8OHSkA&^w^6(_!B?=cX9K2 zzVgy@=$i|5osk{88d=cI%et=PxZK>_yzQNrKl+{Dy4%O)yDmooxL0=?xH*(?6p7>L zx&PvGc;nmO^zS_K)^Ecr&pb7Cxlsym0m-3UWJ@Lr81z@lyy~NNGA@Prl7zBn2a*s# zwOrmyvdxXZloOThwPR-j1UlzkN4s#7A${2ZJ1CpgpUr;suBoOMsaKZ1QgDz zvVg)mCGK+3N-l*&w0DONUOUjN>Hs?1l@I*XmMc2^V%ViAGK|l$M+~r&^Bg-PChI5qjW7D zmjmEb_=8O>LzkxLocbJ*pw+eX(7lov2-ny`X-!$a@{H%qWFv4G&WPaja3eI3fw(b| z(Vsg%Ay(w1p;x=r>QgEw3G<~r8Q_u4eZ=5^@u-&@CKVJJJdZ}#6 zzNw*0u8J|qV`YEE(6O=4AWY(yWOF3mkWpJwi63I7`j+lEs@~;rO-@R{$Df zFIEWipeQS!wCe`xx9;N*bdWeY72UQ)pjf?2*Cvi|w%eZM zXc`6lL;|}Ap(elG@saTGA^$Y=ELH)FPIFW|R%ZQZ-e)QCyLfOLKo49tUTWD1CW*i2 z-!OLL&v5UO%(=iNaahn%=6i|YG{$tq8LuS~+(qSU-EIX+u5&)$**apfH7yJ&=!_EE zeVsK+@!Ec9nbee=y1jPxH!g%A@ePE`WHq0E`ttFg{>jgLXno7O-!XOn6~*8MwHy|UT)-;u=2C@Y=GiYD?|$!hynOH8 ztN-z9FTaSnf4%ngRouUK52>t!@eMwAwLlJz6uAJXO?sgDT{?H=WWVflSQ(T_fCtiR zudg{NBeYKs|aJJj(t0-ypc$8PL9kQ8;HdFw)T!Sgb<}ePlP_!dYJ#p&WI+68)pzWlTSl%=7;oyc&pw0q zz4sme(?{R(_Ily-pS>P8cUNUxu0DX?6%;fn=M8Ut_x0tMpPx@X{@8!|=-c0hwH6D9 zC0KNo2N(<<`~A;+`R9J-Xa6=|e6C)3?wjm8cL&R*^G2l_e@bsmk19HDBX;K{7c@Z@ zn+Mxfd88zwic6W$(IOP+DY+@koemh@FKY((p5#!T#Em>pZhqKPhL?v^jZLJ9kZ`&+ zfL=kM=0LLr+@Rofq~FO*xLCTNrSuEOLDmL>)iQ(({%8V6t?5%nD1^R~MVZk)fMNUn z_YDm+J4#8wv|4ixR~$3X<92VlR^?>&!@66xy~%)Us=CTLl)g1i5EocDx}ziD>hSM- zrWdBY?>mW-!wWH)`jNOE`l57zi?{l5^S=7|9(syzISIez z@T}r1p;%(LP0qjpY0&Nx%B%s|uz+2oJY`*Z^XAP>_LV`ulaqbM!AyTWnP7#)ITF+W zPy$tAVI{EIlB$R!l_|QNVQj}fa%a!}>Hi0<>FEY1%ktQeQ*b3eWxi?JXO9yA6=8dE z_t>&^Mb&Q8@>x@`(^@H+OptZ;*ZzQ*O=3u(P}XJoIs6V2pv@%s-dmc0@z^oO0h^H1 zWPJxplt7{xJI2y+z3cbu3c(@t3EGa^5n(+Oh$+w$Sq)4m$ATygW75yUZrW9Yumk+im=Ah`Vh zVFCC4dl7sTp*D$qQ7UV6!q@ghz%_dbpr?GyPav#Yf!tdqux-?#_0`%$ub`BzI;y^L z;$|(15=w64 zdtHg9D)~yJvFaA6)P9oCq#>V?P8_Jy&zvDh_$RHKurd)oMtR?1!HwX`q*~1(T=G#9 zx7}cM0Y{|GsxHITG{mG?#$^@6kE%9Nl3sm9j;6=HI4CA59xaJ>dFgBqtb~g1*!}d9 zmY1dRnjch~T$WhJiDOVGg*9_)6v})`iYEJj%`NQa817zRg_Swameq!}ixBbe*u0fp9@H7-_Afne$*7|@2CR%zF)9-OO)OBI zq*a7&x;cE>w8eTg+x2n_@J4!eOLdZy=>Wo<(Zu7yz@s$d%eGQ0MLGO2(kvJ~8I?3} z@@s2|T$yJ5UWI_!@9V!UAC9PhgtfePRDpq^WF40$=gp*ti0;H~1&EMj!m}Y|wHhux zp_O|Z%e3*T&Pm!vj&^z%d3iOChaaxz{_t@;_$_a%4}9=D{_(GT<5_ecy+*nsBLL2Q z;Eiv36wf~Q?Emt~PyXKJ!FRoP5p@|8J>5-T!*2d#p^qEf`{uLL#s0|m|G@wAD_{QV zs>AnM#lJA|OM9C1Vz;wFXE5-z?JSn#H0*z87dGLTqTfy-AcS28My|=a!@%uKxZ&tb zudu#GXIBKYTQA|_m~A^mi@xJP)5S#CpE&4Dn^A1pk@o07)j|fY!o&wd7PN{Kg_A5T z`!P)Zmzw`@+y77d3R&lZXB!(1XdSG2LKNO0q=p^tt0PG(9zg6O;29}Tdo`4CunW_U z-G|N{nrAPrK4OIjGb%cnziiY7^WHGarFXKj!)`6GYfn!{Wi#z+&0+)?V07JxmOjKHjG z9e0k)<7!kG}i8@2eL+|Jm+4 zcfHDX!1{R_j|%=(>_;bk{4T{#+yd1Ar~_x|WSBGNdKOp!Zb!j!*LJFl){7TG&S4M+ z+oU2$x37+IHRKSQ0ohFNl5Wy6Kr{d3t0oi%BBIaIC<_zQz7AfxsMi5$I3{1(KPBAWKYwoaX~b$=DF`K^=h|n3&MnOsm} zQ3Xw#cP2>?WEv~!L5u~Ue8YiXzCr+%253z>>Z@3)t+yBlaJqI6xq-3fTPQgXtG(;j zgZ&4Vq1GN?)1hZPAcsT^%XMQ6m#+1R!mbZh7fe2}_Yz{evCXI_F)*pKl{<|pa*Dcw zizbBWnI0${)CBbGfQ-j8Ehd#Zgpl1~2vl!-ZTsHFzgwxG1b;e zRHG*G5k~-Uxm~Ob5+yb}l*p8vTB?K{dvEsu0ZDanP9OOVg@6j6|xs`P?HEW`MRv}GmuT~FmcjWwd~H6gkI3O znxV*E^a84SB<0JfmACcXdOnHJi$eG!@4@s$!*UQuQzgM|O&28vHdL&RgupmO$-Z@B zG1?v+ncKru4z<4=B~D#q8egT})Ua=b6#cUaotn)Ah$Jt^>DI7IsrHS3IN;&-$IKT( zc>pqi6dN)?H9iwc2rH~qJM&B;30UnXKdcdstw=0(ud3DijiglT*1{wat;S+1R0WxQ z#jj}0(QW0J0kRU`oEG4y1G#EZm2d-ggS_^Pp|YQ)KU-uw$vRZa$~EF1iQc}Nco&~o zE*~6XT4~E_$IGsyApWw-96KbLYoEQ4v&gJ4pP>R=<@N-bcAV5)f-@*ZbsGCJ@KzY9 z+Si0a(qgqhu@D6-x&03sCgK1W3cf9`k!5Ad=}6&}a&F)x z$?Y$hnWO!tNt(iD#oIVOIJjKonep0<-YvPIiQM?BfX0I-eorFloRe-=LK0EixX*BM zh(<5t%_ZNdR_Qt?Q#t1kdQJOix99LcFF=^>%Qg9e9PP4{=a_t`R8y+?}=?f zKFNgdEcK{&6wk)EjxpuAE(69S?dD6vEn{jW-yr{9E`o6v+=7iFdoNe_we`t6xtB6Z zK*akK?yGl><-~Pdm%Kb!I{7c|fwDzrZieLj*?Um`=kL+I&xOm05_$kt;BI|+!A z!X(8ef#CMvY8PsV=#Z3$dVTYbE;5)d7a18ce=?bB1ns!F3ZLsoc(6AYf@>{5eTxfjzJYVQ*@KfHII&PxvIg+A&BkuHV4< zbPa%O0}gt#iy<=(q;izNsw&CycSt2+_@e~2QZ+-oy_5ey4M6=*jvGz`&<3Y5G|xzU zyXrCkrX}}UwO(8Gz}w%+=brv*edbe-|Ft(h`lzZ3l-yl?;e(?KHhO;fvjfRE8B;Q@C%x+MYM}Tf)oY{oDoJ|K~R$e z8ilDX9iMoN*1_!BCxJE2hN)*zGMbPSprh1Y&cX_ogh3B1;dU~veBdAsurfEJa0@W3 zs=93Z6@in^Mpf(^&0GoC$vr6hPD@aHf%?*&AXG--)E{%;7^~xw?3&Iva%Ly2y3e!} z$X)>X1y#0}B$n|VrFB~+2a0349Y{X`%W3m{RJ??n(3M#F>UmhQJFMPSmV@?LvJVaJ z5>*qDj|&^DM)Fs5V@3meOctR5F+N>IPtzJXd$QgBK)n|1BWge%2Gw!HtlA}Z%zE}ds;xBRcZkCt=UYQKa?Jk^D`Tmt+0(^BP2G0Okb`cQ?Dt=nUcL6i8;biKpu6aGRp0eS|2?@l zu0{DxF1lyml;v?IIBvY$=U%%Ik+y$~Kx4_iEek%!j10%6GVz83v~MW)oC#s&QaO9u z7L6~%aSrwZI0V&)KaCy)a> zj2lH2Y9}=~_c15z)?63wb-Q)a-d~3>_+XQw5>{BQG)+(XPv331>bYM+*3X{Y7r*hh z30lR}w)#!asQl6RlGOYa^)2lC6?}tA6 zi=Y3}m(Zx1@hwRuA>Ng%A9&yfGxN`V_P2li;n%)qpbrcTtf$9}V?bL_po4a`J zm6z-K@-zLhAOHC8J@d_Hp1yK$oo&lr;X?7gl}x=oB)1JZt^vqRS8Y3h$$Xu4{cl_S zPzaYaJI0I(0VZIGwKED=2!)f4gt_O-XxOLiY38&J09dnYDH{A`QqbW?evHbic=7(m z!}+~PL>XQwR_@A>eAuE3z}#c}{OXED4dF12@pahhY>Unh?GIBp0@4CRd+cI?xX5KI$FB}0DC5P7p4Y=X8e)PSGm*>LVP~(D zt#H2tIMPZ~NMW#YPLN(ABxp+xC?_ezqBMOcVKS5za-sa^-IjQtEC}sn5J|S!`#m6# zW+px0#!M#^c=aNZ<1b%}k_{j=U>T{H1vKHTvTe+j^cCQ8;PqjX46gQjMNF8zCgDLg zkaOB>5^#U!-~09tedLvUU-`5#q1l|OI;2MxBi;u%uhjz&KG1x_yZHBh>VNuflS_T&d)a8P2JohZ#`mT5VWAA$3cjCoA_`6kiAEa0%&}{ME^2xN*WZ^5- z5GPS)LRifzxqwt&e4?<2ZsdTaqF@>3&}p^FDPgi)xpF2GhfQXVKCjUbPSaO-IEM$u zYljy=$rFHe?4d~ux5klHv2Gmv+^b*laqaKW4{j+`0v!Pyn!05spE<+W5}BniLZ6SZ z6D~Wya++U3Ty_vd7{TS@n8z6D>=2-;w!U+fX-=Y^*@9~*;H%2V3LME_4NYSS6YIcC z_`Z*Po_q!D;1)G-n|)Rs7A!vvxb?3n7I6PQ58qNTaVRzw!u@ZiC&!7|GU8#o0u?9R zyWdX^-~bvP7bV0dGP1O6({VYPW7*{duFKsSOm-y&z^+zQNX}Gk_qBJ5WP+nfqV2cF zY62mQ23k}4*fA_4Q%=IS-aKfcZDT9RV?vvJ;h^m&&wa2#>p6KC#Opyjr^3~oP7+Jq z13p#*l-cqU`5R#e2CA$iNj3%pJPqxjp=T#4iAx=y27%^7M&ZI<>HRC=CgIutpV$M5 z$nss61CJJz4@yl>51Dn+o!hW4Qw54O#L>FUt>qFnnLCpzgJVZt904y5>;=7_zlzTfIR7usT!35Q%e)ycjW<|9e@@|s>B&rr+9SV*HuUFvf zpT7U6e(9I~@bh2%>L;%2iW2dl!p|JQx^k^GANsBjJ@of}?N|QwxfJfa{au*XUIEd= zvF&NCeEbT$`ygI@;`i{--2>nCksti;KlQ~g0@Wg{D%?5k-h^Mc&BSVC^_v4wN(2%&9!|Gwd`K`uE$P zR^DrJCicr#un>S;9s%h5E#Gt`NH{LWc~9wr0D?oW7*G3~Ugx`;z!XGKVZ8|DVk2U5 z`TNMV=fpHM696f?CV!oU4C9r*9!aDY)qm9$_@~LYA+@oc1CguQfWa(FfRKO-_Z&I7 zrAYv|rnCdE4V}Itvr>Z6hMO<+?-A37KTDtOR#Jbjf_7RK7Cn3qu4Zy;u_g0B>Q_iR zw!Xzl+qmi{d|AM>s>Wqp&$TTre9d@pTiNN1fvrIVGG)yip@U5(^L=04XN;OOmq0pOuK58{hoeDdob|Jh&sf6pt=*Q?Jy z*Zsf)0G9!s#;&Dot*GMKcGOI9z!?-nvj8G1(A8U_3p(WFvr2)ryDY86d2pD(bRbO| zK}T^Y+7LT5H2N4ZyA3YZIi$lHqBwNAA|m^$s`B04!_w7Pg2EbFqYa5{uY8V_dyn@` zVAAOc_Qm497BHk&?iy|D+jR#uz|ypQfnEpQzLm!ivSC>7MC_ReBXncHQWD#MOp!Eh zc;8Y{Eqkfhoor8usM;|+{$6lDmpC!@-BMmam5i#wI`qA_^&Pp@AcL_4fN6(W4%o7R zuGag-e;r7|i~s_!3K|#ep=rDYgcTXkmRw4TO4L!#(oLt@{?G!QQfbxMH!38x$6k-u z)dP+;6d%9Gwqx&cDq#)zNfo^bB{-BR=oYoDZW16U^{FEX;f`OGBvFXkAf?JGuk;=2 z?~lo-ODb5HbkqmwOVjt>=&js=&mXEiF+eXeA(RR=cG%ti`)cefs@w`=B)Jtb)0E^j z>y&UEj2^T-BBa$apz8T%5B+=E#Q_dhS|Ny-t2}ckbBA=DaDP`FCe9XWGRVr$cA?KV z?1$87&EjGDOO0LSfkn#+Q(76b->x$S;usS9>3pX2^H$?k56D2REl>%ZospaxS2FY>*ervs+NiK03q)(6g zu-7|P7oyPJAq!&*MMgX>{~x88Ae|@Ika6=OmUYlE79LG(SZ=72v@PBDdHS*n#&UvZ zmLqpCiCi#bwY?oJ_G&p{)V7f1p;iW*E*+)(Iv8%YHO$6#UN>`yUDj^fA7c{^O)>7_ z@wF!*fO3v$g(T84hVw zN}%b9%tKMJ*d(maV4P(I|9W4tW)5r{zv6)O-vZzc!DU{p0(7A05(_{5dzXu;o$tc- zIdrc~@xb3baJrm4L-?r*H47p+jTr`KH5rYTGt@c^04{Tf zGGN*eDE$rQ=x`CP=I;~`V^h+61Zz+{Om6l8keYwxc-UUXxKtDPJ^a-EQ2bVj{9Hgk z@GzhKqd&x>@A}~7!yo?eKm3)id>xmI-s4bn(w2n3?!h-;z4F@s=CR-UjXSUZ;79MR zd#_129Z`wTkIC#=)mR+P(@)`JKlW$7{?f}Y{ocKM3y0_>%%mQDwsB|h`lf2rIswN_ z6hd+dGX|@MF3@ZN7yaxWZQzR1Ub-+ZBvKN6`d zgi!2H1*%SR7?s0o#X^dCn^Mr`QHFw4cjAGltqyszY_O5Y?LZpV894>6fHmYZEGR1j;2&mfqWjvqeB39tKqb zDF;dEM3)1BKSQ9?mD53`(w2ymE4r*a(1^Q{bW9v-0t#@rFAUe&K~XB32I>F~-Ib7} z76z-$_Pc0`fd<^r{gz%97G}C80dE$_VWuCmiRGbePSgTLpwrl>u5nMkKGsfGOGs>G zWzLBG!+sCTgHuH-s%>E^egx`R9D_hN!k3-;G7u^ah^mXXdmL2NEAG^mj!ks39pGaC zEx@5wK71lulRyPZi#re0Bd>V)eQupUh`8Bm8{5QW@Da=kw*475nD95*&CMnk=8A2g zAuVL)V?2}q=cK>{2{*x08@#uJ9%vxsX9I}bh@zpAgo;oF`Wg;8C@BJMFD9!P?Rk5? z0PX2QsOr>nKVuES)l55=d3U;Tc9Z5A@~EIY&>i4rrcY0Ywf8me0u0xb;{rUWt#DD8 zW}!Mhiyj6k1xL=*sMli0omwJVx39;UtPi9&LM^Go3g-mo2q<{^Y?Ht`UwHPv_mh@o>^#pP9jki|`Ae_mPNI15 z1p0OeS)^4Oae*TCkUWr_a|VEY<~8iFjYal zPDryw_2yPmA0sgiJRFjWtKjZscN7&T(M<$!y*UGS1V4vzH( zK&}NiX(xzjD?M~J73C>Y9quxv$&<6oNFalLkI1uC?@N5bNccEqA_1APhSb!3!gpO@ zm}HQ~T1rl|ZSpaoX3jL-^URaHC?Bug5D`Bw1fTJfD0<$B-vuCg=a<$e1?p6t$)x}M zcFTQ8dw5)osu6>ToPyR1H6nJ)#JdJC06##$zc+VeU@eo{yk#oA1F3f2`;mcqMc!g7Z^6ba`P8P`5AKF72xEimWIQsnuQt-fki93 zRgWjonmB4hv~|+1F@*hyWPp7`l@u;%h*jv9Ua?KvZoUydXf~f_Zvs}u+}ilFN(!QO zRMhP+v2HtSwvx#qc=ztyd-1j6H$Q_v^JjnIvCnOie{XK?@B`oZ z{s({KSAX??b}jJk8{Pt5@1sG^xQT|=;}kG6-4ER5%TIo$9{!d$<9mPLd;i(TKKTc@ zxm+;S=G#0P!%3(9N4`7Pm1jtzD$d+4yS!gDw?dHDHo27gRK3%1v1j+D)LA^+KYz|` z)0xBeBZ=X=cwEFx8b5q^VA2I4+5JvD6ND=6g3})4X~3w$Jq`7=;k$7mHfA@+s18Cz z=PxVk##nhmMCYBckU38KHw)krnWrOYH5Q}Z-{Bf=jB|83bJpGfVRYz*-14@4#T`wA z22e@2rww&p*2DeMy(b!Zam~c_|Hz1c5TNDC#Q1dIf_dp&1eF_!I6PFi42Q+MdKS^|K>M8`oll`YZop& z|Mh1Uj>fF2qkHW01gFOS=kU*BXuKnGi)5W+i;o>;phM7&&C~AlU5+axYcTps1tT5veq&W&j*+ z|984PKD{nD*tm$QB?DT}&EieeA#SnFkc$*tU1x6#G8H|Qytsil;iDaV9f&W+85$>+ z_ivL*1Yk~~mVa;zDg@9E|5}}2qN?cV`nz$TmX=*l#gJPf)k?N}^%@CWW?kEMAfmA( ze=P-pR11`ZFT;(hecy5%2f}EoOd{uQNRl#MVTa}*W93Bb5I`_fYNAiBO;eJP>&(Ea z8J4cLGrLf-oA`|6?5Gw*EBe;6Gud<=r5G|wvf{|;I zHx$r-L@=S?r3>i>Ptx_XIWH^iO~O>4XWU1%2uKTiAVok`Ne4odQP0?~I@45DJC(Rp zF}cZ~-WcS3h}tMl&wO;8t1}B0fE8tHUaR7oG-T76*a5IdRWZdaNVX!SM1$3DO+pi@|MchadaO&d%RsHx#dc4M(bifDb_A#xx*anwV>fj}_KInSzE%0t9Y z>e(gZaK6Ev6Ci4a3f3uyE(hTCv=JPRZ# zaAWZ~2Zg|uK>GW6G8tjGBUOe!d`i`ZWk6k|ho5QUIEh3ZPhu^k4|)h+qa#VlaA{(+ z2XD-HqfC*~PDTs5%6TU40rFD{oFhs!B?@*EzGMjF2Sq`uhW4CO6;C>Kb<|;6I z9n5OnT!3#p`*qwr_|QM}z7Kxzwfj&04*OE~3s{TmsH%$;0}I{g?#BI>U&GBKZ@xLc z<&pZ;zxvC6@?G!#wh!KU;0A-kndSvG&Fdnrjr!u}KYu*%x;OkoANs)`c&*NAvt6_Hz(o?3yW@oNy-FB_c#bzv$vj`0fytLco=el0gfDQGsh5~>y1#)Jx} z*$}Hte&H~9QsZ=S`4Br0)p$6u-fJzKc#|4gnR%d-!!M)Jxq=6BR%D2dc#*StU5z&* zsVca-Q(QPo6@LYB-$iC!@7DDxRIQFaov9H`{>Ed!he+p;um$R4EU{sHaB;g08MM_Y$^4+#TA z&M*~nZQ6416-%x_IHIKz0`+^dR5e{^B~SaeFx66$I(bln5Sh4!FwF?q2e)pSU7f6O z+M`$i7bM2yay7yP^cV=;N3e zg-!lD$>#zFau!_~&vl1OwzTI%)Nqrr?RZsYVsqzx*>{xLCR(RF!0A{-7GhU#{f_C& zlM;ncy;QPAl6$_4pnzksSIT(@kxH!XJ8IVeFxggQo(pJ!+}W6?kUOclRN);GYZ_by zw(w1QJ2$BW??uJW*ee+$fTsk1OxBBxv<%McQ9WLN+tacy#Et@5T?}T3tLIy+sVFl; z8Do4dREg?p^?hM@RIpNJjzD0W3@J4ZhX%D~&%H2kl)qt?+OsW&2J^tG zRNDyF>~dE*t~KXY@mk;S8{d#p0tH+v_{rJ9&N>Igk-p;^q;s9TAXTCq29xpq zIm=vI0XHC~ma$Cl^CP*g3Ff$cX}pb}mq_r9ecZ-sCrrq}#HO{B-ta}BugLH}_3~<; zC1`Lm?lnw&A1?ZL_w=>WHCg9&4^i<+AHE8J(!cc1YpY_*hgnYtXn zalj>;nY(u%T(5rPo3GaWm+&LM@H79}Cm#R&(*?~>Tjgm>r9EB?_^$W7@6CVnmw)-6 zo`>Gp5547E?_OVf8C+N4W}?Y;PNA8?&4Ul#fBC5|-|Nd!-}$3I^nZNv$tUN|rE&lM zeYJbf=x$D4MZgqxEEddg%%T+%1F1&o8FRcMDjDsGu#0QWc7IR+d+`Je*T!*ER~1nIR9i|B~{;uOKWrCPS)sKBjqwdJ~4Qz=;RP z^L^m+S~;gyqO77YF0GiT3D>&q!SneA-zJ2l1KtR)q&@kd^J)7E5qmnInme9?tEOc+ zfTilGg~btOyEeG%PVlk-$HAcheff-M3Y66$V&Zq-8*@;NLFKf8NV@xEC~~J{dV@si z=tUMK^;fWr#9pDXH#nS)C(6#J%(NCH8I->r$!IyQ^&0#XHaKfnZ-kq5a@$VHxdk%& zD^s&`l}bFd`dtHxlLkimZNu|B6b|)=BgtEB2aFdGd+>=*@3? z6tnIF*TK|+u)_drc)4?f#~%Om`qMxE=l(}GGyTltzklfmA6j$0hjCb~sua1x>N_Ec zyuUn#D?GkW549E^i@4hy2;x`Bf^7K3VSwOMfw&tT&p2p%1y)s3;N%hc=Gw_0*=C!P~|TDgkjysf#2nU zE9_+L#^@X}fp{x<%HxIB(W`okb!JpmJ5Xk~i)nhirNw~9I@x#m`{#V-?B|&%=)F^c zm4AUftF6}dspQDOy^@WcqyV;mu^+|xd;&1#Q;sbo(=!05$US>>b6ak1H310TY8xVO zSWjEr;0opR#^6CeK7LU3P*Rd4P4f10)Njj;D}|zNo$8akFQM= zPU?Wv$e7_iQTf1Zi{5yUc821xmLikOC$<^ehiw_VLZovvP*Q>^RJ+f&C8dv?UIDqu zKAiX|@vb9@kKV7R4RrmTv^bca9kmaJj3voP^0!P1g?FK=uqG;$RO$^z6ALR~v7A8j ztOzn7-Tr7NaieP7#z>W|kgqAN$pMkv$AyjulpWA<87H^~Zjo5sa&umZ-p<02hD!Xv z#&EPQIn*An0BETfuX$-FHa;heuhQI=_Eny)Oe1q!Wu$^;C)e}zwskJ1S=9ox zNw7?!yK3(?^&&Ee4~>i=U0F|nRkKN1vQ$yOAIu}A27GRG4s5z6qW$iyDM-Dh$1KMf zjumx`m!K17$p0K^os)NNgZW_9R9WTTZxt=tff82eN~HvLD`@~Um~mP#5%PcW7vcRf zBUN#UxS&mt1DWsPv=&K9_fYHcX71!qwU`hefD7mt8Q6w0gLYKZ)56l z^lB07sL{^FMhqB2#0fu_h|po&zUBR{%KKbYWkwHog}MOEV+nXS$2C(LC0!~K&7$Wd zdS1;D{~K~xV$DUYXZxg?We>s){sfa1dD;MF}7UeF4QQ>*(X|rC$8> z@80?FM}Ok_#y3CuPrdruE4W-P`ZlxFivzBOyAM8quYL8Y|MOFy{xlwV=Lhchy04gf z9H^-|^t3fq=&IEXOdrQ9Uwr)Xq3`;E>$-dQUn8zaekTQ-<73#1aZ$+lk-&cU!>aJ< zM!+q13!)2f4n#s>aj01$#ZmVb%Ka^ z?wmFAQc}3JNgHD&TXO&|BEmkMZ|63!LOBYN8b3SYSWHGZO+ZM8I{k<3v!K@EWP2#* z<^DcFs!4KynRdH)nVic*s0alsMLHFm3(Ur&&V<=uV}s?yAO{0=P*yT*$rn%?%me@j z6xY@-%4yKm(Tz3rOQ zE81%lE4{`7L zZx$YSK(Mo`aCPmQVgh*Tc5)gd#G4Cp4M%PJ7{J$nHEOe*vnyn6d^WKd;I`Dn(s(F*^wba@m2S5OmKH^G!9K>edXFC!DlF|C^hEs&RGT5ch zk2B8RH`3Kvb@KDbsokn~RqlZ&l}O^SQ2QXx>&<(i5&?AC1zk~nOzpY@#8&VkV@;%{&u5&PVDlE)CG2Y0=2_>ylYN>G+ zUv=EF?*w^T4WnZrJMs#!QURkjWV!lmVs`oMR2h&z7764By%zS}>nPN*wr%im5HFum z`**_*cp5L0fT|!`=rpPmFw%A9$fb>*^SLf=^=A zxRuMMwUL=eh6+to)LeuKR&x==_lh-uS#UxQ6J1uW!NePgIvCkCE#IfOklI9Q&ZI9F z$A&|b;*ifU4#kD+0fBwpWD6(NN~4gIY-jbWoX8_XH}xUqhg($w&YjZq{*=ib6hPe~g}F7CWE^8);`CygH}SMp6bkuThxVRnN8GJ@<%2Ez zsl>%{(FjS0aN@XI|K7gb4#8H^%OtCwb2z2MsS0HcR)9NAQ})39EXKemi9yb6xwgy0 z>cfHJSDR3ni|n}vq-GRyI)l=|;kB$ZdgOWU?jduxu=#6COhufJd z_=v6^YlY=H{Qnc1M9g@EBmF*JGfDVBF4pD2*YVlUJ;ghGr9bxZANp56^Z2KqYqO=+ zRH$8f0PuAbZ+P%d-Ma@KJ!%(Z6E)3VB|mcXog3c!<~Mn% z`~Be`{@DNRE1&t?iw&tA?9sqK_IE@YRLW=W+-$j7zL~u zeEPFbe(_KI)KC9Lz4APsfBNg|^5Da6FCR=z9cJikS_PtC_wMh+Ghh1j`ogC_^Pj)- zUGK!Kh5H%iR73+;qHwvn^dCL;I6wO1Kk-j~%NriSOOJnIaNNaW0wT1Ia?_oFGc%}nN@N5-n z*s7H1cs$S;7Q2$C7MS?LNd%Ds3Uk{BfPFP)4^z+WMqqy{a@YVCmWh^;nd6?14Klpa zumiJ17$v+W3-*KvgzVMXao;o{VlyT{>V710+f)HoTFDfbrKpJw#;5Sm33CoIp~JR- z9#FRlaEhw@7BCmDO&);Q)$9tQWNDf*tD0)cIa=?vXHBRQ+NnFz^GP(+uaJsS#6Di} zVs(>6O&pa~j@K+bj8(mvQ{_C@z4n?FEBh-~GgK(c7|&K^weoUO*RWy z2qw_lC?%b4t?;rRqsoGK%~aNuoYA0A0Lw-rd2AucO=%%$A3aD`YZPIh6cy2tnJk)j zx@}2{g+AjmtumAE+C-3Fx4~A+VNZA)FVn=A42!H|q|P!%J0J=F`C%bN+av`6>gt-D zM-gE1AY)dH*S7DtIti^ppKX?9Qup@N$(5v_3AnvN_zK8me5n$Ms)Mk<8G}H*A7kHV z;eZ9?nnyFVzCA#XKRNJ<$<@S>_6z;E0JSSZl&%!1WKYgN&mL)Nm;HS@2-Rs>x!M6x zRBf50fs)PY1@N+KZz8_CFs1vmOQl;4XGH+94rqIRzY7b?XRP7?d%5x_QnU|YL8Ovg zi;V-g!Xe(t?yc$ZDIkL|WipECbsz%g^6xSp03w=T`=zZk?FFj{wu!o4!k0O{)f9QWSM`dWuKLWSEK1#|*$BD`!IPMA1 zS{(wk%Hx`v9zv3SP(XfagZ^MP**A(+o#!>E*!V5a@$D0!)W**$VTSjl#5UccFZcpr7MKp|%pjxy$Z+cX3MG0yi;we$fEO z<+848z52v&9Y6AOKmTgqdEnoC<+XcC1bzQ$63*+ohescM6kq(xm;Teoe*bszy7#}2 z#SDw4CvGi4+Nz_EDcp3iF4q@7{X55dzVjp3N8k7@|Kf`;yr?Z5>{z&qOehsm2J-JH zwMLbT9Ds|7GM2S*msc@u9<8;y@~T3s02T_RVbn^g{GP@=h7zl ziJ=P?jQzH8(@C$z2d7O-f4CIm8OaOLhis5;QB;${0{`xp8%E2dl z4I5W#js(*e?8CU(X2mS`HpnfpTJo&)I?%g)V1rH?TxeqweThJcv$`)wGX|4l^8IH* zc(*oV*%<-!ZJ=5V%lXZ&oC7Z`c^OspU}M+)oweU>Ogb>nOIKzPSq88xO$`lwa1{h* zg2YHs$}@;V-`dvyNRul$X7z3B}P{YYOLcaEd9MmAy+)t9;d+G}{~ z%TNE+ANhrU@Tq?BYnRuaedc<(d*K@S8Unp1R?-uh*PvOoB7Z9h+>QiGUzv)D&}5Py z3TPC4=Wk+y56dw5yY`0MHXDTsun(^UXWY3uG8+PYCQQrJbjLXtkbbTtA zxk40mh`Ey*;41GI$y2J%N~&~ShpS5K^q#cX{MOdL1jp$ZBtbVJ8o4-b&lGxhf0bV09Xl{I@I~r^y8I* zYHfbOYwj4S_wG`4MT^j*p(BUP^~x1Q0YZd7!$&kb!NruGJySyiLH)}dy4(6FBE zTSF9_k-HHWoMqT=$-Sh~=21%M*1^2Q?7J0O%>1lnvdxZ>^ zM3GTN5s}3w>CrQu(~adJHQ9etRPfAukz^up6%?v~nXRPKR%8VQ*mT>W*VPW5p6Gt$ z&dpW2nzYbUtQqxy3;Y*1KB_5IR-_zK8l_}y&mQul6bFZ6jj&XiohCH-E!7)Wb6i9} z&}mBclAfH0umc@SGGviy@d7>4FH+si#MyFPfsB1`Icluhq~{wGTi)!?kbid%ZMY-v zSn?jlS>-7N(6b#Krd;e<%552E2fD?vcI=@=faNROKv&3FQZ~4FqNYXZXA4mY5VH>9Jq(U1X!_SW2OiGhD}GN!k=?zsVSQ^Y5#MRy z8bZl>$nA>yg#p+l(j9CTj^zRy3Y$gI!B^5gioLbAQm|U#iJdC8cp4AyJqoq3d{u9w zQXqth;Q}<~>9P|gYHhonob)+Z$a3!S43wdUCmvaA|F3Q^fvAIyA3{zyA_hgN4}jgQ zx}N7aq{UD(0)Vr^ZsNUBK{uXDBM%ZxO~hhwo)Z9>JGYftKCeZ!b7`r#$vi1Y7s!QMrgi#mIT5cbaT4RceSjl{pJSAM z&Yx?QMP&hfO{n}VIFrQG|f7npBdC$NfeG}A^?^+ctlm1IkUUAzp4 zBio<`V&|uOCoTH8U02?Wf55kl_SnS25NBUjVslQG0jkR^yB#A&yC)tx0N2I6jsYNM zeq^7vC<#2cX3Zac>WMG@>0kPD{|&A$9nXFJnd@=)j-S7=_8f25Sc~Xa?_b{df$u$D zc=qe{iBEju-+TYJzZ=*4_gP)2p5_7ERDo0MyLa)0C%%9WeDC-E)Z0J!-FWpgzjNu! z9Vd>SUW>Cjz>Z5jnP32rnC+~fZGOEWNmdR5loO!Bbm_1*dZtZG9A(bQUHm1(_c?bq zj$LFM2%o_~beSdJd#9pqwh~=z?7xM|Cb?1|bF#1f~v6c0Z~x2X^lth@*z- z-;QsseJ%m=Vu=qu+qCbW0vZUH)?I;gA60kx!>9Ra2l1Usy29aw3rb!PTx{oo*LQqtn)sdB?9epy@1y!U5 zQj|dQa*dw0FQJ^Y%HGDC6VlOu1Fan+JndO0OL4PMb%;dvKBu2teT@V!P<57B5f|Wq zI(tQPS3|iuwswF$1BQS-P$sgCD|~xezWpHVs&`u#lne&& zZaOBa4jdSl-BC+v2ff!+tI8Zc7wrMufD-2b0Y8JPx3zs?IY^Y1GqG#QE#XPq3ff)5 zle-D3b9snfe(8Lxjzjx1+cXi|t16L1jyKFaOF7O$9c|k-aQ9-!4|GWcmwwaua>p&Y z@iV3?P%ua-fDxAakJK8W97$8D)6!j=YOGKSkmX`ja3+F^oCUvev{(YN6URbpH}I;H7F7T4_>=l!`$6)$ z2=*HjItsNWkqptND2&P4OC|hMk_`j?Nqx!k_cPaN6l6nFIC8#@R_>4ZZ~^N%RE;R; zU32f-G}Q997g<2h_xuPF43JxjHYdEV(DA->*R})IO-@o6jH?29kI1Xi?*_W$-LXCZ?2K^55LHSx%m zZKoHX1+QxB=TdwMevZ!~UHvD)gE1fl)Z~8LU#J#d99Cb4)3P1MQ&L~-`#oeI`8ieO zu!Z<0y;tHA$^yK00oKnRU^mz~!XCC~Jb<*Dwf=pS1uL;DE9e-D;;lRdR>%Td@d6EO z4(9R)AfhqulbxUh`zpspP&m^qo}EEyWB+#!Iue7>0V;iB|y2n1xyFEbkiQ!|z9;#w;%CN$83piNH?!aRf zdar@zmH0UmtbA*MuZ=<&s-h=V2P6o>Z^IYMqjk&sMY$lE=9~sFa3bVysQkSA1$=-y z@9dbl;w;^ZvXc_s`ieddJpJ_7`tHMT_{Tr|13$7}dE$5L-fOQ^UoOm*kFslhb1z^O z$-cqOo8Ni;&Hw6ezW#4%>sLl-+%10pZfEE;UD?G-s$4k zpLncpUiZe~IvuZPw@PwN$E$4yw&pGnSA#59!_BhVZkT(b0g93LJ>HQyZ!#VQ$%)ms zTBzYF^wmku2n@lXyP?4Z-G0YqU?C06uFl2Lyi1V6`iOqX>gO;KZ?}M(f>f zF+s?*i(8Tk5w5q?1|~=XbCDVP~akGEtGOSpAdx zY3Za*HK@&CYhVqD8drEhP0qQ}m6-zFtQ#p(qcB&WA+K@A&-s8H)O`kExyq=@+`_P{ ztisWsH+V|zL2iH~nUn0mPV(w1coL7SZIK=*YKTuInh?PyDyTH3vn=x}CX7eAuT2;h z`hK}fI`Js}3)%to|K2Jp7#zUC)r80`7bybj0H^nyUHK@L;Z9)-YWwCL)JC9~8OC(j zKZeHU`Jh#$``4Y%!S)DRFiEINwyF*%B+bGc6@+*8Wi*)?mx;Fo}TLMY;0~57JL_58Friwg`1QXRvr~Hvk4#Kq@zrfzwVd zW<2;SSU^CgN~tM4HMzmuv$i#)QT<3Q&?1fPe;YMX{nT>O7TpGc^wEZ)qbCVU(WyU* zeg!zxM~VCvIYb1xs2?1r~Zju8L?k%0!ObK(g`N za$$WF;DKQ^%_NCDMn5q`Pbz9o0tW7cmNO>%+_P%bQTv(7b}DReD-QQ;Qa0U^bqM4J zGZV^~WGnKqy$r;aoU*FW>m+6M%T5SZP|GcHx8Wq3dUl+|U#=I^U}-{MTZV?W;tR{+ zUl??DpGcA|2ggaDibDYBgau#jaB&N`kpYo17Y}(V9-Y(7W&l4|dxWt3Fv5RAd&NB+tGbD}*ms zQL6U1UbF+B3(1Zvq+b6>OOWw}-7c~ZAbjhaKM*Mx*rK^Hpoto|kQ@@-pGN>Zgw5K? zNcDMj-=s|Kukoa3Rp%h%t~zD2oml_|tTP!{T{FRHd^)4lSd#kw*Hz0f51w2JDQbD!%JF5!-f+<$RFp9RXEcQAJOOa;;HO zNP}YLw}0>Pr+((o{LH_9>3cUXe(?*eOJld+7Qn-L=pyc4r{~^l^@ex8A1}W0+WNb{ z_P74S4}9Rg58uCDWe&a$x=SLSK5piP=brDE(f{mE{M?^=c0KiJUhloy$KAW&TEXQd z_MFL=Dg!KYP-M^TWLxhCy9cw2x~tozomz8i{deoXl@XckU>7#*x!gpyx?R9ht5Y&uW-kTYG-AzfB5!xV zfUba>l4vjkwp#Qra2TLfbd(7K25NHD1yBPdVWvO#h(os6sP2NMn*-pe#=Y!#>9O8) zi$$d2CGo5Js@e9rjx?^UH-Vn2T8EtAt!SzDDO90OiS(JnpmP1?QPr(8)vD5Y1W~Go zm0McM{;ZM|I&OEW!3O2s_G2!&w859&s@%yTMyX^p*ofMrQi<6;G7TavubE<-d!L6n zKL*RTfy!Bwj0I`YDz>Xp9{7b-sXhu6&@&iJB5jST_Iv}sBD&pLT>uUP>2ej0unNuU z<8F_X*N|0LH>qc%t7{d^fK&vA)21PSNO=Ia zuXbq^xwcj3G+Zui(FL%}?nA!Qxmt=Ag|r`5R?_p7XM;n81a<~{ptl-i55nBi>e*dt z$obs_o7RV0!RR66qt912QK}5WK*IFOyhejow~E#R09-17UOy)6UQNLR$X{z~RARdkyW1Qk<2NJK05HRtw7+U=*f{tuiY@Zkz0k5z~9J z14)*vP?rjW1ifi(<(p!(@0Suk0o<}@V?{9wZDJ!Nen`p?;$iA{csIIl>AVh~)%N#_ zw`tIgYD#WL`v0_t`oW9v?FsQcUeh3jE+;(3>__(R#M%eS*i#d8ddC=6kI$2<;<4lQ z@z(<{f2JO9$#+WVQ^rCxRw#1Lb*bG6Yt#bSj8qn__;E12Z)Xd=zhV~sx+tqC+jz8r zs!{t>r1BZ^w_{DE?GvdrAh$0eS8Dp0 zALqeq{i$F2^Z)zb`Gd!vy?giWncM+9;2Wi`SA6ipAH4k5-}?2x^wQU#!5hEhL%^s^ z2R%DIz_69ddVJAUwo*X!Q+$p7%Q7hc57QRp;!r4*(0uMy#QIG4dF zlLMAYU$JGc!$mN(w4IQU$Z&m>4!5MjpSgk(vtvxskD90_FV*Fc;a_=YU<1{-+r-!b> zXce*QMDGLL6HcsM)lH9S{=bqDJ1SS{8bmdRbLEhH;Bvuw_3L=(O^^JK-}~W@-@pID z*Gna?qxK!;k^iA_bD*!hHjciz`<@RSzxB6&?e6{OUi?en`sO$DW|kCxvrw+q78h^s z^!(l@ALoa^|0Dm@JKz7|dFJ>3K5+9O=W;QDq%m`0Otg>_EZZ^0T(&=O&X!BYAwtHN<;GW5pvn?in!GpQ@;ApR|_o^)-lXEL>DgO z_2Vfm4Y4+!{8p|6OdTqXgn34rxFZHvRbVJ0W{P`0jP_Pnr|6J5N-sNJz_ua;QeH3u zx&zynvy53?=AG@bG<-X&fK3JhkYdW!JowuVvt+m8K}c`bto`<8clcowg$QW8t;V73 z^;Sa0E2>I&7iZAzTJ6DRQ?vpItqO>a7OS{5XnF$bzpEn2cAJ>}M}K3uA{- z>Yo`XvPl!QmPNw84@G_cBo>!F3R``birGR+W-!St^dtemBq>zo;a#P<4^;uO zj0#jFQxa6TRVe3FV-V~U1aQIG@dZ;@^jsUNI=yOCVCYm@$JxS(S>V|N!awxk5yMym zD_A@&-xw(VPV?jJlT(H6yt}R~J7YLEf-+$!Y|+9?pe5^Yb=o+Uc9CV9trVy*=vvr% z8OL3~WD$tM^=x&~7t0598B;nQ!&5&8$Ph%f>{8bPTk$!;&1x@Vlp29MiC@O8@EK)z z(eO&4?&n05Tg4ST;NMoufE_ZOthg93HOO_vf>Qdvl{nwJ))+YKKOJu!00>AeYZR4X zXj7d5j4((RekrxJO@|1&^#Hn^a5CogD(>}zG5INH8Yx??ph;ZVe-&+qR;C(H%5-=ZFOB~z<3I?3tHy5cMhra;yTF=>~0?VG-H=LXMx@kt(c@7(;@kNn6# z^TZ$h(W`Y7j=I)`wk_%mF9yr$9j^m)E!#3TJ`-8z!LhV2Fu5uWFGndH@5EULEKo)m z%I9Ba*Y*pweq>N631F4aMDGvKEnKtnAn}lGvV!|NH3p{Dk{iXeGZPO+(O#|0dXR73 zq_E9l>Ntrz$EuKuv(m!EO;%}6?}?k}^A=0XjDwIa$~EK9;9D-ne!R9l5(Qkf-fP+- zJjItQus^+=M|C#144f@iLm2ZIdxq5!qg7)WkTu}V&PwmAI~*)3uWe_TbgBkT@J9+j{DBe_K?%&6^y!Bgw2VcMb z+F$*vf99R<{X0XWi8Vsv%APo?64&3~S-)GKoZvo~G`1&1?$nUVGRl zK)}?2V&7IkSo)~(RZjMt+UhW@)>)li8~vy+Q$A&J)cV0TX$KF=k`ukUN}YcXC)E;< zcsebWWL7VzPgNO|dY7$^(e;UGUbLW=o7g;Tk4%Yc3XMz`7HM#Juw(jXYs5Y;&3>YV zlsGE2Ykl67S4~lj?llYE^L|03gePhF*X<37%Y?iP3N=vf4Se;1-o{*uIJ883nz_am z$L#o!${x^QnX0XvR(gVOOOlQA#5Xj86-kow{GcSe@LUKX3c;)zETlt3_Ol#w4yxO> zlyc{! z7k`{YO+H&7n7dl7E6SA3Ip5c6)tQLwd*N?^0}sS<#{BW>se(zb53A!A6P~YX9>=Z1t47%?*coYj*NqG3tZ{-LAo- z3f0BT7%4d5Xb6D|G2G{~3MAVtN`)ECm(c7OBZ>^DBQfe9(iOYMtr*A<7l%MQ3e(Xi zs9jJ76NQO9Y61E=ss*S!*sM&x<@OJzZIzimzR4cPjR_=3o7*NLh}~wSq(bVbHkpFeSE7fbhU{e@B2Fi{K*%*+!$ZQu#Rl+X zq625)OLgi(uJhHamXkc~dCpr{w2%;ei{+t*+-AD#aM|93%=}M2uf_>(U#Kcvt9-tk zPXOqnSffamc@>yrV-T=V15TCOI20#)mXpGwM_Fk&X#9)wB@sz7exiI?v36-qTMyd9 zIoKLsRXpwhP2Bt3CogY*-}^2f`QeX#?8(nOiOZdf?5s^zFR68Vhm;ye0eIx2Z71gE zi_1;~+Pm?zQY9PMfL8f-2JvN(iZ)>uEL}Y9@bKQsHqVXSsbN4`By4&Dhf1@kwQMqB zlmeKQ;H2+s1q2t*gMx9TLx0@N_n3hz;OGpJ=!8aBA7u~$@u}`r7qE!#!t*aak9&3b z*MH)tev0?L^ce21dvn~}(8;C~yhcr6i^U)vsldoOB@Q01z{o`_%sSIoWg8RQaPoqbJzoYOjNnyK&1Mv0AoO$zm_R^ zqW9UgFMUZ8B1K%^Q>`?ynpJ6jqI^C|hcQ603?lqB$i(NU9zc{TN{%N`fEs!{s@yeV zaFvRVD-imLB>%*Li$KZP!)qcZa(x*L`_$S1bXDD+6QVf-`XuIO-A^a*ZT8#e4JL`U ze^F(u^fF?=U5s^rv#sm@$#T|t;u?(%9BL$}IYy10pdxb;abmf7pF|=}M5M@4 zsOr`bOSGsA)k_?>)Y3FtE}eqN(`Mf2PZ98z?26gK~+IH`y$&+Q)ZT6x}#$1Ek%!Q z$zV)&8KIS{qN)HuZ!cgR)Fd9M&$V^cs8EH&Z=tiH>`Wd#6=Q@7(=(XV2q#i3^f9UF zuu6j@HRK*X=QySJK6W7lk3!814zeIJQ|FzgwK@~*brdhfQ~798D3sqOKj;Ln8;Fv& zj)DgYNx{KR96eCiw!g9pWFVzTxz)hLrq(CH z^ghtzYDX9Z`^N65eUv9JpXvsu0)L(dTHXJycCKYcjIajkk_a{p}TIVxnP5{9PRO`VJ$mjbSz4Q#3F8JupY%+0Q+`9(v>veE54m@(+FC3tw4{5-)>Y>fQ4oXfhiv z&h8=(UC0df-KFv~gr9#_j$LN7f_*`N8d9kuSP}shZq%ePo5Z}`@1F-X8Iw62@p^g& zh#DI|pzcHRKf8!rCNG?4fGR8~u#I!O(;AFx{5P)1%TGIhF8bN>8)u;{DyFu-#;uQu z-^*V_e470rp!e(CpqG8f=Qt8yS>Q*&7+tUQZ+R#Yb&h#+)Y`10IS}w^ZJAhvC9g;MvzwJ!cnEP<; z2IV4rM4i|;(n0DiBO6T&1uk@TdGWDIH#Ag#4d+F+(h&b@MF1=ATSuq_!NxH8py@JuO5sts_wr%Gs9hkD`EyNUD#j;HU6L!%xp_R$RJ z)Mt^P?kV23DR-5+(VPwo#Ko+$5=N~Dz;XkEhGrRII%+|EjrrNEsZ|;9&+I;c-c=f! zMHD#KzAHhTGs!~Z%vw`N)cY4yu}e~?mnfu?Q9E537vXfu#iS21TumM-jX`BcRp^WM zMsj5hyD2BOAs(wCnfHQ#Oo!e%(L`}jv$$%o*$gq`dx$03%)moCf(`^&NT{ma%B?dm z8RXEEk1NlV?jKc+ITXAOJARdWv{oTrhRL7G%U8F+D0h;bpb{TjY}Bz-DLh<7YWFF3 zBaE_~m7H)9mQ%})OwbfN%(U!UHHLOF>KO~dE&vaVN61SB<*KgBJLSu%)t@REV)=c? zzOi-{>-7AJ)eg8!FeNFbNWak{oPerkgU8g7iIh&dHp!?WqXD_WnN6;WrQue~mD7Mu z+3+6rR*kEu4K4?96fl?GiO}?}+j(+$ZJ8>R!zw0NzoctrU8!$FvmrCRn>j8Z`oOsd zA(E(BdzWhH{&|#>M(?l5F(Yx>q&bHF;V7SC9SF4Dv zKP#}LQi#*=YHkTL0kqpes=z-+cIws%y67QLc*q>PkiPNQngHTSoKmw8n97mn6%g=* z`aaV3=JbvL*p<&oUhOZ(ZsRIFv#B>zF*>)p?a-guODrWUy$>l{!B^r6oeoedC45 zz%Jl|(%_k-$BK_h)~gB}&iLWT1E$6K$0~D-eJR&o8v~+>&C&5dNDV!%0e>sH!Lc>! zFcl!SlESz{Rs6(~vZJa1c6K6+hXfOv`Qc`oB2WkDwxvpScc8N{IzN-9dSQHqtJB^c zvRX|xFAdL3O44CNz{B&WMkIHmJ*3l_LhH<*gD{N`=nAS`MbR@k9F~(X3Wim2b=2V! z+ciy07@5aznf5{zD*|zfCBnduky~f>3_gNstIPnNU{yiX)&_;3q_LG`LQDR{~{Hee^OegRni&28W^>PdN9m4H1-G)A{> z9j0;e!ZUC|!8~lwVQCzedWAPoGpN0P9en+@d;iXl{OO;64o`n(UU}j9b=M#En|J(0;@4MfrVRcTTt8ldUdluHc*ZBD_Kl7J= z?w|M{{MzM(FCE|f%xCW3yzY%Pqgw$wJrD*;?X~H;HMoK%-$5rICkx*@rEExLs;b&i zg7zpar{a)uz)Vl4;3d1PdW#1U{BGFgF`{nt^2eku}KDU?n+LJOC#{v zIX00xXx?wYeGe_QrsFYK7>z1NjM2S%L5&8#3Bt63L?UFDe=1CNReDHMSrYdvl}%{C zg7j&Y9?k4Mxb3=oVWZP6%cTh{Vh^86BAcO>Lpxe42$T^HlFKZ(|9GTn_M@bQ$^cflr{|8h||Gy5fq_RkZ-L8rjs#M zUhc1TiZ?e0WO^#lE*Zbjg4dAXQx}xd_RHeCD7{lLX^Pm(ZG`2yqXx+RHlN@Nntt5Vv>xW zQ34%{@o<5nMIQ#j^!%6s++4Vv^G4^b{vbj$ge6P;iN zwPqyA%iI7x0X&>}+XI+nSnd@AtYUd+1V$|%+TX|_FDk}(TLh;>h0P`LJM?qV#KCy% zB-%PJ<-aK@3oIR+-R|RctB~^q(CiuX!tRYXLleqh=R5Nh5>pUJzqXew+aYun8b8k zBWYh>8b){7RcRAhzNjOWvM7=&7!YxYCbytOuOZO2E3ySBj+tDRrRSGncJTD?m_wY6CE-N|>C>~xP1fs!A!nSHvWp);P+XlUUdK0!29!=v35uIZzOf&;@ zkH=CP^r56k7on(@G-J+1W2=c5a+SHEa<`aK5DD|=OolB@uR86g{B|wkXSeCfUlvwj zntkO#qWI$P|HkFLANe7C^hbX52S5AxXXbKqr>aiet20O(*M;}L?|pCl^mBigC*zA*uSIC z@|+bW51{`OA0c2*~- z$vRb81_}Y?Bg|0mDfy_%SYY|^pt%YYruT0)_OxPd9IfD-0U2|eT-_AD^2N{N10VUm zpLyH+zqeod)bAdBv=H-gC?sKO4)=&1g}$!lx?hic|4-KM{GDILAAa%=e)R+Id#?{r zY<@O|L$^i^!UTl?HNWC0~$ zm_ePkBh??rDvkl9gtz@4aP`sv)}ORzs$6v38+1!lmZ0{r(6joTsjg&kvmG^-H%tLE ziix1HRDtbC^!Xk*QwAh3Al-IW@oR@ZoEG2vnU>!TP0hpFdnEKTrwop8)hH>+7@RLq zYMCs1T@zo5ED!EexYSzT62#vktyZ23iepDZ7kSvmoGR{EWR2hk-%d{S9n+9`+Ni}| z`Ivd!oZ~R+@StxtNzmjytL+)B;Tn|`#uC*XM7m4RZCZ1D*~43=7K&_U2^OiW!= z&7_INN(3&<;Rt6@XSLaACw>FZ-9qjCM|?#U>X`DHgrvY8V_%iLT>FtBiknb61j0PT z69pW)w4S=vrclXJ{JgF*-@;WvEUH`_A(}H&CNFIVcuD=~4y7J{ufU zm7T(&tU=`Lp?hFLNYxb9I2ksiffc2}p!udc^7*l5{pUEa*RT$hH_2EkY7RThrjq;k zQ^KvIe!WY`%CfJg2;UqBTS&F=D_LL~d?^t~V)03S7a$j;uus=8JH_($8QJdL!$o-( zfRNZLrR&j+KBDIi(wnn##R5F|c&ZD* zD!?i0E;u<%Wl`r}$=OgC$9MqPgiN>m9;$ft-nZMsrn!kwISt`NQ;j&>qftKhy8>EB zt(X$!H}(aZB@&Z>Nf1?3=ipA_LXzwB!m-UF1J4jTO!(B*Lj$B?x4 zwMLclma=XN{(FFHaOa_i>bWN#$Ab^P0YCIJzwpoh{$r0nQ`I=C7@wmkqqfbry!~zX z>KC8-|NQ>n{neWX-~R)1z0QTW3O{F93_vv1zEOp~x$vbgJ;j@O5r6vU|NMXYnJ1oj z$__|2T>zKP@VHe$6R90bR=k2q4_C`~9G{e(xNR9$fb|F?)%HiRXw%{4E~L)x*Y+yrvTk!QFggBaYz4*yDzCV*|{4}KO&OP zBe!Uk18WZ#7jNa{zE4}b75TJW#D0Ex`1ZU9tpRPH{=khL>|Rj=tO3rkM)B#DqlpYW zy{+~)lYf2?hqn%x15!Yrqm-bhA?nExB1p|#27%1}`^xo98Ub6z$eh~Us;X#~pQg&l^#xwRK&&eup` z@bZf<;_F}i+TZ*5&;04%srxVE#izeob#r$r30rp+IU;BvW%Dbq@XjM|!10z3&ENdx zzxILGJ#hDb@$f?rU@ZsIxix*Cn5hGw`_v!3^pTJK_)ot5gWuE7{{DZ%z8qYAu@xwY zk!6YOIg(C1PA7elBeR}1RXz?_m)VD1{I?{w=dxo1eHeir8!SF>q>>l_Bc`>^|-Tj+^gJIOtKn*jqoGGeeOsfM@ zv83+(mikr|Zri?-&UrB<4QLxU2I52ky&KmrSx1E49D5OEEn4*Qw%%w1-k%2EggFadYb)&tGhIEM5vM3`OH zd6*D2uAo>Jj?UyU&ssRgKSc-BL3mQF z6S(`@^MW}`7?)K>1QNLfH-0dnkI)SmTH2o6fZ>?|Q#Cy2LxH&hk)EigSghf8N(MqG zQ^mTb?iojEotz#^X+Gc{kEp*oM?$Z@hwr!rdRXb_Y)o;11zrh`Mft4lyA`}9%A%@u zhr1W{XlUB1zc3PzR8^`l-*Pp0roMBI}Hk0Fz z6@kg1{MCtiEW)Gq^_2Q^4f7dtau;mFvvdNsSnj}`WekwA&tPf6MX{vNM>U@`4=xhI z#vx*2_C$P8L3o0aqf~hado2MKmU1Ivp{B|4-8d)^UFyxI<_5sq;AF6OwkGNNz?_~J zpG^(aBdF`7bkjk*qBlj@L&?sUL(LR0u9m|5sl2+*UH+_%4K+c~Shd2V=(vwUua;!Q zLCT9e!{t;LF5?(=KK(g>6?4vRnynW|D8pd5tSoSJq)6)Qgnjmu6p;mhO&*0+<$|Bj zICDjTA>jA}sl-!o(8JUSt+y3zn6=wp18>KZ^ZM)on&2C;QL~5w&3@~4An$9Eekew= zfEsd;;v1Y`RY;1W`~7u05TV%>amqovI%AP{j_;(^1*|15{Iac?Lt1roP7t7tH^#8% zXc3%odrZ@X8-eQba~I>NZ6^;98}qn7Wu+5IbJpEBT4$Zaoi^Z7y5Akt>KkpBGf^S9%>kZc_d zu^TLom4MjodXe&1A3DG!*lRy0Q;}x`R#No}NC81&<8?@07?oylL{uGFvctGvZ6CV9 zZQnSi97XUKR;UM4+xO5_aOP8Jl8jz6gpf%7;wcJDbcM)p&RLN2%4rr%iO1>kgwHUM zy9%lWJusHU!-)Y6;QfcGjM?wPa^cy*(JbevUp4aJ#R6xHIU?J2;PY@mvCZnC)#n~S zq}mLKfMhkJ?U}=%lVZxW=Dnp86Q-P6$^*Z9GxMp+A98JvRDiID)(z>`diSYI?o&LcQq&A0)0<{)hj;fADX9 z=!5Tl^m63tCEaB%rmYLO6t9C%J^uLb{P}w<<;pebM)g}GX;_egDc~B3;DP>Bc#yGJ) z+F_g6Y~W_dR&EQWm2t9!;F>N{ty{c}h7sLD{tAs!Bbk5AE1` zUwtsHIu#;8FA}x5gYvZxkuZzkGH=={uN4ItH6F;rV%Pv#T+SS;l@zG=M|)P0`fH8C zS+I2WobH|^Vx`(C2W;+0Y<2?U2F;Bkt5SW22e7$!i+b(aefbzHO;*%D6*cH!8z1)P zSb4-6Zh=7F!eyj5-%`SCid;E*tR(4W z(h8k~NQiU(Ds=%L{W^3!r_tAH0g|x?siQnWN;}nn=it~FfC6%BLe&&U32-l>aF{x@ z?IYC*CSmGSmBhtlN{;hDjlNfq$Bxm&U{|E=hw>6-H;BA`Xqr|(EYfxa3Xch}FIR_P49SYW>YBnK z;NApPFw~W>o*vy>=AOq(40qs&KTUN&=OQr#9fgkU79PnsYKu_7*EtGvzFyt-SzV`$Gs}K{n`T(euE9vEE@X!y?oR<%=a;K) zH9OD~v~_&O>qA!6rF@E$blYW%K&s)YoeV&HfVf+G6UPx_5_bnyaS>hU0Q~MHe;KS+ z^o&z`? zMnPR=94d~%Ex4+g=oyMwQ>D2PuozaSL3iVp>SX2F2Ep$BeGfIRop6Y&ixM&lhHS+6 zjEMo;QypxbLE!cO1Ay}CX2Q^PnglxVNY3IQ^yNQEiZry7q5x|p@sz%*l|Hfv{M zVx%B!7w^QME9OHgn}d6T3|MHE57Zj;@Qmkj#x_A>muGi%6#&_+M&?=8439f^3it2L zi=X;UeD{z219<1VzwJj~dHy9_?%eV99J4>4D77_z@;=pYQ>QZc4EcE3rUi#E0FK>ABx7YXm*vJ3nC!T!bm7AMOXSl1bT}>Y3 z>|;4<4n5oId=4;4xz$tlEroElT3`7lD<#obv`=P|RS!i(lq<%y9L!vIeyHWco{yFS zNuRlbpFug!v`XUY)}r&Zb}SY~Q|dK{La$5)%YGZV>BY4K<)C60%o~sMPpC~c#~iwH zI=6YGm8clHVW<6yYi%4*_P1daoxBI5ZAIr8k4PWu&)oPe)8;6iL4tsKG&frp46Q1K^S-)!_8sbxNPT zv6f=($VCH~PG}o~)P(agY7)rW^a9LvJ5i8p3Yb0zhYZ|b?y8W%5E48JQ-zrj3P5f2 z8qV6d+#pH+aSyExORMGZLOXZ*iRk^&GQ$04(2QFflz~X?ilxA6)dCl>##OITWp~kk z#{0lc_a`6w)YCuou^;}IZ))nFaFuzzW3bI>)z8}pSp7w zYnIcho>S1UbCo($Nc468LAFyjc;1E3A zc+zX%^-X#>8q6k7`xesU%A8XWsC9yHmIiA!EeXv^Wc_tc z=(Dt_ie00S$>u(xDEkcB?uvt6-qWM)^zE|hT*HaKv#*$u4E}_JxeN&YyxaC|zjQ); z`^H9-8)GS_X$QRY`|Gcw5~yB-;Yw^kEmZ{p-64DUb^}^)%rcwKXuiYn3|%5 zHl>L#g{i~c<+00DMwDFkK6fEbP9UGklYgEAcCO#_u-g{$JM33stbB9t zt}M|&Xv}{ z3uz46qRi6!`z%QUm*mbqkT`7_x9|&rT<;x$q(>YY<1S-*$1>C|P(Z>>47w8Q!9gFW zJ!RkIVJ5^Yc7T}|CDxcgUy&P5Zp)xUESWv?Ah>OZS{*KbHo-=%vj0dT>?D|7R_nS# zETh|mYx~`On1LFpbI`cFf`vCC10BaIIo-A&^BBzw2n1Hew zq*p|&p(Mc>h*$oV(As-g4QLs^00>jSb09(-oE>xd-*u9$x&=H@9_(VUYNNY7ZD2eB zy=UA9lYR~z%w)|S+_*92nIeR2nB<7}@AdPqz50Ln_|N{rH}8M>Q^(7%+`INA8jBJc z@6%TXd4SKl=pX1^!A zbK(!6gJ;V^PtmG$9kEh!dL?jyouF+?9J6+Q?X{2$OtDqTx}+wB?x93=+T^GQRT_4A zM5suh$C9VI70mbj(?z;C>C{I~Lv?34#NEGK0c){eB{1So(jnNh#s=ErWxindcj9nH6!KXH;RDynWWv%F}Q^ z-Dar!WWYOz-{l&&6VS=Z;i8%+;_G|pxemK&R4+1Gey|2L3X&SSWB65Ms>2J!%po75 zM*3`&s;Lf4`(}ew5;uu70i{86|jkw5Z~lt?oQuBcbqs>5)^~!%u7W9M^E+D$+!1ku~Yu9;GRn- zg&>l6mZmg08TSg+(BV}HDX!SbRX~&tm#Ti#hkb09WxmUvSxQUWU%;Q!`JB(9TY;1u z>zr{=N+f-ov8ohe+@azBv;!?nwWak-!K_G(CWd!YVtU$1w>n$))x8|J){a7H+(HIt zI@fY8?eixDvFo2KS6y3+7XpQe-QJt_J|@QoC*mJH6q_FsBg`zP$gZ%kr4zZXa+p{p}HCoV8# zPyQeddRb+!g)zPaL>msM>dE%EAyJtu%p+TyBIgy4jjy3uPy4D-D85wA4Hmkqg7Jdh z41`f5DRCAear3B3yyPwn>6!@vlbEe>4!+7zLmKtKwGHF+Ho1uf0Gf@f z@kwwd^3RF8vtPl5bk7b#p~k~)4H85KkQ;x~He3Yhd-41)LJkgPf2}4pY|C2MvViy( z=^nIrL*N*FLRp~zw<@T5+naDiGonV@i;^|d&4%esVS!UkkmU${Yt!AUwBXrdCKkP@ zuCRJo+Gm62Yo(sk1g=PJIr$eD>ZnBmeEOkpqwB1jS0bDcUK zdIaD6%pV=!a(DWt|G_`^KmWr|f9^LLM+uhF6@cwJ}aOt!d7WVL3$9-I{)pzdVxljK--v8a-ck{Nlzx}75dHN|FZJ#g3 z*QlpB0xo|{T;x=aG(w5#ykL*tG30Q1gOF09dK&^X*6!DSw#I;?hKpDmM$ zy$3!8P@-`7DiAhyU@O7=F3crjmN$OD|v14Cxr$SjGhpECPIosJ}A_{kDZRTj@X% zLs<@l?%f4xX_q$}z5B4s??ET2VVmU_h&tpzRCR+|8})BZXc|--H_|GE%{s@Eg*UL% zbBBo7qHc5@RRAxA`P`>JGvE91pZK{)-~1N5@Yrwu|G4_|pzY7;w}VBm_u83lahWMt~3q?fSO&xz9C!T-UjOkA}n`ec$^&&+m6H=UnGH=UivU z6DJXYm@F18>&$#YmDlm(kLMN7d;V_5z#shE-~B&d{oH8M1awg02JPY6B5ep`!>p8DQyV?u_;}9 zPIqZ<8w@XoG6Z6ZL?tM3E;$zk;4%`^DHO$$O&$rHNYPvX9TA>~Dif2Mx}+i!*DjYy zN0*xum@dOsnA$>22)Nt|zK$^-%r1 z+`+nQ6sgidrh%>O2%@I4D(Jh`juue-BTz5QOH_=2R3tQfCtGMvR$vxT-E28SWL!d7 z*vP)iQ87@=KD`YbWzgL~m=Ld`J?GLTsu+OHd}9HDjYLDx3iZMUpQ)oHpbYpwHfQ5b)JTU=>#)^RO`Xq0Z3_z6g#((Uk98Qs?}$L)Y**aO=D zbQxfoeNc8U)lLH{OI*96CNZ=p(!iJQh&MjNVm6z|LOJ;mK z2`7>9z|N8K2s&(vVq`{V;#_1Vav{8^nw=?xYEe3DWDc7=i~f`JpF^N`#z-J5lEIWJ zrtC^+LDQ8+&JMU6+(EO@6NuzA;ANLd8>0k(N$AeDH8!!BC#{9XW~ej* zu(d{1D%0eQ);y{++2QZcHu@sA#3{+VnURaG^>wFJ+IPVA&3oJ>H__8%Ncpe|ReR`d zGGT0|yPExuK~;rDPh4S;9MLe-zh$gf!l@2>`~I%ATFxpPC@Yf}2rz;%!kNItp3doo z`ud5m&jgen&|WuRCYu;td8+%GTO*Iy?(hW*|4yI174||eVazC~*zEll44BM`z_1bJ2-m>Wl?8E&j2Sowf4&P*foVuA`)`2WWDeM*71=!xsgQqW33Zv%+mcya ziA1C0=-z=gq3OV;IuMjSBV&iGB3r*}7;kk;SCbnERX2D~n@GUE@td)|+fP!B8 zcLR`rwdjf~vclwd)O3Kw2$EC_R)8_F*HJ*k2oKY?GL8lU3%3VOUG~&^?7r`C_ua4I zoj>`JPd)h1x&Pt(xyOMWsA*aws-`ly6InU%hF4wvoWK0NkN%T$d-5qScp;9@o{iCG z%K24i!5BGeM*O0g?3%9CMZn4*Je51tA;*5ZB#eic$`k(bzwB5(Lw<1Fi;xH4ZQL3QpiF2~p&5Aij zMRQ(8+15ItpS7ttwU?#+nn|O+XFj5A`{KWsE$BNeyU=HQI9^p;_C$*x5dIE_21IBK zVdyiuMPBi4x>d(Wm`zy7Y0=e|==;<}yYFVxhpKuND^dmru2wS(=-|k%0ARQb&$bFM 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

Y;9uOnb_x80{J3K5 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≷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

gH#8Bn`v%VgcZcoS6D|zGAs{dZu6);o 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�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¥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 literal 0 HcmV?d00001 diff --git a/poetry.lock b/poetry.lock index 688bf20..87c3943 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,15 +1,4 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. - -[[package]] -name = "alabaster" -version = "1.0.0" -description = "A light, configurable Sphinx theme" -optional = false -python-versions = ">=3.10" -files = [ - {file = "alabaster-1.0.0-py3-none-any.whl", hash = "sha256:fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b"}, - {file = "alabaster-1.0.0.tar.gz", hash = "sha256:c00dca57bca26fa62a6d7d0a9fcce65f3e026e9bfe33e9c538fd3fbb2144fd9e"}, -] +# This file is automatically @generated by Poetry 2.1.2 and should not be changed by hand. [[package]] name = "annotated-types" @@ -17,6 +6,7 @@ version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, @@ -24,13 +14,14 @@ files = [ [[package]] name = "anyio" -version = "4.6.2.post1" +version = "4.9.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, - {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, + { file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c" }, + { file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028" }, ] [package.dependencies] @@ -38,8 +29,8 @@ idna = ">=2.8" sniffio = ">=1.1" [package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] +test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] trio = ["trio (>=0.26.1)"] [[package]] @@ -48,6 +39,8 @@ version = "0.1.4" description = "Disable App Nap on macOS >= 10.9" optional = false python-versions = ">=3.6" +groups = ["dev"] +markers = "platform_system == \"Darwin\"" files = [ {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, @@ -55,30 +48,26 @@ files = [ [[package]] name = "argon2-cffi" -version = "23.1.0" +version = "25.1.0" description = "Argon2 for Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"}, - {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"}, + { file = "argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741" }, + { file = "argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1" }, ] [package.dependencies] argon2-cffi-bindings = "*" -[package.extras] -dev = ["argon2-cffi[tests,typing]", "tox (>4)"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-copybutton", "sphinx-notfound-page"] -tests = ["hypothesis", "pytest"] -typing = ["mypy"] - [[package]] name = "argon2-cffi-bindings" version = "21.2.0" description = "Low-level CFFI bindings for Argon2" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, @@ -116,6 +105,7 @@ version = "1.3.0" description = "Better dates & times for Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, @@ -129,91 +119,104 @@ types-python-dateutil = ">=2.8.10" doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"] -[[package]] -name = "asciitree" -version = "0.3.3" -description = "Draws ASCII trees." -optional = false -python-versions = "*" -files = [ - {file = "asciitree-0.3.3.tar.gz", hash = "sha256:4aa4b9b649f85e3fcb343363d97564aa1fb62e249677f2e18a96765145cc0f6e"}, -] - [[package]] name = "asttokens" -version = "2.4.1" +version = "3.0.0" description = "Annotate AST trees with source code positions" optional = false -python-versions = "*" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, - {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, + { file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2" }, + { file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7" }, ] -[package.dependencies] -six = ">=1.12.0" - [package.extras] -astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] -test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] +astroid = ["astroid (>=2,<4)"] +test = ["astroid (>=2,<4)", "pytest", "pytest-cov", "pytest-xdist"] [[package]] name = "async-lru" -version = "2.0.4" +version = "2.0.5" description = "Simple LRU cache for asyncio" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"}, - {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"}, + { file = "async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943" }, + { file = "async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb" }, ] [[package]] name = "attrs" -version = "24.2.0" +version = "25.3.0" description = "Classes Without Boilerplate" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, + { file = "attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3" }, + { file = "attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b" }, ] [package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] +benchmark = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +cov = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier"] +tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\""] [[package]] name = "babel" -version = "2.16.0" +version = "2.17.0" description = "Internationalization utilities" optional = false python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2" }, + { file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d" }, +] + +[package.extras] +dev = ["backports.zoneinfo ; python_version < \"3.9\"", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata ; sys_platform == \"win32\""] + +[[package]] +name = "backrefs" +version = "5.9" +description = "A wrapper around re and regex that adds additional back references." +optional = false +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, - {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, + { file = "backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f" }, + { file = "backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf" }, + { file = "backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa" }, + { file = "backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b" }, + { file = "backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9" }, + { file = "backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60" }, + { file = "backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59" }, ] [package.extras] -dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] +extras = ["regex"] [[package]] name = "beautifulsoup4" -version = "4.12.3" +version = "4.13.4" description = "Screen-scraping library" optional = false -python-versions = ">=3.6.0" +python-versions = ">=3.7.0" +groups = ["dev"] files = [ - {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, - {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, + { file = "beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b" }, + { file = "beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195" }, ] [package.dependencies] soupsieve = ">1.2" +typing-extensions = ">=4.0.0" [package.extras] cchardet = ["cchardet"] @@ -222,67 +225,24 @@ charset-normalizer = ["charset-normalizer"] html5lib = ["html5lib"] lxml = ["lxml"] -[[package]] -name = "black" -version = "24.10.0" -description = "The uncompromising code formatter." -optional = false -python-versions = ">=3.9" -files = [ - {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, - {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, - {file = "black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f"}, - {file = "black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e"}, - {file = "black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad"}, - {file = "black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50"}, - {file = "black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392"}, - {file = "black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175"}, - {file = "black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3"}, - {file = "black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65"}, - {file = "black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f"}, - {file = "black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8"}, - {file = "black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981"}, - {file = "black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b"}, - {file = "black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2"}, - {file = "black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b"}, - {file = "black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd"}, - {file = "black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f"}, - {file = "black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800"}, - {file = "black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7"}, - {file = "black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d"}, - {file = "black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875"}, -] - -[package.dependencies] -click = ">=8.0.0" -mypy-extensions = ">=0.4.3" -packaging = ">=22.0" -pathspec = ">=0.9.0" -platformdirs = ">=2" - -[package.extras] -colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.10)"] -jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] -uvloop = ["uvloop (>=0.15.2)"] - [[package]] name = "bleach" -version = "6.1.0" +version = "6.2.0" description = "An easy safelist-based HTML-sanitizing tool." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"}, - {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"}, + { file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e" }, + { file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f" }, ] [package.dependencies] -six = ">=1.9.0" +tinycss2 = { version = ">=1.1.0,<1.5", optional = true, markers = "extra == \"css\"" } webencodings = "*" [package.extras] -css = ["tinycss2 (>=1.1.0,<1.3)"] +css = ["tinycss2 (>=1.1.0,<1.5)"] [[package]] name = "certifi" @@ -290,6 +250,7 @@ version = "2024.8.30" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main", "dev"] files = [ {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, @@ -301,6 +262,7 @@ version = "1.17.1" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, @@ -380,6 +342,7 @@ version = "3.4.0" description = "Validate configuration and produce human readable error messages." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, @@ -391,6 +354,7 @@ version = "1.6.4.post1" description = "Time-handling functionality from netcdf4-python" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "cftime-1.6.4.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0baa9bc4850929da9f92c25329aa1f651e2d6f23e237504f337ee9e12a769f5d"}, {file = "cftime-1.6.4.post1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6bb6b087f4b2513c37670bccd457e2a666ca489c5f2aad6e2c0e94604dc1b5b9"}, @@ -435,116 +399,104 @@ numpy = {version = ">=1.26.0b1", markers = "python_version >= \"3.12.0.rc1\""} [[package]] name = "charset-normalizer" -version = "3.4.0" +version = "3.4.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, - {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, - {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, +python-versions = ">=3.7" +groups = ["dev"] +files = [ + { file = "charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-win32.whl", hash = "sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cad5f45b3146325bb38d6855642f6fd609c3f7cad4dbaf75549bf3b904d3184" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2680962a4848b3c4f155dc2ee64505a9c57186d0d56b43123b17ca3de18f0fa" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:36b31da18b8890a76ec181c3cf44326bf2c48e36d393ca1b72b3f484113ea344" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4074c5a429281bf056ddd4c5d3b740ebca4d43ffffe2ef4bf4d2d05114299da" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9e36a97bee9b86ef9a1cf7bb96747eb7a15c2f22bdb5b516434b00f2a599f02" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:1b1bde144d98e446b056ef98e59c256e9294f6b74d7af6846bf5ffdafd687a7d" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:915f3849a011c1f593ab99092f3cecfcb4d65d8feb4a64cf1bf2d22074dc0ec4" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:fb707f3e15060adf5b7ada797624a6c6e0138e2a26baa089df64c68ee98e040f" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:25a23ea5c7edc53e0f29bae2c44fcb5a1aa10591aae107f2a2b2583a9c5cbc64" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:770cab594ecf99ae64c236bc9ee3439c3f46be49796e265ce0cc8bc17b10294f" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-win32.whl", hash = "sha256:6a0289e4589e8bdfef02a80478f1dfcb14f0ab696b5a00e1f4b8a14a307a3c58" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6fc1f5b51fa4cecaa18f2bd7a003f3dd039dd615cd69a2afd6d3b19aed6775f2" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76af085e67e56c8816c3ccf256ebd136def2ed9654525348cfa744b6802b69eb" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45ba65510e2647721e35323d6ef54c7974959f6081b58d4ef5d87c60c84919a" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:046595208aae0120559a67693ecc65dd75d46f7bf687f159127046628178dc45" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75d10d37a47afee94919c4fab4c22b9bc2a8bf7d4f46f87363bcf0573f3ff4f5" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6333b3aa5a12c26b2a4d4e7335a28f1475e0e5e17d69d55141ee3cab736f66d1" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8323a9b031aa0393768b87f04b4164a40037fb2a3c11ac06a03ffecd3618027" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:24498ba8ed6c2e0b56d4acbf83f2d989720a93b41d712ebd4f4979660db4417b" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:844da2b5728b5ce0e32d863af26f32b5ce61bc4273a9c720a9f3aa9df73b1455" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:65c981bdbd3f57670af8b59777cbfae75364b483fa8a9f420f08094531d54a01" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3c21d4fca343c805a52c0c78edc01e3477f6dd1ad7c47653241cf2a206d4fc58" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dc7039885fa1baf9be153a0626e337aa7ec8bf96b0128605fb0d77788ddc1681" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-win32.whl", hash = "sha256:8272b73e1c5603666618805fe821edba66892e2870058c94c53147602eab29c7" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:70f7172939fdf8790425ba31915bfbe8335030f05b9913d7ae00a87d4395620a" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:005fa3432484527f9732ebd315da8da8001593e2cf46a3d817669f062c3d9ed4" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e92fca20c46e9f5e1bb485887d074918b13543b1c2a1185e69bb8d17ab6236a7" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50bf98d5e563b83cc29471fa114366e6806bc06bc7a25fd59641e41445327836" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:721c76e84fe669be19c5791da68232ca2e05ba5185575086e384352e2c309597" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82d8fd25b7f4675d0c47cf95b594d4e7b158aca33b76aa63d07186e13c0e0ab7" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3daeac64d5b371dea99714f08ffc2c208522ec6b06fbc7866a450dd446f5c0f" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dccab8d5fa1ef9bfba0590ecf4d46df048d18ffe3eec01eeb73a42e0d9e7a8ba" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:aaf27faa992bfee0264dc1f03f4c75e9fcdda66a519db6b957a3f826e285cf12" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:eb30abc20df9ab0814b5a2524f23d75dcf83cde762c161917a2b4b7b55b1e518" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:c72fbbe68c6f32f251bdc08b8611c7b3060612236e960ef848e0a517ddbe76c5" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:982bb1e8b4ffda883b3d0a521e23abcd6fd17418f6d2c4118d257a10199c0ce3" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-win32.whl", hash = "sha256:43e0933a0eff183ee85833f341ec567c0980dae57c464d8a508e1b2ceb336471" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:d11b54acf878eef558599658b0ffca78138c8c3655cf4f3a4a673c437e67732e" }, + { file = "charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0" }, + { file = "charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63" }, ] [[package]] @@ -553,6 +505,7 @@ version = "8.1.7" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, @@ -567,6 +520,7 @@ version = "3.1.0" description = "Pickler class to extend the standard pickle.Pickler functionality" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "cloudpickle-3.1.0-py3-none-any.whl", hash = "sha256:fe11acda67f61aaaec473e3afe030feb131d78a43461b718185363384f1ba12e"}, {file = "cloudpickle-3.1.0.tar.gz", hash = "sha256:81a929b6e3c7335c863c771d673d105f02efdb89dfaba0c90495d1c64796601b"}, @@ -578,10 +532,12 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main", "dev"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] +markers = { main = "platform_system == \"Windows\"" } [[package]] name = "comm" @@ -589,6 +545,7 @@ version = "0.2.2" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, @@ -602,87 +559,211 @@ test = ["pytest"] [[package]] name = "coverage" -version = "7.6.4" +version = "7.9.2" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.9" -files = [ - {file = "coverage-7.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f8ae553cba74085db385d489c7a792ad66f7f9ba2ee85bfa508aeb84cf0ba07"}, - {file = "coverage-7.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8165b796df0bd42e10527a3f493c592ba494f16ef3c8b531288e3d0d72c1f6f0"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c8b95bf47db6d19096a5e052ffca0a05f335bc63cef281a6e8fe864d450a72"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ed9281d1b52628e81393f5eaee24a45cbd64965f41857559c2b7ff19385df51"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0809082ee480bb8f7416507538243c8863ac74fd8a5d2485c46f0f7499f2b491"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d541423cdd416b78626b55f123412fcf979d22a2c39fce251b350de38c15c15b"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:58809e238a8a12a625c70450b48e8767cff9eb67c62e6154a642b21ddf79baea"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9b8e184898ed014884ca84c70562b4a82cbc63b044d366fedc68bc2b2f3394a"}, - {file = "coverage-7.6.4-cp310-cp310-win32.whl", hash = "sha256:6bd818b7ea14bc6e1f06e241e8234508b21edf1b242d49831831a9450e2f35fa"}, - {file = "coverage-7.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:06babbb8f4e74b063dbaeb74ad68dfce9186c595a15f11f5d5683f748fa1d172"}, - {file = "coverage-7.6.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:73d2b73584446e66ee633eaad1a56aad577c077f46c35ca3283cd687b7715b0b"}, - {file = "coverage-7.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51b44306032045b383a7a8a2c13878de375117946d68dcb54308111f39775a25"}, - {file = "coverage-7.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3fb02fe73bed561fa12d279a417b432e5b50fe03e8d663d61b3d5990f29546"}, - {file = "coverage-7.6.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed8fe9189d2beb6edc14d3ad19800626e1d9f2d975e436f84e19efb7fa19469b"}, - {file = "coverage-7.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b369ead6527d025a0fe7bd3864e46dbee3aa8f652d48df6174f8d0bac9e26e0e"}, - {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ade3ca1e5f0ff46b678b66201f7ff477e8fa11fb537f3b55c3f0568fbfe6e718"}, - {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:27fb4a050aaf18772db513091c9c13f6cb94ed40eacdef8dad8411d92d9992db"}, - {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4f704f0998911abf728a7783799444fcbbe8261c4a6c166f667937ae6a8aa522"}, - {file = "coverage-7.6.4-cp311-cp311-win32.whl", hash = "sha256:29155cd511ee058e260db648b6182c419422a0d2e9a4fa44501898cf918866cf"}, - {file = "coverage-7.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:8902dd6a30173d4ef09954bfcb24b5d7b5190cf14a43170e386979651e09ba19"}, - {file = "coverage-7.6.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12394842a3a8affa3ba62b0d4ab7e9e210c5e366fbac3e8b2a68636fb19892c2"}, - {file = "coverage-7.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2b6b4c83d8e8ea79f27ab80778c19bc037759aea298da4b56621f4474ffeb117"}, - {file = "coverage-7.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d5b8007f81b88696d06f7df0cb9af0d3b835fe0c8dbf489bad70b45f0e45613"}, - {file = "coverage-7.6.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b57b768feb866f44eeed9f46975f3d6406380275c5ddfe22f531a2bf187eda27"}, - {file = "coverage-7.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5915fcdec0e54ee229926868e9b08586376cae1f5faa9bbaf8faf3561b393d52"}, - {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0b58c672d14f16ed92a48db984612f5ce3836ae7d72cdd161001cc54512571f2"}, - {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2fdef0d83a2d08d69b1f2210a93c416d54e14d9eb398f6ab2f0a209433db19e1"}, - {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8cf717ee42012be8c0cb205dbbf18ffa9003c4cbf4ad078db47b95e10748eec5"}, - {file = "coverage-7.6.4-cp312-cp312-win32.whl", hash = "sha256:7bb92c539a624cf86296dd0c68cd5cc286c9eef2d0c3b8b192b604ce9de20a17"}, - {file = "coverage-7.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:1032e178b76a4e2b5b32e19d0fd0abbce4b58e77a1ca695820d10e491fa32b08"}, - {file = "coverage-7.6.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:023bf8ee3ec6d35af9c1c6ccc1d18fa69afa1cb29eaac57cb064dbb262a517f9"}, - {file = "coverage-7.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0ac3d42cb51c4b12df9c5f0dd2f13a4f24f01943627120ec4d293c9181219ba"}, - {file = "coverage-7.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8fe4984b431f8621ca53d9380901f62bfb54ff759a1348cd140490ada7b693c"}, - {file = "coverage-7.6.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5fbd612f8a091954a0c8dd4c0b571b973487277d26476f8480bfa4b2a65b5d06"}, - {file = "coverage-7.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dacbc52de979f2823a819571f2e3a350a7e36b8cb7484cdb1e289bceaf35305f"}, - {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dab4d16dfef34b185032580e2f2f89253d302facba093d5fa9dbe04f569c4f4b"}, - {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:862264b12ebb65ad8d863d51f17758b1684560b66ab02770d4f0baf2ff75da21"}, - {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5beb1ee382ad32afe424097de57134175fea3faf847b9af002cc7895be4e2a5a"}, - {file = "coverage-7.6.4-cp313-cp313-win32.whl", hash = "sha256:bf20494da9653f6410213424f5f8ad0ed885e01f7e8e59811f572bdb20b8972e"}, - {file = "coverage-7.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:182e6cd5c040cec0a1c8d415a87b67ed01193ed9ad458ee427741c7d8513d963"}, - {file = "coverage-7.6.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a181e99301a0ae128493a24cfe5cfb5b488c4e0bf2f8702091473d033494d04f"}, - {file = "coverage-7.6.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:df57bdbeffe694e7842092c5e2e0bc80fff7f43379d465f932ef36f027179806"}, - {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bcd1069e710600e8e4cf27f65c90c7843fa8edfb4520fb0ccb88894cad08b11"}, - {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99b41d18e6b2a48ba949418db48159d7a2e81c5cc290fc934b7d2380515bd0e3"}, - {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1e54712ba3474f34b7ef7a41e65bd9037ad47916ccb1cc78769bae324c01a"}, - {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53d202fd109416ce011578f321460795abfe10bb901b883cafd9b3ef851bacfc"}, - {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:c48167910a8f644671de9f2083a23630fbf7a1cb70ce939440cd3328e0919f70"}, - {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cc8ff50b50ce532de2fa7a7daae9dd12f0a699bfcd47f20945364e5c31799fef"}, - {file = "coverage-7.6.4-cp313-cp313t-win32.whl", hash = "sha256:b8d3a03d9bfcaf5b0141d07a88456bb6a4c3ce55c080712fec8418ef3610230e"}, - {file = "coverage-7.6.4-cp313-cp313t-win_amd64.whl", hash = "sha256:f3ddf056d3ebcf6ce47bdaf56142af51bb7fad09e4af310241e9db7a3a8022e1"}, - {file = "coverage-7.6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9cb7fa111d21a6b55cbf633039f7bc2749e74932e3aa7cb7333f675a58a58bf3"}, - {file = "coverage-7.6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:11a223a14e91a4693d2d0755c7a043db43d96a7450b4f356d506c2562c48642c"}, - {file = "coverage-7.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a413a096c4cbac202433c850ee43fa326d2e871b24554da8327b01632673a076"}, - {file = "coverage-7.6.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00a1d69c112ff5149cabe60d2e2ee948752c975d95f1e1096742e6077affd376"}, - {file = "coverage-7.6.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f76846299ba5c54d12c91d776d9605ae33f8ae2b9d1d3c3703cf2db1a67f2c0"}, - {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fe439416eb6380de434886b00c859304338f8b19f6f54811984f3420a2e03858"}, - {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0294ca37f1ba500667b1aef631e48d875ced93ad5e06fa665a3295bdd1d95111"}, - {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6f01ba56b1c0e9d149f9ac85a2f999724895229eb36bd997b61e62999e9b0901"}, - {file = "coverage-7.6.4-cp39-cp39-win32.whl", hash = "sha256:bc66f0bf1d7730a17430a50163bb264ba9ded56739112368ba985ddaa9c3bd09"}, - {file = "coverage-7.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:c481b47f6b5845064c65a7bc78bc0860e635a9b055af0df46fdf1c58cebf8e8f"}, - {file = "coverage-7.6.4-pp39.pp310-none-any.whl", hash = "sha256:3c65d37f3a9ebb703e710befdc489a38683a5b152242664b973a7b7b22348a4e"}, - {file = "coverage-7.6.4.tar.gz", hash = "sha256:29fc0f17b1d3fea332f8001d4558f8214af7f1d87a345f3a133c901d60347c73"}, -] - -[package.extras] -toml = ["tomli"] +groups = ["dev"] +files = [ + { file = "coverage-7.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:66283a192a14a3854b2e7f3418d7db05cdf411012ab7ff5db98ff3b181e1f912" }, + { file = "coverage-7.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4e01d138540ef34fcf35c1aa24d06c3de2a4cffa349e29a10056544f35cca15f" }, + { file = "coverage-7.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f22627c1fe2745ee98d3ab87679ca73a97e75ca75eb5faee48660d060875465f" }, + { file = "coverage-7.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b1c2d8363247b46bd51f393f86c94096e64a1cf6906803fa8d5a9d03784bdbf" }, + { file = "coverage-7.9.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c10c882b114faf82dbd33e876d0cbd5e1d1ebc0d2a74ceef642c6152f3f4d547" }, + { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:de3c0378bdf7066c3988d66cd5232d161e933b87103b014ab1b0b4676098fa45" }, + { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1e2f097eae0e5991e7623958a24ced3282676c93c013dde41399ff63e230fcf2" }, + { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:28dc1f67e83a14e7079b6cea4d314bc8b24d1aed42d3582ff89c0295f09b181e" }, + { file = "coverage-7.9.2-cp310-cp310-win32.whl", hash = "sha256:bf7d773da6af9e10dbddacbf4e5cab13d06d0ed93561d44dae0188a42c65be7e" }, + { file = "coverage-7.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:0c0378ba787681ab1897f7c89b415bd56b0b2d9a47e5a3d8dc0ea55aac118d6c" }, + { file = "coverage-7.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a7a56a2964a9687b6aba5b5ced6971af308ef6f79a91043c05dd4ee3ebc3e9ba" }, + { file = "coverage-7.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:123d589f32c11d9be7fe2e66d823a236fe759b0096f5db3fb1b75b2fa414a4fa" }, + { file = "coverage-7.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:333b2e0ca576a7dbd66e85ab402e35c03b0b22f525eed82681c4b866e2e2653a" }, + { file = "coverage-7.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:326802760da234baf9f2f85a39e4a4b5861b94f6c8d95251f699e4f73b1835dc" }, + { file = "coverage-7.9.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19e7be4cfec248df38ce40968c95d3952fbffd57b400d4b9bb580f28179556d2" }, + { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0b4a4cb73b9f2b891c1788711408ef9707666501ba23684387277ededab1097c" }, + { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:2c8937fa16c8c9fbbd9f118588756e7bcdc7e16a470766a9aef912dd3f117dbd" }, + { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:42da2280c4d30c57a9b578bafd1d4494fa6c056d4c419d9689e66d775539be74" }, + { file = "coverage-7.9.2-cp311-cp311-win32.whl", hash = "sha256:14fa8d3da147f5fdf9d298cacc18791818f3f1a9f542c8958b80c228320e90c6" }, + { file = "coverage-7.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:549cab4892fc82004f9739963163fd3aac7a7b0df430669b75b86d293d2df2a7" }, + { file = "coverage-7.9.2-cp311-cp311-win_arm64.whl", hash = "sha256:c2667a2b913e307f06aa4e5677f01a9746cd08e4b35e14ebcde6420a9ebb4c62" }, + { file = "coverage-7.9.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ae9eb07f1cfacd9cfe8eaee6f4ff4b8a289a668c39c165cd0c8548484920ffc0" }, + { file = "coverage-7.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9ce85551f9a1119f02adc46d3014b5ee3f765deac166acf20dbb851ceb79b6f3" }, + { file = "coverage-7.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8f6389ac977c5fb322e0e38885fbbf901743f79d47f50db706e7644dcdcb6e1" }, + { file = "coverage-7.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff0d9eae8cdfcd58fe7893b88993723583a6ce4dfbfd9f29e001922544f95615" }, + { file = "coverage-7.9.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fae939811e14e53ed8a9818dad51d434a41ee09df9305663735f2e2d2d7d959b" }, + { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:31991156251ec202c798501e0a42bbdf2169dcb0f137b1f5c0f4267f3fc68ef9" }, + { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d0d67963f9cbfc7c7f96d4ac74ed60ecbebd2ea6eeb51887af0f8dce205e545f" }, + { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:49b752a2858b10580969ec6af6f090a9a440a64a301ac1528d7ca5f7ed497f4d" }, + { file = "coverage-7.9.2-cp312-cp312-win32.whl", hash = "sha256:88d7598b8ee130f32f8a43198ee02edd16d7f77692fa056cb779616bbea1b355" }, + { file = "coverage-7.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:9dfb070f830739ee49d7c83e4941cc767e503e4394fdecb3b54bfdac1d7662c0" }, + { file = "coverage-7.9.2-cp312-cp312-win_arm64.whl", hash = "sha256:4e2c058aef613e79df00e86b6d42a641c877211384ce5bd07585ed7ba71ab31b" }, + { file = "coverage-7.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:985abe7f242e0d7bba228ab01070fde1d6c8fa12f142e43debe9ed1dde686038" }, + { file = "coverage-7.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82c3939264a76d44fde7f213924021ed31f55ef28111a19649fec90c0f109e6d" }, + { file = "coverage-7.9.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae5d563e970dbe04382f736ec214ef48103d1b875967c89d83c6e3f21706d5b3" }, + { file = "coverage-7.9.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bdd612e59baed2a93c8843c9a7cb902260f181370f1d772f4842987535071d14" }, + { file = "coverage-7.9.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:256ea87cb2a1ed992bcdfc349d8042dcea1b80436f4ddf6e246d6bee4b5d73b6" }, + { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f44ae036b63c8ea432f610534a2668b0c3aee810e7037ab9d8ff6883de480f5b" }, + { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:82d76ad87c932935417a19b10cfe7abb15fd3f923cfe47dbdaa74ef4e503752d" }, + { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:619317bb86de4193debc712b9e59d5cffd91dc1d178627ab2a77b9870deb2868" }, + { file = "coverage-7.9.2-cp313-cp313-win32.whl", hash = "sha256:0a07757de9feb1dfafd16ab651e0f628fd7ce551604d1bf23e47e1ddca93f08a" }, + { file = "coverage-7.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:115db3d1f4d3f35f5bb021e270edd85011934ff97c8797216b62f461dd69374b" }, + { file = "coverage-7.9.2-cp313-cp313-win_arm64.whl", hash = "sha256:48f82f889c80af8b2a7bb6e158d95a3fbec6a3453a1004d04e4f3b5945a02694" }, + { file = "coverage-7.9.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:55a28954545f9d2f96870b40f6c3386a59ba8ed50caf2d949676dac3ecab99f5" }, + { file = "coverage-7.9.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cdef6504637731a63c133bb2e6f0f0214e2748495ec15fe42d1e219d1b133f0b" }, + { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcd5ebe66c7a97273d5d2ddd4ad0ed2e706b39630ed4b53e713d360626c3dbb3" }, + { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9303aed20872d7a3c9cb39c5d2b9bdbe44e3a9a1aecb52920f7e7495410dfab8" }, + { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc18ea9e417a04d1920a9a76fe9ebd2f43ca505b81994598482f938d5c315f46" }, + { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6406cff19880aaaadc932152242523e892faff224da29e241ce2fca329866584" }, + { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2d0d4f6ecdf37fcc19c88fec3e2277d5dee740fb51ffdd69b9579b8c31e4232e" }, + { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c33624f50cf8de418ab2b4d6ca9eda96dc45b2c4231336bac91454520e8d1fac" }, + { file = "coverage-7.9.2-cp313-cp313t-win32.whl", hash = "sha256:1df6b76e737c6a92210eebcb2390af59a141f9e9430210595251fbaf02d46926" }, + { file = "coverage-7.9.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f5fd54310b92741ebe00d9c0d1d7b2b27463952c022da6d47c175d246a98d1bd" }, + { file = "coverage-7.9.2-cp313-cp313t-win_arm64.whl", hash = "sha256:c48c2375287108c887ee87d13b4070a381c6537d30e8487b24ec721bf2a781cb" }, + { file = "coverage-7.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ddc39510ac922a5c4c27849b739f875d3e1d9e590d1e7b64c98dadf037a16cce" }, + { file = "coverage-7.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a535c0c7364acd55229749c2b3e5eebf141865de3a8f697076a3291985f02d30" }, + { file = "coverage-7.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df0f9ef28e0f20c767ccdccfc5ae5f83a6f4a2fbdfbcbcc8487a8a78771168c8" }, + { file = "coverage-7.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f3da12e0ccbcb348969221d29441ac714bbddc4d74e13923d3d5a7a0bebef7a" }, + { file = "coverage-7.9.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a17eaf46f56ae0f870f14a3cbc2e4632fe3771eab7f687eda1ee59b73d09fe4" }, + { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:669135a9d25df55d1ed56a11bf555f37c922cf08d80799d4f65d77d7d6123fcf" }, + { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:9d3a700304d01a627df9db4322dc082a0ce1e8fc74ac238e2af39ced4c083193" }, + { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:71ae8b53855644a0b1579d4041304ddc9995c7b21c8a1f16753c4d8903b4dfed" }, + { file = "coverage-7.9.2-cp39-cp39-win32.whl", hash = "sha256:dd7a57b33b5cf27acb491e890720af45db05589a80c1ffc798462a765be6d4d7" }, + { file = "coverage-7.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:f65bb452e579d5540c8b37ec105dd54d8b9307b07bcaa186818c104ffda22441" }, + { file = "coverage-7.9.2-pp39.pp310.pp311-none-any.whl", hash = "sha256:8a1166db2fb62473285bcb092f586e081e92656c7dfa8e9f62b4d39d7e6b5050" }, + { file = "coverage-7.9.2-py3-none-any.whl", hash = "sha256:e425cd5b00f6fc0ed7cdbd766c70be8baab4b7839e4d4fe5fac48581dd968ea4" }, + { file = "coverage-7.9.2.tar.gz", hash = "sha256:997024fa51e3290264ffd7492ec97d0690293ccd2b45a6cd7d82d945a4a80c8b" }, +] + +[package.extras] +toml = ["tomli ; python_full_version <= \"3.11.0a6\""] + +[[package]] +name = "crc32c" +version = "2.7.1" +description = "A python package implementing the crc32c algorithm in hardware and software" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1fd1f9c6b50d7357736676278a1b8c8986737b8a1c76d7eab4baa71d0b6af67f" }, + { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:805c2be1bc0e251c48439a62b0422385899c15289483692bc70e78473c1039f1" }, + { file = "crc32c-2.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f4333e62b7844dfde112dbb8489fd2970358eddc3310db21e943a9f6994df749" }, + { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f0fadc741e79dc705e2d9ee967473e8a061d26b04310ed739f1ee292f33674f" }, + { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91ced31055d26d59385d708bbd36689e1a1d604d4b0ceb26767eb5a83156f85d" }, + { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36ffa999b72e3c17f6a066ae9e970b40f8c65f38716e436c39a33b809bc6ed9f" }, + { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e80114dd7f462297e54d5da1b9ff472e5249c5a2b406aa51c371bb0edcbf76bd" }, + { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:676f5b46da268b5190f9fb91b3f037a00d114b411313664438525db876adc71f" }, + { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8d0e660c9ed269e90692993a4457a932fc22c9cc96caf79dd1f1a84da85bb312" }, + { file = "crc32c-2.7.1-cp310-cp310-win32.whl", hash = "sha256:17a2c3f8c6d85b04b5511af827b5dbbda4e672d188c0b9f20a8156e93a1aa7b6" }, + { file = "crc32c-2.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3208764c29688f91a35392073229975dd7687b6cb9f76b919dae442cabcd5126" }, + { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:19e03a50545a3ef400bd41667d5525f71030488629c57d819e2dd45064f16192" }, + { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c03286b1e5ce9bed7090084f206aacd87c5146b4b10de56fe9e86cbbbf851cf" }, + { file = "crc32c-2.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:80ebbf144a1a56a532b353e81fa0f3edca4f4baa1bf92b1dde2c663a32bb6a15" }, + { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96b794fd11945298fdd5eb1290a812efb497c14bc42592c5c992ca077458eeba" }, + { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9df7194dd3c0efb5a21f5d70595b7a8b4fd9921fbbd597d6d8e7a11eca3e2d27" }, + { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d698eec444b18e296a104d0b9bb6c596c38bdcb79d24eba49604636e9d747305" }, + { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e07cf10ef852d219d179333fd706d1c415626f1f05e60bd75acf0143a4d8b225" }, + { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d2a051f296e6e92e13efee3b41db388931cdb4a2800656cd1ed1d9fe4f13a086" }, + { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1738259802978cdf428f74156175da6a5fdfb7256f647fdc0c9de1bc6cd7173" }, + { file = "crc32c-2.7.1-cp311-cp311-win32.whl", hash = "sha256:f7786d219a1a1bf27d0aa1869821d11a6f8e90415cfffc1e37791690d4a848a1" }, + { file = "crc32c-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:887f6844bb3ad35f0778cd10793ad217f7123a5422e40041231b8c4c7329649d" }, + { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f7d1c4e761fe42bf856130daf8b2658df33fe0ced3c43dadafdfeaa42b57b950" }, + { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:73361c79a6e4605204457f19fda18b042a94508a52e53d10a4239da5fb0f6a34" }, + { file = "crc32c-2.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:afd778fc8ac0ed2ffbfb122a9aa6a0e409a8019b894a1799cda12c01534493e0" }, + { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56ef661b34e9f25991fface7f9ad85e81bbc1b3fe3b916fd58c893eabe2fa0b8" }, + { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:571aa4429444b5d7f588e4377663592145d2d25eb1635abb530f1281794fc7c9" }, + { file = "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" }, + { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:99d17637c4867672cb8adeea007294e3c3df9d43964369516cfe2c1f47ce500a" }, + { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f4a400ac3c69a32e180d8753fd7ec7bccb80ade7ab0812855dce8a208e72495f" }, + { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:588587772e55624dd9c7a906ec9e8773ae0b6ac5e270fc0bc84ee2758eba90d5" }, + { file = "crc32c-2.7.1-cp312-cp312-win32.whl", hash = "sha256:9f14b60e5a14206e8173dd617fa0c4df35e098a305594082f930dae5488da428" }, + { file = "crc32c-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:7c810a246660a24dc818047dc5f89c7ce7b2814e1e08a8e99993f4103f7219e8" }, + { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:24949bffb06fc411cc18188d33357923cb935273642164d0bb37a5f375654169" }, + { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2d5d326e7e118d4fa60187770d86b66af2fdfc63ce9eeb265f0d3e7d49bebe0b" }, + { file = "crc32c-2.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba110df60c64c8e2d77a9425b982a520ccdb7abe42f06604f4d98a45bb1fff62" }, + { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c277f9d16a3283e064d54854af0976b72abaa89824955579b2b3f37444f89aae" }, + { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:881af0478a01331244e27197356929edbdeaef6a9f81b5c6bacfea18d2139289" }, + { file = "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" }, + { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2416c4d88696ac322632555c0f81ab35e15f154bc96055da6cf110d642dbc10" }, + { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:60254251b88ec9b9795215f0f9ec015a6b5eef8b2c5fba1267c672d83c78fc02" }, + { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:edefc0e46f3c37372183f70338e5bdee42f6789b62fcd36ec53aa933e9dfbeaf" }, + { file = "crc32c-2.7.1-cp313-cp313-win32.whl", hash = "sha256:813af8111218970fe2adb833c5e5239f091b9c9e76f03b4dd91aaba86e99b499" }, + { file = "crc32c-2.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:7d9ede7be8e4ec1c9e90aaf6884decbeef10e3473e6ddac032706d710cab5888" }, + { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:db9ac92294284b22521356715784b91cc9094eee42a5282ab281b872510d1831" }, + { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8fcd7f2f29a30dc92af64a9ee3d38bde0c82bd20ad939999427aac94bbd87373" }, + { file = "crc32c-2.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5c056ef043393085523e149276a7ce0cb534b872e04f3e20d74d9a94a75c0ad7" }, + { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03a92551a343702629af91f78d205801219692b6909f8fa126b830e332bfb0e0" }, + { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb9424ec1a8ca54763155a703e763bcede82e6569fe94762614bb2de1412d4e1" }, + { file = "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" }, + { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:57a20dfc27995f568f64775eea2bbb58ae269f1a1144561df5e4a4955f79db32" }, + { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:f7186d098bfd2cff25eac6880b7c7ad80431b90610036131c1c7dd0eab42a332" }, + { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:55a77e29a265418fa34bef15bd0f2c60afae5348988aaf35ed163b4bbf93cf37" }, + { file = "crc32c-2.7.1-cp313-cp313t-win32.whl", hash = "sha256:ae38a4b6aa361595d81cab441405fbee905c72273e80a1c010fb878ae77ac769" }, + { file = "crc32c-2.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:eee2a43b663feb6c79a6c1c6e5eae339c2b72cfac31ee54ec0209fa736cf7ee5" }, + { file = "crc32c-2.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:04a56e9f4995559fa86bcf5d0ed5c48505a36e2be1c41d70cae5c080d9a00b74" }, + { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88c5c9c21cd9fff593bb7dfe97d3287438c8aecbcc73d227f2366860a0663521" }, + { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:595146cb94ba0055301d273113add2af5859b467db41b50367f47870c2d0a81c" }, + { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9f3792872f1320961f33aaf0198edea371aee393bcc221fab66d10ecffd77d" }, + { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:999a40d75cd1696e779f6f99c29fa52be777197d1d9e3ae69cb919a05a369c1e" }, + { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:eff485526172cee7e6d1fa9c23913f92c7d38ab05674b0b578767c7b693faf5d" }, + { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:541dac90c64ed9ce05f85a71066567e854c1b40743a01d83fa2c66419a2e97b6" }, + { file = "crc32c-2.7.1-cp37-cp37m-win32.whl", hash = "sha256:7138ec26e79100c4cf4294ef40027a1cff26a1e23b7e5eb70efe5d7ff37cbc66" }, + { file = "crc32c-2.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:35a3ed12ac2e2551a07d246b7e6512ac39db021e006205a40c1cfd32ea73fcc3" }, + { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af062f11aea283b7e9c95f3a97fb6bb96ac08a9063f71621c2140237df141ada" }, + { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8f25ca521ecf7cccfff0ecae4d0538b5c0c7235d27bf098241f3e2bf86aed713" }, + { file = "crc32c-2.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1410bcd909be36ccbf8a52c45e4bddca77adfd4e80789ac3cd575c024086516d" }, + { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33fc8cb32f82685ebefd078e740925ea9da37a008ed5f43b68fc8324f8ca4a37" }, + { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad3dc6283ce53ad7d1dc5775003460110ab7eebf348efebe0486a531b28f8184" }, + { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:758ead20e122496764ae50db26bb90fb47fc4b6d242c8e99e87c3f1dae1f1dce" }, + { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e436d9044bbd51936f7aeb8b322543c516bf22371a17970a370a10af1661fa54" }, + { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:47e5be99057264b603e3cd88cf091985f33c16d3c8609f1c83ed6e72ec4179b4" }, + { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:280509210e622a236f16f031856847fd0d6704df662d7209da819ccfb40c6167" }, + { file = "crc32c-2.7.1-cp38-cp38-win32.whl", hash = "sha256:4ab48e048cfa123a9f9bdc5d4d687a3461723132c749c721a6d358605e6d470d" }, + { file = "crc32c-2.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:65471d1b1b6e10a404ca8200a4271d5bc0a552c3f5dcd943c1c7835f766ea02d" }, + { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:39ca842586084bca24f9c4ab43e2d99191b1186b2f89b2122b470d0730254d1b" }, + { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a911abc33d453b3f171a3200b1e18b3fc39c204670b5b0a353cca99e4c664332" }, + { file = "crc32c-2.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:22a72e81ec08a7ece6a35ac68d1ed32dd4a8be7949b164db88d4b4a4bade5c5a" }, + { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54d6f8c5be6815eabd6e3e90fa0bc13045183a6aa33a30dd684eb0f062b92213" }, + { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c855726d71dee7ae25f81c6b54293455fc66802f34d334d22bea1f6ce8bc21c" }, + { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98d5f7fc364bb9c4c4123d149406fbee063f2e8c2cff19a12f13e50faa146237" }, + { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:51ffba582c95a281e5a3f71eacdafc96b9a1835ddae245385639458fff197034" }, + { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3950d3c340c9d70889630ef81fba8666abfd0cf0aa19fd9c3a55634e0b383b0f" }, + { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:522fba1770aad8f7eb189f21fca591a51d96dcc749859088f462281324aec30b" }, + { file = "crc32c-2.7.1-cp39-cp39-win32.whl", hash = "sha256:812723e222b6a9fe0562554d72f4f072c3a95720c60ee500984e7d0e568caac3" }, + { file = "crc32c-2.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:6793fcfe9d4130230d196abbe4021c01ffe8e85c92633bf3c8559f9836c227f5" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:2e83fedebcdeb80c19e76b7a0e5103528bb062521c40702bf34516a429e81df3" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30004a7383538ef93bda9b22f7b3805bc0aa5625ab2675690e1b676b19417d4b" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a01b0983aa87f517c12418f9898ecf2083bf86f4ea04122e053357c3edb0d73f" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb2b963c42128b38872e9ed63f04a73ce1ff89a1dfad7ea38add6fe6296497b8" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cdd5e576fee5d255c1e68a4dae4420f21e57e6f05900b38d5ae47c713fc3330d" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:79f0ff50863aeb441fbfa87e9db6542ddfe3e941189dece832b0af2e454dbab0" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cd27a1e400d77e9872fa1303e8f9d30bd050df35ee4858354ce0b59f8227d32" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:274739b3e1591bd4b7ec98764f2f79c6fbcc0f7d7676d5f17369832fe14ee4f0" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:050f52045b4a033a245e0ee4357e1a793de5af6496c82250ef13d8cb90a21e20" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ceb4ca126f75694bda020a307221563d3c522719c0acedcc81ffb985b4867c94" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:eabefe7a6fb5dfc6318fb35f4d98893baef17ebda9b311498e870526d32168e7" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:217edd9ba8c5f0c3ad60c82a11fa78f01162fa106fd7f5d17175dac6bf1eedf9" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15d640d9d4aa213aec6c837f602081a17d1522f8cd78b52334b62ee27b083410" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:519878822bf9bdead63c25a5e4bdc26d2eae9da6056f92b9b5f3023c08f1d016" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:2bf69cfa4c3ea9f060fe06db00b7e34f771c83f73dd2c3568c2c9019479e34c2" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e89d51c90f6730b67b12c97d49099ba18d0fdce18541fab94d2be95d1c939adb" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:488a0feba1bb005d0dd2f702c1da4849d083e88d82cd27b83ac2d2d93af80755" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:919262b7a12ef63f222ec19c0e092f39268802652e11669315257ae6249ec79f" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4181240f6080c38eec9dd1539cd23a304a12100d3f4ffe43234f32064fae5ef0" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fedde1e53507d0ede1980e8109442edd108c04ab100abcd5145c274820dacd4f" }, + { file = "crc32c-2.7.1.tar.gz", hash = "sha256:f91b144a21eef834d64178e01982bb9179c354b3e9e5f4c803b0e5096384968c" }, +] [[package]] name = "dask" -version = "2024.10.0" +version = "2025.7.0" description = "Parallel PyData with Task Scheduling" optional = false python-versions = ">=3.10" +groups = ["main"] files = [ - {file = "dask-2024.10.0-py3-none-any.whl", hash = "sha256:1ddc27c7967e134b4f8296a488521485a5ac4927cc63e2abfa0b24227b93217f"}, - {file = "dask-2024.10.0.tar.gz", hash = "sha256:dfd3efec5d8d8340fb647d0347637133030cad261b714623cc27de286e9db037"}, + { file = "dask-2025.7.0-py3-none-any.whl", hash = "sha256:073c29c4e99c2400a39a8a67874f35c1d15bf7af9ae3d0c30af3c7c1199f24ae" }, + { file = "dask-2025.7.0.tar.gz", hash = "sha256:c3a0d4e78882e85ea81dbc71e6459713e45676e2d17e776c2f3f19848039e4cf" }, ] [package.dependencies] @@ -697,55 +778,57 @@ toolz = ">=0.10.0" [package.extras] array = ["numpy (>=1.24)"] complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=14.0.1)"] -dataframe = ["dask-expr (>=1.1,<1.2)", "dask[array]", "pandas (>=2.0)"] +dataframe = ["dask[array]", "pandas (>=2.0)", "pyarrow (>=14.0.1)"] diagnostics = ["bokeh (>=3.1.0)", "jinja2 (>=2.10.3)"] -distributed = ["distributed (==2024.10.0)"] -test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] +distributed = ["distributed (==2025.7.0)"] +test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] [[package]] name = "debugpy" -version = "1.8.7" +version = "1.8.15" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" -files = [ - {file = "debugpy-1.8.7-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:95fe04a573b8b22896c404365e03f4eda0ce0ba135b7667a1e57bd079793b96b"}, - {file = "debugpy-1.8.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:628a11f4b295ffb4141d8242a9bb52b77ad4a63a2ad19217a93be0f77f2c28c9"}, - {file = "debugpy-1.8.7-cp310-cp310-win32.whl", hash = "sha256:85ce9c1d0eebf622f86cc68618ad64bf66c4fc3197d88f74bb695a416837dd55"}, - {file = "debugpy-1.8.7-cp310-cp310-win_amd64.whl", hash = "sha256:29e1571c276d643757ea126d014abda081eb5ea4c851628b33de0c2b6245b037"}, - {file = "debugpy-1.8.7-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:caf528ff9e7308b74a1749c183d6808ffbedbb9fb6af78b033c28974d9b8831f"}, - {file = "debugpy-1.8.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cba1d078cf2e1e0b8402e6bda528bf8fda7ccd158c3dba6c012b7897747c41a0"}, - {file = "debugpy-1.8.7-cp311-cp311-win32.whl", hash = "sha256:171899588bcd412151e593bd40d9907133a7622cd6ecdbdb75f89d1551df13c2"}, - {file = "debugpy-1.8.7-cp311-cp311-win_amd64.whl", hash = "sha256:6e1c4ffb0c79f66e89dfd97944f335880f0d50ad29525dc792785384923e2211"}, - {file = "debugpy-1.8.7-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:4d27d842311353ede0ad572600c62e4bcd74f458ee01ab0dd3a1a4457e7e3706"}, - {file = "debugpy-1.8.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:703c1fd62ae0356e194f3e7b7a92acd931f71fe81c4b3be2c17a7b8a4b546ec2"}, - {file = "debugpy-1.8.7-cp312-cp312-win32.whl", hash = "sha256:2f729228430ef191c1e4df72a75ac94e9bf77413ce5f3f900018712c9da0aaca"}, - {file = "debugpy-1.8.7-cp312-cp312-win_amd64.whl", hash = "sha256:45c30aaefb3e1975e8a0258f5bbd26cd40cde9bfe71e9e5a7ac82e79bad64e39"}, - {file = "debugpy-1.8.7-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:d050a1ec7e925f514f0f6594a1e522580317da31fbda1af71d1530d6ea1f2b40"}, - {file = "debugpy-1.8.7-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2f4349a28e3228a42958f8ddaa6333d6f8282d5edaea456070e48609c5983b7"}, - {file = "debugpy-1.8.7-cp313-cp313-win32.whl", hash = "sha256:11ad72eb9ddb436afb8337891a986302e14944f0f755fd94e90d0d71e9100bba"}, - {file = "debugpy-1.8.7-cp313-cp313-win_amd64.whl", hash = "sha256:2efb84d6789352d7950b03d7f866e6d180284bc02c7e12cb37b489b7083d81aa"}, - {file = "debugpy-1.8.7-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:4b908291a1d051ef3331484de8e959ef3e66f12b5e610c203b5b75d2725613a7"}, - {file = "debugpy-1.8.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da8df5b89a41f1fd31503b179d0a84a5fdb752dddd5b5388dbd1ae23cda31ce9"}, - {file = "debugpy-1.8.7-cp38-cp38-win32.whl", hash = "sha256:b12515e04720e9e5c2216cc7086d0edadf25d7ab7e3564ec8b4521cf111b4f8c"}, - {file = "debugpy-1.8.7-cp38-cp38-win_amd64.whl", hash = "sha256:93176e7672551cb5281577cdb62c63aadc87ec036f0c6a486f0ded337c504596"}, - {file = "debugpy-1.8.7-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:90d93e4f2db442f8222dec5ec55ccfc8005821028982f1968ebf551d32b28907"}, - {file = "debugpy-1.8.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6db2a370e2700557a976eaadb16243ec9c91bd46f1b3bb15376d7aaa7632c81"}, - {file = "debugpy-1.8.7-cp39-cp39-win32.whl", hash = "sha256:a6cf2510740e0c0b4a40330640e4b454f928c7b99b0c9dbf48b11efba08a8cda"}, - {file = "debugpy-1.8.7-cp39-cp39-win_amd64.whl", hash = "sha256:6a9d9d6d31846d8e34f52987ee0f1a904c7baa4912bf4843ab39dadf9b8f3e0d"}, - {file = "debugpy-1.8.7-py2.py3-none-any.whl", hash = "sha256:57b00de1c8d2c84a61b90880f7e5b6deaf4c312ecbde3a0e8912f2a56c4ac9ae"}, - {file = "debugpy-1.8.7.zip", hash = "sha256:18b8f731ed3e2e1df8e9cdaa23fb1fc9c24e570cd0081625308ec51c82efe42e"}, +groups = ["dev"] +files = [ + { file = "debugpy-1.8.15-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e9a8125c85172e3ec30985012e7a81ea5e70bbb836637f8a4104f454f9b06c97" }, + { file = "debugpy-1.8.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fd0b6b5eccaa745c214fd240ea82f46049d99ef74b185a3517dad3ea1ec55d9" }, + { file = "debugpy-1.8.15-cp310-cp310-win32.whl", hash = "sha256:8181cce4d344010f6bfe94a531c351a46a96b0f7987750932b2908e7a1e14a55" }, + { file = "debugpy-1.8.15-cp310-cp310-win_amd64.whl", hash = "sha256:af2dcae4e4cd6e8b35f982ccab29fe65f7e8766e10720a717bc80c464584ee21" }, + { file = "debugpy-1.8.15-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:babc4fb1962dd6a37e94d611280e3d0d11a1f5e6c72ac9b3d87a08212c4b6dd3" }, + { file = "debugpy-1.8.15-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f778e68f2986a58479d0ac4f643e0b8c82fdd97c2e200d4d61e7c2d13838eb53" }, + { file = "debugpy-1.8.15-cp311-cp311-win32.whl", hash = "sha256:f9d1b5abd75cd965e2deabb1a06b0e93a1546f31f9f621d2705e78104377c702" }, + { file = "debugpy-1.8.15-cp311-cp311-win_amd64.whl", hash = "sha256:62954fb904bec463e2b5a415777f6d1926c97febb08ef1694da0e5d1463c5c3b" }, + { file = "debugpy-1.8.15-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:3dcc7225cb317469721ab5136cda9ff9c8b6e6fb43e87c9e15d5b108b99d01ba" }, + { file = "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" }, + { file = "debugpy-1.8.15-cp312-cp312-win32.whl", hash = "sha256:b08e9b0bc260cf324c890626961dad4ffd973f7568fbf57feb3c3a65ab6b6327" }, + { file = "debugpy-1.8.15-cp312-cp312-win_amd64.whl", hash = "sha256:e2a4fe357c92334272eb2845fcfcdbec3ef9f22c16cf613c388ac0887aed15fa" }, + { file = "debugpy-1.8.15-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:f5e01291ad7d6649aed5773256c5bba7a1a556196300232de1474c3c372592bf" }, + { file = "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" }, + { file = "debugpy-1.8.15-cp313-cp313-win32.whl", hash = "sha256:fcf0748d4f6e25f89dc5e013d1129ca6f26ad4da405e0723a4f704583896a709" }, + { file = "debugpy-1.8.15-cp313-cp313-win_amd64.whl", hash = "sha256:73c943776cb83e36baf95e8f7f8da765896fd94b05991e7bc162456d25500683" }, + { file = "debugpy-1.8.15-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:054cd4935bd2e4964dfe1aeee4d6bca89d0c833366776fc35387f8a2f517dd00" }, + { file = "debugpy-1.8.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21c4288e662997df3176c4b9d93ee1393913fbaf320732be332d538000c53208" }, + { file = "debugpy-1.8.15-cp38-cp38-win32.whl", hash = "sha256:aaa8ce6a37d764f93fe583d7c6ca58eb7550b36941387483db113125f122bb0d" }, + { file = "debugpy-1.8.15-cp38-cp38-win_amd64.whl", hash = "sha256:71cdf7f676af78e70f005c7fad2ef9da0edc2a24befbf3ab146a51f0d58048c2" }, + { file = "debugpy-1.8.15-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:085b6d0adb3eb457c2823ac497a0690b10a99eff8b01c01a041e84579f114b56" }, + { file = "debugpy-1.8.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd546a405381d17527814852642df0a74b7da8acc20ae5f3cfad0b7c86419511" }, + { file = "debugpy-1.8.15-cp39-cp39-win32.whl", hash = "sha256:ae0d445fe11ff4351428e6c2389e904e1cdcb4a47785da5a5ec4af6c5b95fce5" }, + { file = "debugpy-1.8.15-cp39-cp39-win_amd64.whl", hash = "sha256:de7db80189ca97ab4b10a87e4039cfe4dd7ddfccc8f33b5ae40fcd33792fc67a" }, + { file = "debugpy-1.8.15-py2.py3-none-any.whl", hash = "sha256:bce2e6c5ff4f2e00b98d45e7e01a49c7b489ff6df5f12d881c67d2f1ac635f3d" }, + { file = "debugpy-1.8.15.tar.gz", hash = "sha256:58d7a20b7773ab5ee6bdfb2e6cf622fdf1e40c9d5aef2857d85391526719ac00" }, ] [[package]] name = "decorator" -version = "5.1.1" +version = "5.2.1" description = "Decorators for Humans" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, - {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, + { file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a" }, + { file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360" }, ] [[package]] @@ -754,6 +837,7 @@ version = "0.7.1" description = "XML bomb protection for Python stdlib modules" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] files = [ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, @@ -761,60 +845,60 @@ files = [ [[package]] name = "distlib" -version = "0.3.9" +version = "0.4.0" description = "Distribution utilities" optional = false python-versions = "*" +groups = ["dev"] files = [ - {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, - {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, + { file = "distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16" }, + { file = "distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d" }, ] [[package]] -name = "docutils" -version = "0.21.2" -description = "Docutils -- Python Documentation Utilities" +name = "donfig" +version = "0.8.1.post1" +description = "Python package for configuring a python package" optional = false -python-versions = ">=3.9" +python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2"}, - {file = "docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f"}, + { file = "donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d" }, + { file = "donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52" }, ] +[package.dependencies] +pyyaml = "*" + +[package.extras] +docs = ["cloudpickle", "numpydoc", "pytest", "sphinx (>=4.0.0)"] +test = ["cloudpickle", "pytest"] + [[package]] name = "executing" -version = "2.1.0" +version = "2.2.0" description = "Get the currently executing AST node of a frame, and other information" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf"}, - {file = "executing-2.1.0.tar.gz", hash = "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab"}, + { file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa" }, + { file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755" }, ] [package.extras] -tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] - -[[package]] -name = "fasteners" -version = "0.19" -description = "A python package that provides useful locks" -optional = false -python-versions = ">=3.6" -files = [ - {file = "fasteners-0.19-py3-none-any.whl", hash = "sha256:758819cb5d94cdedf4e836988b74de396ceacb8e2794d21f82d131fd9ee77237"}, - {file = "fasteners-0.19.tar.gz", hash = "sha256:b4f37c3ac52d8a445af3a66bce57b33b5e90b97c696b7b984f530cf8f0ded09c"}, -] +tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich ; python_version >= \"3.11\""] [[package]] name = "fastjsonschema" -version = "2.20.0" +version = "2.21.1" description = "Fastest Python implementation of JSON schema" optional = false python-versions = "*" +groups = ["dev"] files = [ - {file = "fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a"}, - {file = "fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23"}, + { file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667" }, + { file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4" }, ] [package.extras] @@ -822,29 +906,31 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc [[package]] name = "filelock" -version = "3.16.1" +version = "3.18.0" description = "A platform independent file lock." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, - {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, + { file = "filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de" }, + { file = "filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2" }, ] [package.extras] -docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] -typing = ["typing-extensions (>=4.12.2)"] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] +typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] [[package]] name = "fqdn" -version = "1.5.1" -description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers" +version = "1.4.0" +description = "Validate fully-qualified domain names compliant to RFC 1035 and the preferred form in RFC 3686 s. 2." optional = false -python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" +python-versions = "*" +groups = ["dev"] files = [ - {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"}, - {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"}, + { file = "fqdn-1.4.0-py3-none-any.whl", hash = "sha256:e935616ae81c9c60a22267593fe8e6af68cecc68549cc71bb9bfbcbbcb383386" }, + { file = "fqdn-1.4.0.tar.gz", hash = "sha256:30e8f2e685ce87cdace4712fd97c5d09f5e6fa519bbb66e8f188f6a7cb3a5c4e" }, ] [[package]] @@ -853,6 +939,7 @@ version = "2024.10.0" description = "File-system specification" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "fsspec-2024.10.0-py3-none-any.whl", hash = "sha256:03b9a6785766a4de40368b88906366755e2819e758b83705c88cd7cb5fe81871"}, {file = "fsspec-2024.10.0.tar.gz", hash = "sha256:eda2d8a4116d4f2429db8550f2457da57279247dd930bb12f821b58391359493"}, @@ -886,31 +973,66 @@ test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask-expr", "dask[dataframe, test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard"] tqdm = ["tqdm"] +[[package]] +name = "ghp-import" +version = "2.1.0" +description = "Copy your docs directly to the gh-pages branch." +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + { file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343" }, + { file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619" }, +] + +[package.dependencies] +python-dateutil = ">=2.8.1" + +[package.extras] +dev = ["flake8", "markdown", "twine", "wheel"] + +[[package]] +name = "griffe" +version = "1.7.3" +description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "griffe-1.7.3-py3-none-any.whl", hash = "sha256:c6b3ee30c2f0f17f30bcdef5068d6ab7a2a4f1b8bf1a3e74b56fffd21e1c5f75" }, + { file = "griffe-1.7.3.tar.gz", hash = "sha256:52ee893c6a3a968b639ace8015bec9d36594961e156e23315c8e8e51401fa50b" }, +] + +[package.dependencies] +colorama = ">=0.4" + [[package]] name = "h11" -version = "0.14.0" +version = "0.16.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, + { file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86" }, + { file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1" }, ] [[package]] name = "httpcore" -version = "1.0.6" +version = "1.0.9" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, - {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, + { file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55" }, + { file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8" }, ] [package.dependencies] certifi = "*" -h11 = ">=0.13,<0.15" +h11 = ">=0.16" [package.extras] asyncio = ["anyio (>=4.0,<5.0)"] @@ -920,13 +1042,14 @@ trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" -version = "0.27.2" +version = "0.28.1" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, - {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, + { file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad" }, + { file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc" }, ] [package.dependencies] @@ -934,10 +1057,9 @@ anyio = "*" certifi = "*" httpcore = "==1.*" idna = "*" -sniffio = "*" [package.extras] -brotli = ["brotli", "brotlicffi"] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] @@ -945,13 +1067,14 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "identify" -version = "2.6.1" +version = "2.6.12" description = "File identification library for Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "identify-2.6.1-py2.py3-none-any.whl", hash = "sha256:53863bcac7caf8d2ed85bd20312ea5dcfc22226800f6d6881f232d861db5a8f0"}, - {file = "identify-2.6.1.tar.gz", hash = "sha256:91478c5fb7c3aac5ff7bf9b4344f803843dc586832d5f110d672b19aa1984c98"}, + { file = "identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2" }, + { file = "identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6" }, ] [package.extras] @@ -963,6 +1086,7 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -971,23 +1095,13 @@ files = [ [package.extras] all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] -[[package]] -name = "imagesize" -version = "1.4.1" -description = "Getting image size from png/jpeg/jpeg2000/gif file" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, - {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, -] - [[package]] name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, @@ -999,6 +1113,7 @@ version = "6.29.5" description = "IPython Kernel for Jupyter" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, @@ -1028,57 +1143,69 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio [[package]] name = "ipython" -version = "8.29.0" +version = "9.4.0" description = "IPython: Productive Interactive Computing" optional = false -python-versions = ">=3.10" +python-versions = ">=3.11" +groups = ["dev"] files = [ - {file = "ipython-8.29.0-py3-none-any.whl", hash = "sha256:0188a1bd83267192123ccea7f4a8ed0a78910535dbaa3f37671dca76ebd429c8"}, - {file = "ipython-8.29.0.tar.gz", hash = "sha256:40b60e15b22591450eef73e40a027cf77bd652e757523eebc5bd7c7c498290eb"}, + { file = "ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066" }, + { file = "ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270" }, ] [package.dependencies] colorama = {version = "*", markers = "sys_platform == \"win32\""} decorator = "*" +ipython-pygments-lexers = "*" jedi = ">=0.16" matplotlib-inline = "*" pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} -prompt-toolkit = ">=3.0.41,<3.1.0" +prompt_toolkit = ">=3.0.41,<3.1.0" pygments = ">=2.4.0" -stack-data = "*" +stack_data = "*" traitlets = ">=5.13.0" [package.extras] -all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"] +all = ["ipython[doc,matplotlib,test,test-extra]"] black = ["black"] -doc = ["docrepr", "exceptiongroup", "intersphinx-registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli", "typing-extensions"] -kernel = ["ipykernel"] +doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinx_toml (==0.0.4)", "typing_extensions"] matplotlib = ["matplotlib"] -nbconvert = ["nbconvert"] -nbformat = ["nbformat"] -notebook = ["ipywidgets", "notebook"] -parallel = ["ipyparallel"] -qtconsole = ["qtconsole"] -test = ["packaging", "pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"] -test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"] +test = ["packaging", "pytest", "pytest-asyncio (<0.22)", "testpath"] +test-extra = ["curio", "ipykernel", "ipython[test]", "jupyter_ai", "matplotlib (!=3.2.0)", "nbclient", "nbformat", "numpy (>=1.23)", "pandas", "trio"] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +description = "Defines a variety of Pygments lexers for highlighting IPython code." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c" }, + { file = "ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81" }, +] + +[package.dependencies] +pygments = "*" [[package]] name = "ipywidgets" -version = "8.1.5" +version = "8.1.7" description = "Jupyter interactive widgets" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ - {file = "ipywidgets-8.1.5-py3-none-any.whl", hash = "sha256:3290f526f87ae6e77655555baba4f36681c555b8bdbbff430b70e52c34c86245"}, - {file = "ipywidgets-8.1.5.tar.gz", hash = "sha256:870e43b1a35656a80c18c9503bbf2d16802db1cb487eec6fab27d683381dde17"}, + { file = "ipywidgets-8.1.7-py3-none-any.whl", hash = "sha256:764f2602d25471c213919b8a1997df04bef869251db4ca8efba1b76b1bd9f7bb" }, + { file = "ipywidgets-8.1.7.tar.gz", hash = "sha256:15f1ac050b9ccbefd45dccfbb2ef6bed0029d8278682d569d71b8dd96bee0376" }, ] [package.dependencies] comm = ">=0.1.3" ipython = ">=6.1.0" -jupyterlab-widgets = ">=3.0.12,<3.1.0" +jupyterlab_widgets = ">=3.0.15,<3.1.0" traitlets = ">=4.3.1" -widgetsnbextension = ">=4.0.12,<4.1.0" +widgetsnbextension = ">=4.0.14,<4.1.0" [package.extras] test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] @@ -1089,6 +1216,7 @@ version = "20.11.0" description = "Operations with ISO 8601 durations" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, @@ -1099,32 +1227,34 @@ arrow = ">=0.15.0" [[package]] name = "jedi" -version = "0.19.1" +version = "0.19.2" description = "An autocompletion tool for Python that can be used for text editors." optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ - {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"}, - {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, + { file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9" }, + { file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0" }, ] [package.dependencies] -parso = ">=0.8.3,<0.9.0" +parso = ">=0.8.4,<0.9.0" [package.extras] docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] +testing = ["Django", "attrs", "colorama", "docopt", "pytest (<9.0.0)"] [[package]] name = "jinja2" -version = "3.1.4" +version = "3.1.6" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, + { file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67" }, + { file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d" }, ] [package.dependencies] @@ -1135,21 +1265,26 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "json5" -version = "0.9.25" +version = "0.12.0" description = "A Python implementation of the JSON5 data format." optional = false -python-versions = ">=3.8" +python-versions = ">=3.8.0" +groups = ["dev"] files = [ - {file = "json5-0.9.25-py3-none-any.whl", hash = "sha256:34ed7d834b1341a86987ed52f3f76cd8ee184394906b6e22a1e0deb9ab294e8f"}, - {file = "json5-0.9.25.tar.gz", hash = "sha256:548e41b9be043f9426776f05df8635a00fe06104ea51ed24b67f908856e151ae"}, + { file = "json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db" }, + { file = "json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a" }, ] +[package.extras] +dev = ["build (==1.2.2.post1)", "coverage (==7.5.4) ; python_version < \"3.9\"", "coverage (==7.8.0) ; python_version >= \"3.9\"", "mypy (==1.14.1) ; python_version < \"3.9\"", "mypy (==1.15.0) ; python_version >= \"3.9\"", "pip (==25.0.1)", "pylint (==3.2.7) ; python_version < \"3.9\"", "pylint (==3.3.6) ; python_version >= \"3.9\"", "ruff (==0.11.2)", "twine (==6.1.0)", "uv (==0.6.11)"] + [[package]] name = "jsonpointer" version = "3.0.0" description = "Identify specific nodes in a JSON document (RFC 6901)" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, @@ -1157,13 +1292,14 @@ files = [ [[package]] name = "jsonschema" -version = "4.23.0" +version = "4.25.0" description = "An implementation of JSON Schema validation for Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, - {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, + { file = "jsonschema-4.25.0-py3-none-any.whl", hash = "sha256:24c2e8da302de79c8b9382fee3e76b355e44d2a4364bb207159ce10b517bd716" }, + { file = "jsonschema-4.25.0.tar.gz", hash = "sha256:e63acf5c11762c0e6672ffb61482bdf57f0876684d8d249c0fe2d730d48bc55f" }, ] [package.dependencies] @@ -1176,23 +1312,25 @@ jsonschema-specifications = ">=2023.03.6" referencing = ">=0.28.4" rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} +rfc3987-syntax = { version = ">=1.1.0", optional = true, markers = "extra == \"format-nongpl\"" } rpds-py = ">=0.7.1" uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} webcolors = {version = ">=24.6.0", optional = true, markers = "extra == \"format-nongpl\""} [package.extras] format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] -format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=24.6.0)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "rfc3987-syntax (>=1.1.0)", "uri-template", "webcolors (>=24.6.0)"] [[package]] name = "jsonschema-specifications" -version = "2024.10.1" +version = "2025.4.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf"}, - {file = "jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272"}, + { file = "jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af" }, + { file = "jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608" }, ] [package.dependencies] @@ -1204,6 +1342,7 @@ version = "1.1.1" description = "Jupyter metapackage. Install all the Jupyter components in one go." optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83"}, {file = "jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a"}, @@ -1223,6 +1362,7 @@ version = "8.6.3" description = "Jupyter protocol implementation and client libraries" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, @@ -1237,7 +1377,7 @@ traitlets = ">=5.3" [package.extras] docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] +test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko ; sys_platform == \"win32\"", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] [[package]] name = "jupyter-console" @@ -1245,6 +1385,7 @@ version = "6.6.3" description = "Jupyter terminal console" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"}, {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"}, @@ -1265,13 +1406,14 @@ test = ["flaky", "pexpect", "pytest"] [[package]] name = "jupyter-core" -version = "5.7.2" +version = "5.8.1" description = "Jupyter core package. A base package on which Jupyter projects rely." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, - {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, + { file = "jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0" }, + { file = "jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941" }, ] [package.dependencies] @@ -1280,22 +1422,24 @@ pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_ traitlets = ">=5.3" [package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] -test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout"] +docs = ["intersphinx-registry", "myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-spelling", "traitlets"] +test = ["ipykernel", "pre-commit", "pytest (<9)", "pytest-cov", "pytest-timeout"] [[package]] name = "jupyter-events" -version = "0.10.0" +version = "0.12.0" description = "Jupyter Event System library" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "jupyter_events-0.10.0-py3-none-any.whl", hash = "sha256:4b72130875e59d57716d327ea70d3ebc3af1944d3717e5a498b8a06c6c159960"}, - {file = "jupyter_events-0.10.0.tar.gz", hash = "sha256:670b8229d3cc882ec782144ed22e0d29e1c2d639263f92ca8383e66682845e22"}, + { file = "jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb" }, + { file = "jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b" }, ] [package.dependencies] jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]} +packaging = "*" python-json-logger = ">=2.0.4" pyyaml = ">=5.3" referencing = "*" @@ -1305,32 +1449,34 @@ traitlets = ">=5.3" [package.extras] cli = ["click", "rich"] -docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"] +docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme (>=0.16)", "sphinx (>=8)", "sphinxcontrib-spelling"] test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"] [[package]] name = "jupyter-lsp" -version = "2.2.5" +version = "2.2.6" description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001"}, - {file = "jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da"}, + { file = "jupyter_lsp-2.2.6-py3-none-any.whl", hash = "sha256:283783752bf0b459ee7fa88effa72104d87dd343b82d5c06cf113ef755b15b6d" }, + { file = "jupyter_lsp-2.2.6.tar.gz", hash = "sha256:0566bd9bb04fd9e6774a937ed01522b555ba78be37bebef787c8ab22de4c0361" }, ] [package.dependencies] -jupyter-server = ">=1.1.2" +jupyter_server = ">=1.1.2" [[package]] name = "jupyter-server" -version = "2.14.2" +version = "2.16.0" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "jupyter_server-2.14.2-py3-none-any.whl", hash = "sha256:47ff506127c2f7851a17bf4713434208fc490955d0e8632e95014a9a9afbeefd"}, - {file = "jupyter_server-2.14.2.tar.gz", hash = "sha256:66095021aa9638ced276c248b1d81862e4c50f292d575920bbe960de1c56b12b"}, + { file = "jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e" }, + { file = "jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6" }, ] [package.dependencies] @@ -1339,7 +1485,7 @@ argon2-cffi = ">=21.1" jinja2 = ">=3.0.3" jupyter-client = ">=7.4.4" jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -jupyter-events = ">=0.9.0" +jupyter-events = ">=0.11.0" jupyter-server-terminals = ">=0.4.4" nbconvert = ">=6.4.4" nbformat = ">=5.3.0" @@ -1364,6 +1510,7 @@ version = "0.5.3" description = "A Jupyter Server Extension Providing Terminals." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, @@ -1379,13 +1526,14 @@ test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (> [[package]] name = "jupyterlab" -version = "4.2.5" +version = "4.4.4" description = "JupyterLab computational environment" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "jupyterlab-4.2.5-py3-none-any.whl", hash = "sha256:73b6e0775d41a9fee7ee756c80f58a6bed4040869ccc21411dc559818874d321"}, - {file = "jupyterlab-4.2.5.tar.gz", hash = "sha256:ae7f3a1b8cb88b4f55009ce79fa7c06f99d70cd63601ee4aa91815d054f46f75"}, + { file = "jupyterlab-4.4.4-py3-none-any.whl", hash = "sha256:711611e4f59851152eb93316c3547c3ec6291f16bb455f1f4fa380d25637e0dd" }, + { file = "jupyterlab-4.4.4.tar.gz", hash = "sha256:163fee1ef702e0a057f75d2eed3ed1da8a986d59eb002cbeb6f0c2779e6cd153" }, ] [package.dependencies] @@ -1399,14 +1547,14 @@ jupyter-server = ">=2.4.0,<3" jupyterlab-server = ">=2.27.1,<3" notebook-shim = ">=0.2" packaging = "*" -setuptools = ">=40.1.0" +setuptools = ">=41.1.0" tornado = ">=6.2.0" traitlets = "*" [package.extras] -dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.3.5)"] -docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<7.3.0)", "sphinx-copybutton"] -docs-screenshots = ["altair (==5.3.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.2)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.1.post2)", "matplotlib (==3.8.3)", "nbconvert (>=7.0.0)", "pandas (==2.2.1)", "scipy (==1.12.0)", "vega-datasets (==0.9.0)"] +dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.11.4)"] +docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<8.2.0)", "sphinx-copybutton"] +docs-screenshots = ["altair (==5.5.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.5)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.3.post1)", "matplotlib (==3.10.0)", "nbconvert (>=7.0.0)", "pandas (==2.2.3)", "scipy (==1.15.1)", "vega-datasets (==0.9.0)"] test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)", "pyyaml-include (<3.0)", "tomli-w (<2.0)"] @@ -1416,6 +1564,7 @@ version = "0.3.0" description = "Pygments theme using JupyterLab CSS variables" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, @@ -1427,6 +1576,7 @@ version = "2.27.3" description = "A set of server components for JupyterLab and JupyterLab like applications." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4"}, {file = "jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4"}, @@ -1448,49 +1598,61 @@ test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-v [[package]] name = "jupyterlab-widgets" -version = "3.0.13" +version = "3.0.15" description = "Jupyter interactive widgets for JupyterLab" optional = false python-versions = ">=3.7" +groups = ["dev"] +files = [ + { file = "jupyterlab_widgets-3.0.15-py3-none-any.whl", hash = "sha256:d59023d7d7ef71400d51e6fee9a88867f6e65e10a4201605d2d7f3e8f012a31c" }, + { file = "jupyterlab_widgets-3.0.15.tar.gz", hash = "sha256:2920888a0c2922351a9202817957a68c07d99673504d6cd37345299e971bb08b" }, +] + +[[package]] +name = "lark" +version = "1.2.2" +description = "a modern parsing library" +optional = false +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "jupyterlab_widgets-3.0.13-py3-none-any.whl", hash = "sha256:e3cda2c233ce144192f1e29914ad522b2f4c40e77214b0cc97377ca3d323db54"}, - {file = "jupyterlab_widgets-3.0.13.tar.gz", hash = "sha256:a2966d385328c1942b683a8cd96b89b8dd82c8b8f81dda902bb2bc06d46f5bed"}, + { file = "lark-1.2.2-py3-none-any.whl", hash = "sha256:c2276486b02f0f1b90be155f2c8ba4a8e194d42775786db622faccd652d8e80c" }, + { file = "lark-1.2.2.tar.gz", hash = "sha256:ca807d0162cd16cef15a8feecb862d7319e7a09bdb13aef927968e45040fed80" }, ] +[package.extras] +atomic-cache = ["atomicwrites"] +interegular = ["interegular (>=0.3.1,<0.4.0)"] +nearley = ["js2py"] +regex = ["regex"] + [[package]] name = "locket" version = "1.0.0" description = "File-based locks for Python on Linux and Windows" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["main"] files = [ {file = "locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3"}, {file = "locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632"}, ] [[package]] -name = "markdown-it-py" -version = "3.0.0" -description = "Python port of markdown-it. Markdown parsing, done right!" +name = "markdown" +version = "3.8.2" +description = "Python implementation of John Gruber's Markdown." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, - {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, + { file = "markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24" }, + { file = "markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45" }, ] -[package.dependencies] -mdurl = ">=0.1,<1.0" - [package.extras] -benchmarking = ["psutil", "pytest", "pytest-benchmark"] -code-style = ["pre-commit (>=3.0,<4.0)"] -compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] -linkify = ["linkify-it-py (>=1,<3)"] -plugins = ["mdit-py-plugins"] -profiling = ["gprof2dot"] -rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] -testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] +docs = ["mdx_gh_links (>=0.2)", "mkdocs (>=1.6)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] +testing = ["coverage", "pyyaml"] [[package]] name = "markupsafe" @@ -1498,6 +1660,7 @@ version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, @@ -1568,6 +1731,7 @@ version = "0.1.7" description = "Inline Matplotlib backend for Jupyter" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, @@ -1577,144 +1741,255 @@ files = [ traitlets = "*" [[package]] -name = "mdit-py-plugins" -version = "0.4.2" -description = "Collection of plugins for markdown-it-py" +name = "mergedeep" +version = "1.3.4" +description = "A deep merge function for 🐍." +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + { file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307" }, + { file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8" }, +] + +[[package]] +name = "mistune" +version = "3.1.3" +description = "A sane and fast Markdown parser with useful plugins and renderers" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "mdit_py_plugins-0.4.2-py3-none-any.whl", hash = "sha256:0c673c3f889399a33b95e88d2f0d111b4447bdfea7f237dab2d488f459835636"}, - {file = "mdit_py_plugins-0.4.2.tar.gz", hash = "sha256:5f2cd1fdb606ddf152d37ec30e46101a60512bc0e5fa1a7002c36647b09e26b5"}, + { file = "mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9" }, + { file = "mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0" }, +] + +[[package]] +name = "mkdocs" +version = "1.6.1" +description = "Project documentation with Markdown." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e" }, + { file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2" }, ] [package.dependencies] -markdown-it-py = ">=1.0.0,<4.0.0" +click = ">=7.0" +colorama = { version = ">=0.4", markers = "platform_system == \"Windows\"" } +ghp-import = ">=1.0" +jinja2 = ">=2.11.1" +markdown = ">=3.3.6" +markupsafe = ">=2.0.1" +mergedeep = ">=1.3.4" +mkdocs-get-deps = ">=0.2.0" +packaging = ">=20.5" +pathspec = ">=0.11.1" +pyyaml = ">=5.1" +pyyaml-env-tag = ">=0.1" +watchdog = ">=2.0" [package.extras] -code-style = ["pre-commit"] -rtd = ["myst-parser", "sphinx-book-theme"] -testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] +i18n = ["babel (>=2.9.0)"] +min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4) ; platform_system == \"Windows\"", "ghp-import (==1.0)", "importlib-metadata (==4.4) ; python_version < \"3.10\"", "jinja2 (==2.11.1)", "markdown (==3.3.6)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "mkdocs-get-deps (==0.2.0)", "packaging (==20.5)", "pathspec (==0.11.1)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "watchdog (==2.0)"] [[package]] -name = "mdurl" -version = "0.1.2" -description = "Markdown URL utilities" +name = "mkdocs-autorefs" +version = "1.4.2" +description = "Automatically link across pages in MkDocs." optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, - {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, + { file = "mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13" }, + { file = "mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749" }, ] +[package.dependencies] +Markdown = ">=3.3" +markupsafe = ">=2.0.1" +mkdocs = ">=1.1" + [[package]] -name = "mistune" -version = "3.0.2" -description = "A sane and fast Markdown parser with useful plugins and renderers" +name = "mkdocs-get-deps" +version = "0.2.0" +description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"}, - {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"}, + { file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134" }, + { file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c" }, ] +[package.dependencies] +mergedeep = ">=1.3.4" +platformdirs = ">=2.2.0" +pyyaml = ">=5.1" + [[package]] -name = "mypy" -version = "1.13.0" -description = "Optional static typing for Python" +name = "mkdocs-material" +version = "9.6.15" +description = "Documentation that simply works" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"}, - {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"}, - {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"}, - {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"}, - {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"}, - {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"}, - {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"}, - {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"}, - {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"}, - {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"}, - {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"}, - {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"}, - {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"}, - {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"}, - {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"}, - {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"}, - {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"}, - {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"}, - {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"}, - {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"}, - {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"}, - {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"}, - {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"}, - {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"}, - {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"}, - {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"}, - {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"}, - {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"}, - {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"}, - {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"}, - {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"}, - {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"}, -] - -[package.dependencies] -mypy-extensions = ">=1.0.0" -typing-extensions = ">=4.6.0" + { file = "mkdocs_material-9.6.15-py3-none-any.whl", hash = "sha256:ac969c94d4fe5eb7c924b6d2f43d7db41159ea91553d18a9afc4780c34f2717a" }, + { file = "mkdocs_material-9.6.15.tar.gz", hash = "sha256:64adf8fa8dba1a17905b6aee1894a5aafd966d4aeb44a11088519b0f5ca4f1b5" }, +] + +[package.dependencies] +babel = ">=2.10,<3.0" +backrefs = ">=5.7.post1,<6.0" +colorama = ">=0.4,<1.0" +jinja2 = ">=3.1,<4.0" +markdown = ">=3.2,<4.0" +mkdocs = ">=1.6,<2.0" +mkdocs-material-extensions = ">=1.3,<2.0" +paginate = ">=0.5,<1.0" +pygments = ">=2.16,<3.0" +pymdown-extensions = ">=10.2,<11.0" +requests = ">=2.26,<3.0" [package.extras] -dmypy = ["psutil (>=4.0)"] -faster-cache = ["orjson"] -install-types = ["pip"] -mypyc = ["setuptools (>=50)"] -reports = ["lxml"] +git = ["mkdocs-git-committers-plugin-2 (>=1.1,<3)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] +imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] +recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] [[package]] -name = "mypy-extensions" -version = "1.0.0" -description = "Type system extensions for programs checked with the mypy type checker." +name = "mkdocs-material-extensions" +version = "1.3.1" +description = "Extension pack for Python Markdown and MkDocs Material." optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, + { file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31" }, + { file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443" }, ] [[package]] -name = "myst-parser" -version = "4.0.0" -description = "An extended [CommonMark](https://spec.commonmark.org/) compliant parser," +name = "mkdocstrings" +version = "0.29.1" +description = "Automatic documentation from sources, for MkDocs." optional = false -python-versions = ">=3.10" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "myst_parser-4.0.0-py3-none-any.whl", hash = "sha256:b9317997552424448c6096c2558872fdb6f81d3ecb3a40ce84a7518798f3f28d"}, - {file = "myst_parser-4.0.0.tar.gz", hash = "sha256:851c9dfb44e36e56d15d05e72f02b80da21a9e0d07cba96baf5e2d476bb91531"}, + { file = "mkdocstrings-0.29.1-py3-none-any.whl", hash = "sha256:37a9736134934eea89cbd055a513d40a020d87dfcae9e3052c2a6b8cd4af09b6" }, + { file = "mkdocstrings-0.29.1.tar.gz", hash = "sha256:8722f8f8c5cd75da56671e0a0c1bbed1df9946c0cef74794d6141b34011abd42" }, ] [package.dependencies] -docutils = ">=0.19,<0.22" -jinja2 = "*" -markdown-it-py = ">=3.0,<4.0" -mdit-py-plugins = ">=0.4.1,<1.0" -pyyaml = "*" -sphinx = ">=7,<9" +Jinja2 = ">=2.11.1" +Markdown = ">=3.6" +MarkupSafe = ">=1.1" +mkdocs = ">=1.6" +mkdocs-autorefs = ">=1.4" +mkdocstrings-python = { version = ">=1.16.2", optional = true, markers = "extra == \"python\"" } +pymdown-extensions = ">=6.3" [package.extras] -code-style = ["pre-commit (>=3.0,<4.0)"] -linkify = ["linkify-it-py (>=2.0,<3.0)"] -rtd = ["ipython", "sphinx (>=7)", "sphinx-autodoc2 (>=0.5.0,<0.6.0)", "sphinx-book-theme (>=1.1,<2.0)", "sphinx-copybutton", "sphinx-design", "sphinx-pyscript", "sphinx-tippy (>=0.4.3)", "sphinx-togglebutton", "sphinxext-opengraph (>=0.9.0,<0.10.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)"] -testing = ["beautifulsoup4", "coverage[toml]", "defusedxml", "pytest (>=8,<9)", "pytest-cov", "pytest-param-files (>=0.6.0,<0.7.0)", "pytest-regressions", "sphinx-pytest"] -testing-docutils = ["pygments", "pytest (>=8,<9)", "pytest-param-files (>=0.6.0,<0.7.0)"] +crystal = ["mkdocstrings-crystal (>=0.3.4)"] +python = ["mkdocstrings-python (>=1.16.2)"] +python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] + +[[package]] +name = "mkdocstrings-python" +version = "1.16.12" +description = "A Python handler for mkdocstrings." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "mkdocstrings_python-1.16.12-py3-none-any.whl", hash = "sha256:22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374" }, + { file = "mkdocstrings_python-1.16.12.tar.gz", hash = "sha256:9b9eaa066e0024342d433e332a41095c4e429937024945fea511afe58f63175d" }, +] + +[package.dependencies] +griffe = ">=1.6.2" +mkdocs-autorefs = ">=1.4" +mkdocstrings = ">=0.28.3" + +[[package]] +name = "mypy" +version = "1.17.0" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "mypy-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8e08de6138043108b3b18f09d3f817a4783912e48828ab397ecf183135d84d6" }, + { file = "mypy-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce4a17920ec144647d448fc43725b5873548b1aae6c603225626747ededf582d" }, + { file = "mypy-1.17.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ff25d151cc057fdddb1cb1881ef36e9c41fa2a5e78d8dd71bee6e4dcd2bc05b" }, + { file = "mypy-1.17.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93468cf29aa9a132bceb103bd8475f78cacde2b1b9a94fd978d50d4bdf616c9a" }, + { file = "mypy-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:98189382b310f16343151f65dd7e6867386d3e35f7878c45cfa11383d175d91f" }, + { file = "mypy-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:c004135a300ab06a045c1c0d8e3f10215e71d7b4f5bb9a42ab80236364429937" }, + { file = "mypy-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9d4fe5c72fd262d9c2c91c1117d16aac555e05f5beb2bae6a755274c6eec42be" }, + { file = "mypy-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96b196e5c16f41b4f7736840e8455958e832871990c7ba26bf58175e357ed61" }, + { file = "mypy-1.17.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:73a0ff2dd10337ceb521c080d4147755ee302dcde6e1a913babd59473904615f" }, + { file = "mypy-1.17.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:24cfcc1179c4447854e9e406d3af0f77736d631ec87d31c6281ecd5025df625d" }, + { file = "mypy-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3c56f180ff6430e6373db7a1d569317675b0a451caf5fef6ce4ab365f5f2f6c3" }, + { file = "mypy-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:eafaf8b9252734400f9b77df98b4eee3d2eecab16104680d51341c75702cad70" }, + { file = "mypy-1.17.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f986f1cab8dbec39ba6e0eaa42d4d3ac6686516a5d3dccd64be095db05ebc6bb" }, + { file = "mypy-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:51e455a54d199dd6e931cd7ea987d061c2afbaf0960f7f66deef47c90d1b304d" }, + { file = "mypy-1.17.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3204d773bab5ff4ebbd1f8efa11b498027cd57017c003ae970f310e5b96be8d8" }, + { file = "mypy-1.17.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1051df7ec0886fa246a530ae917c473491e9a0ba6938cfd0ec2abc1076495c3e" }, + { file = "mypy-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f773c6d14dcc108a5b141b4456b0871df638eb411a89cd1c0c001fc4a9d08fc8" }, + { file = "mypy-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:1619a485fd0e9c959b943c7b519ed26b712de3002d7de43154a489a2d0fd817d" }, + { file = "mypy-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c41aa59211e49d717d92b3bb1238c06d387c9325d3122085113c79118bebb06" }, + { file = "mypy-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e69db1fb65b3114f98c753e3930a00514f5b68794ba80590eb02090d54a5d4a" }, + { file = "mypy-1.17.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:03ba330b76710f83d6ac500053f7727270b6b8553b0423348ffb3af6f2f7b889" }, + { file = "mypy-1.17.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:037bc0f0b124ce46bfde955c647f3e395c6174476a968c0f22c95a8d2f589bba" }, + { file = "mypy-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c38876106cb6132259683632b287238858bd58de267d80defb6f418e9ee50658" }, + { file = "mypy-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:d30ba01c0f151998f367506fab31c2ac4527e6a7b2690107c7a7f9e3cb419a9c" }, + { file = "mypy-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:63e751f1b5ab51d6f3d219fe3a2fe4523eaa387d854ad06906c63883fde5b1ab" }, + { file = "mypy-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7fb09d05e0f1c329a36dcd30e27564a3555717cde87301fae4fb542402ddfad" }, + { file = "mypy-1.17.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b72c34ce05ac3a1361ae2ebb50757fb6e3624032d91488d93544e9f82db0ed6c" }, + { file = "mypy-1.17.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:434ad499ad8dde8b2f6391ddfa982f41cb07ccda8e3c67781b1bfd4e5f9450a8" }, + { file = "mypy-1.17.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f105f61a5eff52e137fd73bee32958b2add9d9f0a856f17314018646af838e97" }, + { file = "mypy-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:ba06254a5a22729853209550d80f94e28690d5530c661f9416a68ac097b13fc4" }, + { file = "mypy-1.17.0-py3-none-any.whl", hash = "sha256:15d9d0018237ab058e5de3d8fce61b6fa72cc59cc78fd91f1b474bce12abf496" }, + { file = "mypy-1.17.0.tar.gz", hash = "sha256:e5d7ccc08ba089c06e2f5629c660388ef1fee708444f1dee0b9203fa031dee03" }, +] + +[package.dependencies] +mypy_extensions = ">=1.0.0" +pathspec = ">=0.9.0" +typing_extensions = ">=4.6.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +faster-cache = ["orjson"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505" }, + { file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558" }, +] [[package]] name = "nbclient" -version = "0.10.0" +version = "0.10.2" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." optional = false -python-versions = ">=3.8.0" +python-versions = ">=3.9.0" +groups = ["dev"] files = [ - {file = "nbclient-0.10.0-py3-none-any.whl", hash = "sha256:f13e3529332a1f1f81d82a53210322476a168bb7090a0289c795fe9cc11c9d3f"}, - {file = "nbclient-0.10.0.tar.gz", hash = "sha256:4b3f1b7dba531e498449c4db4f53da339c91d449dc11e9af3a43b4eb5c5abb09"}, + { file = "nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d" }, + { file = "nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193" }, ] [package.dependencies] @@ -1725,23 +2000,24 @@ traitlets = ">=5.4" [package.extras] dev = ["pre-commit"] -docs = ["autodoc-traits", "mock", "moto", "myst-parser", "nbclient[test]", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling"] -test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] +docs = ["autodoc-traits", "flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "mock", "moto", "myst-parser", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling", "testpath", "xmltodict"] +test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] [[package]] name = "nbconvert" -version = "7.16.4" +version = "7.16.6" description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "nbconvert-7.16.4-py3-none-any.whl", hash = "sha256:05873c620fe520b6322bf8a5ad562692343fe3452abda5765c7a34b7d1aa3eb3"}, - {file = "nbconvert-7.16.4.tar.gz", hash = "sha256:86ca91ba266b0a448dc96fa6c5b9d98affabde2867b363258703536807f9f7f4"}, + { file = "nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b" }, + { file = "nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582" }, ] [package.dependencies] beautifulsoup4 = "*" -bleach = "!=5.0.0" +bleach = { version = "!=5.0.0", extras = ["css"] } defusedxml = "*" jinja2 = ">=3.0" jupyter-core = ">=4.7" @@ -1753,7 +2029,6 @@ nbformat = ">=5.7" packaging = "*" pandocfilters = ">=1.4.1" pygments = ">=2.4.1" -tinycss2 = "*" traitlets = ">=5.1" [package.extras] @@ -1771,6 +2046,7 @@ version = "5.10.4" description = "The Jupyter Notebook format" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, @@ -1792,6 +2068,7 @@ version = "1.6.0" description = "Patch asyncio to allow nested event loops" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, @@ -1803,6 +2080,7 @@ version = "1.7.2" description = "Provides an object-oriented python interface to the netCDF version 4 library" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "netCDF4-1.7.2-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:5e9b485e3bd9294d25ff7dc9addefce42b3d23c1ee7e3627605277d159819392"}, {file = "netCDF4-1.7.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:118b476fd00d7e3ab9aa7771186d547da645ae3b49c0c7bdab866793ebf22f07"}, @@ -1850,6 +2128,7 @@ version = "1.9.1" description = "Node.js virtual environment builder" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] files = [ {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, @@ -1857,18 +2136,19 @@ files = [ [[package]] name = "notebook" -version = "7.2.2" +version = "7.4.4" description = "Jupyter Notebook - A web-based notebook environment for interactive computing" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "notebook-7.2.2-py3-none-any.whl", hash = "sha256:c89264081f671bc02eec0ed470a627ed791b9156cad9285226b31611d3e9fe1c"}, - {file = "notebook-7.2.2.tar.gz", hash = "sha256:2ef07d4220421623ad3fe88118d687bc0450055570cdd160814a59cf3a1c516e"}, + { file = "notebook-7.4.4-py3-none-any.whl", hash = "sha256:32840f7f777b6bff79bb101159336e9b332bdbfba1495b8739e34d1d65cbc1c0" }, + { file = "notebook-7.4.4.tar.gz", hash = "sha256:392fd501e266f2fb3466c6fcd3331163a2184968cb5c5accf90292e01dfe528c" }, ] [package.dependencies] jupyter-server = ">=2.4.0,<3" -jupyterlab = ">=4.2.0,<4.3" +jupyterlab = ">=4.4.4,<4.5" jupyterlab-server = ">=2.27.1,<3" notebook-shim = ">=0.2,<0.3" tornado = ">=6.2.0" @@ -1876,7 +2156,7 @@ tornado = ">=6.2.0" [package.extras] dev = ["hatch", "pre-commit"] docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] +test = ["importlib-resources (>=5.0) ; python_version < \"3.10\"", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] [[package]] name = "notebook-shim" @@ -1884,6 +2164,7 @@ version = "0.2.4" description = "A shim layer for notebook traits and config" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, @@ -1897,101 +2178,103 @@ test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync" [[package]] name = "numcodecs" -version = "0.13.1" +version = "0.16.1" description = "A Python package providing buffer compression and transformation codecs for use in data storage and communication applications." optional = false -python-versions = ">=3.10" -files = [ - {file = "numcodecs-0.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:96add4f783c5ce57cc7e650b6cac79dd101daf887c479a00a29bc1487ced180b"}, - {file = "numcodecs-0.13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:237b7171609e868a20fd313748494444458ccd696062f67e198f7f8f52000c15"}, - {file = "numcodecs-0.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96e42f73c31b8c24259c5fac6adba0c3ebf95536e37749dc6c62ade2989dca28"}, - {file = "numcodecs-0.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:eda7d7823c9282e65234731fd6bd3986b1f9e035755f7fed248d7d366bb291ab"}, - {file = "numcodecs-0.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2eda97dd2f90add98df6d295f2c6ae846043396e3d51a739ca5db6c03b5eb666"}, - {file = "numcodecs-0.13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2a86f5367af9168e30f99727ff03b27d849c31ad4522060dde0bce2923b3a8bc"}, - {file = "numcodecs-0.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233bc7f26abce24d57e44ea8ebeb5cd17084690b4e7409dd470fdb75528d615f"}, - {file = "numcodecs-0.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:796b3e6740107e4fa624cc636248a1580138b3f1c579160f260f76ff13a4261b"}, - {file = "numcodecs-0.13.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5195bea384a6428f8afcece793860b1ab0ae28143c853f0b2b20d55a8947c917"}, - {file = "numcodecs-0.13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3501a848adaddce98a71a262fee15cd3618312692aa419da77acd18af4a6a3f6"}, - {file = "numcodecs-0.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2230484e6102e5fa3cc1a5dd37ca1f92dfbd183d91662074d6f7574e3e8f53"}, - {file = "numcodecs-0.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:e5db4824ebd5389ea30e54bc8aeccb82d514d28b6b68da6c536b8fa4596f4bca"}, - {file = "numcodecs-0.13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7a60d75179fd6692e301ddfb3b266d51eb598606dcae7b9fc57f986e8d65cb43"}, - {file = "numcodecs-0.13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f593c7506b0ab248961a3b13cb148cc6e8355662ff124ac591822310bc55ecf"}, - {file = "numcodecs-0.13.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80d3071465f03522e776a31045ddf2cfee7f52df468b977ed3afdd7fe5869701"}, - {file = "numcodecs-0.13.1-cp313-cp313-win_amd64.whl", hash = "sha256:90d3065ae74c9342048ae0046006f99dcb1388b7288da5a19b3bddf9c30c3176"}, - {file = "numcodecs-0.13.1.tar.gz", hash = "sha256:a3cf37881df0898f3a9c0d4477df88133fe85185bffe57ba31bcc2fa207709bc"}, -] - -[package.dependencies] -numpy = ">=1.7" +python-versions = ">=3.11" +groups = ["main"] +files = [ + { file = "numcodecs-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5348a25aefbce37ea7c00c3363d36176155233c95597e5905a932e9620df960d" }, + { file = "numcodecs-0.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2058b0a985470809c720d2457758b61e6c9495a49d5f20dfac9b5ebabd8848eb" }, + { file = "numcodecs-0.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b216b6d7bc207b85d41fddbc25b09fd00d76e265454db6e3fb09d5da0216397" }, + { file = "numcodecs-0.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2308d56c4f84a5b942f8668b4adedd3d9cdd6a22e6e6e20768ec356c77050f38" }, + { file = "numcodecs-0.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:acd8d68b4b815e62cb91e6064a53dac51ee99849350784ee16dd52cdbb4bc70f" }, + { file = "numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122" }, + { file = "numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458" }, + { file = "numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40" }, + { file = "numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609" }, + { file = "numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df" }, + { file = "numcodecs-0.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2ad8ee940315f59188accfc3f2d39726a4ca0d76b49bf8d0018e121f01c49028" }, + { file = "numcodecs-0.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:179ca7bf3525a0f7379df7767d87dd495253de44597cb7e511198b28b09da633" }, + { file = "numcodecs-0.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e2babbb50bf348ae982818d5560af330eab0dcd925fb0e49509785ad57d11db" }, + { file = "numcodecs-0.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4b29d8d3284b72bfad4fb83d672a17f497ae86ee1ef8087bac7222b620d3d91" }, + { file = "numcodecs-0.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:06489635f43e1a959aea73cb830d78cf3adb07ac5f34daccb92091e4d9ac6b07" }, + { file = "numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1" }, +] + +[package.dependencies] +crc32c = { version = ">=2.7", optional = true, markers = "extra == \"crc32c\"" } +numpy = ">=1.24" +typing_extensions = "*" [package.extras] -docs = ["mock", "numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-issues"] +crc32c = ["crc32c (>=2.7)"] +docs = ["numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-issues"] msgpack = ["msgpack"] -pcodec = ["pcodec (>=0.2.0)"] +pcodec = ["pcodec (>=0.3,<0.4)"] test = ["coverage", "pytest", "pytest-cov"] -test-extras = ["importlib-metadata"] -zfpy = ["numpy (<2.0.0)", "zfpy (>=1.0.0)"] +test-extras = ["importlib_metadata"] +zfpy = ["zfpy (>=1.0.0)"] [[package]] name = "numpy" -version = "2.1.2" +version = "2.3.1" description = "Fundamental package for array computing in Python" optional = false -python-versions = ">=3.10" -files = [ - {file = "numpy-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:30d53720b726ec36a7f88dc873f0eec8447fbc93d93a8f079dfac2629598d6ee"}, - {file = "numpy-2.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8d3ca0a72dd8846eb6f7dfe8f19088060fcb76931ed592d29128e0219652884"}, - {file = "numpy-2.1.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:fc44e3c68ff00fd991b59092a54350e6e4911152682b4782f68070985aa9e648"}, - {file = "numpy-2.1.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:7c1c60328bd964b53f8b835df69ae8198659e2b9302ff9ebb7de4e5a5994db3d"}, - {file = "numpy-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cdb606a7478f9ad91c6283e238544451e3a95f30fb5467fbf715964341a8a86"}, - {file = "numpy-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d666cb72687559689e9906197e3bec7b736764df6a2e58ee265e360663e9baf7"}, - {file = "numpy-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c6eef7a2dbd0abfb0d9eaf78b73017dbfd0b54051102ff4e6a7b2980d5ac1a03"}, - {file = "numpy-2.1.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:12edb90831ff481f7ef5f6bc6431a9d74dc0e5ff401559a71e5e4611d4f2d466"}, - {file = "numpy-2.1.2-cp310-cp310-win32.whl", hash = "sha256:a65acfdb9c6ebb8368490dbafe83c03c7e277b37e6857f0caeadbbc56e12f4fb"}, - {file = "numpy-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:860ec6e63e2c5c2ee5e9121808145c7bf86c96cca9ad396c0bd3e0f2798ccbe2"}, - {file = "numpy-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b42a1a511c81cc78cbc4539675713bbcf9d9c3913386243ceff0e9429ca892fe"}, - {file = "numpy-2.1.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:faa88bc527d0f097abdc2c663cddf37c05a1c2f113716601555249805cf573f1"}, - {file = "numpy-2.1.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:c82af4b2ddd2ee72d1fc0c6695048d457e00b3582ccde72d8a1c991b808bb20f"}, - {file = "numpy-2.1.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:13602b3174432a35b16c4cfb5de9a12d229727c3dd47a6ce35111f2ebdf66ff4"}, - {file = "numpy-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ebec5fd716c5a5b3d8dfcc439be82a8407b7b24b230d0ad28a81b61c2f4659a"}, - {file = "numpy-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2b49c3c0804e8ecb05d59af8386ec2f74877f7ca8fd9c1e00be2672e4d399b1"}, - {file = "numpy-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2cbba4b30bf31ddbe97f1c7205ef976909a93a66bb1583e983adbd155ba72ac2"}, - {file = "numpy-2.1.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8e00ea6fc82e8a804433d3e9cedaa1051a1422cb6e443011590c14d2dea59146"}, - {file = "numpy-2.1.2-cp311-cp311-win32.whl", hash = "sha256:5006b13a06e0b38d561fab5ccc37581f23c9511879be7693bd33c7cd15ca227c"}, - {file = "numpy-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:f1eb068ead09f4994dec71c24b2844f1e4e4e013b9629f812f292f04bd1510d9"}, - {file = "numpy-2.1.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d7bf0a4f9f15b32b5ba53147369e94296f5fffb783db5aacc1be15b4bf72f43b"}, - {file = "numpy-2.1.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b1d0fcae4f0949f215d4632be684a539859b295e2d0cb14f78ec231915d644db"}, - {file = "numpy-2.1.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f751ed0a2f250541e19dfca9f1eafa31a392c71c832b6bb9e113b10d050cb0f1"}, - {file = "numpy-2.1.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:bd33f82e95ba7ad632bc57837ee99dba3d7e006536200c4e9124089e1bf42426"}, - {file = "numpy-2.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b8cde4f11f0a975d1fd59373b32e2f5a562ade7cde4f85b7137f3de8fbb29a0"}, - {file = "numpy-2.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d95f286b8244b3649b477ac066c6906fbb2905f8ac19b170e2175d3d799f4df"}, - {file = "numpy-2.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ab4754d432e3ac42d33a269c8567413bdb541689b02d93788af4131018cbf366"}, - {file = "numpy-2.1.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e585c8ae871fd38ac50598f4763d73ec5497b0de9a0ab4ef5b69f01c6a046142"}, - {file = "numpy-2.1.2-cp312-cp312-win32.whl", hash = "sha256:9c6c754df29ce6a89ed23afb25550d1c2d5fdb9901d9c67a16e0b16eaf7e2550"}, - {file = "numpy-2.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:456e3b11cb79ac9946c822a56346ec80275eaf2950314b249b512896c0d2505e"}, - {file = "numpy-2.1.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a84498e0d0a1174f2b3ed769b67b656aa5460c92c9554039e11f20a05650f00d"}, - {file = "numpy-2.1.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4d6ec0d4222e8ffdab1744da2560f07856421b367928026fb540e1945f2eeeaf"}, - {file = "numpy-2.1.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:259ec80d54999cc34cd1eb8ded513cb053c3bf4829152a2e00de2371bd406f5e"}, - {file = "numpy-2.1.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:675c741d4739af2dc20cd6c6a5c4b7355c728167845e3c6b0e824e4e5d36a6c3"}, - {file = "numpy-2.1.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05b2d4e667895cc55e3ff2b56077e4c8a5604361fc21a042845ea3ad67465aa8"}, - {file = "numpy-2.1.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43cca367bf94a14aca50b89e9bc2061683116cfe864e56740e083392f533ce7a"}, - {file = "numpy-2.1.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:76322dcdb16fccf2ac56f99048af32259dcc488d9b7e25b51e5eca5147a3fb98"}, - {file = "numpy-2.1.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:32e16a03138cabe0cb28e1007ee82264296ac0983714094380b408097a418cfe"}, - {file = "numpy-2.1.2-cp313-cp313-win32.whl", hash = "sha256:242b39d00e4944431a3cd2db2f5377e15b5785920421993770cddb89992c3f3a"}, - {file = "numpy-2.1.2-cp313-cp313-win_amd64.whl", hash = "sha256:f2ded8d9b6f68cc26f8425eda5d3877b47343e68ca23d0d0846f4d312ecaa445"}, - {file = "numpy-2.1.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2ffef621c14ebb0188a8633348504a35c13680d6da93ab5cb86f4e54b7e922b5"}, - {file = "numpy-2.1.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ad369ed238b1959dfbade9018a740fb9392c5ac4f9b5173f420bd4f37ba1f7a0"}, - {file = "numpy-2.1.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d82075752f40c0ddf57e6e02673a17f6cb0f8eb3f587f63ca1eaab5594da5b17"}, - {file = "numpy-2.1.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:1600068c262af1ca9580a527d43dc9d959b0b1d8e56f8a05d830eea39b7c8af6"}, - {file = "numpy-2.1.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a26ae94658d3ba3781d5e103ac07a876b3e9b29db53f68ed7df432fd033358a8"}, - {file = "numpy-2.1.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13311c2db4c5f7609b462bc0f43d3c465424d25c626d95040f073e30f7570e35"}, - {file = "numpy-2.1.2-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:2abbf905a0b568706391ec6fa15161fad0fb5d8b68d73c461b3c1bab6064dd62"}, - {file = "numpy-2.1.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:ef444c57d664d35cac4e18c298c47d7b504c66b17c2ea91312e979fcfbdfb08a"}, - {file = "numpy-2.1.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:bdd407c40483463898b84490770199d5714dcc9dd9b792f6c6caccc523c00952"}, - {file = "numpy-2.1.2-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:da65fb46d4cbb75cb417cddf6ba5e7582eb7bb0b47db4b99c9fe5787ce5d91f5"}, - {file = "numpy-2.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c193d0b0238638e6fc5f10f1b074a6993cb13b0b431f64079a509d63d3aa8b7"}, - {file = "numpy-2.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a7d80b2e904faa63068ead63107189164ca443b42dd1930299e0d1cb041cec2e"}, - {file = "numpy-2.1.2.tar.gz", hash = "sha256:13532a088217fa624c99b843eeb54640de23b3414b14aa66d023805eb731066c"}, +python-versions = ">=3.11" +groups = ["main"] +files = [ + { file = "numpy-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6ea9e48336a402551f52cd8f593343699003d2353daa4b72ce8d34f66b722070" }, + { file = "numpy-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ccb7336eaf0e77c1635b232c141846493a588ec9ea777a7c24d7166bb8533ae" }, + { file = "numpy-2.3.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0bb3a4a61e1d327e035275d2a993c96fa786e4913aa089843e6a2d9dd205c66a" }, + { file = "numpy-2.3.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:e344eb79dab01f1e838ebb67aab09965fb271d6da6b00adda26328ac27d4a66e" }, + { file = "numpy-2.3.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:467db865b392168ceb1ef1ffa6f5a86e62468c43e0cfb4ab6da667ede10e58db" }, + { file = "numpy-2.3.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:afed2ce4a84f6b0fc6c1ce734ff368cbf5a5e24e8954a338f3bdffa0718adffb" }, + { file = "numpy-2.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0025048b3c1557a20bc80d06fdeb8cc7fc193721484cca82b2cfa072fec71a93" }, + { file = "numpy-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a5ee121b60aa509679b682819c602579e1df14a5b07fe95671c8849aad8f2115" }, + { file = "numpy-2.3.1-cp311-cp311-win32.whl", hash = "sha256:a8b740f5579ae4585831b3cf0e3b0425c667274f82a484866d2adf9570539369" }, + { file = "numpy-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:d4580adadc53311b163444f877e0789f1c8861e2698f6b2a4ca852fda154f3ff" }, + { file = "numpy-2.3.1-cp311-cp311-win_arm64.whl", hash = "sha256:ec0bdafa906f95adc9a0c6f26a4871fa753f25caaa0e032578a30457bff0af6a" }, + { file = "numpy-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2959d8f268f3d8ee402b04a9ec4bb7604555aeacf78b360dc4ec27f1d508177d" }, + { file = "numpy-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:762e0c0c6b56bdedfef9a8e1d4538556438288c4276901ea008ae44091954e29" }, + { file = "numpy-2.3.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:867ef172a0976aaa1f1d1b63cf2090de8b636a7674607d514505fb7276ab08fc" }, + { file = "numpy-2.3.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:4e602e1b8682c2b833af89ba641ad4176053aaa50f5cacda1a27004352dde943" }, + { file = "numpy-2.3.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8e333040d069eba1652fb08962ec5b76af7f2c7bce1df7e1418c8055cf776f25" }, + { file = "numpy-2.3.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e7cbf5a5eafd8d230a3ce356d892512185230e4781a361229bd902ff403bc660" }, + { file = "numpy-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f1b8f26d1086835f442286c1d9b64bb3974b0b1e41bb105358fd07d20872952" }, + { file = "numpy-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ee8340cb48c9b7a5899d1149eece41ca535513a9698098edbade2a8e7a84da77" }, + { file = "numpy-2.3.1-cp312-cp312-win32.whl", hash = "sha256:e772dda20a6002ef7061713dc1e2585bc1b534e7909b2030b5a46dae8ff077ab" }, + { file = "numpy-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:cfecc7822543abdea6de08758091da655ea2210b8ffa1faf116b940693d3df76" }, + { file = "numpy-2.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:7be91b2239af2658653c5bb6f1b8bccafaf08226a258caf78ce44710a0160d30" }, + { file = "numpy-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25a1992b0a3fdcdaec9f552ef10d8103186f5397ab45e2d25f8ac51b1a6b97e8" }, + { file = "numpy-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7dea630156d39b02a63c18f508f85010230409db5b2927ba59c8ba4ab3e8272e" }, + { file = "numpy-2.3.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bada6058dd886061f10ea15f230ccf7dfff40572e99fef440a4a857c8728c9c0" }, + { file = "numpy-2.3.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:a894f3816eb17b29e4783e5873f92faf55b710c2519e5c351767c51f79d8526d" }, + { file = "numpy-2.3.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:18703df6c4a4fee55fd3d6e5a253d01c5d33a295409b03fda0c86b3ca2ff41a1" }, + { file = "numpy-2.3.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5902660491bd7a48b2ec16c23ccb9124b8abfd9583c5fdfa123fe6b421e03de1" }, + { file = "numpy-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:36890eb9e9d2081137bd78d29050ba63b8dab95dff7912eadf1185e80074b2a0" }, + { file = "numpy-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a780033466159c2270531e2b8ac063704592a0bc62ec4a1b991c7c40705eb0e8" }, + { file = "numpy-2.3.1-cp313-cp313-win32.whl", hash = "sha256:39bff12c076812595c3a306f22bfe49919c5513aa1e0e70fac756a0be7c2a2b8" }, + { file = "numpy-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d5ee6eec45f08ce507a6570e06f2f879b374a552087a4179ea7838edbcbfa42" }, + { file = "numpy-2.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:0c4d9e0a8368db90f93bd192bfa771ace63137c3488d198ee21dfb8e7771916e" }, + { file = "numpy-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b0b5397374f32ec0649dd98c652a1798192042e715df918c20672c62fb52d4b8" }, + { file = "numpy-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c5bdf2015ccfcee8253fb8be695516ac4457c743473a43290fd36eba6a1777eb" }, + { file = "numpy-2.3.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d70f20df7f08b90a2062c1f07737dd340adccf2068d0f1b9b3d56e2038979fee" }, + { file = "numpy-2.3.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:2fb86b7e58f9ac50e1e9dd1290154107e47d1eef23a0ae9145ded06ea606f992" }, + { file = "numpy-2.3.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:23ab05b2d241f76cb883ce8b9a93a680752fbfcbd51c50eff0b88b979e471d8c" }, + { file = "numpy-2.3.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ce2ce9e5de4703a673e705183f64fd5da5bf36e7beddcb63a25ee2286e71ca48" }, + { file = "numpy-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c4913079974eeb5c16ccfd2b1f09354b8fed7e0d6f2cab933104a09a6419b1ee" }, + { file = "numpy-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:010ce9b4f00d5c036053ca684c77441f2f2c934fd23bee058b4d6f196efd8280" }, + { file = "numpy-2.3.1-cp313-cp313t-win32.whl", hash = "sha256:6269b9edfe32912584ec496d91b00b6d34282ca1d07eb10e82dfc780907d6c2e" }, + { file = "numpy-2.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2a809637460e88a113e186e87f228d74ae2852a2e0c44de275263376f17b5bdc" }, + { file = "numpy-2.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:eccb9a159db9aed60800187bc47a6d3451553f0e1b08b068d8b277ddfbb9b244" }, + { file = "numpy-2.3.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ad506d4b09e684394c42c966ec1527f6ebc25da7f4da4b1b056606ffe446b8a3" }, + { file = "numpy-2.3.1-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:ebb8603d45bc86bbd5edb0d63e52c5fd9e7945d3a503b77e486bd88dde67a19b" }, + { file = "numpy-2.3.1-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:15aa4c392ac396e2ad3d0a2680c0f0dee420f9fed14eef09bdb9450ee6dcb7b7" }, + { file = "numpy-2.3.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c6e0bf9d1a2f50d2b65a7cf56db37c095af17b59f6c132396f7c6d5dd76484df" }, + { file = "numpy-2.3.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:eabd7e8740d494ce2b4ea0ff05afa1b7b291e978c0ae075487c51e8bd93c0c68" }, + { file = "numpy-2.3.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:e610832418a2bc09d974cc9fecebfa51e9532d6190223bc5ef6a7402ebf3b5cb" }, + { file = "numpy-2.3.1.tar.gz", hash = "sha256:1ec9ae20a4226da374362cca3c62cd753faf2f951440b0e3b98e93c235441d2b" }, ] [[package]] @@ -2000,6 +2283,7 @@ version = "7.7.0" description = "A decorator to automatically detect mismatch when overriding a method." optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, @@ -2011,17 +2295,35 @@ version = "24.1" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, ] +[[package]] +name = "paginate" +version = "0.5.7" +description = "Divides large result sets into pages for easier browsing" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + { file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591" }, + { file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945" }, +] + +[package.extras] +dev = ["pytest", "tox"] +lint = ["black"] + [[package]] name = "pandas" version = "2.2.3" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"}, {file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"}, @@ -2104,6 +2406,7 @@ version = "1.5.1" description = "Utilities for writing pandoc filters in python" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["dev"] files = [ {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, @@ -2115,6 +2418,7 @@ version = "0.8.4" description = "A Python Parser" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, @@ -2130,6 +2434,7 @@ version = "1.4.2" description = "Appendable key-value storage" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f"}, {file = "partd-1.4.2.tar.gz", hash = "sha256:d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c"}, @@ -2148,6 +2453,7 @@ version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, @@ -2159,6 +2465,8 @@ version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." optional = false python-versions = "*" +groups = ["dev"] +markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" files = [ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, @@ -2169,19 +2477,20 @@ ptyprocess = ">=0.5" [[package]] name = "platformdirs" -version = "4.3.6" +version = "4.3.8" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, + { file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4" }, + { file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc" }, ] [package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.4)", "pytest-cov (>=6)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.14.1)"] [[package]] name = "pluggy" @@ -2189,6 +2498,7 @@ version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, @@ -2200,13 +2510,14 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "pre-commit" -version = "3.8.0" +version = "4.2.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "pre_commit-3.8.0-py2.py3-none-any.whl", hash = "sha256:9a90a53bf82fdd8778d58085faf8d83df56e40dfe18f45b19446e26bf1b3a63f"}, - {file = "pre_commit-3.8.0.tar.gz", hash = "sha256:8bb6494d4a20423842e198980c9ecf9f96607a07ea29549e180eef9ae80fe7af"}, + { file = "pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd" }, + { file = "pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146" }, ] [package.dependencies] @@ -2218,13 +2529,14 @@ virtualenv = ">=20.10.0" [[package]] name = "prometheus-client" -version = "0.21.0" +version = "0.22.1" description = "Python client for the Prometheus monitoring system." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "prometheus_client-0.21.0-py3-none-any.whl", hash = "sha256:4fa6b4dd0ac16d58bb587c04b1caae65b8c5043e85f778f42f5f632f6af2e166"}, - {file = "prometheus_client-0.21.0.tar.gz", hash = "sha256:96c83c606b71ff2b0a433c98889d275f51ffec6c5e267de37c7a2b5c9aa9233e"}, + { file = "prometheus_client-0.22.1-py3-none-any.whl", hash = "sha256:cca895342e308174341b2cbf99a56bef291fbc0ef7b9e5412a0f26d653ba7094" }, + { file = "prometheus_client-0.22.1.tar.gz", hash = "sha256:190f1331e783cf21eb60bca559354e0a4d4378facecf78f5428c39b675d20d28" }, ] [package.extras] @@ -2232,13 +2544,14 @@ twisted = ["twisted"] [[package]] name = "prompt-toolkit" -version = "3.0.48" +version = "3.0.51" description = "Library for building powerful interactive command lines in Python" optional = false -python-versions = ">=3.7.0" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e"}, - {file = "prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90"}, + { file = "prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07" }, + { file = "prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed" }, ] [package.dependencies] @@ -2246,32 +2559,26 @@ wcwidth = "*" [[package]] name = "psutil" -version = "6.1.0" -description = "Cross-platform lib for process and system monitoring in Python." +version = "7.0.0" +description = "Cross-platform lib for process and system monitoring in Python. NOTE: the syntax of this script MUST be kept compatible with Python 2.7." optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +python-versions = ">=3.6" +groups = ["dev"] files = [ - {file = "psutil-6.1.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ff34df86226c0227c52f38b919213157588a678d049688eded74c76c8ba4a5d0"}, - {file = "psutil-6.1.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:c0e0c00aa18ca2d3b2b991643b799a15fc8f0563d2ebb6040f64ce8dc027b942"}, - {file = "psutil-6.1.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:000d1d1ebd634b4efb383f4034437384e44a6d455260aaee2eca1e9c1b55f047"}, - {file = "psutil-6.1.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:5cd2bcdc75b452ba2e10f0e8ecc0b57b827dd5d7aaffbc6821b2a9a242823a76"}, - {file = "psutil-6.1.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:045f00a43c737f960d273a83973b2511430d61f283a44c96bf13a6e829ba8fdc"}, - {file = "psutil-6.1.0-cp27-none-win32.whl", hash = "sha256:9118f27452b70bb1d9ab3198c1f626c2499384935aaf55388211ad982611407e"}, - {file = "psutil-6.1.0-cp27-none-win_amd64.whl", hash = "sha256:a8506f6119cff7015678e2bce904a4da21025cc70ad283a53b099e7620061d85"}, - {file = "psutil-6.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6e2dcd475ce8b80522e51d923d10c7871e45f20918e027ab682f94f1c6351688"}, - {file = "psutil-6.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0895b8414afafc526712c498bd9de2b063deaac4021a3b3c34566283464aff8e"}, - {file = "psutil-6.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9dcbfce5d89f1d1f2546a2090f4fcf87c7f669d1d90aacb7d7582addece9fb38"}, - {file = "psutil-6.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:498c6979f9c6637ebc3a73b3f87f9eb1ec24e1ce53a7c5173b8508981614a90b"}, - {file = "psutil-6.1.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d905186d647b16755a800e7263d43df08b790d709d575105d419f8b6ef65423a"}, - {file = "psutil-6.1.0-cp36-cp36m-win32.whl", hash = "sha256:6d3fbbc8d23fcdcb500d2c9f94e07b1342df8ed71b948a2649b5cb060a7c94ca"}, - {file = "psutil-6.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1209036fbd0421afde505a4879dee3b2fd7b1e14fee81c0069807adcbbcca747"}, - {file = "psutil-6.1.0-cp37-abi3-win32.whl", hash = "sha256:1ad45a1f5d0b608253b11508f80940985d1d0c8f6111b5cb637533a0e6ddc13e"}, - {file = "psutil-6.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:a8fb3752b491d246034fa4d279ff076501588ce8cbcdbb62c32fd7a377d996be"}, - {file = "psutil-6.1.0.tar.gz", hash = "sha256:353815f59a7f64cdaca1c0307ee13558a0512f6db064e92fe833784f08539c7a"}, -] - -[package.extras] -dev = ["black", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest-cov", "requests", "rstcheck", "ruff", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "wheel"] + { file = "psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25" }, + { file = "psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da" }, + { file = "psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91" }, + { file = "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" }, + { file = "psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993" }, + { file = "psutil-7.0.0-cp36-cp36m-win32.whl", hash = "sha256:84df4eb63e16849689f76b1ffcb36db7b8de703d1bc1fe41773db487621b6c17" }, + { file = "psutil-7.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1e744154a6580bc968a0195fd25e80432d3afec619daf145b9e5ba16cc1d688e" }, + { file = "psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99" }, + { file = "psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553" }, + { file = "psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456" }, +] + +[package.extras] +dev = ["abi3audit", "black (==24.10.0)", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest", "pytest-cov", "pytest-xdist", "requests", "rstcheck", "ruff", "setuptools", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "vulture", "wheel"] test = ["pytest", "pytest-xdist", "setuptools"] [[package]] @@ -2280,6 +2587,8 @@ version = "0.7.0" description = "Run a subprocess in a pseudo terminal" optional = false python-versions = "*" +groups = ["dev"] +markers = "os_name != \"nt\" or sys_platform != \"win32\" and sys_platform != \"emscripten\"" files = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, @@ -2291,6 +2600,7 @@ version = "0.2.3" description = "Safely evaluate AST nodes without side effects" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, @@ -2305,6 +2615,7 @@ version = "2.22" description = "C parser in Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, @@ -2312,123 +2623,133 @@ files = [ [[package]] name = "pydantic" -version = "2.9.2" +version = "2.11.7" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, - {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, + { file = "pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b" }, + { file = "pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db" }, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.23.4" -typing-extensions = [ - {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, - {version = ">=4.6.1", markers = "python_version < \"3.13\""}, -] +pydantic-core = "2.33.2" +typing-extensions = ">=4.12.2" +typing-inspection = ">=0.4.0" [package.extras] email = ["email-validator (>=2.0.0)"] -timezone = ["tzdata"] +timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""] [[package]] name = "pydantic-core" -version = "2.23.4" +version = "2.33.2" description = "Core functionality for Pydantic validation and serialization" optional = false -python-versions = ">=3.8" -files = [ - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, - {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, - {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, - {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, - {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, - {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, - {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, - {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, - {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, - {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, - {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, - {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, - {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, - {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, - {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, - {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, - {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, - {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, - {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, - {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, - {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, - {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, - {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, - {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, - {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, - {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, - {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, - {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, - {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, - {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, +python-versions = ">=3.9" +groups = ["main"] +files = [ + { file = "pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8" }, + { file = "pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d" }, + { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d" }, + { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d53b22f2032c42eaaf025f7c40c2e3b94568ae077a606f006d206a463bc69572" }, + { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0405262705a123b7ce9f0b92f123334d67b70fd1f20a9372b907ce1080c7ba02" }, + { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b25d91e288e2c4e0662b8038a28c6a07eaac3e196cfc4ff69de4ea3db992a1b" }, + { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bdfe4b3789761f3bcb4b1ddf33355a71079858958e3a552f16d5af19768fef2" }, + { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:efec8db3266b76ef9607c2c4c419bdb06bf335ae433b80816089ea7585816f6a" }, + { file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:031c57d67ca86902726e0fae2214ce6770bbe2f710dc33063187a68744a5ecac" }, + { file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:f8de619080e944347f5f20de29a975c2d815d9ddd8be9b9b7268e2e3ef68605a" }, + { file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73662edf539e72a9440129f231ed3757faab89630d291b784ca99237fb94db2b" }, + { file = "pydantic_core-2.33.2-cp310-cp310-win32.whl", hash = "sha256:0a39979dcbb70998b0e505fb1556a1d550a0781463ce84ebf915ba293ccb7e22" }, + { file = "pydantic_core-2.33.2-cp310-cp310-win_amd64.whl", hash = "sha256:b0379a2b24882fef529ec3b4987cb5d003b9cda32256024e6fe1586ac45fc640" }, + { file = "pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7" }, + { file = "pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246" }, + { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f" }, + { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc" }, + { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de" }, + { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a" }, + { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef" }, + { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e" }, + { file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d" }, + { file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30" }, + { file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf" }, + { file = "pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51" }, + { file = "pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab" }, + { file = "pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65" }, + { file = "pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc" }, + { file = "pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7" }, + { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025" }, + { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011" }, + { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f" }, + { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88" }, + { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1" }, + { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b" }, + { file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1" }, + { file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6" }, + { file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea" }, + { file = "pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290" }, + { file = "pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2" }, + { file = "pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab" }, + { file = "pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f" }, + { file = "pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6" }, + { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef" }, + { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a" }, + { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916" }, + { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a" }, + { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d" }, + { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56" }, + { file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5" }, + { file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e" }, + { file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162" }, + { file = "pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849" }, + { file = "pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9" }, + { file = "pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9" }, + { file = "pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac" }, + { file = "pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5" }, + { file = "pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9" }, + { file = "pydantic_core-2.33.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a2b911a5b90e0374d03813674bf0a5fbbb7741570dcd4b4e85a2e48d17def29d" }, + { file = "pydantic_core-2.33.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6fa6dfc3e4d1f734a34710f391ae822e0a8eb8559a85c6979e14e65ee6ba2954" }, + { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c54c939ee22dc8e2d545da79fc5381f1c020d6d3141d3bd747eab59164dc89fb" }, + { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53a57d2ed685940a504248187d5685e49eb5eef0f696853647bf37c418c538f7" }, + { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09fb9dd6571aacd023fe6aaca316bd01cf60ab27240d7eb39ebd66a3a15293b4" }, + { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e6116757f7959a712db11f3e9c0a99ade00a5bbedae83cb801985aa154f071b" }, + { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d55ab81c57b8ff8548c3e4947f119551253f4e3787a7bbc0b6b3ca47498a9d3" }, + { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c20c462aa4434b33a2661701b861604913f912254e441ab8d78d30485736115a" }, + { file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44857c3227d3fb5e753d5fe4a3420d6376fa594b07b621e220cd93703fe21782" }, + { file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:eb9b459ca4df0e5c87deb59d37377461a538852765293f9e6ee834f0435a93b9" }, + { file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9fcd347d2cc5c23b06de6d3b7b8275be558a0c90549495c699e379a80bf8379e" }, + { file = "pydantic_core-2.33.2-cp39-cp39-win32.whl", hash = "sha256:83aa99b1285bc8f038941ddf598501a86f1536789740991d7d8756e34f1e74d9" }, + { file = "pydantic_core-2.33.2-cp39-cp39-win_amd64.whl", hash = "sha256:f481959862f57f29601ccced557cc2e817bce7533ab8e01a797a48b49c9692b3" }, + { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c4aa4e82353f65e548c476b37e64189783aa5384903bfea4f41580f255fddfa" }, + { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d946c8bf0d5c24bf4fe333af284c59a19358aa3ec18cb3dc4370080da1e8ad29" }, + { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87b31b6846e361ef83fedb187bb5b4372d0da3f7e28d85415efa92d6125d6e6d" }, + { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa9d91b338f2df0508606f7009fde642391425189bba6d8c653afd80fd6bb64e" }, + { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2058a32994f1fde4ca0480ab9d1e75a0e8c87c22b53a3ae66554f9af78f2fe8c" }, + { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:0e03262ab796d986f978f79c943fc5f620381be7287148b8010b4097f79a39ec" }, + { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1a8695a8d00c73e50bff9dfda4d540b7dee29ff9b8053e38380426a85ef10052" }, + { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fa754d1850735a0b0e03bcffd9d4b4343eb417e47196e4485d9cca326073a42c" }, + { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a11c8d26a50bfab49002947d3d237abe4d9e4b5bdc8846a63537b6488e197808" }, + { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8" }, + { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593" }, + { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612" }, + { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7" }, + { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e" }, + { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8" }, + { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf" }, + { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb" }, + { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1" }, + { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:87acbfcf8e90ca885206e98359d7dca4bcbb35abdc0ff66672a293e1d7a19101" }, + { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7f92c15cd1e97d4b12acd1cc9004fa092578acfa57b67ad5e43a197175d01a64" }, + { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3f26877a748dc4251cfcfda9dfb5f13fcb034f5308388066bcfe9031b63ae7d" }, + { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac89aea9af8cd672fa7b510e7b8c33b0bba9a43186680550ccf23020f32d535" }, + { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:970919794d126ba8645f3837ab6046fb4e72bbc057b3709144066204c19a455d" }, + { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3eb3fe62804e8f859c49ed20a8451342de53ed764150cb14ca71357c765dc2a6" }, + { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:3abcd9392a36025e3bd55f9bd38d908bd17962cc49bc6da8e7e96285336e2bca" }, + { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3a1c81334778f9e3af2f8aeb7a960736e5cab1dfebfb26aabca09afd2906c039" }, + { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2807668ba86cb38c6817ad9bc66215ab8584d1d304030ce4f0887336f28a5e27" }, + { file = "pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc" }, ] [package.dependencies] @@ -2440,6 +2761,7 @@ version = "2.18.0" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, @@ -2449,79 +2771,91 @@ files = [ windows-terminal = ["colorama (>=0.4.6)"] [[package]] -name = "pyproj" -version = "3.7.0" -description = "Python interface to PROJ (cartographic projections and coordinate transformations library)" +name = "pymdown-extensions" +version = "10.16" +description = "Extension pack for Python Markdown." optional = false -python-versions = ">=3.10" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "pyproj-3.7.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d5c7e7d24b967e328a5efd013f466804a1f226d1106ac7efc47dcc99360dbc8f"}, - {file = "pyproj-3.7.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:448958c46bd3fe2da91c89ba551ac5835e63073ca861422c6eb1af89979dfab1"}, - {file = "pyproj-3.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f673ca345bb92afc93d4235938ca0c9a76237aa7addf42a95965c8dc8cad9b49"}, - {file = "pyproj-3.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee60895f60cbd1a9c903ab2bc22adea63004296a1c28b8775a11cf50905cf085"}, - {file = "pyproj-3.7.0-cp310-cp310-win32.whl", hash = "sha256:0dd31b0740ee010934234f848d2d092c66146cb8d0ba009a64e41d192caa7686"}, - {file = "pyproj-3.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:7943d85ba39e89c51b920339ff63162d63bf89da161f0acb6206b0d39b11661e"}, - {file = "pyproj-3.7.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:e66d8d42dbdf232e121546c5a1dec097caf0454e4885c09a8e03cdcee0753c03"}, - {file = "pyproj-3.7.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:7764b64a0aefe40134a2828b3a40be88f6c8b7832c45d8a9f2bd592ace4b2a3b"}, - {file = "pyproj-3.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53c442c5081dc95346996f5c4323fde2caafc69c6e60b4707aa46e88244f1e04"}, - {file = "pyproj-3.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc5b305d4d5d7697885681d9b660623e328227612823d5c660e0a9566cb48838"}, - {file = "pyproj-3.7.0-cp311-cp311-win32.whl", hash = "sha256:de2b47d748dc41cccb6b3b713d4d7dc9aa1046a82141c8665026908726426abc"}, - {file = "pyproj-3.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:38cba7c4c5679e40242dd959133e95b908d3b912dd66291094fd13510e8517ff"}, - {file = "pyproj-3.7.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:8cbec92bdd6e9933ca08795c12717d1384e9b51cf4b1acf0d753db255a75c51e"}, - {file = "pyproj-3.7.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:8c4a8e4d3ba76c3adac3c087544cf92f7f9a19ea34946904a13fca48cc1c0106"}, - {file = "pyproj-3.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82624fb42aa31f6b1a860fbc0316babd07fd712642bc31022df4e9b4056bf463"}, - {file = "pyproj-3.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34e1bbb3f89c68d4a6835c40b2da8b27680eec60e8cc7cdb08c09bcc725b2b62"}, - {file = "pyproj-3.7.0-cp312-cp312-win32.whl", hash = "sha256:952515d5592167ad4436b355485f82acebed2a49b46722159e4584b75a763dd3"}, - {file = "pyproj-3.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:0692f806224e8ed82fe4acfa57268ff444fdaf9f330689f24c0d96e59480cce1"}, - {file = "pyproj-3.7.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:94e8b903a9e83448fd2379c49dec3e8cd83c9ed36f54354e68b601cef56d5426"}, - {file = "pyproj-3.7.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:64cb5c17d6f6305a8b978a40f95560c87c5b363fcac40632337955664437875a"}, - {file = "pyproj-3.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c54e9bdda7ab9c4a5af50f9d6e6ee7704e05fafd504896b96ed1208c7aea098"}, - {file = "pyproj-3.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24fa4e9e0abba875f9524808410cc520067eaf38fd5549ed0ef7c43ac39923c9"}, - {file = "pyproj-3.7.0-cp313-cp313-win32.whl", hash = "sha256:b9e8353fc3c79dc14d1f5ac758a1a6e4eee04102c3c0b138670f121f5ac52eb4"}, - {file = "pyproj-3.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:10a8dc6ec61af97c89ff032647d743f8dc023645773da42ef43f7ae1125b3509"}, - {file = "pyproj-3.7.0.tar.gz", hash = "sha256:bf658f4aaf815d9d03c8121650b6f0b8067265c36e31bc6660b98ef144d81813"}, + { file = "pymdown_extensions-10.16-py3-none-any.whl", hash = "sha256:f5dd064a4db588cb2d95229fc4ee63a1b16cc8b4d0e6145c0899ed8723da1df2" }, + { file = "pymdown_extensions-10.16.tar.gz", hash = "sha256:71dac4fca63fabeffd3eb9038b756161a33ec6e8d230853d3cecf562155ab3de" }, ] [package.dependencies] -certifi = "*" +markdown = ">=3.6" +pyyaml = "*" + +[package.extras] +extra = ["pygments (>=2.19.1)"] [[package]] -name = "pytest" -version = "8.3.3" -description = "pytest: simple powerful testing with Python" +name = "pyproj" +version = "3.7.1" +description = "Python interface to PROJ (cartographic projections and coordinate transformations library)" optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, - {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, +python-versions = ">=3.10" +groups = ["main"] +files = [ + { file = "pyproj-3.7.1-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:bf09dbeb333c34e9c546364e7df1ff40474f9fddf9e70657ecb0e4f670ff0b0e" }, + { file = "pyproj-3.7.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:6575b2e53cc9e3e461ad6f0692a5564b96e7782c28631c7771c668770915e169" }, + { file = "pyproj-3.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cb516ee35ed57789b46b96080edf4e503fdb62dbb2e3c6581e0d6c83fca014b" }, + { file = "pyproj-3.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e47c4e93b88d99dd118875ee3ca0171932444cdc0b52d493371b5d98d0f30ee" }, + { file = "pyproj-3.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3e8d276caeae34fcbe4813855d0d97b9b825bab8d7a8b86d859c24a6213a5a0d" }, + { file = "pyproj-3.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f173f851ee75e54acdaa053382b6825b400cb2085663a9bb073728a59c60aebb" }, + { file = "pyproj-3.7.1-cp310-cp310-win32.whl", hash = "sha256:f550281ed6e5ea88fcf04a7c6154e246d5714be495c50c9e8e6b12d3fb63e158" }, + { file = "pyproj-3.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3537668992a709a2e7f068069192138618c00d0ba113572fdd5ee5ffde8222f3" }, + { file = "pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d" }, + { file = "pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067" }, + { file = "pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa" }, + { file = "pyproj-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5dcf24ede53d8abab7d8a77f69ff1936c6a8843ef4fcc574646e4be66e5739" }, + { file = "pyproj-3.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c2e7449840a44ce860d8bea2c6c1c4bc63fa07cba801dcce581d14dcb031a02" }, + { file = "pyproj-3.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0829865c1d3a3543f918b3919dc601eea572d6091c0dd175e1a054db9c109274" }, + { file = "pyproj-3.7.1-cp311-cp311-win32.whl", hash = "sha256:6181960b4b812e82e588407fe5c9c68ada267c3b084db078f248db5d7f45d18a" }, + { file = "pyproj-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ad0ff443a785d84e2b380869fdd82e6bfc11eba6057d25b4409a9bbfa867970" }, + { file = "pyproj-3.7.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:2781029d90df7f8d431e29562a3f2d8eafdf233c4010d6fc0381858dc7373217" }, + { file = "pyproj-3.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d61bf8ab04c73c1da08eedaf21a103b72fa5b0a9b854762905f65ff8b375d394" }, + { file = "pyproj-3.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04abc517a8555d1b05fcee768db3280143fe42ec39fdd926a2feef31631a1f2f" }, + { file = "pyproj-3.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084c0a475688f934d386c2ab3b6ce03398a473cd48adfda70d9ab8f87f2394a0" }, + { file = "pyproj-3.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a20727a23b1e49c7dc7fe3c3df8e56a8a7acdade80ac2f5cca29d7ca5564c145" }, + { file = "pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d" }, + { file = "pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274" }, + { file = "pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98" }, + { file = "pyproj-3.7.1-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:5f8d02ef4431dee414d1753d13fa82a21a2f61494737b5f642ea668d76164d6d" }, + { file = "pyproj-3.7.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:0b853ae99bda66cbe24b4ccfe26d70601d84375940a47f553413d9df570065e0" }, + { file = "pyproj-3.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83db380c52087f9e9bdd8a527943b2e7324f275881125e39475c4f9277bdeec4" }, + { file = "pyproj-3.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b35ed213892e211a3ce2bea002aa1183e1a2a9b79e51bb3c6b15549a831ae528" }, + { file = "pyproj-3.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a8b15b0463d1303bab113d1a6af2860a0d79013c3a66fcc5475ce26ef717fd4f" }, + { file = "pyproj-3.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:87229e42b75e89f4dad6459200f92988c5998dfb093c7c631fb48524c86cd5dc" }, + { file = "pyproj-3.7.1-cp313-cp313-win32.whl", hash = "sha256:d666c3a3faaf3b1d7fc4a544059c4eab9d06f84a604b070b7aa2f318e227798e" }, + { file = "pyproj-3.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:d3caac7473be22b6d6e102dde6c46de73b96bc98334e577dfaee9886f102ea2e" }, + { file = "pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47" }, ] [package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=1.5,<2" - -[package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +certifi = "*" [[package]] -name = "pytest-cov" -version = "5.0.0" -description = "Pytest plugin for measuring coverage." +name = "pytest" +version = "8.4.1" +description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"}, - {file = "pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652"}, + { file = "pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7" }, + { file = "pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c" }, ] [package.dependencies] -coverage = {version = ">=5.2.1", extras = ["toml"]} -pytest = ">=4.6" +colorama = { version = ">=0.4", markers = "sys_platform == \"win32\"" } +iniconfig = ">=1" +packaging = ">=20" +pluggy = ">=1.5,<2" +pygments = ">=2.7.2" [package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] [[package]] name = "python-dateutil" @@ -2529,6 +2863,7 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main", "dev"] files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -2539,21 +2874,26 @@ six = ">=1.5" [[package]] name = "python-json-logger" -version = "2.0.7" -description = "A python library adding a json log formatter" +version = "3.3.0" +description = "JSON Log Formatter for the Python Logging Package" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"}, - {file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"}, + { file = "python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7" }, + { file = "python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84" }, ] +[package.extras] +dev = ["backports.zoneinfo ; python_version < \"3.9\"", "black", "build", "freezegun", "mdx_truly_sane_lists", "mike", "mkdocs", "mkdocs-awesome-pages-plugin", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-material (>=8.5)", "mkdocstrings[python]", "msgspec ; implementation_name != \"pypy\"", "mypy", "orjson ; implementation_name != \"pypy\"", "pylint", "pytest", "tzdata", "validate-pyproject[all]"] + [[package]] name = "pytz" version = "2024.2" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" +groups = ["main"] files = [ {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, @@ -2561,44 +2901,51 @@ files = [ [[package]] name = "pywin32" -version = "308" +version = "311" description = "Python for Window Extensions" optional = false python-versions = "*" -files = [ - {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, - {file = "pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e"}, - {file = "pywin32-308-cp310-cp310-win_arm64.whl", hash = "sha256:a5ab5381813b40f264fa3495b98af850098f814a25a63589a8e9eb12560f450c"}, - {file = "pywin32-308-cp311-cp311-win32.whl", hash = "sha256:5d8c8015b24a7d6855b1550d8e660d8daa09983c80e5daf89a273e5c6fb5095a"}, - {file = "pywin32-308-cp311-cp311-win_amd64.whl", hash = "sha256:575621b90f0dc2695fec346b2d6302faebd4f0f45c05ea29404cefe35d89442b"}, - {file = "pywin32-308-cp311-cp311-win_arm64.whl", hash = "sha256:100a5442b7332070983c4cd03f2e906a5648a5104b8a7f50175f7906efd16bb6"}, - {file = "pywin32-308-cp312-cp312-win32.whl", hash = "sha256:587f3e19696f4bf96fde9d8a57cec74a57021ad5f204c9e627e15c33ff568897"}, - {file = "pywin32-308-cp312-cp312-win_amd64.whl", hash = "sha256:00b3e11ef09ede56c6a43c71f2d31857cf7c54b0ab6e78ac659497abd2834f47"}, - {file = "pywin32-308-cp312-cp312-win_arm64.whl", hash = "sha256:9b4de86c8d909aed15b7011182c8cab38c8850de36e6afb1f0db22b8959e3091"}, - {file = "pywin32-308-cp313-cp313-win32.whl", hash = "sha256:1c44539a37a5b7b21d02ab34e6a4d314e0788f1690d65b48e9b0b89f31abbbed"}, - {file = "pywin32-308-cp313-cp313-win_amd64.whl", hash = "sha256:fd380990e792eaf6827fcb7e187b2b4b1cede0585e3d0c9e84201ec27b9905e4"}, - {file = "pywin32-308-cp313-cp313-win_arm64.whl", hash = "sha256:ef313c46d4c18dfb82a2431e3051ac8f112ccee1a34f29c263c583c568db63cd"}, - {file = "pywin32-308-cp37-cp37m-win32.whl", hash = "sha256:1f696ab352a2ddd63bd07430080dd598e6369152ea13a25ebcdd2f503a38f1ff"}, - {file = "pywin32-308-cp37-cp37m-win_amd64.whl", hash = "sha256:13dcb914ed4347019fbec6697a01a0aec61019c1046c2b905410d197856326a6"}, - {file = "pywin32-308-cp38-cp38-win32.whl", hash = "sha256:5794e764ebcabf4ff08c555b31bd348c9025929371763b2183172ff4708152f0"}, - {file = "pywin32-308-cp38-cp38-win_amd64.whl", hash = "sha256:3b92622e29d651c6b783e368ba7d6722b1634b8e70bd376fd7610fe1992e19de"}, - {file = "pywin32-308-cp39-cp39-win32.whl", hash = "sha256:7873ca4dc60ab3287919881a7d4f88baee4a6e639aa6962de25a98ba6b193341"}, - {file = "pywin32-308-cp39-cp39-win_amd64.whl", hash = "sha256:71b3322d949b4cc20776436a9c9ba0eeedcbc9c650daa536df63f0ff111bb920"}, +groups = ["dev"] +markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"" +files = [ + { file = "pywin32-311-cp310-cp310-win32.whl", hash = "sha256:d03ff496d2a0cd4a5893504789d4a15399133fe82517455e78bad62efbb7f0a3" }, + { file = "pywin32-311-cp310-cp310-win_amd64.whl", hash = "sha256:797c2772017851984b97180b0bebe4b620bb86328e8a884bb626156295a63b3b" }, + { file = "pywin32-311-cp310-cp310-win_arm64.whl", hash = "sha256:0502d1facf1fed4839a9a51ccbcc63d952cf318f78ffc00a7e78528ac27d7a2b" }, + { file = "pywin32-311-cp311-cp311-win32.whl", hash = "sha256:184eb5e436dea364dcd3d2316d577d625c0351bf237c4e9a5fabbcfa5a58b151" }, + { file = "pywin32-311-cp311-cp311-win_amd64.whl", hash = "sha256:3ce80b34b22b17ccbd937a6e78e7225d80c52f5ab9940fe0506a1a16f3dab503" }, + { file = "pywin32-311-cp311-cp311-win_arm64.whl", hash = "sha256:a733f1388e1a842abb67ffa8e7aad0e70ac519e09b0f6a784e65a136ec7cefd2" }, + { file = "pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31" }, + { file = "pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067" }, + { file = "pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852" }, + { file = "pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d" }, + { file = "pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d" }, + { file = "pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a" }, + { file = "pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee" }, + { file = "pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87" }, + { file = "pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42" }, + { file = "pywin32-311-cp38-cp38-win32.whl", hash = "sha256:6c6f2969607b5023b0d9ce2541f8d2cbb01c4f46bc87456017cf63b73f1e2d8c" }, + { file = "pywin32-311-cp38-cp38-win_amd64.whl", hash = "sha256:c8015b09fb9a5e188f83b7b04de91ddca4658cee2ae6f3bc483f0b21a77ef6cd" }, + { file = "pywin32-311-cp39-cp39-win32.whl", hash = "sha256:aba8f82d551a942cb20d4a83413ccbac30790b50efb89a75e4f586ac0bb8056b" }, + { file = "pywin32-311-cp39-cp39-win_amd64.whl", hash = "sha256:e0c4cfb0621281fe40387df582097fd796e80430597cb9944f0ae70447bacd91" }, + { file = "pywin32-311-cp39-cp39-win_arm64.whl", hash = "sha256:62ea666235135fee79bb154e695f3ff67370afefd71bd7fea7512fc70ef31e3d" }, ] [[package]] name = "pywinpty" -version = "2.0.14" +version = "2.0.15" description = "Pseudo terminal support for Windows from Python." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] +markers = "os_name == \"nt\"" files = [ - {file = "pywinpty-2.0.14-cp310-none-win_amd64.whl", hash = "sha256:0b149c2918c7974f575ba79f5a4aad58bd859a52fa9eb1296cc22aa412aa411f"}, - {file = "pywinpty-2.0.14-cp311-none-win_amd64.whl", hash = "sha256:cf2a43ac7065b3e0dc8510f8c1f13a75fb8fde805efa3b8cff7599a1ef497bc7"}, - {file = "pywinpty-2.0.14-cp312-none-win_amd64.whl", hash = "sha256:55dad362ef3e9408ade68fd173e4f9032b3ce08f68cfe7eacb2c263ea1179737"}, - {file = "pywinpty-2.0.14-cp313-none-win_amd64.whl", hash = "sha256:074fb988a56ec79ca90ed03a896d40707131897cefb8f76f926e3834227f2819"}, - {file = "pywinpty-2.0.14-cp39-none-win_amd64.whl", hash = "sha256:5725fd56f73c0531ec218663bd8c8ff5acc43c78962fab28564871b5fce053fd"}, - {file = "pywinpty-2.0.14.tar.gz", hash = "sha256:18bd9529e4a5daf2d9719aa17788ba6013e594ae94c5a0c27e83df3278b0660e"}, + { file = "pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e" }, + { file = "pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca" }, + { file = "pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc" }, + { file = "pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408" }, + { file = "pywinpty-2.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:a4560ad8c01e537708d2790dbe7da7d986791de805d89dd0d3697ca59e9e4901" }, + { file = "pywinpty-2.0.15-cp39-cp39-win_amd64.whl", hash = "sha256:d261cd88fcd358cfb48a7ca0700db3e1c088c9c10403c9ebc0d8a8b57aa6a117" }, + { file = "pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2" }, ] [[package]] @@ -2607,6 +2954,7 @@ version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -2663,122 +3011,108 @@ files = [ {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] +[[package]] +name = "pyyaml-env-tag" +version = "1.1" +description = "A custom YAML tag for referencing environment variables in YAML files." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04" }, + { file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff" }, +] + +[package.dependencies] +pyyaml = "*" + [[package]] name = "pyzmq" -version = "26.2.0" +version = "27.0.0" description = "Python bindings for 0MQ" optional = false -python-versions = ">=3.7" -files = [ - {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:ddf33d97d2f52d89f6e6e7ae66ee35a4d9ca6f36eda89c24591b0c40205a3629"}, - {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dacd995031a01d16eec825bf30802fceb2c3791ef24bcce48fa98ce40918c27b"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89289a5ee32ef6c439086184529ae060c741334b8970a6855ec0b6ad3ff28764"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5506f06d7dc6ecf1efacb4a013b1f05071bb24b76350832c96449f4a2d95091c"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ea039387c10202ce304af74def5021e9adc6297067f3441d348d2b633e8166a"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a2224fa4a4c2ee872886ed00a571f5e967c85e078e8e8c2530a2fb01b3309b88"}, - {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:28ad5233e9c3b52d76196c696e362508959741e1a005fb8fa03b51aea156088f"}, - {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1c17211bc037c7d88e85ed8b7d8f7e52db6dc8eca5590d162717c654550f7282"}, - {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b8f86dd868d41bea9a5f873ee13bf5551c94cf6bc51baebc6f85075971fe6eea"}, - {file = "pyzmq-26.2.0-cp310-cp310-win32.whl", hash = "sha256:46a446c212e58456b23af260f3d9fb785054f3e3653dbf7279d8f2b5546b21c2"}, - {file = "pyzmq-26.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:49d34ab71db5a9c292a7644ce74190b1dd5a3475612eefb1f8be1d6961441971"}, - {file = "pyzmq-26.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:bfa832bfa540e5b5c27dcf5de5d82ebc431b82c453a43d141afb1e5d2de025fa"}, - {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:8f7e66c7113c684c2b3f1c83cdd3376103ee0ce4c49ff80a648643e57fb22218"}, - {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3a495b30fc91db2db25120df5847d9833af237546fd59170701acd816ccc01c4"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77eb0968da535cba0470a5165468b2cac7772cfb569977cff92e240f57e31bef"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ace4f71f1900a548f48407fc9be59c6ba9d9aaf658c2eea6cf2779e72f9f317"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92a78853d7280bffb93df0a4a6a2498cba10ee793cc8076ef797ef2f74d107cf"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:689c5d781014956a4a6de61d74ba97b23547e431e9e7d64f27d4922ba96e9d6e"}, - {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0aca98bc423eb7d153214b2df397c6421ba6373d3397b26c057af3c904452e37"}, - {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f3496d76b89d9429a656293744ceca4d2ac2a10ae59b84c1da9b5165f429ad3"}, - {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5c2b3bfd4b9689919db068ac6c9911f3fcb231c39f7dd30e3138be94896d18e6"}, - {file = "pyzmq-26.2.0-cp311-cp311-win32.whl", hash = "sha256:eac5174677da084abf378739dbf4ad245661635f1600edd1221f150b165343f4"}, - {file = "pyzmq-26.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:5a509df7d0a83a4b178d0f937ef14286659225ef4e8812e05580776c70e155d5"}, - {file = "pyzmq-26.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0e6091b157d48cbe37bd67233318dbb53e1e6327d6fc3bb284afd585d141003"}, - {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:ded0fc7d90fe93ae0b18059930086c51e640cdd3baebdc783a695c77f123dcd9"}, - {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17bf5a931c7f6618023cdacc7081f3f266aecb68ca692adac015c383a134ca52"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55cf66647e49d4621a7e20c8d13511ef1fe1efbbccf670811864452487007e08"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4661c88db4a9e0f958c8abc2b97472e23061f0bc737f6f6179d7a27024e1faa5"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea7f69de383cb47522c9c208aec6dd17697db7875a4674c4af3f8cfdac0bdeae"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:7f98f6dfa8b8ccaf39163ce872bddacca38f6a67289116c8937a02e30bbe9711"}, - {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e3e0210287329272539eea617830a6a28161fbbd8a3271bf4150ae3e58c5d0e6"}, - {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6b274e0762c33c7471f1a7471d1a2085b1a35eba5cdc48d2ae319f28b6fc4de3"}, - {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:29c6a4635eef69d68a00321e12a7d2559fe2dfccfa8efae3ffb8e91cd0b36a8b"}, - {file = "pyzmq-26.2.0-cp312-cp312-win32.whl", hash = "sha256:989d842dc06dc59feea09e58c74ca3e1678c812a4a8a2a419046d711031f69c7"}, - {file = "pyzmq-26.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a50625acdc7801bc6f74698c5c583a491c61d73c6b7ea4dee3901bb99adb27a"}, - {file = "pyzmq-26.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d29ab8592b6ad12ebbf92ac2ed2bedcfd1cec192d8e559e2e099f648570e19b"}, - {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9dd8cd1aeb00775f527ec60022004d030ddc51d783d056e3e23e74e623e33726"}, - {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:28c812d9757fe8acecc910c9ac9dafd2ce968c00f9e619db09e9f8f54c3a68a3"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d80b1dd99c1942f74ed608ddb38b181b87476c6a966a88a950c7dee118fdf50"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c997098cc65e3208eca09303630e84d42718620e83b733d0fd69543a9cab9cb"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ad1bc8d1b7a18497dda9600b12dc193c577beb391beae5cd2349184db40f187"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bea2acdd8ea4275e1278350ced63da0b166421928276c7c8e3f9729d7402a57b"}, - {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:23f4aad749d13698f3f7b64aad34f5fc02d6f20f05999eebc96b89b01262fb18"}, - {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a4f96f0d88accc3dbe4a9025f785ba830f968e21e3e2c6321ccdfc9aef755115"}, - {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ced65e5a985398827cc9276b93ef6dfabe0273c23de8c7931339d7e141c2818e"}, - {file = "pyzmq-26.2.0-cp313-cp313-win32.whl", hash = "sha256:31507f7b47cc1ead1f6e86927f8ebb196a0bab043f6345ce070f412a59bf87b5"}, - {file = "pyzmq-26.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:70fc7fcf0410d16ebdda9b26cbd8bf8d803d220a7f3522e060a69a9c87bf7bad"}, - {file = "pyzmq-26.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:c3789bd5768ab5618ebf09cef6ec2b35fed88709b104351748a63045f0ff9797"}, - {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:034da5fc55d9f8da09015d368f519478a52675e558c989bfcb5cf6d4e16a7d2a"}, - {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c92d73464b886931308ccc45b2744e5968cbaade0b1d6aeb40d8ab537765f5bc"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:794a4562dcb374f7dbbfb3f51d28fb40123b5a2abadee7b4091f93054909add5"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aee22939bb6075e7afededabad1a56a905da0b3c4e3e0c45e75810ebe3a52672"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ae90ff9dad33a1cfe947d2c40cb9cb5e600d759ac4f0fd22616ce6540f72797"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:43a47408ac52647dfabbc66a25b05b6a61700b5165807e3fbd40063fcaf46386"}, - {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:25bf2374a2a8433633c65ccb9553350d5e17e60c8eb4de4d92cc6bd60f01d306"}, - {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:007137c9ac9ad5ea21e6ad97d3489af654381324d5d3ba614c323f60dab8fae6"}, - {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:470d4a4f6d48fb34e92d768b4e8a5cc3780db0d69107abf1cd7ff734b9766eb0"}, - {file = "pyzmq-26.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3b55a4229ce5da9497dd0452b914556ae58e96a4381bb6f59f1305dfd7e53fc8"}, - {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9cb3a6460cdea8fe8194a76de8895707e61ded10ad0be97188cc8463ffa7e3a8"}, - {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8ab5cad923cc95c87bffee098a27856c859bd5d0af31bd346035aa816b081fe1"}, - {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ed69074a610fad1c2fda66180e7b2edd4d31c53f2d1872bc2d1211563904cd9"}, - {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cccba051221b916a4f5e538997c45d7d136a5646442b1231b916d0164067ea27"}, - {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:0eaa83fc4c1e271c24eaf8fb083cbccef8fde77ec8cd45f3c35a9a123e6da097"}, - {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9edda2df81daa129b25a39b86cb57dfdfe16f7ec15b42b19bfac503360d27a93"}, - {file = "pyzmq-26.2.0-cp37-cp37m-win32.whl", hash = "sha256:ea0eb6af8a17fa272f7b98d7bebfab7836a0d62738e16ba380f440fceca2d951"}, - {file = "pyzmq-26.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4ff9dc6bc1664bb9eec25cd17506ef6672d506115095411e237d571e92a58231"}, - {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2eb7735ee73ca1b0d71e0e67c3739c689067f055c764f73aac4cc8ecf958ee3f"}, - {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a534f43bc738181aa7cbbaf48e3eca62c76453a40a746ab95d4b27b1111a7d2"}, - {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:aedd5dd8692635813368e558a05266b995d3d020b23e49581ddd5bbe197a8ab6"}, - {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8be4700cd8bb02cc454f630dcdf7cfa99de96788b80c51b60fe2fe1dac480289"}, - {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fcc03fa4997c447dce58264e93b5aa2d57714fbe0f06c07b7785ae131512732"}, - {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:402b190912935d3db15b03e8f7485812db350d271b284ded2b80d2e5704be780"}, - {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8685fa9c25ff00f550c1fec650430c4b71e4e48e8d852f7ddcf2e48308038640"}, - {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:76589c020680778f06b7e0b193f4b6dd66d470234a16e1df90329f5e14a171cd"}, - {file = "pyzmq-26.2.0-cp38-cp38-win32.whl", hash = "sha256:8423c1877d72c041f2c263b1ec6e34360448decfb323fa8b94e85883043ef988"}, - {file = "pyzmq-26.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:76589f2cd6b77b5bdea4fca5992dc1c23389d68b18ccc26a53680ba2dc80ff2f"}, - {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:b1d464cb8d72bfc1a3adc53305a63a8e0cac6bc8c5a07e8ca190ab8d3faa43c2"}, - {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4da04c48873a6abdd71811c5e163bd656ee1b957971db7f35140a2d573f6949c"}, - {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d049df610ac811dcffdc147153b414147428567fbbc8be43bb8885f04db39d98"}, - {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05590cdbc6b902101d0e65d6a4780af14dc22914cc6ab995d99b85af45362cc9"}, - {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c811cfcd6a9bf680236c40c6f617187515269ab2912f3d7e8c0174898e2519db"}, - {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6835dd60355593de10350394242b5757fbbd88b25287314316f266e24c61d073"}, - {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc6bee759a6bddea5db78d7dcd609397449cb2d2d6587f48f3ca613b19410cfc"}, - {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c530e1eecd036ecc83c3407f77bb86feb79916d4a33d11394b8234f3bd35b940"}, - {file = "pyzmq-26.2.0-cp39-cp39-win32.whl", hash = "sha256:367b4f689786fca726ef7a6c5ba606958b145b9340a5e4808132cc65759abd44"}, - {file = "pyzmq-26.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:e6fa2e3e683f34aea77de8112f6483803c96a44fd726d7358b9888ae5bb394ec"}, - {file = "pyzmq-26.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:7445be39143a8aa4faec43b076e06944b8f9d0701b669df4af200531b21e40bb"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:706e794564bec25819d21a41c31d4df2d48e1cc4b061e8d345d7fb4dd3e94072"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b435f2753621cd36e7c1762156815e21c985c72b19135dac43a7f4f31d28dd1"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:160c7e0a5eb178011e72892f99f918c04a131f36056d10d9c1afb223fc952c2d"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c4a71d5d6e7b28a47a394c0471b7e77a0661e2d651e7ae91e0cab0a587859ca"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:90412f2db8c02a3864cbfc67db0e3dcdbda336acf1c469526d3e869394fe001c"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2ea4ad4e6a12e454de05f2949d4beddb52460f3de7c8b9d5c46fbb7d7222e02c"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fc4f7a173a5609631bb0c42c23d12c49df3966f89f496a51d3eb0ec81f4519d6"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:878206a45202247781472a2d99df12a176fef806ca175799e1c6ad263510d57c"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17c412bad2eb9468e876f556eb4ee910e62d721d2c7a53c7fa31e643d35352e6"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:0d987a3ae5a71c6226b203cfd298720e0086c7fe7c74f35fa8edddfbd6597eed"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:39887ac397ff35b7b775db7201095fc6310a35fdbae85bac4523f7eb3b840e20"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fdb5b3e311d4d4b0eb8b3e8b4d1b0a512713ad7e6a68791d0923d1aec433d919"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:226af7dcb51fdb0109f0016449b357e182ea0ceb6b47dfb5999d569e5db161d5"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bed0e799e6120b9c32756203fb9dfe8ca2fb8467fed830c34c877e25638c3fc"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:29c7947c594e105cb9e6c466bace8532dc1ca02d498684128b339799f5248277"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cdeabcff45d1c219636ee2e54d852262e5c2e085d6cb476d938aee8d921356b3"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35cffef589bcdc587d06f9149f8d5e9e8859920a071df5a2671de2213bef592a"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18c8dc3b7468d8b4bdf60ce9d7141897da103c7a4690157b32b60acb45e333e6"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7133d0a1677aec369d67dd78520d3fa96dd7f3dcec99d66c1762870e5ea1a50a"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6a96179a24b14fa6428cbfc08641c779a53f8fcec43644030328f44034c7f1f4"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4f78c88905461a9203eac9faac157a2a0dbba84a0fd09fd29315db27be40af9f"}, - {file = "pyzmq-26.2.0.tar.gz", hash = "sha256:070672c258581c8e4f640b5159297580a9974b026043bd4ab0470be9ed324f1f"}, +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "pyzmq-27.0.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:b973ee650e8f442ce482c1d99ca7ab537c69098d53a3d046676a484fd710c87a" }, + { file = "pyzmq-27.0.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:661942bc7cd0223d569d808f2e5696d9cc120acc73bf3e88a1f1be7ab648a7e4" }, + { file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50360fb2a056ffd16e5f4177eee67f1dd1017332ea53fb095fe7b5bf29c70246" }, + { file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf209a6dc4b420ed32a7093642843cbf8703ed0a7d86c16c0b98af46762ebefb" }, + { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c2dace4a7041cca2fba5357a2d7c97c5effdf52f63a1ef252cfa496875a3762d" }, + { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:63af72b2955fc77caf0a77444baa2431fcabb4370219da38e1a9f8d12aaebe28" }, + { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e8c4adce8e37e75c4215297d7745551b8dcfa5f728f23ce09bf4e678a9399413" }, + { file = "pyzmq-27.0.0-cp310-cp310-win32.whl", hash = "sha256:5d5ef4718ecab24f785794e0e7536436698b459bfbc19a1650ef55280119d93b" }, + { file = "pyzmq-27.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:e40609380480b3d12c30f841323f42451c755b8fece84235236f5fe5ffca8c1c" }, + { file = "pyzmq-27.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:6b0397b0be277b46762956f576e04dc06ced265759e8c2ff41a0ee1aa0064198" }, + { file = "pyzmq-27.0.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:21457825249b2a53834fa969c69713f8b5a79583689387a5e7aed880963ac564" }, + { file = "pyzmq-27.0.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1958947983fef513e6e98eff9cb487b60bf14f588dc0e6bf35fa13751d2c8251" }, + { file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0dc628b5493f9a8cd9844b8bee9732ef587ab00002157c9329e4fc0ef4d3afa" }, + { file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7bbe9e1ed2c8d3da736a15694d87c12493e54cc9dc9790796f0321794bbc91f" }, + { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dc1091f59143b471d19eb64f54bae4f54bcf2a466ffb66fe45d94d8d734eb495" }, + { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7011ade88c8e535cf140f8d1a59428676fbbce7c6e54fefce58bf117aefb6667" }, + { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2c386339d7e3f064213aede5d03d054b237937fbca6dd2197ac8cf3b25a6b14e" }, + { file = "pyzmq-27.0.0-cp311-cp311-win32.whl", hash = "sha256:0546a720c1f407b2172cb04b6b094a78773491497e3644863cf5c96c42df8cff" }, + { file = "pyzmq-27.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:15f39d50bd6c9091c67315ceb878a4f531957b121d2a05ebd077eb35ddc5efed" }, + { file = "pyzmq-27.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c5817641eebb391a2268c27fecd4162448e03538387093cdbd8bf3510c316b38" }, + { file = "pyzmq-27.0.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:cbabc59dcfaac66655c040dfcb8118f133fb5dde185e5fc152628354c1598e52" }, + { file = "pyzmq-27.0.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0ac5179cba4b2f94f1aa208fbb77b62c4c9bf24dd446278b8b602cf85fcda3" }, + { file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53a48f0228eab6cbf69fde3aa3c03cbe04e50e623ef92ae395fce47ef8a76152" }, + { file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:111db5f395e09f7e775f759d598f43cb815fc58e0147623c4816486e1a39dc22" }, + { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c8878011653dcdc27cc2c57e04ff96f0471e797f5c19ac3d7813a245bcb24371" }, + { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:c0ed2c1f335ba55b5fdc964622254917d6b782311c50e138863eda409fbb3b6d" }, + { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e918d70862d4cfd4b1c187310015646a14e1f5917922ab45b29f28f345eeb6be" }, + { file = "pyzmq-27.0.0-cp312-abi3-win32.whl", hash = "sha256:88b4e43cab04c3c0f0d55df3b1eef62df2b629a1a369b5289a58f6fa8b07c4f4" }, + { file = "pyzmq-27.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:dce4199bf5f648a902ce37e7b3afa286f305cd2ef7a8b6ec907470ccb6c8b371" }, + { file = "pyzmq-27.0.0-cp312-abi3-win_arm64.whl", hash = "sha256:56e46bbb85d52c1072b3f809cc1ce77251d560bc036d3a312b96db1afe76db2e" }, + { file = "pyzmq-27.0.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c36ad534c0c29b4afa088dc53543c525b23c0797e01b69fef59b1a9c0e38b688" }, + { file = "pyzmq-27.0.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:67855c14173aec36395d7777aaba3cc527b393821f30143fd20b98e1ff31fd38" }, + { file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8617c7d43cd8ccdb62aebe984bfed77ca8f036e6c3e46dd3dddda64b10f0ab7a" }, + { file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67bfbcbd0a04c575e8103a6061d03e393d9f80ffdb9beb3189261e9e9bc5d5e9" }, + { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5cd11d46d7b7e5958121b3eaf4cd8638eff3a720ec527692132f05a57f14341d" }, + { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b801c2e40c5aa6072c2f4876de8dccd100af6d9918d4d0d7aa54a1d982fd4f44" }, + { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20d5cb29e8c5f76a127c75b6e7a77e846bc4b655c373baa098c26a61b7ecd0ef" }, + { file = "pyzmq-27.0.0-cp313-cp313t-win32.whl", hash = "sha256:a20528da85c7ac7a19b7384e8c3f8fa707841fd85afc4ed56eda59d93e3d98ad" }, + { file = "pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f" }, + { file = "pyzmq-27.0.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:f4162dbbd9c5c84fb930a36f290b08c93e35fce020d768a16fc8891a2f72bab8" }, + { file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:4e7d0a8d460fba526cc047333bdcbf172a159b8bd6be8c3eb63a416ff9ba1477" }, + { file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:29f44e3c26b9783816ba9ce274110435d8f5b19bbd82f7a6c7612bb1452a3597" }, + { file = "pyzmq-27.0.0-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e435540fa1da54667f0026cf1e8407fe6d8a11f1010b7f06b0b17214ebfcf5e" }, + { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:51f5726de3532b8222e569990c8aa34664faa97038304644679a51d906e60c6e" }, + { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:42c7555123679637c99205b1aa9e8f7d90fe29d4c243c719e347d4852545216c" }, + { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a979b7cf9e33d86c4949df527a3018767e5f53bc3b02adf14d4d8db1db63ccc0" }, + { file = "pyzmq-27.0.0-cp38-cp38-win32.whl", hash = "sha256:26b72c5ae20bf59061c3570db835edb81d1e0706ff141747055591c4b41193f8" }, + { file = "pyzmq-27.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:55a0155b148fe0428285a30922f7213539aa84329a5ad828bca4bbbc665c70a4" }, + { file = "pyzmq-27.0.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:100f6e5052ba42b2533011d34a018a5ace34f8cac67cb03cfa37c8bdae0ca617" }, + { file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:bf6c6b061efd00404b9750e2cfbd9507492c8d4b3721ded76cb03786131be2ed" }, + { file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ee05728c0b0b2484a9fc20466fa776fffb65d95f7317a3419985b8c908563861" }, + { file = "pyzmq-27.0.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7cdf07fe0a557b131366f80727ec8ccc4b70d89f1e3f920d94a594d598d754f0" }, + { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:90252fa2ff3a104219db1f5ced7032a7b5fc82d7c8d2fec2b9a3e6fd4e25576b" }, + { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ea6d441c513bf18c578c73c323acf7b4184507fc244762193aa3a871333c9045" }, + { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ae2b34bcfaae20c064948a4113bf8709eee89fd08317eb293ae4ebd69b4d9740" }, + { file = "pyzmq-27.0.0-cp39-cp39-win32.whl", hash = "sha256:5b10bd6f008937705cf6e7bf8b6ece5ca055991e3eb130bca8023e20b86aa9a3" }, + { file = "pyzmq-27.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:00387d12a8af4b24883895f7e6b9495dc20a66027b696536edac35cb988c38f3" }, + { file = "pyzmq-27.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:4c19d39c04c29a6619adfeb19e3735c421b3bfee082f320662f52e59c47202ba" }, + { file = "pyzmq-27.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:656c1866505a5735d0660b7da6d7147174bbf59d4975fc2b7f09f43c9bc25745" }, + { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:74175b9e12779382432dd1d1f5960ebe7465d36649b98a06c6b26be24d173fab" }, + { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8c6de908465697a8708e4d6843a1e884f567962fc61eb1706856545141d0cbb" }, + { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c644aaacc01d0df5c7072826df45e67301f191c55f68d7b2916d83a9ddc1b551" }, + { file = "pyzmq-27.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:10f70c1d9a446a85013a36871a296007f6fe4232b530aa254baf9da3f8328bc0" }, + { file = "pyzmq-27.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd1dc59763effd1576f8368047c9c31468fce0af89d76b5067641137506792ae" }, + { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:60e8cc82d968174650c1860d7b716366caab9973787a1c060cf8043130f7d0f7" }, + { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:14fe7aaac86e4e93ea779a821967360c781d7ac5115b3f1a171ced77065a0174" }, + { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6ad0562d4e6abb785be3e4dd68599c41be821b521da38c402bc9ab2a8e7ebc7e" }, + { file = "pyzmq-27.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:9df43a2459cd3a3563404c1456b2c4c69564daa7dbaf15724c09821a3329ce46" }, + { file = "pyzmq-27.0.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8c86ea8fe85e2eb0ffa00b53192c401477d5252f6dd1db2e2ed21c1c30d17e5e" }, + { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:c45fee3968834cd291a13da5fac128b696c9592a9493a0f7ce0b47fa03cc574d" }, + { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cae73bb6898c4e045fbed5024cb587e4110fddb66f6163bcab5f81f9d4b9c496" }, + { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:26d542258c7a1f35a9cff3d887687d3235006134b0ac1c62a6fe1ad3ac10440e" }, + { file = "pyzmq-27.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:04cd50ef3b28e35ced65740fb9956a5b3f77a6ff32fcd887e3210433f437dd0f" }, + { file = "pyzmq-27.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:39ddd3ba0a641f01d8f13a3cfd4c4924eb58e660d8afe87e9061d6e8ca6f7ac3" }, + { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:8ca7e6a0388dd9e1180b14728051068f4efe83e0d2de058b5ff92c63f399a73f" }, + { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2524c40891be6a3106885a3935d58452dd83eb7a5742a33cc780a1ad4c49dec0" }, + { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a56e3e5bd2d62a01744fd2f1ce21d760c7c65f030e9522738d75932a14ab62a" }, + { file = "pyzmq-27.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:096af9e133fec3a72108ddefba1e42985cb3639e9de52cfd336b6fc23aa083e9" }, + { file = "pyzmq-27.0.0.tar.gz", hash = "sha256:b1f08eeb9ce1510e6939b6e5dcd46a17765e2333daae78ecf4606808442e52cf" }, ] [package.dependencies] @@ -2786,13 +3120,14 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "referencing" -version = "0.35.1" +version = "0.36.2" description = "JSON Referencing + Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, - {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, + { file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0" }, + { file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa" }, ] [package.dependencies] @@ -2801,18 +3136,19 @@ rpds-py = ">=0.7.0" [[package]] name = "requests" -version = "2.32.3" +version = "2.32.4" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, + { file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c" }, + { file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422" }, ] [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" +charset_normalizer = ">=2,<4" idna = ">=2.5,<4" urllib3 = ">=1.21.1,<3" @@ -2826,6 +3162,7 @@ version = "0.1.4" description = "A pure python RFC3339 validator" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] files = [ {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, @@ -2840,148 +3177,210 @@ version = "0.1.1" description = "Pure python rfc3986 validator" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] files = [ {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, ] +[[package]] +name = "rfc3987-syntax" +version = "1.1.0" +description = "Helper functions to syntactically validate strings according to RFC 3987." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "rfc3987_syntax-1.1.0-py3-none-any.whl", hash = "sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f" }, + { file = "rfc3987_syntax-1.1.0.tar.gz", hash = "sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d" }, +] + +[package.dependencies] +lark = ">=1.2.2" + +[package.extras] +testing = ["pytest (>=8.3.5)"] + [[package]] name = "rpds-py" -version = "0.20.0" +version = "0.26.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false -python-versions = ">=3.8" -files = [ - {file = "rpds_py-0.20.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2"}, - {file = "rpds_py-0.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94"}, - {file = "rpds_py-0.20.0-cp310-none-win32.whl", hash = "sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee"}, - {file = "rpds_py-0.20.0-cp310-none-win_amd64.whl", hash = "sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399"}, - {file = "rpds_py-0.20.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489"}, - {file = "rpds_py-0.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58"}, - {file = "rpds_py-0.20.0-cp311-none-win32.whl", hash = "sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0"}, - {file = "rpds_py-0.20.0-cp311-none-win_amd64.whl", hash = "sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c"}, - {file = "rpds_py-0.20.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6"}, - {file = "rpds_py-0.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174"}, - {file = "rpds_py-0.20.0-cp312-none-win32.whl", hash = "sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139"}, - {file = "rpds_py-0.20.0-cp312-none-win_amd64.whl", hash = "sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585"}, - {file = "rpds_py-0.20.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29"}, - {file = "rpds_py-0.20.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57"}, - {file = "rpds_py-0.20.0-cp313-none-win32.whl", hash = "sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a"}, - {file = "rpds_py-0.20.0-cp313-none-win_amd64.whl", hash = "sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2"}, - {file = "rpds_py-0.20.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24"}, - {file = "rpds_py-0.20.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a"}, - {file = "rpds_py-0.20.0-cp38-none-win32.whl", hash = "sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5"}, - {file = "rpds_py-0.20.0-cp38-none-win_amd64.whl", hash = "sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232"}, - {file = "rpds_py-0.20.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22"}, - {file = "rpds_py-0.20.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b"}, - {file = "rpds_py-0.20.0-cp39-none-win32.whl", hash = "sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7"}, - {file = "rpds_py-0.20.0-cp39-none-win_amd64.whl", hash = "sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8"}, - {file = "rpds_py-0.20.0.tar.gz", hash = "sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121"}, +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "rpds_py-0.26.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4c70c70f9169692b36307a95f3d8c0a9fcd79f7b4a383aad5eaa0e9718b79b37" }, + { file = "rpds_py-0.26.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:777c62479d12395bfb932944e61e915741e364c843afc3196b694db3d669fcd0" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec671691e72dff75817386aa02d81e708b5a7ec0dec6669ec05213ff6b77e1bd" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a1cb5d6ce81379401bbb7f6dbe3d56de537fb8235979843f0d53bc2e9815a79" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f789e32fa1fb6a7bf890e0124e7b42d1e60d28ebff57fe806719abb75f0e9a3" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c55b0a669976cf258afd718de3d9ad1b7d1fe0a91cd1ab36f38b03d4d4aeaaf" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c70d9ec912802ecfd6cd390dadb34a9578b04f9bcb8e863d0a7598ba5e9e7ccc" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3021933c2cb7def39d927b9862292e0f4c75a13d7de70eb0ab06efed4c508c19" }, + { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8a7898b6ca3b7d6659e55cdac825a2e58c638cbf335cde41f4619e290dd0ad11" }, + { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:12bff2ad9447188377f1b2794772f91fe68bb4bbfa5a39d7941fbebdbf8c500f" }, + { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:191aa858f7d4902e975d4cf2f2d9243816c91e9605070aeb09c0a800d187e323" }, + { file = "rpds_py-0.26.0-cp310-cp310-win32.whl", hash = "sha256:b37a04d9f52cb76b6b78f35109b513f6519efb481d8ca4c321f6a3b9580b3f45" }, + { file = "rpds_py-0.26.0-cp310-cp310-win_amd64.whl", hash = "sha256:38721d4c9edd3eb6670437d8d5e2070063f305bfa2d5aa4278c51cedcd508a84" }, + { file = "rpds_py-0.26.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9e8cb77286025bdb21be2941d64ac6ca016130bfdcd228739e8ab137eb4406ed" }, + { file = "rpds_py-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e09330b21d98adc8ccb2dbb9fc6cb434e8908d4c119aeaa772cb1caab5440a0" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9c1b92b774b2e68d11193dc39620d62fd8ab33f0a3c77ecdabe19c179cdbc1" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:824e6d3503ab990d7090768e4dfd9e840837bae057f212ff9f4f05ec6d1975e7" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ad7fd2258228bf288f2331f0a6148ad0186b2e3643055ed0db30990e59817a6" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dc23bbb3e06ec1ea72d515fb572c1fea59695aefbffb106501138762e1e915e" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d80bf832ac7b1920ee29a426cdca335f96a2b5caa839811803e999b41ba9030d" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0919f38f5542c0a87e7b4afcafab6fd2c15386632d249e9a087498571250abe3" }, + { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d422b945683e409000c888e384546dbab9009bb92f7c0b456e217988cf316107" }, + { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a7711fa562ba2da1aa757e11024ad6d93bad6ad7ede5afb9af144623e5f76a" }, + { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238e8c8610cb7c29460e37184f6799547f7e09e6a9bdbdab4e8edb90986a2318" }, + { file = "rpds_py-0.26.0-cp311-cp311-win32.whl", hash = "sha256:893b022bfbdf26d7bedb083efeea624e8550ca6eb98bf7fea30211ce95b9201a" }, + { file = "rpds_py-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:87a5531de9f71aceb8af041d72fc4cab4943648d91875ed56d2e629bef6d4c03" }, + { file = "rpds_py-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:de2713f48c1ad57f89ac25b3cb7daed2156d8e822cf0eca9b96a6f990718cc41" }, + { file = "rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d" }, + { file = "rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323" }, + { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158" }, + { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3" }, + { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2" }, + { file = "rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44" }, + { file = "rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c" }, + { file = "rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8" }, + { file = "rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d" }, + { file = "rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1" }, + { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9" }, + { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9" }, + { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba" }, + { file = "rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b" }, + { file = "rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5" }, + { file = "rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256" }, + { file = "rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618" }, + { file = "rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed" }, + { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632" }, + { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c" }, + { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0" }, + { file = "rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9" }, + { file = "rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9" }, + { file = "rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a" }, + { file = "rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387" }, + { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af" }, + { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33" }, + { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953" }, + { file = "rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9" }, + { file = "rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37" }, + { file = "rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867" }, + { file = "rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da" }, + { file = "rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b" }, + { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a" }, + { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170" }, + { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e" }, + { file = "rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f" }, + { file = "rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7" }, + { file = "rpds_py-0.26.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:7a48af25d9b3c15684059d0d1fc0bc30e8eee5ca521030e2bffddcab5be40226" }, + { file = "rpds_py-0.26.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0c71c2f6bf36e61ee5c47b2b9b5d47e4d1baad6426bfed9eea3e858fc6ee8806" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d815d48b1804ed7867b539236b6dd62997850ca1c91cad187f2ddb1b7bbef19" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84cfbd4d4d2cdeb2be61a057a258d26b22877266dd905809e94172dff01a42ae" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fbaa70553ca116c77717f513e08815aec458e6b69a028d4028d403b3bc84ff37" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39bfea47c375f379d8e87ab4bb9eb2c836e4f2069f0f65731d85e55d74666387" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1533b7eb683fb5f38c1d68a3c78f5fdd8f1412fa6b9bf03b40f450785a0ab915" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c5ab0ee51f560d179b057555b4f601b7df909ed31312d301b99f8b9fc6028284" }, + { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e5162afc9e0d1f9cae3b577d9c29ddbab3505ab39012cb794d94a005825bde21" }, + { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:43f10b007033f359bc3fa9cd5e6c1e76723f056ffa9a6b5c117cc35720a80292" }, + { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e3730a48e5622e598293eee0762b09cff34dd3f271530f47b0894891281f051d" }, + { file = "rpds_py-0.26.0-cp39-cp39-win32.whl", hash = "sha256:4b1f66eb81eab2e0ff5775a3a312e5e2e16bf758f7b06be82fb0d04078c7ac51" }, + { file = "rpds_py-0.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:519067e29f67b5c90e64fb1a6b6e9d2ec0ba28705c51956637bac23a2f4ddae1" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3c0909c5234543ada2515c05dc08595b08d621ba919629e94427e8e03539c958" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c1fb0cda2abcc0ac62f64e2ea4b4e64c57dfd6b885e693095460c61bde7bb18e" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84d142d2d6cf9b31c12aa4878d82ed3b2324226270b89b676ac62ccd7df52d08" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a547e21c5610b7e9093d870be50682a6a6cf180d6da0f42c47c306073bfdbbf6" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:35e9a70a0f335371275cdcd08bc5b8051ac494dd58bff3bbfb421038220dc871" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dfa6115c6def37905344d56fb54c03afc49104e2ca473d5dedec0f6606913b4" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:313cfcd6af1a55a286a3c9a25f64af6d0e46cf60bc5798f1db152d97a216ff6f" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f7bf2496fa563c046d05e4d232d7b7fd61346e2402052064b773e5c378bf6f73" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:aa81873e2c8c5aa616ab8e017a481a96742fdf9313c40f14338ca7dbf50cb55f" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:68ffcf982715f5b5b7686bdd349ff75d422e8f22551000c24b30eaa1b7f7ae84" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6188de70e190847bb6db3dc3981cbadff87d27d6fe9b4f0e18726d55795cee9b" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1c962145c7473723df9722ba4c058de12eb5ebedcb4e27e7d902920aa3831ee8" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f61a9326f80ca59214d1cceb0a09bb2ece5b2563d4e0cd37bfd5515c28510674" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:183f857a53bcf4b1b42ef0f57ca553ab56bdd170e49d8091e96c51c3d69ca696" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:941c1cfdf4799d623cf3aa1d326a6b4fdb7a5799ee2687f3516738216d2262fb" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72a8d9564a717ee291f554eeb4bfeafe2309d5ec0aa6c475170bdab0f9ee8e88" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:511d15193cbe013619dd05414c35a7dedf2088fcee93c6bbb7c77859765bd4e8" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aea1f9741b603a8d8fedb0ed5502c2bc0accbc51f43e2ad1337fe7259c2b77a5" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4019a9d473c708cf2f16415688ef0b4639e07abaa569d72f74745bbeffafa2c7" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:093d63b4b0f52d98ebae33b8c50900d3d67e0666094b1be7a12fffd7f65de74b" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2abe21d8ba64cded53a2a677e149ceb76dcf44284202d737178afe7ba540c1eb" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:4feb7511c29f8442cbbc28149a92093d32e815a28aa2c50d333826ad2a20fdf0" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e99685fc95d386da368013e7fb4269dd39c30d99f812a8372d62f244f662709c" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a90a13408a7a856b87be8a9f008fff53c5080eea4e4180f6c2e546e4a972fb5d" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ac51b65e8dc76cf4949419c54c5528adb24fc721df722fd452e5fbc236f5c40" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59b2093224a18c6508d95cfdeba8db9cbfd6f3494e94793b58972933fcee4c6d" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f01a5d6444a3258b00dc07b6ea4733e26f8072b788bef750baa37b370266137" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6e2c12160c72aeda9d1283e612f68804621f448145a210f1bf1d79151c47090" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb28c1f569f8d33b2b5dcd05d0e6ef7005d8639c54c2f0be824f05aedf715255" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1766b5724c3f779317d5321664a343c07773c8c5fd1532e4039e6cc7d1a815be" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b6d9e5a2ed9c4988c8f9b28b3bc0e3e5b1aaa10c28d210a594ff3a8c02742daf" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b5f7a446ddaf6ca0fad9a5535b56fbfc29998bf0e0b450d174bbec0d600e1d72" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:eed5ac260dd545fbc20da5f4f15e7efe36a55e0e7cf706e4ec005b491a9546a0" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:582462833ba7cee52e968b0341b85e392ae53d44c0f9af6a5927c80e539a8b67" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:69a607203441e07e9a8a529cff1d5b73f6a160f22db1097211e6212a68567d11" }, + { file = "rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0" }, ] [[package]] name = "ruff" -version = "0.5.7" +version = "0.12.4" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" -files = [ - {file = "ruff-0.5.7-py3-none-linux_armv6l.whl", hash = "sha256:548992d342fc404ee2e15a242cdbea4f8e39a52f2e7752d0e4cbe88d2d2f416a"}, - {file = "ruff-0.5.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:00cc8872331055ee017c4f1071a8a31ca0809ccc0657da1d154a1d2abac5c0be"}, - {file = "ruff-0.5.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:eaf3d86a1fdac1aec8a3417a63587d93f906c678bb9ed0b796da7b59c1114a1e"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a01c34400097b06cf8a6e61b35d6d456d5bd1ae6961542de18ec81eaf33b4cb8"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcc8054f1a717e2213500edaddcf1dbb0abad40d98e1bd9d0ad364f75c763eea"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f70284e73f36558ef51602254451e50dd6cc479f8b6f8413a95fcb5db4a55fc"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a78ad870ae3c460394fc95437d43deb5c04b5c29297815a2a1de028903f19692"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ccd078c66a8e419475174bfe60a69adb36ce04f8d4e91b006f1329d5cd44bcf"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e31c9bad4ebf8fdb77b59cae75814440731060a09a0e0077d559a556453acbb"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d796327eed8e168164346b769dd9a27a70e0298d667b4ecee6877ce8095ec8e"}, - {file = "ruff-0.5.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4a09ea2c3f7778cc635e7f6edf57d566a8ee8f485f3c4454db7771efb692c499"}, - {file = "ruff-0.5.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a36d8dcf55b3a3bc353270d544fb170d75d2dff41eba5df57b4e0b67a95bb64e"}, - {file = "ruff-0.5.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9369c218f789eefbd1b8d82a8cf25017b523ac47d96b2f531eba73770971c9e5"}, - {file = "ruff-0.5.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b88ca3db7eb377eb24fb7c82840546fb7acef75af4a74bd36e9ceb37a890257e"}, - {file = "ruff-0.5.7-py3-none-win32.whl", hash = "sha256:33d61fc0e902198a3e55719f4be6b375b28f860b09c281e4bdbf783c0566576a"}, - {file = "ruff-0.5.7-py3-none-win_amd64.whl", hash = "sha256:083bbcbe6fadb93cd86709037acc510f86eed5a314203079df174c40bbbca6b3"}, - {file = "ruff-0.5.7-py3-none-win_arm64.whl", hash = "sha256:2dca26154ff9571995107221d0aeaad0e75a77b5a682d6236cf89a58c70b76f4"}, - {file = "ruff-0.5.7.tar.gz", hash = "sha256:8dfc0a458797f5d9fb622dd0efc52d796f23f0a1493a9527f4e49a550ae9a7e5"}, +groups = ["dev"] +files = [ + { file = "ruff-0.12.4-py3-none-linux_armv6l.whl", hash = "sha256:cb0d261dac457ab939aeb247e804125a5d521b21adf27e721895b0d3f83a0d0a" }, + { file = "ruff-0.12.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:55c0f4ca9769408d9b9bac530c30d3e66490bd2beb2d3dae3e4128a1f05c7442" }, + { file = "ruff-0.12.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a8224cc3722c9ad9044da7f89c4c1ec452aef2cfe3904365025dd2f51daeae0e" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9949d01d64fa3672449a51ddb5d7548b33e130240ad418884ee6efa7a229586" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:be0593c69df9ad1465e8a2d10e3defd111fdb62dcd5be23ae2c06da77e8fcffb" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7dea966bcb55d4ecc4cc3270bccb6f87a337326c9dcd3c07d5b97000dbff41c" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:afcfa3ab5ab5dd0e1c39bf286d829e042a15e966b3726eea79528e2e24d8371a" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c057ce464b1413c926cdb203a0f858cd52f3e73dcb3270a3318d1630f6395bb3" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e64b90d1122dc2713330350626b10d60818930819623abbb56535c6466cce045" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2abc48f3d9667fdc74022380b5c745873499ff827393a636f7a59da1515e7c57" }, + { file = "ruff-0.12.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2b2449dc0c138d877d629bea151bee8c0ae3b8e9c43f5fcaafcd0c0d0726b184" }, + { file = "ruff-0.12.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:56e45bb11f625db55f9b70477062e6a1a04d53628eda7784dce6e0f55fd549eb" }, + { file = "ruff-0.12.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:478fccdb82ca148a98a9ff43658944f7ab5ec41c3c49d77cd99d44da019371a1" }, + { file = "ruff-0.12.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0fc426bec2e4e5f4c4f182b9d2ce6a75c85ba9bcdbe5c6f2a74fcb8df437df4b" }, + { file = "ruff-0.12.4-py3-none-win32.whl", hash = "sha256:4de27977827893cdfb1211d42d84bc180fceb7b72471104671c59be37041cf93" }, + { file = "ruff-0.12.4-py3-none-win_amd64.whl", hash = "sha256:fe0b9e9eb23736b453143d72d2ceca5db323963330d5b7859d60d101147d461a" }, + { file = "ruff-0.12.4-py3-none-win_arm64.whl", hash = "sha256:0618ec4442a83ab545e5b71202a5c0ed7791e8471435b94e655b570a5031a98e" }, + { file = "ruff-0.12.4.tar.gz", hash = "sha256:13efa16df6c6eeb7d0f091abae50f58e9522f3843edb40d56ad52a5a4a4b6873" }, ] [[package]] @@ -2990,35 +3389,37 @@ version = "1.8.3" description = "Send file to trash natively under Mac OS X, Windows and Linux" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +groups = ["dev"] files = [ {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, ] [package.extras] -nativelib = ["pyobjc-framework-Cocoa", "pywin32"] -objc = ["pyobjc-framework-Cocoa"] -win32 = ["pywin32"] +nativelib = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\"", "pywin32 ; sys_platform == \"win32\""] +objc = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\""] +win32 = ["pywin32 ; sys_platform == \"win32\""] [[package]] name = "setuptools" -version = "75.2.0" +version = "80.9.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "setuptools-75.2.0-py3-none-any.whl", hash = "sha256:a7fcb66f68b4d9e8e66b42f9876150a3371558f98fa32222ffaa5bced76406f8"}, - {file = "setuptools-75.2.0.tar.gz", hash = "sha256:753bb6ebf1f465a1912e19ed1d41f403a79173a9acf66a42e7e6aec45c3c16ec"}, + { file = "setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922" }, + { file = "setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c" }, ] [package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.8.0) ; sys_platform != \"cygwin\""] +core = ["importlib_metadata (>=6) ; python_version < \"3.10\"", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.14.*)", "pytest-mypy"] [[package]] name = "six" @@ -3026,6 +3427,7 @@ version = "1.16.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +groups = ["main", "dev"] files = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -3037,167 +3439,31 @@ version = "1.3.1" description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, ] -[[package]] -name = "snowballstemmer" -version = "2.2.0" -description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." -optional = false -python-versions = "*" -files = [ - {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, - {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, -] - [[package]] name = "soupsieve" -version = "2.6" +version = "2.7" description = "A modern CSS selector implementation for Beautiful Soup." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"}, - {file = "soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb"}, -] - -[[package]] -name = "sphinx" -version = "8.1.3" -description = "Python documentation generator" -optional = false -python-versions = ">=3.10" -files = [ - {file = "sphinx-8.1.3-py3-none-any.whl", hash = "sha256:09719015511837b76bf6e03e42eb7595ac8c2e41eeb9c29c5b755c6b677992a2"}, - {file = "sphinx-8.1.3.tar.gz", hash = "sha256:43c1911eecb0d3e161ad78611bc905d1ad0e523e4ddc202a58a821773dc4c927"}, -] - -[package.dependencies] -alabaster = ">=0.7.14" -babel = ">=2.13" -colorama = {version = ">=0.4.6", markers = "sys_platform == \"win32\""} -docutils = ">=0.20,<0.22" -imagesize = ">=1.3" -Jinja2 = ">=3.1" -packaging = ">=23.0" -Pygments = ">=2.17" -requests = ">=2.30.0" -snowballstemmer = ">=2.2" -sphinxcontrib-applehelp = ">=1.0.7" -sphinxcontrib-devhelp = ">=1.0.6" -sphinxcontrib-htmlhelp = ">=2.0.6" -sphinxcontrib-jsmath = ">=1.0.1" -sphinxcontrib-qthelp = ">=1.0.6" -sphinxcontrib-serializinghtml = ">=1.1.9" - -[package.extras] -docs = ["sphinxcontrib-websupport"] -lint = ["flake8 (>=6.0)", "mypy (==1.11.1)", "pyright (==1.1.384)", "pytest (>=6.0)", "ruff (==0.6.9)", "sphinx-lint (>=0.9)", "tomli (>=2)", "types-Pillow (==10.2.0.20240822)", "types-Pygments (==2.18.0.20240506)", "types-colorama (==0.4.15.20240311)", "types-defusedxml (==0.7.0.20240218)", "types-docutils (==0.21.0.20241005)", "types-requests (==2.32.0.20240914)", "types-urllib3 (==1.26.25.14)"] -test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=8.0)", "setuptools (>=70.0)", "typing_extensions (>=4.9)"] - -[[package]] -name = "sphinxcontrib-applehelp" -version = "2.0.0" -description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" -optional = false -python-versions = ">=3.9" -files = [ - {file = "sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5"}, - {file = "sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1"}, -] - -[package.extras] -lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] -standalone = ["Sphinx (>=5)"] -test = ["pytest"] - -[[package]] -name = "sphinxcontrib-devhelp" -version = "2.0.0" -description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" -optional = false -python-versions = ">=3.9" -files = [ - {file = "sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2"}, - {file = "sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad"}, -] - -[package.extras] -lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] -standalone = ["Sphinx (>=5)"] -test = ["pytest"] - -[[package]] -name = "sphinxcontrib-htmlhelp" -version = "2.1.0" -description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" -optional = false -python-versions = ">=3.9" -files = [ - {file = "sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8"}, - {file = "sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9"}, -] - -[package.extras] -lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] -standalone = ["Sphinx (>=5)"] -test = ["html5lib", "pytest"] - -[[package]] -name = "sphinxcontrib-jsmath" -version = "1.0.1" -description = "A sphinx extension which renders display math in HTML via JavaScript" -optional = false -python-versions = ">=3.5" -files = [ - {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, - {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, -] - -[package.extras] -test = ["flake8", "mypy", "pytest"] - -[[package]] -name = "sphinxcontrib-qthelp" -version = "2.0.0" -description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" -optional = false -python-versions = ">=3.9" -files = [ - {file = "sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb"}, - {file = "sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab"}, + { file = "soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4" }, + { file = "soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a" }, ] -[package.extras] -lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] -standalone = ["Sphinx (>=5)"] -test = ["defusedxml (>=0.7.1)", "pytest"] - -[[package]] -name = "sphinxcontrib-serializinghtml" -version = "2.0.0" -description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" -optional = false -python-versions = ">=3.9" -files = [ - {file = "sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331"}, - {file = "sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d"}, -] - -[package.extras] -lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] -standalone = ["Sphinx (>=5)"] -test = ["pytest"] - [[package]] name = "stack-data" version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, @@ -3217,6 +3483,7 @@ version = "0.18.1" description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, @@ -3238,6 +3505,7 @@ version = "1.4.0" description = "A tiny CSS parser" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, @@ -3256,6 +3524,7 @@ version = "1.0.0" description = "List processing tools and functional utilities" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236"}, {file = "toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02"}, @@ -3263,22 +3532,24 @@ files = [ [[package]] name = "tornado" -version = "6.4.1" +version = "6.5.1" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, - {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"}, - {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"}, - {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"}, - {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"}, + { file = "tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7" }, + { file = "tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6" }, + { file = "tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888" }, + { file = "tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331" }, + { file = "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" }, + { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401" }, + { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692" }, + { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a" }, + { file = "tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365" }, + { file = "tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b" }, + { file = "tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7" }, + { file = "tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c" }, ] [[package]] @@ -3287,6 +3558,7 @@ version = "5.14.3" description = "Traitlets Python configuration system" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, @@ -3298,13 +3570,14 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0, [[package]] name = "types-python-dateutil" -version = "2.9.0.20241003" +version = "2.9.0.20250708" description = "Typing stubs for python-dateutil" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "types-python-dateutil-2.9.0.20241003.tar.gz", hash = "sha256:58cb85449b2a56d6684e41aeefb4c4280631246a0da1a719bdbe6f3fb0317446"}, - {file = "types_python_dateutil-2.9.0.20241003-py3-none-any.whl", hash = "sha256:250e1d8e80e7bbc3a6c99b907762711d1a1cdd00e978ad39cb5940f6f0a87f3d"}, + { file = "types_python_dateutil-2.9.0.20250708-py3-none-any.whl", hash = "sha256:4d6d0cc1cc4d24a2dc3816024e502564094497b713f7befda4d5bc7a8e3fd21f" }, + { file = "types_python_dateutil-2.9.0.20250708.tar.gz", hash = "sha256:ccdbd75dab2d6c9696c350579f34cffe2c281e4c5f27a585b2a2438dd1d5c8ab" }, ] [[package]] @@ -3313,17 +3586,34 @@ version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] +[[package]] +name = "typing-inspection" +version = "0.4.1" +description = "Runtime typing introspection tools" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + { file = "typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51" }, + { file = "typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28" }, +] + +[package.dependencies] +typing-extensions = ">=4.12.0" + [[package]] name = "tzdata" version = "2024.2" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" +groups = ["main"] files = [ {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, @@ -3335,6 +3625,7 @@ version = "1.3.0" description = "RFC 6570 URI Template Processor" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, @@ -3345,30 +3636,32 @@ dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake [[package]] name = "urllib3" -version = "2.2.3" +version = "2.5.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, + { file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc" }, + { file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760" }, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.27.0" +version = "20.31.2" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "virtualenv-20.27.0-py3-none-any.whl", hash = "sha256:44a72c29cceb0ee08f300b314848c86e57bf8d1f13107a5e671fb9274138d655"}, - {file = "virtualenv-20.27.0.tar.gz", hash = "sha256:2ca56a68ed615b8fe4326d11a0dca5dfbe8fd68510fb6c6349163bed3c15f2b2"}, + { file = "virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11" }, + { file = "virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af" }, ] [package.dependencies] @@ -3378,7 +3671,50 @@ platformdirs = ">=3.9.1,<5" [package.extras] docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"GraalVM\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""] + +[[package]] +name = "watchdog" +version = "6.0.0" +description = "Filesystem events monitoring" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26" }, + { file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112" }, + { file = "watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3" }, + { file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c" }, + { file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2" }, + { file = "watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c" }, + { file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948" }, + { file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860" }, + { file = "watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0" }, + { file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c" }, + { file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134" }, + { file = "watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b" }, + { file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8" }, + { file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a" }, + { file = "watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c" }, + { file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881" }, + { file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11" }, + { file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa" }, + { file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2" }, + { file = "watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a" }, + { file = "watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680" }, + { file = "watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f" }, + { file = "watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282" }, +] + +[package.extras] +watchmedo = ["PyYAML (>=3.10)"] [[package]] name = "wcwidth" @@ -3386,6 +3722,7 @@ version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, @@ -3393,25 +3730,23 @@ files = [ [[package]] name = "webcolors" -version = "24.8.0" +version = "24.11.1" description = "A library for working with the color formats defined by HTML and CSS." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "webcolors-24.8.0-py3-none-any.whl", hash = "sha256:fc4c3b59358ada164552084a8ebee637c221e4059267d0f8325b3b560f6c7f0a"}, - {file = "webcolors-24.8.0.tar.gz", hash = "sha256:08b07af286a01bcd30d583a7acadf629583d1f79bfef27dd2c2c5c263817277d"}, + { file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9" }, + { file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6" }, ] -[package.extras] -docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"] -tests = ["coverage[toml]"] - [[package]] name = "webencodings" version = "0.5.1" description = "Character encoding aliases for legacy web content" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, @@ -3423,6 +3758,7 @@ version = "1.8.0" description = "WebSocket client for Python with low level API options" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, @@ -3435,62 +3771,70 @@ test = ["websockets"] [[package]] name = "widgetsnbextension" -version = "4.0.13" +version = "4.0.14" description = "Jupyter interactive widgets for Jupyter Notebook" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ - {file = "widgetsnbextension-4.0.13-py3-none-any.whl", hash = "sha256:74b2692e8500525cc38c2b877236ba51d34541e6385eeed5aec15a70f88a6c71"}, - {file = "widgetsnbextension-4.0.13.tar.gz", hash = "sha256:ffcb67bc9febd10234a362795f643927f4e0c05d9342c727b65d2384f8feacb6"}, + { file = "widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575" }, + { file = "widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af" }, ] [[package]] name = "xarray" -version = "2024.10.0" +version = "2025.7.1" description = "N-D labeled arrays and datasets in Python" optional = false -python-versions = ">=3.10" +python-versions = ">=3.11" +groups = ["main"] files = [ - {file = "xarray-2024.10.0-py3-none-any.whl", hash = "sha256:ae1d38cb44a0324dfb61e492394158ae22389bf7de9f3c174309c17376df63a0"}, - {file = "xarray-2024.10.0.tar.gz", hash = "sha256:e369e2bac430e418c2448e5b96f07da4635f98c1319aa23cfeb3fbcb9a01d2e0"}, + { file = "xarray-2025.7.1-py3-none-any.whl", hash = "sha256:e8647b659e53bd350d7c5a91c34dd4122ad6a3ca0bc41399d424a7c0273c7635" }, + { file = "xarray-2025.7.1.tar.gz", hash = "sha256:2884bf5672b540fcc6ff8c20a3196bda0d78fbfb4d67398d60526e97c2faceef" }, ] [package.dependencies] -numpy = ">=1.24" -packaging = ">=23.1" -pandas = ">=2.1" +numpy = ">=1.26" +packaging = ">=24.1" +pandas = ">=2.2" [package.extras] -accel = ["bottleneck", "flox", "numba (>=0.54)", "numbagg", "opt-einsum", "scipy"] +accel = ["bottleneck", "flox (>=0.9)", "numba (>=0.59)", "numbagg (>=0.8)", "opt_einsum", "scipy (>=1.13)"] complete = ["xarray[accel,etc,io,parallel,viz]"] -dev = ["hypothesis", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-env", "pytest-timeout", "pytest-xdist", "ruff", "sphinx", "sphinx-autosummary-accessors", "xarray[complete]"] -etc = ["sparse"] -io = ["cftime", "fsspec", "h5netcdf", "netCDF4", "pooch", "pydap", "scipy", "zarr"] +etc = ["sparse (>=0.15)"] +io = ["cftime", "fsspec", "h5netcdf", "netCDF4 (>=1.6.0)", "pooch", "pydap", "scipy (>=1.13)", "zarr (>=2.18)"] parallel = ["dask[complete]"] -viz = ["cartopy", "matplotlib", "nc-time-axis", "seaborn"] +types = ["pandas-stubs", "scipy-stubs", "types-PyYAML", "types-Pygments", "types-colorama", "types-decorator", "types-defusedxml", "types-docutils", "types-networkx", "types-openpyxl", "types-pexpect", "types-psutil", "types-pycurl", "types-python-dateutil", "types-pytz", "types-setuptools"] +viz = ["cartopy (>=0.23)", "matplotlib", "nc-time-axis", "seaborn"] [[package]] name = "zarr" -version = "2.18.3" +version = "3.1.0" description = "An implementation of chunked, compressed, N-dimensional arrays for Python" optional = false -python-versions = ">=3.10" +python-versions = ">=3.11" +groups = ["main"] files = [ - {file = "zarr-2.18.3-py3-none-any.whl", hash = "sha256:b1f7dfd2496f436745cdd4c7bcf8d3b4bc1dceef5fdd0d589c87130d842496dd"}, - {file = "zarr-2.18.3.tar.gz", hash = "sha256:2580d8cb6dd84621771a10d31c4d777dca8a27706a1a89b29f42d2d37e2df5ce"}, + { file = "zarr-3.1.0-py3-none-any.whl", hash = "sha256:bd3d2f88d602d43f81df82e26dd115ea66635a2af5bf6da261d3c640bb4c1ce4" }, + { file = "zarr-3.1.0.tar.gz", hash = "sha256:ace5b111dc69d5315cb1655dfd0f816c5acf9798d2ad92f43b608a52c8c8ac2b" }, ] [package.dependencies] -asciitree = "*" -fasteners = {version = "*", markers = "sys_platform != \"emscripten\""} -numcodecs = ">=0.10.0" -numpy = ">=1.24" +donfig = ">=0.8" +numcodecs = { version = ">=0.14", extras = ["crc32c"] } +numpy = ">=1.26" +packaging = ">=22.0" +typing-extensions = ">=4.9" [package.extras] -docs = ["numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-automodapi", "sphinx-copybutton", "sphinx-design", "sphinx-issues"] -jupyter = ["ipytree (>=0.2.2)", "ipywidgets (>=8.0.0)", "notebook"] +docs = ["astroid (<4)", "numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "pytest", "rich", "s3fs (>=2023.10.0)", "sphinx (==8.1.3)", "sphinx-autoapi (==3.4.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx-copybutton", "sphinx-design", "sphinx-issues", "sphinx-reredirects", "towncrier"] +gpu = ["cupy-cuda12x"] +optional = ["rich", "universal-pathlib"] +remote = ["fsspec (>=2023.10.0)", "obstore (>=0.5.1)"] +remote-tests = ["botocore", "fsspec (>=2023.10.0)", "moto[s3,server]", "obstore (>=0.5.1)", "requests", "s3fs (>=2023.10.0)"] +test = ["coverage", "hypothesis", "mypy", "packaging", "pytest (<8.4)", "pytest-accept", "pytest-asyncio", "pytest-cov", "pytest-xdist", "rich", "tomlkit", "uv"] [metadata] -lock-version = "2.0" -python-versions = "^3.12" -content-hash = "c227f4956e13803f7c4c240d2028332843d0193a7d65c66c70cea8b1ac344a56" +lock-version = "2.1" +python-versions = ">=3.13" +content-hash = "8bae2583ae033a597f7a25d41850932002e2a0fdd9baa8e5edd7856f5c19bd12" diff --git a/pyproject.toml b/pyproject.toml index fe31d88..3899a2a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,42 +1,44 @@ -[tool.poetry] -name = "weather-provider-libraries" -version = "0.3.1" -description = "The Weather Provider Libraries for the Weather Provider Access Suite project" -authors = ["Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com>"] -license = "MPL2.0" -readme = "README.rst" +[project] +name = "meteoforge" +version = "3.0.0-alpha.1" +description = "The MeteoForge Project provides a set of tools to work with meteorological data, focused on downloading, processing and formatting datasets from various sources." +authors = [ + { name = "Raoul Linnenbank", email = "58594297+rflinnenbank@users.noreply.github.com" } +] +license = { text = "MPL2.0" } +readme = "README.md" +requires-python = ">=3.13" +dynamic = ["dependencies"] + +[tool.poetry.urls] +homepage = "https://github.com/alliander-opensource/meteoforge" +repository = "https://github.com/alliander-opensource/meteoforge" +documentation = "https://github.com/alliander-opensource/meteoforge" [tool.poetry.dependencies] -python = "^3.12" -pydantic = "^2.8.2" -pyproj = "^3.6.1" -numpy = "^2.0.1" -xarray = "^2024.10.0" -dask = "^2024.10.0" -zarr = "^2.18.3" +dask = "^2025.7" netcdf4 = "^1.7.2" - -[tool.poetry.group.dev] -optional = true +numpy = "^2.3.1" +pydantic = "^2.11.7" +pyproj = "^3.7.1" +xarray = "^2025.7.1" +zarr = "^3.1.0" [tool.poetry.group.dev.dependencies] -sphinx = "^8.0.2" -pytest = "^8.3.2" -coverage = "^7.6.1" -mypy = "^1.11.1" -ruff = "^0.5.7" -black = "^24.8.0" -jupyter = "^1.0.0" -pre-commit = "^3.8.0" -myst-parser = "^4.0.0" -pytest-cov = "^5.0.0" - +coverage = "^7.9.2" +jupyter = "^1.1.1" +mkdocs = "^1.6.1" +mkdocs-material = "^9.6.15" +mkdocstrings = { extras = ["python"], version = "^0.29.1" } +mypy = "^1.17.0" +pre-commit = "^4.2.0" +pytest = "^8.4.1" +ruff = "^0.12.4" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" -# Tool configuration: [tool.ruff] output-format = "github" line-length = 120 @@ -73,46 +75,33 @@ exclude = [ [tool.ruff.lint] select = [ - # pycodestyle "E", - # Pyflake "F", - # pyupgrade "UP", - # flake8-bugbear "B", - # flake8-simplify "SIM", - # isort "I", - # pydocstyle "D", ] ignore = [ - # Missing docstring in public module "D100", - # Missing docstring in public package "D104", - # `one-blank-line-before-class` (D203) and `no-blank-line-before-class` (D211) are incompatible. Ignoring `one-blank-line-before-class`. "D203", - # `multi-line-summary-first-line` (D212) and `multi-line-summary-second-line` (D213) are incompatible. Ignoring `multi-line-summary-second-line`. "D213", ] [tool.ruff.lint.per-file-ignores] -# Allow longer line length in conftest where many 1-line dictinaries are specified "conftest.py" = ["E501"] [tool.mypy] -packages = ["vbd_alise_api"] -exclude = ["migrations"] +packages = ["meteoforge"] [tool.pytest.ini_options] addopts = [ - "--cov", - "--cov-branch", - "--cov-report=xml", - "--cov-report=term-missing" # Coverage report incl missing lines in terminal + "--cov", + "--cov-branch", + "--cov-report=xml", + "--cov-report=term-missing" ] minversion = "8.3.2" testpaths = ["tests"] @@ -123,6 +112,3 @@ omit = [ "tests/*", ".venv/*", ] - -[tool.black] -line-length = 120 diff --git a/src/meteoforge/__init__.py b/src/meteoforge/__init__.py new file mode 100644 index 0000000..4265cc3 --- /dev/null +++ b/src/meteoforge/__init__.py @@ -0,0 +1 @@ +#!/usr/bin/env python diff --git a/src/weather_provider_libraries/__init__.py b/src/weather_provider_libraries/__init__.py deleted file mode 100644 index fef66b5..0000000 --- a/src/weather_provider_libraries/__init__.py +++ /dev/null @@ -1 +0,0 @@ -#!/usr/bin/env python \ No newline at end of file From 2a4c434da0595a6eff4c51b112f914ec5814391b Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 15:30:21 +0200 Subject: [PATCH 03/50] Update pyproject.toml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3899a2a..15525ad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -94,7 +94,7 @@ ignore = [ "conftest.py" = ["E501"] [tool.mypy] -packages = ["meteoforge"] +packages = ["src.meteoforge"] [tool.pytest.ini_options] addopts = [ From 2ed50ac8e49837386193240cb21e5fdf90e4c3b5 Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 15:40:39 +0200 Subject: [PATCH 04/50] Update README.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fbddadf..1166b54 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,9 @@ [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=bugs)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=coverage)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) -

+

## Index From 267d94de4986b32a5c43b342254804494676094d Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 15:50:42 +0200 Subject: [PATCH 05/50] feature: Added issue templates Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .github/ISSUE_TEMPLATE/bug_report.md | 43 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 23 ++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..c921beb --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,43 @@ +--- +name: Bug Report +about: Help us improve by reporting a bug +title: '' +labels: '' +assignees: '' +--- + +## **Describe the Bug** + +Provide a clear and concise description of the issue. + +## **To Reproduce** + +Steps to reproduce the behavior: + +1. Go to '...' +2. Click on '...' +3. Scroll down to '...' +4. See the error. + +## **Expected Behavior** + +Describe what you expected to happen. + +## **Screenshots** + +If applicable, add screenshots to help explain the problem. + +## **Desktop (please complete the following information):** + +- **OS**: [e.g., iOS] +- **Project Version**: [e.g., 22] + +## **Smartphone (please complete the following information):** + +- **Device**: [e.g., iPhone 6] +- **OS**: [e.g., iOS 8.1] +- **Project Version**: [e.g., 22] + +## **Additional Context** + +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..08970e0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,23 @@ +--- +name: Feature Request +about: Suggest an idea to improve this project +title: '' +labels: '' +assignees: '' +--- + +## **Is Your Feature Request Related to a Problem? Please Describe** + +Provide a clear and concise description of the problem. For example: "I'm frustrated when [...]" + +## **Describe the Solution You'd Like** + +Explain what you want to happen in a clear and concise manner. + +## **Describe Alternatives You've Considered** + +List any alternative solutions or features you’ve thought about. + +## **Additional Context** + +Add any other context, screenshots, or examples to support your request. From ce88046822cb26e85454845d1633cac06d07441f Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 21:12:11 +0200 Subject: [PATCH 06/50] feature: Finalized building frame and added basic logging and mock testing. Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .../meteo_sources/__init__.py | 2 + .../meteo_sources/example_source/__init__.py | 2 + .../example_model_one/__init__.py | 2 + .../example_source/example_model_one/model.py | 2 + .../example_model_one/parameter_settings.yaml | 0 .../example_model_one/update.py | 2 + .../example_model_two/__init__.py | 2 + .../example_source/example_model_two/model.py | 2 + .../example_model_two/parameter_settings.yaml | 0 .../example_model_two/update.py | 2 + .../example_source/source_config.yaml.py | 2 + poetry.lock | 216 ++++++++++-------- pyproject.toml | 2 + src/meteoforge/__init__.py | 3 +- src/meteoforge/core/controller.py | 2 + src/meteoforge/core/manager.py | 2 + src/meteoforge/core/model.py | 2 + src/meteoforge/core/source.py | 2 + src/meteoforge/logging/logging.py | 27 +++ src/meteoforge/logging/logging_config.yaml | 28 +++ src/meteoforge/parameters/parameters.py | 2 + src/meteoforge/spatial_temporal/locations.py | 2 + src/meteoforge/spatial_temporal/periods.py | 2 + src/meteoforge_tools/README.md | 3 + src/meteoforge_tools/__init__.py | 2 + .../netfcd_to_zarr_conversion.py | 2 + tests/conftest.py | 2 + tests/test_example_test.py | 7 + 28 files changed, 230 insertions(+), 94 deletions(-) create mode 100644 docs/example-meteo-source/meteo_sources/__init__.py create mode 100644 docs/example-meteo-source/meteo_sources/example_source/__init__.py create mode 100644 docs/example-meteo-source/meteo_sources/example_source/example_model_one/__init__.py create mode 100644 docs/example-meteo-source/meteo_sources/example_source/example_model_one/model.py create mode 100644 docs/example-meteo-source/meteo_sources/example_source/example_model_one/parameter_settings.yaml create mode 100644 docs/example-meteo-source/meteo_sources/example_source/example_model_one/update.py create mode 100644 docs/example-meteo-source/meteo_sources/example_source/example_model_two/__init__.py create mode 100644 docs/example-meteo-source/meteo_sources/example_source/example_model_two/model.py create mode 100644 docs/example-meteo-source/meteo_sources/example_source/example_model_two/parameter_settings.yaml create mode 100644 docs/example-meteo-source/meteo_sources/example_source/example_model_two/update.py create mode 100644 docs/example-meteo-source/meteo_sources/example_source/source_config.yaml.py create mode 100644 src/meteoforge/core/controller.py create mode 100644 src/meteoforge/core/manager.py create mode 100644 src/meteoforge/core/model.py create mode 100644 src/meteoforge/core/source.py create mode 100644 src/meteoforge/logging/logging.py create mode 100644 src/meteoforge/logging/logging_config.yaml create mode 100644 src/meteoforge/parameters/parameters.py create mode 100644 src/meteoforge/spatial_temporal/locations.py create mode 100644 src/meteoforge/spatial_temporal/periods.py create mode 100644 src/meteoforge_tools/README.md create mode 100644 src/meteoforge_tools/__init__.py create mode 100644 src/meteoforge_tools/netfcd_to_zarr_conversion.py create mode 100644 tests/conftest.py create mode 100644 tests/test_example_test.py diff --git a/docs/example-meteo-source/meteo_sources/__init__.py b/docs/example-meteo-source/meteo_sources/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/docs/example-meteo-source/meteo_sources/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/docs/example-meteo-source/meteo_sources/example_source/__init__.py b/docs/example-meteo-source/meteo_sources/example_source/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/docs/example-meteo-source/meteo_sources/example_source/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/docs/example-meteo-source/meteo_sources/example_source/example_model_one/__init__.py b/docs/example-meteo-source/meteo_sources/example_source/example_model_one/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/docs/example-meteo-source/meteo_sources/example_source/example_model_one/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/docs/example-meteo-source/meteo_sources/example_source/example_model_one/model.py b/docs/example-meteo-source/meteo_sources/example_source/example_model_one/model.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/docs/example-meteo-source/meteo_sources/example_source/example_model_one/model.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/docs/example-meteo-source/meteo_sources/example_source/example_model_one/parameter_settings.yaml b/docs/example-meteo-source/meteo_sources/example_source/example_model_one/parameter_settings.yaml new file mode 100644 index 0000000..e69de29 diff --git a/docs/example-meteo-source/meteo_sources/example_source/example_model_one/update.py b/docs/example-meteo-source/meteo_sources/example_source/example_model_one/update.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/docs/example-meteo-source/meteo_sources/example_source/example_model_one/update.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/docs/example-meteo-source/meteo_sources/example_source/example_model_two/__init__.py b/docs/example-meteo-source/meteo_sources/example_source/example_model_two/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/docs/example-meteo-source/meteo_sources/example_source/example_model_two/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/docs/example-meteo-source/meteo_sources/example_source/example_model_two/model.py b/docs/example-meteo-source/meteo_sources/example_source/example_model_two/model.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/docs/example-meteo-source/meteo_sources/example_source/example_model_two/model.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/docs/example-meteo-source/meteo_sources/example_source/example_model_two/parameter_settings.yaml b/docs/example-meteo-source/meteo_sources/example_source/example_model_two/parameter_settings.yaml new file mode 100644 index 0000000..e69de29 diff --git a/docs/example-meteo-source/meteo_sources/example_source/example_model_two/update.py b/docs/example-meteo-source/meteo_sources/example_source/example_model_two/update.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/docs/example-meteo-source/meteo_sources/example_source/example_model_two/update.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/docs/example-meteo-source/meteo_sources/example_source/source_config.yaml.py b/docs/example-meteo-source/meteo_sources/example_source/source_config.yaml.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/docs/example-meteo-source/meteo_sources/example_source/source_config.yaml.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/poetry.lock b/poetry.lock index 87c3943..c280b9e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -246,14 +246,14 @@ css = ["tinycss2 (>=1.1.0,<1.5)"] [[package]] name = "certifi" -version = "2024.8.30" +version = "2025.7.14" description = "Python package for providing Mozilla's CA Bundle." optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" groups = ["main", "dev"] files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, + { file = "certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2" }, + { file = "certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995" }, ] [[package]] @@ -501,14 +501,14 @@ files = [ [[package]] name = "click" -version = "8.1.7" +version = "8.2.1" description = "Composable command line interface toolkit" optional = false -python-versions = ">=3.7" +python-versions = ">=3.10" groups = ["main", "dev"] files = [ - {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, - {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, + { file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b" }, + { file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202" }, ] [package.dependencies] @@ -516,14 +516,14 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "cloudpickle" -version = "3.1.0" +version = "3.1.1" description = "Pickler class to extend the standard pickle.Pickler functionality" optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "cloudpickle-3.1.0-py3-none-any.whl", hash = "sha256:fe11acda67f61aaaec473e3afe030feb131d78a43461b718185363384f1ba12e"}, - {file = "cloudpickle-3.1.0.tar.gz", hash = "sha256:81a929b6e3c7335c863c771d673d105f02efdb89dfaba0c90495d1c64796601b"}, + { file = "cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e" }, + { file = "cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64" }, ] [[package]] @@ -537,7 +537,25 @@ files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -markers = { main = "platform_system == \"Windows\"" } +markers = { main = "platform_system == \"Windows\" or sys_platform == \"win32\"" } + +[[package]] +name = "colorlog" +version = "6.9.0" +description = "Add colours to the output of Python's logging module." +optional = false +python-versions = ">=3.6" +groups = ["main"] +files = [ + { file = "colorlog-6.9.0-py3-none-any.whl", hash = "sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff" }, + { file = "colorlog-6.9.0.tar.gz", hash = "sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2" }, +] + +[package.dependencies] +colorama = { version = "*", markers = "sys_platform == \"win32\"" } + +[package.extras] +development = ["black", "flake8", "mypy", "pytest", "types-colorama"] [[package]] name = "comm" @@ -935,14 +953,14 @@ files = [ [[package]] name = "fsspec" -version = "2024.10.0" +version = "2025.7.0" description = "File-system specification" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["main"] files = [ - {file = "fsspec-2024.10.0-py3-none-any.whl", hash = "sha256:03b9a6785766a4de40368b88906366755e2819e758b83705c88cd7cb5fe81871"}, - {file = "fsspec-2024.10.0.tar.gz", hash = "sha256:eda2d8a4116d4f2429db8550f2457da57279247dd930bb12f821b58391359493"}, + { file = "fsspec-2025.7.0-py3-none-any.whl", hash = "sha256:8b012e39f63c7d5f10474de957f3ab793b47b45ae7d39f2fb735f8bbe25c0e21" }, + { file = "fsspec-2025.7.0.tar.gz", hash = "sha256:786120687ffa54b8283d942929540d8bc5ccfa820deb555a2b5d0ed2b737bf58" }, ] [package.extras] @@ -950,7 +968,7 @@ abfs = ["adlfs"] adl = ["adlfs"] arrow = ["pyarrow (>=1)"] dask = ["dask", "distributed"] -dev = ["pre-commit", "ruff"] +dev = ["pre-commit", "ruff (>=0.5)"] doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"] dropbox = ["dropbox", "dropboxdrivefs", "requests"] full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] @@ -969,8 +987,8 @@ sftp = ["paramiko"] smb = ["smbprotocol"] ssh = ["paramiko"] test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"] -test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask-expr", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] -test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard"] +test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] +test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard ; python_version < \"3.14\""] tqdm = ["tqdm"] [[package]] @@ -1097,14 +1115,14 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 [[package]] name = "iniconfig" -version = "2.0.0" +version = "2.1.0" description = "brain-dead simple config-ini parsing" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, + { file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760" }, + { file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7" }, ] [[package]] @@ -2291,14 +2309,14 @@ files = [ [[package]] name = "packaging" -version = "24.1" +version = "25.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, + { file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484" }, + { file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f" }, ] [[package]] @@ -2319,54 +2337,54 @@ lint = ["black"] [[package]] name = "pandas" -version = "2.2.3" +version = "2.3.1" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"}, - {file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"}, - {file = "pandas-2.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d9c45366def9a3dd85a6454c0e7908f2b3b8e9c138f5dc38fed7ce720d8453ed"}, - {file = "pandas-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86976a1c5b25ae3f8ccae3a5306e443569ee3c3faf444dfd0f41cda24667ad57"}, - {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b8661b0238a69d7aafe156b7fa86c44b881387509653fdf857bebc5e4008ad42"}, - {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37e0aced3e8f539eccf2e099f65cdb9c8aa85109b0be6e93e2baff94264bdc6f"}, - {file = "pandas-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:56534ce0746a58afaf7942ba4863e0ef81c9c50d3f0ae93e9497d6a41a057645"}, - {file = "pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039"}, - {file = "pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd"}, - {file = "pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698"}, - {file = "pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc"}, - {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3"}, - {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32"}, - {file = "pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5"}, - {file = "pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9"}, - {file = "pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4"}, - {file = "pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3"}, - {file = "pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319"}, - {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8"}, - {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a"}, - {file = "pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13"}, - {file = "pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015"}, - {file = "pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28"}, - {file = "pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0"}, - {file = "pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24"}, - {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659"}, - {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb"}, - {file = "pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d"}, - {file = "pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468"}, - {file = "pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18"}, - {file = "pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2"}, - {file = "pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4"}, - {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d"}, - {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a"}, - {file = "pandas-2.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc6b93f9b966093cb0fd62ff1a7e4c09e6d546ad7c1de191767baffc57628f39"}, - {file = "pandas-2.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5dbca4c1acd72e8eeef4753eeca07de9b1db4f398669d5994086f788a5d7cc30"}, - {file = "pandas-2.2.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8cd6d7cc958a3910f934ea8dbdf17b2364827bb4dafc38ce6eef6bb3d65ff09c"}, - {file = "pandas-2.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99df71520d25fade9db7c1076ac94eb994f4d2673ef2aa2e86ee039b6746d20c"}, - {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31d0ced62d4ea3e231a9f228366919a5ea0b07440d9d4dac345376fd8e1477ea"}, - {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7eee9e7cea6adf3e3d24e304ac6b8300646e2a5d1cd3a3c2abed9101b0846761"}, - {file = "pandas-2.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:4850ba03528b6dd51d6c5d273c46f183f39a9baf3f0143e566b89450965b105e"}, - {file = "pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667"}, + { file = "pandas-2.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:22c2e866f7209ebc3a8f08d75766566aae02bcc91d196935a1d9e59c7b990ac9" }, + { file = "pandas-2.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3583d348546201aff730c8c47e49bc159833f971c2899d6097bce68b9112a4f1" }, + { file = "pandas-2.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f951fbb702dacd390561e0ea45cdd8ecfa7fb56935eb3dd78e306c19104b9b0" }, + { file = "pandas-2.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd05b72ec02ebfb993569b4931b2e16fbb4d6ad6ce80224a3ee838387d83a191" }, + { file = "pandas-2.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1b916a627919a247d865aed068eb65eb91a344b13f5b57ab9f610b7716c92de1" }, + { file = "pandas-2.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fe67dc676818c186d5a3d5425250e40f179c2a89145df477dd82945eaea89e97" }, + { file = "pandas-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:2eb789ae0274672acbd3c575b0598d213345660120a257b47b5dafdc618aec83" }, + { file = "pandas-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2b0540963d83431f5ce8870ea02a7430adca100cec8a050f0811f8e31035541b" }, + { file = "pandas-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fe7317f578c6a153912bd2292f02e40c1d8f253e93c599e82620c7f69755c74f" }, + { file = "pandas-2.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6723a27ad7b244c0c79d8e7007092d7c8f0f11305770e2f4cd778b3ad5f9f85" }, + { file = "pandas-2.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3462c3735fe19f2638f2c3a40bd94ec2dc5ba13abbb032dd2fa1f540a075509d" }, + { file = "pandas-2.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:98bcc8b5bf7afed22cc753a28bc4d9e26e078e777066bc53fac7904ddef9a678" }, + { file = "pandas-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4d544806b485ddf29e52d75b1f559142514e60ef58a832f74fb38e48d757b299" }, + { file = "pandas-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:b3cd4273d3cb3707b6fffd217204c52ed92859533e31dc03b7c5008aa933aaab" }, + { file = "pandas-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:689968e841136f9e542020698ee1c4fbe9caa2ed2213ae2388dc7b81721510d3" }, + { file = "pandas-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:025e92411c16cbe5bb2a4abc99732a6b132f439b8aab23a59fa593eb00704232" }, + { file = "pandas-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b7ff55f31c4fcb3e316e8f7fa194566b286d6ac430afec0d461163312c5841e" }, + { file = "pandas-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dcb79bf373a47d2a40cf7232928eb7540155abbc460925c2c96d2d30b006eb4" }, + { file = "pandas-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:56a342b231e8862c96bdb6ab97170e203ce511f4d0429589c8ede1ee8ece48b8" }, + { file = "pandas-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ca7ed14832bce68baef331f4d7f294411bed8efd032f8109d690df45e00c4679" }, + { file = "pandas-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:ac942bfd0aca577bef61f2bc8da8147c4ef6879965ef883d8e8d5d2dc3e744b8" }, + { file = "pandas-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9026bd4a80108fac2239294a15ef9003c4ee191a0f64b90f170b40cfb7cf2d22" }, + { file = "pandas-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6de8547d4fdb12421e2d047a2c446c623ff4c11f47fddb6b9169eb98ffba485a" }, + { file = "pandas-2.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:782647ddc63c83133b2506912cc6b108140a38a37292102aaa19c81c83db2928" }, + { file = "pandas-2.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba6aff74075311fc88504b1db890187a3cd0f887a5b10f5525f8e2ef55bfdb9" }, + { file = "pandas-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e5635178b387bd2ba4ac040f82bc2ef6e6b500483975c4ebacd34bec945fda12" }, + { file = "pandas-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6f3bf5ec947526106399a9e1d26d40ee2b259c66422efdf4de63c848492d91bb" }, + { file = "pandas-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:1c78cf43c8fde236342a1cb2c34bcff89564a7bfed7e474ed2fffa6aed03a956" }, + { file = "pandas-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8dfc17328e8da77be3cf9f47509e5637ba8f137148ed0e9b5241e1baf526e20a" }, + { file = "pandas-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ec6c851509364c59a5344458ab935e6451b31b818be467eb24b0fe89bd05b6b9" }, + { file = "pandas-2.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:911580460fc4884d9b05254b38a6bfadddfcc6aaef856fb5859e7ca202e45275" }, + { file = "pandas-2.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f4d6feeba91744872a600e6edbbd5b033005b431d5ae8379abee5bcfa479fab" }, + { file = "pandas-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fe37e757f462d31a9cd7580236a82f353f5713a80e059a29753cf938c6775d96" }, + { file = "pandas-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5db9637dbc24b631ff3707269ae4559bce4b7fd75c1c4d7e13f40edc42df4444" }, + { file = "pandas-2.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4645f770f98d656f11c69e81aeb21c6fca076a44bed3dcbb9396a4311bc7f6d8" }, + { file = "pandas-2.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:342e59589cc454aaff7484d75b816a433350b3d7964d7847327edda4d532a2e3" }, + { file = "pandas-2.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d12f618d80379fde6af007f65f0c25bd3e40251dbd1636480dfffce2cf1e6da" }, + { file = "pandas-2.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd71c47a911da120d72ef173aeac0bf5241423f9bfea57320110a978457e069e" }, + { file = "pandas-2.3.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:09e3b1587f0f3b0913e21e8b32c3119174551deb4a4eba4a89bc7377947977e7" }, + { file = "pandas-2.3.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2323294c73ed50f612f67e2bf3ae45aea04dce5690778e08a09391897f35ff88" }, + { file = "pandas-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:b4b0de34dc8499c2db34000ef8baad684cfa4cbd836ecee05f323ebfba348c7d" }, + { file = "pandas-2.3.1.tar.gz", hash = "sha256:0a95b9ac964fe83ce317827f80304d37388ea77616b1425f0ae41c9d2d0d7bb2" }, ] [package.dependencies] @@ -2494,19 +2512,19 @@ type = ["mypy (>=1.14.1)"] [[package]] name = "pluggy" -version = "1.5.0" +version = "1.6.0" description = "plugin and hook calling mechanisms for python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, + { file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746" }, + { file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3" }, ] [package.extras] dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] +testing = ["coverage", "pytest", "pytest-benchmark"] [[package]] name = "pre-commit" @@ -2757,14 +2775,14 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pygments" -version = "2.18.0" +version = "2.19.2" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, - {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, + { file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b" }, + { file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887" }, ] [package.extras] @@ -2889,14 +2907,14 @@ dev = ["backports.zoneinfo ; python_version < \"3.9\"", "black", "build", "freez [[package]] name = "pytz" -version = "2024.2" +version = "2025.2" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" groups = ["main"] files = [ - {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, - {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, + { file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00" }, + { file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3" }, ] [[package]] @@ -3423,14 +3441,14 @@ type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.deve [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" groups = ["main", "dev"] files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + { file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274" }, + { file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" }, ] [[package]] @@ -3580,16 +3598,28 @@ files = [ { file = "types_python_dateutil-2.9.0.20250708.tar.gz", hash = "sha256:ccdbd75dab2d6c9696c350579f34cffe2c281e4c5f27a585b2a2438dd1d5c8ab" }, ] +[[package]] +name = "types-pyyaml" +version = "6.0.12.20250516" +description = "Typing stubs for PyYAML" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530" }, + { file = "types_pyyaml-6.0.12.20250516.tar.gz", hash = "sha256:9f21a70216fc0fa1b216a8176db5f9e0af6eb35d2f2932acb87689d03a5bf6ba" }, +] + [[package]] name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" +version = "4.14.1" +description = "Backported and Experimental Type Hints for Python 3.9+" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["main", "dev"] files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, + { file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76" }, + { file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36" }, ] [[package]] @@ -3609,14 +3639,14 @@ typing-extensions = ">=4.12.0" [[package]] name = "tzdata" -version = "2024.2" +version = "2025.2" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" groups = ["main"] files = [ - {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, - {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, + { file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8" }, + { file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9" }, ] [[package]] @@ -3837,4 +3867,4 @@ test = ["coverage", "hypothesis", "mypy", "packaging", "pytest (<8.4)", "pytest- [metadata] lock-version = "2.1" python-versions = ">=3.13" -content-hash = "8bae2583ae033a597f7a25d41850932002e2a0fdd9baa8e5edd7856f5c19bd12" +content-hash = "3ca97b9e51214f096f076795391e3d64556d52f47c53450bcf99ffd0c495f64b" diff --git a/pyproject.toml b/pyproject.toml index 15525ad..81c3d03 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,6 +23,7 @@ pydantic = "^2.11.7" pyproj = "^3.7.1" xarray = "^2025.7.1" zarr = "^3.1.0" +colorlog = "^6.9.0" [tool.poetry.group.dev.dependencies] coverage = "^7.9.2" @@ -34,6 +35,7 @@ mypy = "^1.17.0" pre-commit = "^4.2.0" pytest = "^8.4.1" ruff = "^0.12.4" +types-pyyaml = "^6.0.12.20250516" [build-system] requires = ["poetry-core"] diff --git a/src/meteoforge/__init__.py b/src/meteoforge/__init__.py index 4265cc3..0a5cd78 100644 --- a/src/meteoforge/__init__.py +++ b/src/meteoforge/__init__.py @@ -1 +1,2 @@ -#!/usr/bin/env python +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/controller.py b/src/meteoforge/core/controller.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/core/controller.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/manager.py b/src/meteoforge/core/manager.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/core/manager.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/model.py b/src/meteoforge/core/model.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/core/model.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/source.py b/src/meteoforge/core/source.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/core/source.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/logging/logging.py b/src/meteoforge/logging/logging.py new file mode 100644 index 0000000..66fcb03 --- /dev/null +++ b/src/meteoforge/logging/logging.py @@ -0,0 +1,27 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 + +import logging +import logging.config +import os + +import yaml + + +def setup_logging(config_path: str | None = None): + """Set up project logging using the 'logging_config.yaml' config file.""" + if config_path is None: + config_path = os.path.join(os.path.dirname(__file__), "logging_config.yaml") + if os.path.exists(config_path): + with open(config_path) as file: + config = yaml.safe_load(file) + logging.config.dictConfig(config) + else: + raise FileNotFoundError(f"Logging configuration file not found: {config_path}") + + +setup_logging() + +logger = logging.getLogger("meteoforge") +logger.info("MeteoForge logging initialized.") +logger.info("Logging level set to %s", logger.getEffectiveLevel()) diff --git a/src/meteoforge/logging/logging_config.yaml b/src/meteoforge/logging/logging_config.yaml new file mode 100644 index 0000000..c4566fe --- /dev/null +++ b/src/meteoforge/logging/logging_config.yaml @@ -0,0 +1,28 @@ +version: 1 +disable_existing_loggers: false +formatters: + color: + class: colorlog.ColoredFormatter + format: "%(asctime)s - %(name)s - %(log_color)s%(levelname)s%(reset)s - %(message)s" + log_colors: + DEBUG: green + INFO: cyan + WARNING: yellow + ERROR: red + CRITICAL: bold_red + monocolor: + format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s" +handlers: + console: + class: logging.StreamHandler + level: INFO + formatter: color + stream: ext://sys.stdout +loggers: + meteoforge: + level: DEBUG + handlers: [ console ] + propagate: no +root: + level: WARNING + handlers: [ console ] diff --git a/src/meteoforge/parameters/parameters.py b/src/meteoforge/parameters/parameters.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/parameters/parameters.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/locations.py b/src/meteoforge/spatial_temporal/locations.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/spatial_temporal/locations.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/periods.py b/src/meteoforge/spatial_temporal/periods.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/spatial_temporal/periods.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge_tools/README.md b/src/meteoforge_tools/README.md new file mode 100644 index 0000000..c781249 --- /dev/null +++ b/src/meteoforge_tools/README.md @@ -0,0 +1,3 @@ +# MeteoForge Tools + +... diff --git a/src/meteoforge_tools/__init__.py b/src/meteoforge_tools/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge_tools/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge_tools/netfcd_to_zarr_conversion.py b/src/meteoforge_tools/netfcd_to_zarr_conversion.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge_tools/netfcd_to_zarr_conversion.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/tests/test_example_test.py b/tests/test_example_test.py new file mode 100644 index 0000000..de3ea2a --- /dev/null +++ b/tests/test_example_test.py @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 + + +def test_example(): + """Example test function to demonstrate pytest setup.""" + assert True # Replace with actual test logic From 6122f4c41caa0a7bbb09b8b684915f73f6b7eab7 Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 21:15:53 +0200 Subject: [PATCH 07/50] Update src/meteoforge/logging/logging.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- src/meteoforge/logging/logging.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/meteoforge/logging/logging.py b/src/meteoforge/logging/logging.py index 66fcb03..546c34a 100644 --- a/src/meteoforge/logging/logging.py +++ b/src/meteoforge/logging/logging.py @@ -13,7 +13,7 @@ def setup_logging(config_path: str | None = None): if config_path is None: config_path = os.path.join(os.path.dirname(__file__), "logging_config.yaml") if os.path.exists(config_path): - with open(config_path) as file: + with open(config_path, encoding="utf-8") as file: config = yaml.safe_load(file) logging.config.dictConfig(config) else: From abf978793a792740b25454c1dc892d4b6088737f Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 21:55:43 +0200 Subject: [PATCH 08/50] feature: Partial copy and adjustment --- src/meteoforge/spatial_temporal/locations.py | 87 ++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/src/meteoforge/spatial_temporal/locations.py b/src/meteoforge/spatial_temporal/locations.py index 0a5cd78..ed13f74 100644 --- a/src/meteoforge/spatial_temporal/locations.py +++ b/src/meteoforge/spatial_temporal/locations.py @@ -1,2 +1,89 @@ # SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project # SPDX-License-Identifier: MPL-2.0 +from pyproj import CRS +from pyproj.exceptions import CRSError + +from src.meteoforge.logging.logging import logger + + +class MFLocation: + """The base class for representing geographic locations in MeteoForge. + + This class serves as a base for various location based formats, such as coordinates, bounding boxes, and polygons. + It provides a common interface for working with these different formats, allowing for the easy conversion and + manipulation of geographic data. + + Attributes + ---------- + x (float): + The x-coordinate of the location. Typically, this represents longitude, but this can vary based on the + Coordinate Reference System (CRS) used. + y (float): + The y-coordinate of the location. Typically, this represents latitude, but this can vary based on the + Coordinate Reference System (CRS) used. + crs (int): + The coordinate reference system of the location, if applicable via EPSG numerical code. This is used to + properly interpret the x and y coordinates in a geographic context. The default setting is EPSG code 4326, + which represents the WGS 84 geographic coordinate system. + + """ + + def __init__(self, *, x: int | float, y: int | float, epsg_code: int = 4326): + """Initializes the MFLocation with x, y coordinates and an optional EPSG code.""" + # Validate the input parameters + if self.valid_location(x, y, epsg_code): + # Set the instance variables + self.x = float(x) + self.y = float(y) + self.crs = epsg_code + else: + raise ValueError("Invalid location parameters") + + @staticmethod + def valid_location(x: float, y: float, epsg_code: int = 4326) -> bool: + """Validates the location parameters for type and existence.""" + logger.debug(f"Validating location: x={x}, y={y}, epgs_code={epsg_code}") + + # Validate the types of x, y, and epgs_code + if not isinstance(x, (int, float)): + raise ValueError("x must be a number") + if not isinstance(y, (int, float)): + raise ValueError("y must be a number") + if not isinstance(epsg_code, int): + raise ValueError("epgs_code must be an integer") + + logger.debug(f"Type validation passed: x={type(x)}, y={type(y)}, epgs_code={type(epsg_code)}") + + # Validate the CRS type suggested by the EPSG code + MFLocation.valid_crs(epsg_code) + + logger.debug(f"CRS validation passed for EPSG code: {epsg_code}") + + # Check that x and y are within valid ranges for geographic coordinates on the given CRS + ... + + logger.debug(f"Location validation passed and valid: x={x}, y={y}, epsg_code={epsg_code}") + + @staticmethod + def valid_crs(epsg_code: int) -> bool: + """Validates the EPSG code for known coordinate reference systems.""" + logger.debug(f"Validating CRS with EPSG code: {epsg_code}") + + try: + crs = CRS.from_epsg(epsg_code) + except CRSError as e: + raise ValueError(f"invalid EPSG code '{crs}': --<<-- {e} -->>--") from e + + # Check that the CRS is not deprecated + if crs.is_deprecated: + raise ValueError( + f"The CRS with EPSG code {epsg_code} is deprecated. Please use a different (non-deprecated) CRS." + ) + + # Check that the CRS is for an x,y based geographic coordinate system + if not crs.is_geographic and not crs.is_geocentric: + raise ValueError( + "The MFLocation class type only supports Geographic (CRS.is_geographic=True) and Geocentric Coordinate " + "Systems (CRS.is_geocentric=True)." + ) + return True From 92311118883e92779d97dddd21726fb4a6e0cc09 Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sun, 12 Oct 2025 11:33:20 +0200 Subject: [PATCH 09/50] feature: In between commit Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- CODE_OF_CONDUCT.rst => CODE_OF_CONDUCT.md | 63 +- SECURITY.md | 4 + poetry.lock | 616 ++++++++++++------- pyproject.toml | 15 +- src/__init__.py | 2 + src/meteoforge/core/__init__.py | 2 + src/meteoforge/logging/__init__.py | 2 + src/meteoforge/parameters/__init__.py | 2 + src/meteoforge/spatial_temporal/__init__.py | 2 + src/meteoforge/spatial_temporal/locations.py | 39 +- 10 files changed, 472 insertions(+), 275 deletions(-) rename CODE_OF_CONDUCT.rst => CODE_OF_CONDUCT.md (58%) create mode 100644 src/__init__.py create mode 100644 src/meteoforge/core/__init__.py create mode 100644 src/meteoforge/logging/__init__.py create mode 100644 src/meteoforge/parameters/__init__.py create mode 100644 src/meteoforge/spatial_temporal/__init__.py diff --git a/CODE_OF_CONDUCT.rst b/CODE_OF_CONDUCT.md similarity index 58% rename from CODE_OF_CONDUCT.rst rename to CODE_OF_CONDUCT.md index 91f4640..067546c 100644 --- a/CODE_OF_CONDUCT.rst +++ b/CODE_OF_CONDUCT.md @@ -1,15 +1,9 @@ [//]: # (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) [//]: # (SPDX-License-Identifier: MPL-2.0) -.. _code-of-conduct: +# Code of Conduct -=============== -Code of Conduct -=============== - ----------- -Our Pledge ----------- +## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and @@ -18,33 +12,29 @@ size, disability, ethnicity, gender identity and expression, level of experience, education, socioeconomic status, nationality, personal appearance, race, religion, or sexual identity and orientation. -------------- -Our Standards -------------- +## Our Standards Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting +- The use of sexualized language or imagery and unwelcome sexual attention or + advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic + address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting --------------------- -Our Responsibilities --------------------- +## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in @@ -56,9 +46,7 @@ not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ------ -Scope ------ +## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of @@ -67,18 +55,17 @@ address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. -------------------- -Conflict Resolution -------------------- +## Conflict Resolution -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at OSPO@alliander. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at * +*OSPO@alliander**. All complaints will be reviewed and investigated and will result in a response that is deemed +necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to +the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership. ------------ -Attribution ------------ +## Attribution This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at -https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + diff --git a/SECURITY.md b/SECURITY.md index 4c4821f..5ebbfca 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -19,6 +19,10 @@ Please describe clearly how the issue can be reproduced, so we can fix it quickl the affected system and a description of the vulnerability are sufficient. We may contact you if we need more information about a complex vulnerability. +## Other issues + +For non-security related issues, please use the [issue tracker]( + ## Thanks We don't have a bug bounty program, but we're grateful for all the reports we get. We offer an Alliander Security hoodie diff --git a/poetry.lock b/poetry.lock index c280b9e..3b274e4 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. [[package]] name = "annotated-types" @@ -6,7 +6,7 @@ version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" -groups = ["main"] +groups = ["main", "dev"] files = [ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, @@ -774,14 +774,14 @@ files = [ [[package]] name = "dask" -version = "2025.7.0" +version = "2025.9.1" description = "Parallel PyData with Task Scheduling" optional = false python-versions = ">=3.10" groups = ["main"] files = [ - { file = "dask-2025.7.0-py3-none-any.whl", hash = "sha256:073c29c4e99c2400a39a8a67874f35c1d15bf7af9ae3d0c30af3c7c1199f24ae" }, - { file = "dask-2025.7.0.tar.gz", hash = "sha256:c3a0d4e78882e85ea81dbc71e6459713e45676e2d17e776c2f3f19848039e4cf" }, + { file = "dask-2025.9.1-py3-none-any.whl", hash = "sha256:2a8a7dc933caaea2f47745a65a6ec93d9e616e12aab53b4f03ee161d31939110" }, + { file = "dask-2025.9.1.tar.gz", hash = "sha256:718df73e1fd3d7e2b8546e0f04ce08e1ed7f9aa3da1eecd0c1f44c8b6d52f7e0" }, ] [package.dependencies] @@ -798,7 +798,7 @@ array = ["numpy (>=1.24)"] complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=14.0.1)"] dataframe = ["dask[array]", "pandas (>=2.0)", "pyarrow (>=14.0.1)"] diagnostics = ["bokeh (>=3.1.0)", "jinja2 (>=2.10.3)"] -distributed = ["distributed (==2025.7.0)"] +distributed = ["distributed (==2025.9.1)"] test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] [[package]] @@ -922,6 +922,29 @@ files = [ [package.extras] devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] +[[package]] +name = "fawltydeps" +version = "0.20.0" +description = "Find undeclared and unused 3rd-party dependencies in your Python project." +optional = false +python-versions = ">=3.9.2" +groups = ["dev"] +files = [ + { file = "fawltydeps-0.20.0-py3-none-any.whl", hash = "sha256:d3bfb260c54135ec5dfa2583a7381c45d2759deb23f6de6f4905da9adac67512" }, + { file = "fawltydeps-0.20.0.tar.gz", hash = "sha256:ad080b284a2278c9940540b643483aff8b57794a1362735d3024c270810c0182" }, +] + +[package.dependencies] +importlib_metadata = ">=6.6.0" +isort = ">=5.10" +packaging = ">=24.0" +pip-requirements-parser = ">=32.0.1" +pydantic = ">=1.10.4,<3.0.0" +PyYAML = ">=6.0.1" + +[package.extras] +uv = ["uv (>=0.1.6)"] + [[package]] name = "filelock" version = "3.18.0" @@ -1113,6 +1136,30 @@ files = [ [package.extras] all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] +[[package]] +name = "importlib-metadata" +version = "8.7.0" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd" }, + { file = "importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000" }, +] + +[package.dependencies] +zipp = ">=3.20" + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +perf = ["ipython"] +test = ["flufl.flake8", "importlib_resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +type = ["pytest-mypy"] + [[package]] name = "iniconfig" version = "2.1.0" @@ -1243,6 +1290,22 @@ files = [ [package.dependencies] arrow = ">=0.15.0" +[[package]] +name = "isort" +version = "7.0.0" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.10.0" +groups = ["dev"] +files = [ + { file = "isort-7.0.0-py3-none-any.whl", hash = "sha256:1bcabac8bc3c36c7fb7b98a76c8abb18e0f841a3ba81decac7691008592499c1" }, + { file = "isort-7.0.0.tar.gz", hash = "sha256:5513527951aadb3ac4292a41a16cbc50dd1642432f5e8c20057d414bdafb4187" }, +] + +[package.extras] +colors = ["colorama"] +plugins = ["setuptools"] + [[package]] name = "jedi" version = "0.19.2" @@ -2236,63 +2299,86 @@ zfpy = ["zfpy (>=1.0.0)"] [[package]] name = "numpy" -version = "2.3.1" +version = "2.3.3" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.11" groups = ["main"] files = [ - { file = "numpy-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6ea9e48336a402551f52cd8f593343699003d2353daa4b72ce8d34f66b722070" }, - { file = "numpy-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ccb7336eaf0e77c1635b232c141846493a588ec9ea777a7c24d7166bb8533ae" }, - { file = "numpy-2.3.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0bb3a4a61e1d327e035275d2a993c96fa786e4913aa089843e6a2d9dd205c66a" }, - { file = "numpy-2.3.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:e344eb79dab01f1e838ebb67aab09965fb271d6da6b00adda26328ac27d4a66e" }, - { file = "numpy-2.3.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:467db865b392168ceb1ef1ffa6f5a86e62468c43e0cfb4ab6da667ede10e58db" }, - { file = "numpy-2.3.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:afed2ce4a84f6b0fc6c1ce734ff368cbf5a5e24e8954a338f3bdffa0718adffb" }, - { file = "numpy-2.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0025048b3c1557a20bc80d06fdeb8cc7fc193721484cca82b2cfa072fec71a93" }, - { file = "numpy-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a5ee121b60aa509679b682819c602579e1df14a5b07fe95671c8849aad8f2115" }, - { file = "numpy-2.3.1-cp311-cp311-win32.whl", hash = "sha256:a8b740f5579ae4585831b3cf0e3b0425c667274f82a484866d2adf9570539369" }, - { file = "numpy-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:d4580adadc53311b163444f877e0789f1c8861e2698f6b2a4ca852fda154f3ff" }, - { file = "numpy-2.3.1-cp311-cp311-win_arm64.whl", hash = "sha256:ec0bdafa906f95adc9a0c6f26a4871fa753f25caaa0e032578a30457bff0af6a" }, - { file = "numpy-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2959d8f268f3d8ee402b04a9ec4bb7604555aeacf78b360dc4ec27f1d508177d" }, - { file = "numpy-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:762e0c0c6b56bdedfef9a8e1d4538556438288c4276901ea008ae44091954e29" }, - { file = "numpy-2.3.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:867ef172a0976aaa1f1d1b63cf2090de8b636a7674607d514505fb7276ab08fc" }, - { file = "numpy-2.3.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:4e602e1b8682c2b833af89ba641ad4176053aaa50f5cacda1a27004352dde943" }, - { file = "numpy-2.3.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8e333040d069eba1652fb08962ec5b76af7f2c7bce1df7e1418c8055cf776f25" }, - { file = "numpy-2.3.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e7cbf5a5eafd8d230a3ce356d892512185230e4781a361229bd902ff403bc660" }, - { file = "numpy-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f1b8f26d1086835f442286c1d9b64bb3974b0b1e41bb105358fd07d20872952" }, - { file = "numpy-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ee8340cb48c9b7a5899d1149eece41ca535513a9698098edbade2a8e7a84da77" }, - { file = "numpy-2.3.1-cp312-cp312-win32.whl", hash = "sha256:e772dda20a6002ef7061713dc1e2585bc1b534e7909b2030b5a46dae8ff077ab" }, - { file = "numpy-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:cfecc7822543abdea6de08758091da655ea2210b8ffa1faf116b940693d3df76" }, - { file = "numpy-2.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:7be91b2239af2658653c5bb6f1b8bccafaf08226a258caf78ce44710a0160d30" }, - { file = "numpy-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25a1992b0a3fdcdaec9f552ef10d8103186f5397ab45e2d25f8ac51b1a6b97e8" }, - { file = "numpy-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7dea630156d39b02a63c18f508f85010230409db5b2927ba59c8ba4ab3e8272e" }, - { file = "numpy-2.3.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bada6058dd886061f10ea15f230ccf7dfff40572e99fef440a4a857c8728c9c0" }, - { file = "numpy-2.3.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:a894f3816eb17b29e4783e5873f92faf55b710c2519e5c351767c51f79d8526d" }, - { file = "numpy-2.3.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:18703df6c4a4fee55fd3d6e5a253d01c5d33a295409b03fda0c86b3ca2ff41a1" }, - { file = "numpy-2.3.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5902660491bd7a48b2ec16c23ccb9124b8abfd9583c5fdfa123fe6b421e03de1" }, - { file = "numpy-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:36890eb9e9d2081137bd78d29050ba63b8dab95dff7912eadf1185e80074b2a0" }, - { file = "numpy-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a780033466159c2270531e2b8ac063704592a0bc62ec4a1b991c7c40705eb0e8" }, - { file = "numpy-2.3.1-cp313-cp313-win32.whl", hash = "sha256:39bff12c076812595c3a306f22bfe49919c5513aa1e0e70fac756a0be7c2a2b8" }, - { file = "numpy-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d5ee6eec45f08ce507a6570e06f2f879b374a552087a4179ea7838edbcbfa42" }, - { file = "numpy-2.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:0c4d9e0a8368db90f93bd192bfa771ace63137c3488d198ee21dfb8e7771916e" }, - { file = "numpy-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b0b5397374f32ec0649dd98c652a1798192042e715df918c20672c62fb52d4b8" }, - { file = "numpy-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c5bdf2015ccfcee8253fb8be695516ac4457c743473a43290fd36eba6a1777eb" }, - { file = "numpy-2.3.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d70f20df7f08b90a2062c1f07737dd340adccf2068d0f1b9b3d56e2038979fee" }, - { file = "numpy-2.3.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:2fb86b7e58f9ac50e1e9dd1290154107e47d1eef23a0ae9145ded06ea606f992" }, - { file = "numpy-2.3.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:23ab05b2d241f76cb883ce8b9a93a680752fbfcbd51c50eff0b88b979e471d8c" }, - { file = "numpy-2.3.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ce2ce9e5de4703a673e705183f64fd5da5bf36e7beddcb63a25ee2286e71ca48" }, - { file = "numpy-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c4913079974eeb5c16ccfd2b1f09354b8fed7e0d6f2cab933104a09a6419b1ee" }, - { file = "numpy-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:010ce9b4f00d5c036053ca684c77441f2f2c934fd23bee058b4d6f196efd8280" }, - { file = "numpy-2.3.1-cp313-cp313t-win32.whl", hash = "sha256:6269b9edfe32912584ec496d91b00b6d34282ca1d07eb10e82dfc780907d6c2e" }, - { file = "numpy-2.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2a809637460e88a113e186e87f228d74ae2852a2e0c44de275263376f17b5bdc" }, - { file = "numpy-2.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:eccb9a159db9aed60800187bc47a6d3451553f0e1b08b068d8b277ddfbb9b244" }, - { file = "numpy-2.3.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ad506d4b09e684394c42c966ec1527f6ebc25da7f4da4b1b056606ffe446b8a3" }, - { file = "numpy-2.3.1-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:ebb8603d45bc86bbd5edb0d63e52c5fd9e7945d3a503b77e486bd88dde67a19b" }, - { file = "numpy-2.3.1-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:15aa4c392ac396e2ad3d0a2680c0f0dee420f9fed14eef09bdb9450ee6dcb7b7" }, - { file = "numpy-2.3.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c6e0bf9d1a2f50d2b65a7cf56db37c095af17b59f6c132396f7c6d5dd76484df" }, - { file = "numpy-2.3.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:eabd7e8740d494ce2b4ea0ff05afa1b7b291e978c0ae075487c51e8bd93c0c68" }, - { file = "numpy-2.3.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:e610832418a2bc09d974cc9fecebfa51e9532d6190223bc5ef6a7402ebf3b5cb" }, - { file = "numpy-2.3.1.tar.gz", hash = "sha256:1ec9ae20a4226da374362cca3c62cd753faf2f951440b0e3b98e93c235441d2b" }, + { file = "numpy-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ffc4f5caba7dfcbe944ed674b7eef683c7e94874046454bb79ed7ee0236f59d" }, + { file = "numpy-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7e946c7170858a0295f79a60214424caac2ffdb0063d4d79cb681f9aa0aa569" }, + { file = "numpy-2.3.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:cd4260f64bc794c3390a63bf0728220dd1a68170c169088a1e0dfa2fde1be12f" }, + { file = "numpy-2.3.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:f0ddb4b96a87b6728df9362135e764eac3cfa674499943ebc44ce96c478ab125" }, + { file = "numpy-2.3.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:afd07d377f478344ec6ca2b8d4ca08ae8bd44706763d1efb56397de606393f48" }, + { file = "numpy-2.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc92a5dedcc53857249ca51ef29f5e5f2f8c513e22cfb90faeb20343b8c6f7a6" }, + { file = "numpy-2.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7af05ed4dc19f308e1d9fc759f36f21921eb7bbfc82843eeec6b2a2863a0aefa" }, + { file = "numpy-2.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:433bf137e338677cebdd5beac0199ac84712ad9d630b74eceeb759eaa45ddf30" }, + { file = "numpy-2.3.3-cp311-cp311-win32.whl", hash = "sha256:eb63d443d7b4ffd1e873f8155260d7f58e7e4b095961b01c91062935c2491e57" }, + { file = "numpy-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:ec9d249840f6a565f58d8f913bccac2444235025bbb13e9a4681783572ee3caa" }, + { file = "numpy-2.3.3-cp311-cp311-win_arm64.whl", hash = "sha256:74c2a948d02f88c11a3c075d9733f1ae67d97c6bdb97f2bb542f980458b257e7" }, + { file = "numpy-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cfdd09f9c84a1a934cde1eec2267f0a43a7cd44b2cca4ff95b7c0d14d144b0bf" }, + { file = "numpy-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb32e3cf0f762aee47ad1ddc6672988f7f27045b0783c887190545baba73aa25" }, + { file = "numpy-2.3.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396b254daeb0a57b1fe0ecb5e3cff6fa79a380fa97c8f7781a6d08cd429418fe" }, + { file = "numpy-2.3.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:067e3d7159a5d8f8a0b46ee11148fc35ca9b21f61e3c49fbd0a027450e65a33b" }, + { file = "numpy-2.3.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c02d0629d25d426585fb2e45a66154081b9fa677bc92a881ff1d216bc9919a8" }, + { file = "numpy-2.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9192da52b9745f7f0766531dcfa978b7763916f158bb63bdb8a1eca0068ab20" }, + { file = "numpy-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cd7de500a5b66319db419dc3c345244404a164beae0d0937283b907d8152e6ea" }, + { file = "numpy-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:93d4962d8f82af58f0b2eb85daaf1b3ca23fe0a85d0be8f1f2b7bb46034e56d7" }, + { file = "numpy-2.3.3-cp312-cp312-win32.whl", hash = "sha256:5534ed6b92f9b7dca6c0a19d6df12d41c68b991cef051d108f6dbff3babc4ebf" }, + { file = "numpy-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:497d7cad08e7092dba36e3d296fe4c97708c93daf26643a1ae4b03f6294d30eb" }, + { file = "numpy-2.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:ca0309a18d4dfea6fc6262a66d06c26cfe4640c3926ceec90e57791a82b6eee5" }, + { file = "numpy-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f5415fb78995644253370985342cd03572ef8620b934da27d77377a2285955bf" }, + { file = "numpy-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d00de139a3324e26ed5b95870ce63be7ec7352171bc69a4cf1f157a48e3eb6b7" }, + { file = "numpy-2.3.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9dc13c6a5829610cc07422bc74d3ac083bd8323f14e2827d992f9e52e22cd6a6" }, + { file = "numpy-2.3.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:d79715d95f1894771eb4e60fb23f065663b2298f7d22945d66877aadf33d00c7" }, + { file = "numpy-2.3.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:952cfd0748514ea7c3afc729a0fc639e61655ce4c55ab9acfab14bda4f402b4c" }, + { file = "numpy-2.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5b83648633d46f77039c29078751f80da65aa64d5622a3cd62aaef9d835b6c93" }, + { file = "numpy-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b001bae8cea1c7dfdb2ae2b017ed0a6f2102d7a70059df1e338e307a4c78a8ae" }, + { file = "numpy-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8e9aced64054739037d42fb84c54dd38b81ee238816c948c8f3ed134665dcd86" }, + { file = "numpy-2.3.3-cp313-cp313-win32.whl", hash = "sha256:9591e1221db3f37751e6442850429b3aabf7026d3b05542d102944ca7f00c8a8" }, + { file = "numpy-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f0dadeb302887f07431910f67a14d57209ed91130be0adea2f9793f1a4f817cf" }, + { file = "numpy-2.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:3c7cf302ac6e0b76a64c4aecf1a09e51abd9b01fc7feee80f6c43e3ab1b1dbc5" }, + { file = "numpy-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:eda59e44957d272846bb407aad19f89dc6f58fecf3504bd144f4c5cf81a7eacc" }, + { file = "numpy-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:823d04112bc85ef5c4fda73ba24e6096c8f869931405a80aa8b0e604510a26bc" }, + { file = "numpy-2.3.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:40051003e03db4041aa325da2a0971ba41cf65714e65d296397cc0e32de6018b" }, + { file = "numpy-2.3.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ee9086235dd6ab7ae75aba5662f582a81ced49f0f1c6de4260a78d8f2d91a19" }, + { file = "numpy-2.3.3-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94fcaa68757c3e2e668ddadeaa86ab05499a70725811e582b6a9858dd472fb30" }, + { file = "numpy-2.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da1a74b90e7483d6ce5244053399a614b1d6b7bc30a60d2f570e5071f8959d3e" }, + { file = "numpy-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2990adf06d1ecee3b3dcbb4977dfab6e9f09807598d647f04d385d29e7a3c3d3" }, + { file = "numpy-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ed635ff692483b8e3f0fcaa8e7eb8a75ee71aa6d975388224f70821421800cea" }, + { file = "numpy-2.3.3-cp313-cp313t-win32.whl", hash = "sha256:a333b4ed33d8dc2b373cc955ca57babc00cd6f9009991d9edc5ddbc1bac36bcd" }, + { file = "numpy-2.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4384a169c4d8f97195980815d6fcad04933a7e1ab3b530921c3fef7a1c63426d" }, + { file = "numpy-2.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:75370986cc0bc66f4ce5110ad35aae6d182cc4ce6433c40ad151f53690130bf1" }, + { file = "numpy-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cd052f1fa6a78dee696b58a914b7229ecfa41f0a6d96dc663c1220a55e137593" }, + { file = "numpy-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:414a97499480067d305fcac9716c29cf4d0d76db6ebf0bf3cbce666677f12652" }, + { file = "numpy-2.3.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:50a5fe69f135f88a2be9b6ca0481a68a136f6febe1916e4920e12f1a34e708a7" }, + { file = "numpy-2.3.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:b912f2ed2b67a129e6a601e9d93d4fa37bef67e54cac442a2f588a54afe5c67a" }, + { file = "numpy-2.3.3-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9e318ee0596d76d4cb3d78535dc005fa60e5ea348cd131a51e99d0bdbe0b54fe" }, + { file = "numpy-2.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce020080e4a52426202bdb6f7691c65bb55e49f261f31a8f506c9f6bc7450421" }, + { file = "numpy-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e6687dc183aa55dae4a705b35f9c0f8cb178bcaa2f029b241ac5356221d5c021" }, + { file = "numpy-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d8f3b1080782469fdc1718c4ed1d22549b5fb12af0d57d35e992158a772a37cf" }, + { file = "numpy-2.3.3-cp314-cp314-win32.whl", hash = "sha256:cb248499b0bc3be66ebd6578b83e5acacf1d6cb2a77f2248ce0e40fbec5a76d0" }, + { file = "numpy-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:691808c2b26b0f002a032c73255d0bd89751425f379f7bcd22d140db593a96e8" }, + { file = "numpy-2.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:9ad12e976ca7b10f1774b03615a2a4bab8addce37ecc77394d8e986927dc0dfe" }, + { file = "numpy-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9cc48e09feb11e1db00b320e9d30a4151f7369afb96bd0e48d942d09da3a0d00" }, + { file = "numpy-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:901bf6123879b7f251d3631967fd574690734236075082078e0571977c6a8e6a" }, + { file = "numpy-2.3.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:7f025652034199c301049296b59fa7d52c7e625017cae4c75d8662e377bf487d" }, + { file = "numpy-2.3.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:533ca5f6d325c80b6007d4d7fb1984c303553534191024ec6a524a4c92a5935a" }, + { file = "numpy-2.3.3-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0edd58682a399824633b66885d699d7de982800053acf20be1eaa46d92009c54" }, + { file = "numpy-2.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:367ad5d8fbec5d9296d18478804a530f1191e24ab4d75ab408346ae88045d25e" }, + { file = "numpy-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8f6ac61a217437946a1fa48d24c47c91a0c4f725237871117dea264982128097" }, + { file = "numpy-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:179a42101b845a816d464b6fe9a845dfaf308fdfc7925387195570789bb2c970" }, + { file = "numpy-2.3.3-cp314-cp314t-win32.whl", hash = "sha256:1250c5d3d2562ec4174bce2e3a1523041595f9b651065e4a4473f5f48a6bc8a5" }, + { file = "numpy-2.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:b37a0b2e5935409daebe82c1e42274d30d9dd355852529eab91dab8dcca7419f" }, + { file = "numpy-2.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:78c9f6560dc7e6b3990e32df7ea1a50bbd0e2a111e05209963f5ddcab7073b0b" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1e02c7159791cd481e1e6d5ddd766b62a4d5acf8df4d4d1afe35ee9c5c33a41e" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:dca2d0fc80b3893ae72197b39f69d55a3cd8b17ea1b50aa4c62de82419936150" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:99683cbe0658f8271b333a1b1b4bb3173750ad59c0c61f5bbdc5b318918fffe3" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:d9d537a39cc9de668e5cd0e25affb17aec17b577c6b3ae8a3d866b479fbe88d0" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8596ba2f8af5f93b01d97563832686d20206d303024777f6dfc2e7c7c3f1850e" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1ec5615b05369925bd1125f27df33f3b6c8bc10d788d5999ecd8769a1fa04db" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:2e267c7da5bf7309670523896df97f93f6e469fb931161f483cd6882b3b1a5dc" }, + { file = "numpy-2.3.3.tar.gz", hash = "sha256:ddc7c39727ba62b80dfdbedf400d1c10ddfa8eefbd7ec8dcb118be8b56d31029" }, ] [[package]] @@ -2493,6 +2579,26 @@ files = [ [package.dependencies] ptyprocess = ">=0.5" +[[package]] +name = "pip-requirements-parser" +version = "32.0.1" +description = "pip requirements parser - a mostly correct pip requirements parsing library because it uses pip's own code." +optional = false +python-versions = ">=3.6.0" +groups = ["dev"] +files = [ + { file = "pip-requirements-parser-32.0.1.tar.gz", hash = "sha256:b4fa3a7a0be38243123cf9d1f3518da10c51bdb165a2b2985566247f9155a7d3" }, + { file = "pip_requirements_parser-32.0.1-py3-none-any.whl", hash = "sha256:4659bc2a667783e7a15d190f6fccf8b2486685b6dba4c19c3876314769c57526" }, +] + +[package.dependencies] +packaging = "*" +pyparsing = "*" + +[package.extras] +docs = ["Sphinx (>=3.3.1)", "doc8 (>=0.8.1)", "sphinx-rtd-theme (>=0.5.0)"] +testing = ["aboutcode-toolkit (>=6.0.0)", "black", "pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"] + [[package]] name = "platformdirs" version = "4.3.8" @@ -2641,21 +2747,21 @@ files = [ [[package]] name = "pydantic" -version = "2.11.7" +version = "2.12.0" description = "Data validation using Python type hints" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["main", "dev"] files = [ - { file = "pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b" }, - { file = "pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db" }, + { file = "pydantic-2.12.0-py3-none-any.whl", hash = "sha256:f6a1da352d42790537e95e83a8bdfb91c7efbae63ffd0b86fa823899e807116f" }, + { file = "pydantic-2.12.0.tar.gz", hash = "sha256:c1a077e6270dbfb37bfd8b498b3981e2bb18f68103720e51fa6c306a5a9af563" }, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.33.2" -typing-extensions = ">=4.12.2" -typing-inspection = ">=0.4.0" +pydantic-core = "2.41.1" +typing-extensions = ">=4.14.1" +typing-inspection = ">=0.4.2" [package.extras] email = ["email-validator (>=2.0.0)"] @@ -2663,115 +2769,129 @@ timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows [[package]] name = "pydantic-core" -version = "2.33.2" +version = "2.41.1" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["main", "dev"] files = [ - { file = "pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8" }, - { file = "pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d53b22f2032c42eaaf025f7c40c2e3b94568ae077a606f006d206a463bc69572" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0405262705a123b7ce9f0b92f123334d67b70fd1f20a9372b907ce1080c7ba02" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b25d91e288e2c4e0662b8038a28c6a07eaac3e196cfc4ff69de4ea3db992a1b" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bdfe4b3789761f3bcb4b1ddf33355a71079858958e3a552f16d5af19768fef2" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:efec8db3266b76ef9607c2c4c419bdb06bf335ae433b80816089ea7585816f6a" }, - { file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:031c57d67ca86902726e0fae2214ce6770bbe2f710dc33063187a68744a5ecac" }, - { file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:f8de619080e944347f5f20de29a975c2d815d9ddd8be9b9b7268e2e3ef68605a" }, - { file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73662edf539e72a9440129f231ed3757faab89630d291b784ca99237fb94db2b" }, - { file = "pydantic_core-2.33.2-cp310-cp310-win32.whl", hash = "sha256:0a39979dcbb70998b0e505fb1556a1d550a0781463ce84ebf915ba293ccb7e22" }, - { file = "pydantic_core-2.33.2-cp310-cp310-win_amd64.whl", hash = "sha256:b0379a2b24882fef529ec3b4987cb5d003b9cda32256024e6fe1586ac45fc640" }, - { file = "pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7" }, - { file = "pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e" }, - { file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d" }, - { file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30" }, - { file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf" }, - { file = "pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51" }, - { file = "pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab" }, - { file = "pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65" }, - { file = "pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc" }, - { file = "pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b" }, - { file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1" }, - { file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6" }, - { file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea" }, - { file = "pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290" }, - { file = "pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2" }, - { file = "pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab" }, - { file = "pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f" }, - { file = "pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56" }, - { file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5" }, - { file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e" }, - { file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162" }, - { file = "pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849" }, - { file = "pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9" }, - { file = "pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9" }, - { file = "pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac" }, - { file = "pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5" }, - { file = "pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9" }, - { file = "pydantic_core-2.33.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a2b911a5b90e0374d03813674bf0a5fbbb7741570dcd4b4e85a2e48d17def29d" }, - { file = "pydantic_core-2.33.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6fa6dfc3e4d1f734a34710f391ae822e0a8eb8559a85c6979e14e65ee6ba2954" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c54c939ee22dc8e2d545da79fc5381f1c020d6d3141d3bd747eab59164dc89fb" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53a57d2ed685940a504248187d5685e49eb5eef0f696853647bf37c418c538f7" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09fb9dd6571aacd023fe6aaca316bd01cf60ab27240d7eb39ebd66a3a15293b4" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e6116757f7959a712db11f3e9c0a99ade00a5bbedae83cb801985aa154f071b" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d55ab81c57b8ff8548c3e4947f119551253f4e3787a7bbc0b6b3ca47498a9d3" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c20c462aa4434b33a2661701b861604913f912254e441ab8d78d30485736115a" }, - { file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44857c3227d3fb5e753d5fe4a3420d6376fa594b07b621e220cd93703fe21782" }, - { file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:eb9b459ca4df0e5c87deb59d37377461a538852765293f9e6ee834f0435a93b9" }, - { file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9fcd347d2cc5c23b06de6d3b7b8275be558a0c90549495c699e379a80bf8379e" }, - { file = "pydantic_core-2.33.2-cp39-cp39-win32.whl", hash = "sha256:83aa99b1285bc8f038941ddf598501a86f1536789740991d7d8756e34f1e74d9" }, - { file = "pydantic_core-2.33.2-cp39-cp39-win_amd64.whl", hash = "sha256:f481959862f57f29601ccced557cc2e817bce7533ab8e01a797a48b49c9692b3" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c4aa4e82353f65e548c476b37e64189783aa5384903bfea4f41580f255fddfa" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d946c8bf0d5c24bf4fe333af284c59a19358aa3ec18cb3dc4370080da1e8ad29" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87b31b6846e361ef83fedb187bb5b4372d0da3f7e28d85415efa92d6125d6e6d" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa9d91b338f2df0508606f7009fde642391425189bba6d8c653afd80fd6bb64e" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2058a32994f1fde4ca0480ab9d1e75a0e8c87c22b53a3ae66554f9af78f2fe8c" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:0e03262ab796d986f978f79c943fc5f620381be7287148b8010b4097f79a39ec" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1a8695a8d00c73e50bff9dfda4d540b7dee29ff9b8053e38380426a85ef10052" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fa754d1850735a0b0e03bcffd9d4b4343eb417e47196e4485d9cca326073a42c" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a11c8d26a50bfab49002947d3d237abe4d9e4b5bdc8846a63537b6488e197808" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:87acbfcf8e90ca885206e98359d7dca4bcbb35abdc0ff66672a293e1d7a19101" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7f92c15cd1e97d4b12acd1cc9004fa092578acfa57b67ad5e43a197175d01a64" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3f26877a748dc4251cfcfda9dfb5f13fcb034f5308388066bcfe9031b63ae7d" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac89aea9af8cd672fa7b510e7b8c33b0bba9a43186680550ccf23020f32d535" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:970919794d126ba8645f3837ab6046fb4e72bbc057b3709144066204c19a455d" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3eb3fe62804e8f859c49ed20a8451342de53ed764150cb14ca71357c765dc2a6" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:3abcd9392a36025e3bd55f9bd38d908bd17962cc49bc6da8e7e96285336e2bca" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3a1c81334778f9e3af2f8aeb7a960736e5cab1dfebfb26aabca09afd2906c039" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2807668ba86cb38c6817ad9bc66215ab8584d1d304030ce4f0887336f28a5e27" }, - { file = "pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc" }, -] - -[package.dependencies] -typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + { file = "pydantic_core-2.41.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:e63036298322e9aea1c8b7c0a6c1204d615dbf6ec0668ce5b83ff27f07404a61" }, + { file = "pydantic_core-2.41.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:241299ca91fc77ef64f11ed909d2d9220a01834e8e6f8de61275c4dd16b7c936" }, + { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ab7e594a2a5c24ab8013a7dc8cfe5f2260e80e490685814122081705c2cf2b0" }, + { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b054ef1a78519cb934b58e9c90c09e93b837c935dcd907b891f2b265b129eb6e" }, + { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f2ab7d10d0ab2ed6da54c757233eb0f48ebfb4f86e9b88ccecb3f92bbd61a538" }, + { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2757606b7948bb853a27e4040820306eaa0ccb9e8f9f8a0fa40cb674e170f350" }, + { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cec0e75eb61f606bad0a32f2be87507087514e26e8c73db6cbdb8371ccd27917" }, + { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0234236514f44a5bf552105cfe2543a12f48203397d9d0f866affa569345a5b5" }, + { file = "pydantic_core-2.41.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:1b974e41adfbb4ebb0f65fc4ca951347b17463d60893ba7d5f7b9bb087c83897" }, + { file = "pydantic_core-2.41.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:248dafb3204136113c383e91a4d815269f51562b6659b756cf3df14eefc7d0bb" }, + { file = "pydantic_core-2.41.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:678f9d76a91d6bcedd7568bbf6beb77ae8447f85d1aeebaab7e2f0829cfc3a13" }, + { file = "pydantic_core-2.41.1-cp310-cp310-win32.whl", hash = "sha256:dff5bee1d21ee58277900692a641925d2dddfde65182c972569b1a276d2ac8fb" }, + { file = "pydantic_core-2.41.1-cp310-cp310-win_amd64.whl", hash = "sha256:5042da12e5d97d215f91567110fdfa2e2595a25f17c19b9ff024f31c34f9b53e" }, + { file = "pydantic_core-2.41.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4f276a6134fe1fc1daa692642a3eaa2b7b858599c49a7610816388f5e37566a1" }, + { file = "pydantic_core-2.41.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07588570a805296ece009c59d9a679dc08fab72fb337365afb4f3a14cfbfc176" }, + { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28527e4b53400cd60ffbd9812ccb2b5135d042129716d71afd7e45bf42b855c0" }, + { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:46a1c935c9228bad738c8a41de06478770927baedf581d172494ab36a6b96575" }, + { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:447ddf56e2b7d28d200d3e9eafa936fe40485744b5a824b67039937580b3cb20" }, + { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:63892ead40c1160ac860b5debcc95c95c5a0035e543a8b5a4eac70dd22e995f4" }, + { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4a9543ca355e6df8fbe9c83e9faab707701e9103ae857ecb40f1c0cf8b0e94d" }, + { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f2611bdb694116c31e551ed82e20e39a90bea9b7ad9e54aaf2d045ad621aa7a1" }, + { file = "pydantic_core-2.41.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fecc130893a9b5f7bfe230be1bb8c61fe66a19db8ab704f808cb25a82aad0bc9" }, + { file = "pydantic_core-2.41.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:1e2df5f8344c99b6ea5219f00fdc8950b8e6f2c422fbc1cc122ec8641fac85a1" }, + { file = "pydantic_core-2.41.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:35291331e9d8ed94c257bab6be1cb3a380b5eee570a2784bffc055e18040a2ea" }, + { file = "pydantic_core-2.41.1-cp311-cp311-win32.whl", hash = "sha256:2876a095292668d753f1a868c4a57c4ac9f6acbd8edda8debe4218d5848cf42f" }, + { file = "pydantic_core-2.41.1-cp311-cp311-win_amd64.whl", hash = "sha256:b92d6c628e9a338846a28dfe3fcdc1a3279388624597898b105e078cdfc59298" }, + { file = "pydantic_core-2.41.1-cp311-cp311-win_arm64.whl", hash = "sha256:7d82ae99409eb69d507a89835488fb657faa03ff9968a9379567b0d2e2e56bc5" }, + { file = "pydantic_core-2.41.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:db2f82c0ccbce8f021ad304ce35cbe02aa2f95f215cac388eed542b03b4d5eb4" }, + { file = "pydantic_core-2.41.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:47694a31c710ced9205d5f1e7e8af3ca57cbb8a503d98cb9e33e27c97a501601" }, + { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93e9decce94daf47baf9e9d392f5f2557e783085f7c5e522011545d9d6858e00" }, + { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ab0adafdf2b89c8b84f847780a119437a0931eca469f7b44d356f2b426dd9741" }, + { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5da98cc81873f39fd56882e1569c4677940fbc12bce6213fad1ead784192d7c8" }, + { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:209910e88afb01fd0fd403947b809ba8dba0e08a095e1f703294fda0a8fdca51" }, + { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:365109d1165d78d98e33c5bfd815a9b5d7d070f578caefaabcc5771825b4ecb5" }, + { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:706abf21e60a2857acdb09502bc853ee5bce732955e7b723b10311114f033115" }, + { file = "pydantic_core-2.41.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bf0bd5417acf7f6a7ec3b53f2109f587be176cb35f9cf016da87e6017437a72d" }, + { file = "pydantic_core-2.41.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:2e71b1c6ceb9c78424ae9f63a07292fb769fb890a4e7efca5554c47f33a60ea5" }, + { file = "pydantic_core-2.41.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:80745b9770b4a38c25015b517451c817799bfb9d6499b0d13d8227ec941cb513" }, + { file = "pydantic_core-2.41.1-cp312-cp312-win32.whl", hash = "sha256:83b64d70520e7890453f1aa21d66fda44e7b35f1cfea95adf7b4289a51e2b479" }, + { file = "pydantic_core-2.41.1-cp312-cp312-win_amd64.whl", hash = "sha256:377defd66ee2003748ee93c52bcef2d14fde48fe28a0b156f88c3dbf9bc49a50" }, + { file = "pydantic_core-2.41.1-cp312-cp312-win_arm64.whl", hash = "sha256:c95caff279d49c1d6cdfe2996e6c2ad712571d3b9caaa209a404426c326c4bde" }, + { file = "pydantic_core-2.41.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70e790fce5f05204ef4403159857bfcd587779da78627b0babb3654f75361ebf" }, + { file = "pydantic_core-2.41.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9cebf1ca35f10930612d60bd0f78adfacee824c30a880e3534ba02c207cceceb" }, + { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:170406a37a5bc82c22c3274616bf6f17cc7df9c4a0a0a50449e559cb755db669" }, + { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:12d4257fc9187a0ccd41b8b327d6a4e57281ab75e11dda66a9148ef2e1fb712f" }, + { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a75a33b4db105dd1c8d57839e17ee12db8d5ad18209e792fa325dbb4baeb00f4" }, + { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08a589f850803a74e0fcb16a72081cafb0d72a3cdda500106942b07e76b7bf62" }, + { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a97939d6ea44763c456bd8a617ceada2c9b96bb5b8ab3dfa0d0827df7619014" }, + { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2ae423c65c556f09569524b80ffd11babff61f33055ef9773d7c9fabc11ed8d" }, + { file = "pydantic_core-2.41.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:4dc703015fbf8764d6a8001c327a87f1823b7328d40b47ce6000c65918ad2b4f" }, + { file = "pydantic_core-2.41.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:968e4ffdfd35698a5fe659e5e44c508b53664870a8e61c8f9d24d3d145d30257" }, + { file = "pydantic_core-2.41.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:fff2b76c8e172d34771cd4d4f0ade08072385310f214f823b5a6ad4006890d32" }, + { file = "pydantic_core-2.41.1-cp313-cp313-win32.whl", hash = "sha256:a38a5263185407ceb599f2f035faf4589d57e73c7146d64f10577f6449e8171d" }, + { file = "pydantic_core-2.41.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42ae7fd6760782c975897e1fdc810f483b021b32245b0105d40f6e7a3803e4b" }, + { file = "pydantic_core-2.41.1-cp313-cp313-win_arm64.whl", hash = "sha256:ad4111acc63b7384e205c27a2f15e23ac0ee21a9d77ad6f2e9cb516ec90965fb" }, + { file = "pydantic_core-2.41.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:440d0df7415b50084a4ba9d870480c16c5f67c0d1d4d5119e3f70925533a0edc" }, + { file = "pydantic_core-2.41.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71eaa38d342099405dae6484216dcf1e8e4b0bebd9b44a4e08c9b43db6a2ab67" }, + { file = "pydantic_core-2.41.1-cp313-cp313t-win_amd64.whl", hash = "sha256:555ecf7e50f1161d3f693bc49f23c82cf6cdeafc71fa37a06120772a09a38795" }, + { file = "pydantic_core-2.41.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:05226894a26f6f27e1deb735d7308f74ef5fa3a6de3e0135bb66cdcaee88f64b" }, + { file = "pydantic_core-2.41.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:85ff7911c6c3e2fd8d3779c50925f6406d770ea58ea6dde9c230d35b52b16b4a" }, + { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47f1f642a205687d59b52dc1a9a607f45e588f5a2e9eeae05edd80c7a8c47674" }, + { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df11c24e138876ace5ec6043e5cae925e34cf38af1a1b3d63589e8f7b5f5cdc4" }, + { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7f0bf7f5c8f7bf345c527e8a0d72d6b26eda99c1227b0c34e7e59e181260de31" }, + { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:82b887a711d341c2c47352375d73b029418f55b20bd7815446d175a70effa706" }, + { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5f1d5d6bbba484bdf220c72d8ecd0be460f4bd4c5e534a541bb2cd57589fb8b" }, + { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2bf1917385ebe0f968dc5c6ab1375886d56992b93ddfe6bf52bff575d03662be" }, + { file = "pydantic_core-2.41.1-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:4f94f3ab188f44b9a73f7295663f3ecb8f2e2dd03a69c8f2ead50d37785ecb04" }, + { file = "pydantic_core-2.41.1-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:3925446673641d37c30bd84a9d597e49f72eacee8b43322c8999fa17d5ae5bc4" }, + { file = "pydantic_core-2.41.1-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:49bd51cc27adb980c7b97357ae036ce9b3c4d0bb406e84fbe16fb2d368b602a8" }, + { file = "pydantic_core-2.41.1-cp314-cp314-win32.whl", hash = "sha256:a31ca0cd0e4d12ea0df0077df2d487fc3eb9d7f96bbb13c3c5b88dcc21d05159" }, + { file = "pydantic_core-2.41.1-cp314-cp314-win_amd64.whl", hash = "sha256:1b5c4374a152e10a22175d7790e644fbd8ff58418890e07e2073ff9d4414efae" }, + { file = "pydantic_core-2.41.1-cp314-cp314-win_arm64.whl", hash = "sha256:4fee76d757639b493eb600fba668f1e17475af34c17dd61db7a47e824d464ca9" }, + { file = "pydantic_core-2.41.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f9b9c968cfe5cd576fdd7361f47f27adeb120517e637d1b189eea1c3ece573f4" }, + { file = "pydantic_core-2.41.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1ebc7ab67b856384aba09ed74e3e977dded40e693de18a4f197c67d0d4e6d8e" }, + { file = "pydantic_core-2.41.1-cp314-cp314t-win_amd64.whl", hash = "sha256:8ae0dc57b62a762985bc7fbf636be3412394acc0ddb4ade07fe104230f1b9762" }, + { file = "pydantic_core-2.41.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:10ce489cf09a4956a1549af839b983edc59b0f60e1b068c21b10154e58f54f80" }, + { file = "pydantic_core-2.41.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ff548c908caffd9455fd1342366bcf8a1ec8a3fca42f35c7fc60883d6a901074" }, + { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d43bf082025082bda13be89a5f876cc2386b7727c7b322be2d2b706a45cea8e" }, + { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:666aee751faf1c6864b2db795775dd67b61fdcf646abefa309ed1da039a97209" }, + { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b83aaeff0d7bde852c32e856f3ee410842ebc08bc55c510771d87dcd1c01e1ed" }, + { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:055c7931b0329cb8acde20cdde6d9c2cbc2a02a0a8e54a792cddd91e2ea92c65" }, + { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:530bbb1347e3e5ca13a91ac087c4971d7da09630ef8febd27a20a10800c2d06d" }, + { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:65a0ea16cfea7bfa9e43604c8bd726e63a3788b61c384c37664b55209fcb1d74" }, + { file = "pydantic_core-2.41.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8fa93fadff794c6d15c345c560513b160197342275c6d104cc879f932b978afc" }, + { file = "pydantic_core-2.41.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:c8a1af9ac51969a494c6a82b563abae6859dc082d3b999e8fa7ba5ee1b05e8e8" }, + { file = "pydantic_core-2.41.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:30edab28829703f876897c9471a857e43d847b8799c3c9e2fbce644724b50aa4" }, + { file = "pydantic_core-2.41.1-cp39-cp39-win32.whl", hash = "sha256:84d0ff869f98be2e93efdf1ae31e5a15f0926d22af8677d51676e373abbfe57a" }, + { file = "pydantic_core-2.41.1-cp39-cp39-win_amd64.whl", hash = "sha256:b5674314987cdde5a5511b029fa5fb1556b3d147a367e01dd583b19cfa8e35df" }, + { file = "pydantic_core-2.41.1-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:68f2251559b8efa99041bb63571ec7cdd2d715ba74cc82b3bc9eff824ebc8bf0" }, + { file = "pydantic_core-2.41.1-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:c7bc140c596097cb53b30546ca257dbe3f19282283190b1b5142928e5d5d3a20" }, + { file = "pydantic_core-2.41.1-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2896510fce8f4725ec518f8b9d7f015a00db249d2fd40788f442af303480063d" }, + { file = "pydantic_core-2.41.1-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ced20e62cfa0f496ba68fa5d6c7ee71114ea67e2a5da3114d6450d7f4683572a" }, + { file = "pydantic_core-2.41.1-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:b04fa9ed049461a7398138c604b00550bc89e3e1151d84b81ad6dc93e39c4c06" }, + { file = "pydantic_core-2.41.1-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:b3b7d9cfbfdc43c80a16638c6dc2768e3956e73031fca64e8e1a3ae744d1faeb" }, + { file = "pydantic_core-2.41.1-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eec83fc6abef04c7f9bec616e2d76ee9a6a4ae2a359b10c21d0f680e24a247ca" }, + { file = "pydantic_core-2.41.1-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6771a2d9f83c4038dfad5970a3eef215940682b2175e32bcc817bdc639019b28" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fabcbdb12de6eada8d6e9a759097adb3c15440fafc675b3e94ae5c9cb8d678a0" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:80e97ccfaf0aaf67d55de5085b0ed0d994f57747d9d03f2de5cc9847ca737b08" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34df1fe8fea5d332484a763702e8b6a54048a9d4fe6ccf41e34a128238e01f52" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:421b5595f845842fc093f7250e24ee395f54ca62d494fdde96f43ecf9228ae01" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:dce8b22663c134583aaad24827863306a933f576c79da450be3984924e2031d1" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:300a9c162fea9906cc5c103893ca2602afd84f0ec90d3be36f4cc360125d22e1" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e019167628f6e6161ae7ab9fb70f6d076a0bf0d55aa9b20833f86a320c70dd65" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:13ab9cc2de6f9d4ab645a050ae5aee61a2424ac4d3a16ba23d4c2027705e0301" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:af2385d3f98243fb733862f806c5bb9122e5fba05b373e3af40e3c82d711cef1" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:6550617a0c2115be56f90c31a5370261d8ce9dbf051c3ed53b51172dd34da696" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc17b6ecf4983d298686014c92ebc955a9f9baf9f57dad4065e7906e7bee6222" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:42ae9352cf211f08b04ea110563d6b1e415878eea5b4c70f6bdb17dca3b932d2" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e82947de92068b0a21681a13dd2102387197092fbe7defcfb8453e0913866506" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e244c37d5471c9acdcd282890c6c4c83747b77238bfa19429b8473586c907656" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1e798b4b304a995110d41ec93653e57975620ccb2842ba9420037985e7d7284e" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f1fc716c0eb1663c59699b024428ad5ec2bcc6b928527b8fe28de6cb89f47efb" }, + { file = "pydantic_core-2.41.1.tar.gz", hash = "sha256:1ad375859a6d8c356b7704ec0f547a58e82ee80bb41baa811ad710e124bc8f2f" }, +] + +[package.dependencies] +typing-extensions = ">=4.14.1" [[package]] name = "pygments" @@ -2807,47 +2927,84 @@ pyyaml = "*" [package.extras] extra = ["pygments (>=2.19.1)"] +[[package]] +name = "pyparsing" +version = "3.2.5" +description = "pyparsing - Classes and methods to define and execute parsing grammars" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e" }, + { file = "pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6" }, +] + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + [[package]] name = "pyproj" -version = "3.7.1" +version = "3.7.2" description = "Python interface to PROJ (cartographic projections and coordinate transformations library)" optional = false -python-versions = ">=3.10" +python-versions = ">=3.11" groups = ["main"] files = [ - { file = "pyproj-3.7.1-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:bf09dbeb333c34e9c546364e7df1ff40474f9fddf9e70657ecb0e4f670ff0b0e" }, - { file = "pyproj-3.7.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:6575b2e53cc9e3e461ad6f0692a5564b96e7782c28631c7771c668770915e169" }, - { file = "pyproj-3.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cb516ee35ed57789b46b96080edf4e503fdb62dbb2e3c6581e0d6c83fca014b" }, - { file = "pyproj-3.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e47c4e93b88d99dd118875ee3ca0171932444cdc0b52d493371b5d98d0f30ee" }, - { file = "pyproj-3.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3e8d276caeae34fcbe4813855d0d97b9b825bab8d7a8b86d859c24a6213a5a0d" }, - { file = "pyproj-3.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f173f851ee75e54acdaa053382b6825b400cb2085663a9bb073728a59c60aebb" }, - { file = "pyproj-3.7.1-cp310-cp310-win32.whl", hash = "sha256:f550281ed6e5ea88fcf04a7c6154e246d5714be495c50c9e8e6b12d3fb63e158" }, - { file = "pyproj-3.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3537668992a709a2e7f068069192138618c00d0ba113572fdd5ee5ffde8222f3" }, - { file = "pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d" }, - { file = "pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067" }, - { file = "pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa" }, - { file = "pyproj-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5dcf24ede53d8abab7d8a77f69ff1936c6a8843ef4fcc574646e4be66e5739" }, - { file = "pyproj-3.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c2e7449840a44ce860d8bea2c6c1c4bc63fa07cba801dcce581d14dcb031a02" }, - { file = "pyproj-3.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0829865c1d3a3543f918b3919dc601eea572d6091c0dd175e1a054db9c109274" }, - { file = "pyproj-3.7.1-cp311-cp311-win32.whl", hash = "sha256:6181960b4b812e82e588407fe5c9c68ada267c3b084db078f248db5d7f45d18a" }, - { file = "pyproj-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ad0ff443a785d84e2b380869fdd82e6bfc11eba6057d25b4409a9bbfa867970" }, - { file = "pyproj-3.7.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:2781029d90df7f8d431e29562a3f2d8eafdf233c4010d6fc0381858dc7373217" }, - { file = "pyproj-3.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d61bf8ab04c73c1da08eedaf21a103b72fa5b0a9b854762905f65ff8b375d394" }, - { file = "pyproj-3.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04abc517a8555d1b05fcee768db3280143fe42ec39fdd926a2feef31631a1f2f" }, - { file = "pyproj-3.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084c0a475688f934d386c2ab3b6ce03398a473cd48adfda70d9ab8f87f2394a0" }, - { file = "pyproj-3.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a20727a23b1e49c7dc7fe3c3df8e56a8a7acdade80ac2f5cca29d7ca5564c145" }, - { file = "pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d" }, - { file = "pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274" }, - { file = "pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98" }, - { file = "pyproj-3.7.1-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:5f8d02ef4431dee414d1753d13fa82a21a2f61494737b5f642ea668d76164d6d" }, - { file = "pyproj-3.7.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:0b853ae99bda66cbe24b4ccfe26d70601d84375940a47f553413d9df570065e0" }, - { file = "pyproj-3.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83db380c52087f9e9bdd8a527943b2e7324f275881125e39475c4f9277bdeec4" }, - { file = "pyproj-3.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b35ed213892e211a3ce2bea002aa1183e1a2a9b79e51bb3c6b15549a831ae528" }, - { file = "pyproj-3.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a8b15b0463d1303bab113d1a6af2860a0d79013c3a66fcc5475ce26ef717fd4f" }, - { file = "pyproj-3.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:87229e42b75e89f4dad6459200f92988c5998dfb093c7c631fb48524c86cd5dc" }, - { file = "pyproj-3.7.1-cp313-cp313-win32.whl", hash = "sha256:d666c3a3faaf3b1d7fc4a544059c4eab9d06f84a604b070b7aa2f318e227798e" }, - { file = "pyproj-3.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:d3caac7473be22b6d6e102dde6c46de73b96bc98334e577dfaee9886f102ea2e" }, - { file = "pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47" }, + { file = "pyproj-3.7.2-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:2514d61f24c4e0bb9913e2c51487ecdaeca5f8748d8313c933693416ca41d4d5" }, + { file = "pyproj-3.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:8693ca3892d82e70de077701ee76dd13d7bca4ae1c9d1e739d72004df015923a" }, + { file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5e26484d80fea56273ed1555abaea161e9661d81a6c07815d54b8e883d4ceb25" }, + { file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:281cb92847814e8018010c48b4069ff858a30236638631c1a91dd7bfa68f8a8a" }, + { file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9c8577f0b7bb09118ec2e57e3babdc977127dd66326d6c5d755c76b063e6d9dc" }, + { file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a23f59904fac3a5e7364b3aa44d288234af267ca041adb2c2b14a903cd5d3ac5" }, + { file = "pyproj-3.7.2-cp311-cp311-win32.whl", hash = "sha256:f2af4ed34b2cf3e031a2d85b067a3ecbd38df073c567e04b52fa7a0202afde8a" }, + { file = "pyproj-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:0b7cb633565129677b2a183c4d807c727d1c736fcb0568a12299383056e67433" }, + { file = "pyproj-3.7.2-cp311-cp311-win_arm64.whl", hash = "sha256:38b08d85e3a38e455625b80e9eb9f78027c8e2649a21dec4df1f9c3525460c71" }, + { file = "pyproj-3.7.2-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:0a9bb26a6356fb5b033433a6d1b4542158fb71e3c51de49b4c318a1dff3aeaab" }, + { file = "pyproj-3.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:567caa03021178861fad27fabde87500ec6d2ee173dd32f3e2d9871e40eebd68" }, + { file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:c203101d1dc3c038a56cff0447acc515dd29d6e14811406ac539c21eed422b2a" }, + { file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1edc34266c0c23ced85f95a1ee8b47c9035eae6aca5b6b340327250e8e281630" }, + { file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aa9f26c21bc0e2dc3d224cb1eb4020cf23e76af179a7c66fea49b828611e4260" }, + { file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9428b318530625cb389b9ddc9c51251e172808a4af79b82809376daaeabe5e9" }, + { file = "pyproj-3.7.2-cp312-cp312-win32.whl", hash = "sha256:b3d99ed57d319da042f175f4554fc7038aa4bcecc4ac89e217e350346b742c9d" }, + { file = "pyproj-3.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:11614a054cd86a2ed968a657d00987a86eeb91fdcbd9ad3310478685dc14a128" }, + { file = "pyproj-3.7.2-cp312-cp312-win_arm64.whl", hash = "sha256:509a146d1398bafe4f53273398c3bb0b4732535065fa995270e52a9d3676bca3" }, + { file = "pyproj-3.7.2-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:19466e529b1b15eeefdf8ff26b06fa745856c044f2f77bf0edbae94078c1dfa1" }, + { file = "pyproj-3.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:c79b9b84c4a626c5dc324c0d666be0bfcebd99f7538d66e8898c2444221b3da7" }, + { file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ceecf374cacca317bc09e165db38ac548ee3cad07c3609442bd70311c59c21aa" }, + { file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5141a538ffdbe4bfd157421828bb2e07123a90a7a2d6f30fa1462abcfb5ce681" }, + { file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f000841e98ea99acbb7b8ca168d67773b0191de95187228a16110245c5d954d5" }, + { file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8115faf2597f281a42ab608ceac346b4eb1383d3b45ab474fd37341c4bf82a67" }, + { file = "pyproj-3.7.2-cp313-cp313-win32.whl", hash = "sha256:f18c0579dd6be00b970cb1a6719197fceecc407515bab37da0066f0184aafdf3" }, + { file = "pyproj-3.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:bb41c29d5f60854b1075853fe80c58950b398d4ebb404eb532536ac8d2834ed7" }, + { file = "pyproj-3.7.2-cp313-cp313-win_arm64.whl", hash = "sha256:2b617d573be4118c11cd96b8891a0b7f65778fa7733ed8ecdb297a447d439100" }, + { file = "pyproj-3.7.2-cp313-cp313t-macosx_13_0_x86_64.whl", hash = "sha256:d27b48f0e81beeaa2b4d60c516c3a1cfbb0c7ff6ef71256d8e9c07792f735279" }, + { file = "pyproj-3.7.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:55a3610d75023c7b1c6e583e48ef8f62918e85a2ae81300569d9f104d6684bb6" }, + { file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8d7349182fa622696787cc9e195508d2a41a64765da9b8a6bee846702b9e6220" }, + { file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:d230b186eb876ed4f29a7c5ee310144c3a0e44e89e55f65fb3607e13f6db337c" }, + { file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:237499c7862c578d0369e2b8ac56eec550e391a025ff70e2af8417139dabb41c" }, + { file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8c225f5978abd506fd9a78eaaf794435e823c9156091cabaab5374efb29d7f69" }, + { file = "pyproj-3.7.2-cp313-cp313t-win32.whl", hash = "sha256:2da731876d27639ff9d2d81c151f6ab90a1546455fabd93368e753047be344a2" }, + { file = "pyproj-3.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f54d91ae18dd23b6c0ab48126d446820e725419da10617d86a1b69ada6d881d3" }, + { file = "pyproj-3.7.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fc52ba896cfc3214dc9f9ca3c0677a623e8fdd096b257c14a31e719d21ff3fdd" }, + { file = "pyproj-3.7.2-cp314-cp314-macosx_13_0_x86_64.whl", hash = "sha256:2aaa328605ace41db050d06bac1adc11f01b71fe95c18661497763116c3a0f02" }, + { file = "pyproj-3.7.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:35dccbce8201313c596a970fde90e33605248b66272595c061b511c8100ccc08" }, + { file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:25b0b7cb0042444c29a164b993c45c1b8013d6c48baa61dc1160d834a277e83b" }, + { file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:85def3a6388e9ba51f964619aa002a9d2098e77c6454ff47773bb68871024281" }, + { file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b1bccefec3875ab81eabf49059e2b2ea77362c178b66fd3528c3e4df242f1516" }, + { file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d5371ca114d6990b675247355a801925814eca53e6c4b2f1b5c0a956336ee36e" }, + { file = "pyproj-3.7.2-cp314-cp314-win32.whl", hash = "sha256:77f066626030f41be543274f5ac79f2a511fe89860ecd0914f22131b40a0ec25" }, + { file = "pyproj-3.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:5a964da1696b8522806f4276ab04ccfff8f9eb95133a92a25900697609d40112" }, + { file = "pyproj-3.7.2-cp314-cp314-win_arm64.whl", hash = "sha256:e258ab4dbd3cf627809067c0ba8f9884ea76c8e5999d039fb37a1619c6c3e1f6" }, + { file = "pyproj-3.7.2-cp314-cp314t-macosx_13_0_x86_64.whl", hash = "sha256:bbbac2f930c6d266f70ec75df35ef851d96fdb3701c674f42fd23a9314573b37" }, + { file = "pyproj-3.7.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:b7544e0a3d6339dc9151e9c8f3ea62a936ab7cc446a806ec448bbe86aebb979b" }, + { file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:f7f5133dca4c703e8acadf6f30bc567d39a42c6af321e7f81975c2518f3ed357" }, + { file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:5aff3343038d7426aa5076f07feb88065f50e0502d1b0d7c22ddfdd2c75a3f81" }, + { file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:b0552178c61f2ac1c820d087e8ba6e62b29442debddbb09d51c4bf8acc84d888" }, + { file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:47d87db2d2c436c5fd0409b34d70bb6cdb875cca2ebe7a9d1c442367b0ab8d59" }, + { file = "pyproj-3.7.2-cp314-cp314t-win32.whl", hash = "sha256:c9b6f1d8ad3e80a0ee0903a778b6ece7dca1d1d40f6d114ae01bc8ddbad971aa" }, + { file = "pyproj-3.7.2-cp314-cp314t-win_amd64.whl", hash = "sha256:1914e29e27933ba6f9822663ee0600f169014a2859f851c054c88cf5ea8a333c" }, + { file = "pyproj-3.7.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d9d25bae416a24397e0d85739f84d323b55f6511e45a522dd7d7eae70d10c7e4" }, + { file = "pyproj-3.7.2.tar.gz", hash = "sha256:39a0cf1ecc7e282d1d30f36594ebd55c9fae1fda8a2622cee5d100430628f88c" }, ] [package.dependencies] @@ -3624,14 +3781,14 @@ files = [ [[package]] name = "typing-inspection" -version = "0.4.1" +version = "0.4.2" description = "Runtime typing introspection tools" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["main", "dev"] files = [ - { file = "typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51" }, - { file = "typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28" }, + { file = "typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7" }, + { file = "typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464" }, ] [package.dependencies] @@ -3813,14 +3970,14 @@ files = [ [[package]] name = "xarray" -version = "2025.7.1" +version = "2025.10.1" description = "N-D labeled arrays and datasets in Python" optional = false python-versions = ">=3.11" groups = ["main"] files = [ - { file = "xarray-2025.7.1-py3-none-any.whl", hash = "sha256:e8647b659e53bd350d7c5a91c34dd4122ad6a3ca0bc41399d424a7c0273c7635" }, - { file = "xarray-2025.7.1.tar.gz", hash = "sha256:2884bf5672b540fcc6ff8c20a3196bda0d78fbfb4d67398d60526e97c2faceef" }, + { file = "xarray-2025.10.1-py3-none-any.whl", hash = "sha256:a4e699433b87a7fac340951bc36648645eeef72bdd915ff055ac2fd99865a73d" }, + { file = "xarray-2025.10.1.tar.gz", hash = "sha256:3c2b5ad7389825bd624ada5ff26b01ac54b1aae72e2fe0d724d81d40a2bf5785" }, ] [package.dependencies] @@ -3829,24 +3986,24 @@ packaging = ">=24.1" pandas = ">=2.2" [package.extras] -accel = ["bottleneck", "flox (>=0.9)", "numba (>=0.59)", "numbagg (>=0.8)", "opt_einsum", "scipy (>=1.13)"] +accel = ["bottleneck", "flox (>=0.9)", "numba (>=0.62)", "numbagg (>=0.8)", "opt_einsum", "scipy (>=1.13)"] complete = ["xarray[accel,etc,io,parallel,viz]"] etc = ["sparse (>=0.15)"] io = ["cftime", "fsspec", "h5netcdf", "netCDF4 (>=1.6.0)", "pooch", "pydap", "scipy (>=1.13)", "zarr (>=2.18)"] parallel = ["dask[complete]"] -types = ["pandas-stubs", "scipy-stubs", "types-PyYAML", "types-Pygments", "types-colorama", "types-decorator", "types-defusedxml", "types-docutils", "types-networkx", "types-openpyxl", "types-pexpect", "types-psutil", "types-pycurl", "types-python-dateutil", "types-pytz", "types-setuptools"] +types = ["pandas-stubs", "scipy-stubs", "types-PyYAML", "types-Pygments", "types-colorama", "types-decorator", "types-defusedxml", "types-docutils", "types-networkx", "types-openpyxl", "types-pexpect", "types-psutil", "types-pycurl", "types-python-dateutil", "types-pytz", "types-requests", "types-setuptools"] viz = ["cartopy (>=0.23)", "matplotlib", "nc-time-axis", "seaborn"] [[package]] name = "zarr" -version = "3.1.0" +version = "3.1.3" description = "An implementation of chunked, compressed, N-dimensional arrays for Python" optional = false python-versions = ">=3.11" groups = ["main"] files = [ - { file = "zarr-3.1.0-py3-none-any.whl", hash = "sha256:bd3d2f88d602d43f81df82e26dd115ea66635a2af5bf6da261d3c640bb4c1ce4" }, - { file = "zarr-3.1.0.tar.gz", hash = "sha256:ace5b111dc69d5315cb1655dfd0f816c5acf9798d2ad92f43b608a52c8c8ac2b" }, + { file = "zarr-3.1.3-py3-none-any.whl", hash = "sha256:45f67f87f65f14fa453f99dd8110a5936b7ac69f3a21981d33e90407c80c302a" }, + { file = "zarr-3.1.3.tar.gz", hash = "sha256:01342f3e26a02ed5670db608a5576fbdb8d76acb5c280bd2d0082454b1ba6f79" }, ] [package.dependencies] @@ -3857,14 +4014,35 @@ packaging = ">=22.0" typing-extensions = ">=4.9" [package.extras] +cli = ["typer"] docs = ["astroid (<4)", "numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "pytest", "rich", "s3fs (>=2023.10.0)", "sphinx (==8.1.3)", "sphinx-autoapi (==3.4.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx-copybutton", "sphinx-design", "sphinx-issues", "sphinx-reredirects", "towncrier"] gpu = ["cupy-cuda12x"] optional = ["rich", "universal-pathlib"] remote = ["fsspec (>=2023.10.0)", "obstore (>=0.5.1)"] remote-tests = ["botocore", "fsspec (>=2023.10.0)", "moto[s3,server]", "obstore (>=0.5.1)", "requests", "s3fs (>=2023.10.0)"] -test = ["coverage", "hypothesis", "mypy", "packaging", "pytest (<8.4)", "pytest-accept", "pytest-asyncio", "pytest-cov", "pytest-xdist", "rich", "tomlkit", "uv"] +test = ["coverage (>=7.10)", "hypothesis", "mypy", "numpydoc", "packaging", "pytest (<8.4)", "pytest-accept", "pytest-asyncio", "pytest-cov", "pytest-xdist", "rich", "tomlkit", "uv"] + +[[package]] +name = "zipp" +version = "3.23.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e" }, + { file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166" }, +] + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more_itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = ">=3.13" -content-hash = "3ca97b9e51214f096f076795391e3d64556d52f47c53450bcf99ffd0c495f64b" +content-hash = "3a6cd56008c43cebabb3ffdbf2d79955b7d239934c00123eb283588d71e66b6a" diff --git a/pyproject.toml b/pyproject.toml index 81c3d03..6277846 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,14 +16,14 @@ repository = "https://github.com/alliander-opensource/meteoforge" documentation = "https://github.com/alliander-opensource/meteoforge" [tool.poetry.dependencies] -dask = "^2025.7" +dask = "^2025.9.1" netcdf4 = "^1.7.2" -numpy = "^2.3.1" -pydantic = "^2.11.7" -pyproj = "^3.7.1" -xarray = "^2025.7.1" -zarr = "^3.1.0" -colorlog = "^6.9.0" +numpy = "^2.3.3" +pydantic = "^2.12.0" +pyproj = "^3.7.2" +xarray = "^2025.10.1" +zarr = "^3.1.3" +colorlog = "^6.9.0" # For colored logging output [tool.poetry.group.dev.dependencies] coverage = "^7.9.2" @@ -36,6 +36,7 @@ pre-commit = "^4.2.0" pytest = "^8.4.1" ruff = "^0.12.4" types-pyyaml = "^6.0.12.20250516" +fawltydeps = "^0.20.0" [build-system] requires = ["poetry-core"] diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/__init__.py b/src/meteoforge/core/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/core/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/logging/__init__.py b/src/meteoforge/logging/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/logging/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/parameters/__init__.py b/src/meteoforge/parameters/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/parameters/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/__init__.py b/src/meteoforge/spatial_temporal/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/spatial_temporal/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/locations.py b/src/meteoforge/spatial_temporal/locations.py index ed13f74..efb3b36 100644 --- a/src/meteoforge/spatial_temporal/locations.py +++ b/src/meteoforge/spatial_temporal/locations.py @@ -29,9 +29,9 @@ class MFLocation: """ def __init__(self, *, x: int | float, y: int | float, epsg_code: int = 4326): - """Initializes the MFLocation with x, y coordinates and an optional EPSG code.""" + """Initialize the MFLocation class.""" # Validate the input parameters - if self.valid_location(x, y, epsg_code): + if self.validate_location(x, y, epsg_code): # Set the instance variables self.x = float(x) self.y = float(y) @@ -40,14 +40,14 @@ def __init__(self, *, x: int | float, y: int | float, epsg_code: int = 4326): raise ValueError("Invalid location parameters") @staticmethod - def valid_location(x: float, y: float, epsg_code: int = 4326) -> bool: - """Validates the location parameters for type and existence.""" + def validate_location(x: float, y: float, epsg_code: int = 4326) -> bool: + """Validate a given x,y location with an EPSG code as an existing coordinate.""" logger.debug(f"Validating location: x={x}, y={y}, epgs_code={epsg_code}") # Validate the types of x, y, and epgs_code - if not isinstance(x, (int, float)): + if not isinstance(x, int | float): raise ValueError("x must be a number") - if not isinstance(y, (int, float)): + if not isinstance(y, int | float): raise ValueError("y must be a number") if not isinstance(epsg_code, int): raise ValueError("epgs_code must be an integer") @@ -63,27 +63,44 @@ def valid_location(x: float, y: float, epsg_code: int = 4326) -> bool: ... logger.debug(f"Location validation passed and valid: x={x}, y={y}, epsg_code={epsg_code}") + return True @staticmethod - def valid_crs(epsg_code: int) -> bool: - """Validates the EPSG code for known coordinate reference systems.""" + def validate_crs(epsg_code: int) -> bool: + """Validate a given EPSG code for valid and known coordinate reference systems. + + A valid CRS is one that exists, is not deprecated, and is either geographic or geocentric. This helps exclude + CRS values that are unsuitable for representing x,y coordinates in a geographic context. + """ logger.debug(f"Validating CRS with EPSG code: {epsg_code}") try: crs = CRS.from_epsg(epsg_code) except CRSError as e: - raise ValueError(f"invalid EPSG code '{crs}': --<<-- {e} -->>--") from e + raise ValueError(f"invalid EPSG code '{epsg_code}': --<<-- {e} -->>--") from e - # Check that the CRS is not deprecated + # Check that the CRS is not deprecated if crs.is_deprecated: raise ValueError( f"The CRS with EPSG code {epsg_code} is deprecated. Please use a different (non-deprecated) CRS." ) - # Check that the CRS is for an x,y based geographic coordinate system + # Check that the CRS is for an x,y based geographic coordinate system if not crs.is_geographic and not crs.is_geocentric: raise ValueError( "The MFLocation class type only supports Geographic (CRS.is_geographic=True) and Geocentric Coordinate " "Systems (CRS.is_geocentric=True)." ) return True + + +class MFLocationList: + """A list of MFLocation objects representing multiple geographic locations.""" + + ... + + +class MFLocationVector: + """A vector of MFLocation objects representing a sequence of geographic locations.""" + + ... From 2848eeadfacab576413d9f9ad34def9af1868f02 Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Thu, 30 Oct 2025 14:56:40 +0100 Subject: [PATCH 10/50] Add Scorecard workflow for supply-chain security Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .github/workflows/scorecard.yml | 78 +++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 .github/workflows/scorecard.yml diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml new file mode 100644 index 0000000..01e17d4 --- /dev/null +++ b/.github/workflows/scorecard.yml @@ -0,0 +1,78 @@ +# This workflow uses actions that are not certified by GitHub. They are provided +# by a third-party and are governed by separate terms of service, privacy +# policy, and support documentation. + +name: Scorecard supply-chain security +on: + # For Branch-Protection check. Only the default branch is supported. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection + branch_protection_rule: + # To guarantee Maintained check is occasionally updated. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained + schedule: + - cron: '37 7 * * 1' + push: + branches: [ "main" ] + +# Declare default permissions as read only. +permissions: read-all + +jobs: + analysis: + name: Scorecard analysis + runs-on: ubuntu-latest + # `publish_results: true` only works when run from the default branch. conditional can be removed if disabled. + if: github.event.repository.default_branch == github.ref_name || github.event_name == 'pull_request' + permissions: + # Needed to upload the results to code-scanning dashboard. + security-events: write + # Needed to publish results and get a badge (see publish_results below). + id-token: write + # Uncomment the permissions below if installing in a private repository. + # contents: read + # actions: read + + steps: + - name: "Checkout code" + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + + - name: "Run analysis" + uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1 + with: + results_file: results.sarif + results_format: sarif + # (Optional) "write" PAT token. Uncomment the `repo_token` line below if: + # - you want to enable the Branch-Protection check on a *public* repository, or + # - you are installing Scorecard on a *private* repository + # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action?tab=readme-ov-file#authentication-with-fine-grained-pat-optional. + # repo_token: ${{ secrets.SCORECARD_TOKEN }} + + # Public repositories: + # - Publish results to OpenSSF REST API for easy access by consumers + # - Allows the repository to include the Scorecard badge. + # - See https://github.com/ossf/scorecard-action#publishing-results. + # For private repositories: + # - `publish_results` will always be set to `false`, regardless + # of the value entered here. + publish_results: true + + # (Optional) Uncomment file_mode if you have a .gitattributes with files marked export-ignore + # file_mode: git + + # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF + # format to the repository Actions tab. + - name: "Upload artifact" + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 + with: + name: SARIF file + path: results.sarif + retention-days: 5 + + # Upload the results to GitHub's code scanning dashboard (optional). + # Commenting out will disable upload of results to your repo's Code Scanning dashboard + - name: "Upload to code-scanning" + uses: github/codeql-action/upload-sarif@v3 + with: + sarif_file: results.sarif From d22a13df092db0ee6e34953b2af7cdc2b71da6d5 Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sun, 9 Nov 2025 14:48:25 +0100 Subject: [PATCH 11/50] feature: Initial commit with most of the groundwork (#52) * feature: Initial commit with most of the groundwork Co-authored-by: Nico Rikken Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .github/dependabot.yaml | 24 + .../allowed-pr-sources-dev-release.yaml | 26 + .../workflows/allowed-pr-sources-main.yaml | 28 + .github/workflows/gh-pages-deployment.yaml | 36 + .../{scorecard.yml => openssf-scorecard.yml} | 0 .github/workflows/pr-quality-gate.yaml.yml | 70 + .github/workflows/pre-commit/action.yaml | 36 + .github/workflows/pytest/action.yaml | 28 + .github/workflows/sonar/action.yaml | 28 + .gitignore | 1 + poetry.lock | 3581 +++-------------- pyproject.toml | 18 +- 12 files changed, 825 insertions(+), 3051 deletions(-) create mode 100644 .github/dependabot.yaml create mode 100644 .github/workflows/allowed-pr-sources-dev-release.yaml create mode 100644 .github/workflows/allowed-pr-sources-main.yaml create mode 100644 .github/workflows/gh-pages-deployment.yaml rename .github/workflows/{scorecard.yml => openssf-scorecard.yml} (100%) create mode 100644 .github/workflows/pr-quality-gate.yaml.yml create mode 100644 .github/workflows/pre-commit/action.yaml create mode 100644 .github/workflows/pytest/action.yaml create mode 100644 .github/workflows/sonar/action.yaml diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 0000000..38b8455 --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,24 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file + +version: 2 +updates: + - package-ecosystem: "pip" + reviewers: + - "rflinnenbank" + directory: "/" + schedule: + interval: "weekly" + groups: + package-updates: + applies-to: version-updates + patterns: [ "*" ] + + - package-ecosystem: "github-actions" + directory: "/" + reviewers: + - "rflinnenbank" + schedule: + interval: "weekly" diff --git a/.github/workflows/allowed-pr-sources-dev-release.yaml b/.github/workflows/allowed-pr-sources-dev-release.yaml new file mode 100644 index 0000000..5bf13d5 --- /dev/null +++ b/.github/workflows/allowed-pr-sources-dev-release.yaml @@ -0,0 +1,26 @@ +name: Check if PR source branch is allowed for development or release branches + +on: + pull_request: + types: [ opened, reopened, synchronize, edited, ready_for_review ] + branches: + - development + - release/** + +jobs: + enforce: + runs-on: ubuntu-latest + steps: + - name: Check PR source branch + env: + HEAD_REF: ${{ github.head_ref }} + run: | + echo "Head branch: $HEAD_REF" + if [[ "$HEAD_REF" =~ ^feature/ || "$HEAD_REF" =~ ^dev/feature/ ]]; then + echo "✔ Allowed source branch." + exit 0 + else + echo "❌ Disallowed source branch: $HEAD_REF" + echo "Only 'feature/*' or 'dev/feature/*' may open PRs into 'development' or 'release/*'." + exit 1 + fi diff --git a/.github/workflows/allowed-pr-sources-main.yaml b/.github/workflows/allowed-pr-sources-main.yaml new file mode 100644 index 0000000..c9cc120 --- /dev/null +++ b/.github/workflows/allowed-pr-sources-main.yaml @@ -0,0 +1,28 @@ +name: Check if PR source branch is allowed for main branch + +on: + pull_request: + types: [ opened, reopened, synchronize, edited, ready_for_review ] + branches: + - main + +jobs: + enforce: + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: read + steps: + - name: Check PR source branch + env: + HEAD_REF: ${{ github.head_ref }} + run: | + echo "Head branch: $HEAD_REF" + if [[ "$HEAD_REF" == "development" || "$HEAD_REF" =~ ^release/ || "$HEAD_REF" =~ ^hotfix/ ]]; then + echo "✔ Allowed source branch." + exit 0 + else + echo "❌ Disallowed source branch: $HEAD_REF" + echo "Only 'development', 'release/*', or 'hotfix/*' may open PRs into 'main'." + exit 1 + fi diff --git a/.github/workflows/gh-pages-deployment.yaml b/.github/workflows/gh-pages-deployment.yaml new file mode 100644 index 0000000..e55fc5f --- /dev/null +++ b/.github/workflows/gh-pages-deployment.yaml @@ -0,0 +1,36 @@ +name: GitHub Pages Deployment +on: + push: + branches: + - main + paths: + - 'docs/**' + - 'gh-pages-deployment.yaml' + - 'README.md' + workflow_dispatch: +permissions: + contents: write + pages: write +jobs: + deploy-gh-pages: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Configure Git user + run: | + git config user.name github-actions[bot] + git config user.email 41898282+github-actions[bot]@users.noreply.github.com + - uses: actions/setup-python@v5 + with: + python-version: ${{ env.MAIN_PYTHON_VERSION }} + - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV + - uses: actions/cache@v4 + with: + key: mkdocs-material-${{ env.cache_id }} + path: ~/.cache + restore-keys: | + mkdocs-material- + - run: pip install mkdocs-material + - run: mkdocs gh-deploy --force + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/scorecard.yml b/.github/workflows/openssf-scorecard.yml similarity index 100% rename from .github/workflows/scorecard.yml rename to .github/workflows/openssf-scorecard.yml diff --git a/.github/workflows/pr-quality-gate.yaml.yml b/.github/workflows/pr-quality-gate.yaml.yml new file mode 100644 index 0000000..0f30122 --- /dev/null +++ b/.github/workflows/pr-quality-gate.yaml.yml @@ -0,0 +1,70 @@ +name: "PR Quality Gate: rc & main" + +on: + pull_request: + branches: [ rc, main ] + types: [ opened, synchronize, reopened, ready_for_review ] + +permissions: + contents: read + pull-requests: write + +concurrency: + group: pr-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + precommit: + name: pre-commit + if: ${{ !github.event.pull_request.draft }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + # NOTE: point "uses:" to the DIRECTORY that contains action.yaml + # If your composite is at ./pre-commit/action.yaml, use "./pre-commit" + - name: Run pre-commit composite + uses: ./.github/workflows/pre-commit + with: + python-version: ${{ env.MAIN_PYTHON_VERSION }} + + pytest: + name: pytest + if: ${{ !github.event.pull_request.draft }} + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ${{ fromJSON(env.SUPPORTED_PYTHON_VERSIONS) }} + steps: + - uses: actions/checkout@v4 + - name: Run pytest composite + uses: ./.github/workflows/pytest + with: + python-version: ${{ matrix.python-version }} + + pytest-windows: + name: pytest (Windows, non-blocking) + if: ${{ !github.event.pull_request.draft }} + runs-on: windows-latest + continue-on-error: true + strategy: + matrix: + python-version: ${{ fromJSON(env.SUPPORTED_PYTHON_VERSIONS) }} + steps: + - uses: actions/checkout@v4 + - name: Run pytest composite + uses: ./.github/workflows/pytest + with: + python-version: ${{ matrix.python-version }} + + sonarqube: + name: SonarQube + if: ${{ !github.event.pull_request.draft }} + runs-on: ubuntu-latest + needs: [ pytest ] # starts only after pytest completes + steps: + - uses: actions/checkout@v4 + - name: Run SonarCloud composite + uses: ./.github/workflows/sonar + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} diff --git a/.github/workflows/pre-commit/action.yaml b/.github/workflows/pre-commit/action.yaml new file mode 100644 index 0000000..80fb107 --- /dev/null +++ b/.github/workflows/pre-commit/action.yaml @@ -0,0 +1,36 @@ +name: Pre-commit +description: Sets up Python and Poetry and runs pre-commit + +inputs: + python-version: + required: true + description: Python version used + +runs: + using: "composite" + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Setup Python + if: ${{ hashFiles('.pre-commit-config.yaml') != '' }} + uses: actions/setup-python@v3 + with: + python-version: ${{ inputs.python-version }} + + - name: Install Poetry + if: ${{ hashFiles('.pre-commit-config.yaml') != '' }} + run: pipx install --python python${{ inputs.python-version }} poetry + shell: bash + + - name: Install pre-commit + if: ${{ hashFiles('.pre-commit-config.yaml') != '' }} + run: | + pip install pre-commit + pre-commit install + shell: bash + + - name: Run pre-commit + if: ${{ hashFiles('.pre-commit-config.yaml') != '' }} + run: pre-commit run -a + shell: bash diff --git a/.github/workflows/pytest/action.yaml b/.github/workflows/pytest/action.yaml new file mode 100644 index 0000000..8d274df --- /dev/null +++ b/.github/workflows/pytest/action.yaml @@ -0,0 +1,28 @@ +name: 'PyTest' +description: 'Run pytest with Poetry' +inputs: + python-version: + required: true + description: 'Python version used.' + +runs: + using: 'composite' + steps: + - name: Checkout repository + uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v3 + with: + python-version: ${{ inputs.python-version }} + - name: Install Poetry + run: pipx install poetry + - name: Install dependencies + run: poetry install --with dev + - name: Run tests + run: poetry run pytest -m "not unstable and not online" + - name: Upload coverage.xml as artifact + uses: actions/upload-artifact@v3 + if: ${{ hashFiles('coverage.xml') != '' }} + with: + name: coverage.xml + path: ./coverage.xml diff --git a/.github/workflows/sonar/action.yaml b/.github/workflows/sonar/action.yaml new file mode 100644 index 0000000..4b8d3fe --- /dev/null +++ b/.github/workflows/sonar/action.yaml @@ -0,0 +1,28 @@ +name: SonarCloud Scan +description: Runs SonarCloud scan with coverage artifact + +inputs: + GITHUB_TOKEN: + required: true + description: GitHub token + SONAR_TOKEN: + required: true + description: SonarCloud token + +runs: + using: "composite" + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - uses: actions/download-artifact@v5 + with: + name: coverage.xml + path: ./ + + - name: SonarCloud Scan + uses: SonarSource/sonarcloud-github-action@master + env: + GITHUB_TOKEN: ${{ inputs.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ inputs.SONAR_TOKEN }} diff --git a/.gitignore b/.gitignore index a4024fb..b3fbd8e 100644 --- a/.gitignore +++ b/.gitignore @@ -666,3 +666,4 @@ src/weather_provider_sources/ # All of IDEA really .idea/ !/htmlcov/ +/.act_secrets.ini diff --git a/poetry.lock b/poetry.lock index c280b9e..eae691b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. [[package]] name = "annotated-types" @@ -12,161 +12,6 @@ files = [ {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] -[[package]] -name = "anyio" -version = "4.9.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c" }, - { file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028" }, -] - -[package.dependencies] -idna = ">=2.8" -sniffio = ">=1.1" - -[package.extras] -doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] -test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] -trio = ["trio (>=0.26.1)"] - -[[package]] -name = "appnope" -version = "0.1.4" -description = "Disable App Nap on macOS >= 10.9" -optional = false -python-versions = ">=3.6" -groups = ["dev"] -markers = "platform_system == \"Darwin\"" -files = [ - {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, - {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, -] - -[[package]] -name = "argon2-cffi" -version = "25.1.0" -description = "Argon2 for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741" }, - { file = "argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1" }, -] - -[package.dependencies] -argon2-cffi-bindings = "*" - -[[package]] -name = "argon2-cffi-bindings" -version = "21.2.0" -description = "Low-level CFFI bindings for Argon2" -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"}, - {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, -] - -[package.dependencies] -cffi = ">=1.0.1" - -[package.extras] -dev = ["cogapp", "pre-commit", "pytest", "wheel"] -tests = ["pytest"] - -[[package]] -name = "arrow" -version = "1.3.0" -description = "Better dates & times for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, - {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, -] - -[package.dependencies] -python-dateutil = ">=2.7.0" -types-python-dateutil = ">=2.8.10" - -[package.extras] -doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] -test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"] - -[[package]] -name = "asttokens" -version = "3.0.0" -description = "Annotate AST trees with source code positions" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2" }, - { file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7" }, -] - -[package.extras] -astroid = ["astroid (>=2,<4)"] -test = ["astroid (>=2,<4)", "pytest", "pytest-cov", "pytest-xdist"] - -[[package]] -name = "async-lru" -version = "2.0.5" -description = "Simple LRU cache for asyncio" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943" }, - { file = "async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb" }, -] - -[[package]] -name = "attrs" -version = "25.3.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3" }, - { file = "attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b" }, -] - -[package.extras] -benchmark = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -cov = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier"] -tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\""] - [[package]] name = "babel" version = "2.17.0" @@ -175,8 +20,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2" }, - { file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d" }, + {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, + {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, ] [package.extras] @@ -190,152 +35,30 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f" }, - { file = "backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf" }, - { file = "backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa" }, - { file = "backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b" }, - { file = "backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9" }, - { file = "backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60" }, - { file = "backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59" }, + {file = "backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f"}, + {file = "backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf"}, + {file = "backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa"}, + {file = "backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b"}, + {file = "backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9"}, + {file = "backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60"}, + {file = "backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59"}, ] [package.extras] extras = ["regex"] -[[package]] -name = "beautifulsoup4" -version = "4.13.4" -description = "Screen-scraping library" -optional = false -python-versions = ">=3.7.0" -groups = ["dev"] -files = [ - { file = "beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b" }, - { file = "beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195" }, -] - -[package.dependencies] -soupsieve = ">1.2" -typing-extensions = ">=4.0.0" - -[package.extras] -cchardet = ["cchardet"] -chardet = ["chardet"] -charset-normalizer = ["charset-normalizer"] -html5lib = ["html5lib"] -lxml = ["lxml"] - -[[package]] -name = "bleach" -version = "6.2.0" -description = "An easy safelist-based HTML-sanitizing tool." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e" }, - { file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f" }, -] - -[package.dependencies] -tinycss2 = { version = ">=1.1.0,<1.5", optional = true, markers = "extra == \"css\"" } -webencodings = "*" - -[package.extras] -css = ["tinycss2 (>=1.1.0,<1.5)"] - [[package]] name = "certifi" -version = "2025.7.14" +version = "2025.8.3" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.7" -groups = ["main", "dev"] -files = [ - { file = "certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2" }, - { file = "certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995" }, -] - -[[package]] -name = "cffi" -version = "1.17.1" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, - {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, - {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, - {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, - {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, - {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, - {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, - {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, - {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, - {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, - {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, - {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, - {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, - {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, - {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, - {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, + {file = "certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5"}, + {file = "certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407"}, ] -[package.dependencies] -pycparser = "*" - [[package]] name = "cfgv" version = "3.4.0" @@ -348,155 +71,93 @@ files = [ {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, ] -[[package]] -name = "cftime" -version = "1.6.4.post1" -description = "Time-handling functionality from netcdf4-python" -optional = false -python-versions = ">=3.8" -groups = ["main"] -files = [ - {file = "cftime-1.6.4.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0baa9bc4850929da9f92c25329aa1f651e2d6f23e237504f337ee9e12a769f5d"}, - {file = "cftime-1.6.4.post1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6bb6b087f4b2513c37670bccd457e2a666ca489c5f2aad6e2c0e94604dc1b5b9"}, - {file = "cftime-1.6.4.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d9bdeb9174962c9ca00015190bfd693de6b0ec3ec0b3dbc35c693a4f48efdcc"}, - {file = "cftime-1.6.4.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e735cfd544878eb94d0108ff5a093bd1a332dba90f979a31a357756d609a90d5"}, - {file = "cftime-1.6.4.post1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1dcd1b140bf50da6775c56bd7ca179e84bd258b2f159b53eefd5c514b341f2bf"}, - {file = "cftime-1.6.4.post1-cp310-cp310-win_amd64.whl", hash = "sha256:e60b8f24b20753f7548f410f7510e28b941f336f84bd34e3cfd7874af6e70281"}, - {file = "cftime-1.6.4.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1bf7be0a0afc87628cb8c8483412aac6e48e83877004faa0936afb5bf8a877ba"}, - {file = "cftime-1.6.4.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f64ca83acc4e3029f737bf3a32530ffa1fbf53124f5bee70b47548bc58671a7"}, - {file = "cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ebdfd81726b0cfb8b524309224fa952898dfa177c13d5f6af5b18cefbf497d"}, - {file = "cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ea0965a4c87739aebd84fe8eed966e5809d10065eeffd35c99c274b6f8da15"}, - {file = "cftime-1.6.4.post1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:800a18aea4e8cb2b206450397cb8a53b154798738af3cdd3c922ce1ca198b0e6"}, - {file = "cftime-1.6.4.post1-cp311-cp311-win_amd64.whl", hash = "sha256:5dcfc872f455db1f12eabe3c3ba98e93757cd60ed3526a53246e966ccde46c8a"}, - {file = "cftime-1.6.4.post1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a590f73506f4704ba5e154ef55bfbaed5e1b4ac170f3caeb8c58e4f2c619ee4e"}, - {file = "cftime-1.6.4.post1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:933cb10e1af4e362e77f513e3eb92b34a688729ddbf938bbdfa5ac20a7f44ba0"}, - {file = "cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf17a1b36f62e9e73c4c9363dd811e1bbf1170f5ac26d343fb26012ccf482908"}, - {file = "cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e18021f421aa26527bad8688c1acf0c85fa72730beb6efce969c316743294f2"}, - {file = "cftime-1.6.4.post1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5835b9d622f9304d1c23a35603a0f068739f428d902860f25e6e7e5a1b7cd8ea"}, - {file = "cftime-1.6.4.post1-cp312-cp312-win_amd64.whl", hash = "sha256:7f50bf0d1b664924aaee636eb2933746b942417d1f8b82ab6c1f6e8ba0da6885"}, - {file = "cftime-1.6.4.post1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5c89766ebf088c097832ea618c24ed5075331f0b7bf8e9c2d4144aefbf2f1850"}, - {file = "cftime-1.6.4.post1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7f27113f7ccd1ca32881fdcb9a4bec806a5f54ae621fc1c374f1171f3ed98ef2"}, - {file = "cftime-1.6.4.post1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da367b23eea7cf4df071c88e014a1600d6c5bbf22e3393a4af409903fa397e28"}, - {file = "cftime-1.6.4.post1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6579c5c83cdf09d73aa94c7bc34925edd93c5f2c7dd28e074f568f7e376271a0"}, - {file = "cftime-1.6.4.post1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6b731c7133d17b479ca0c3c46a7a04f96197f0a4d753f4c2284c3ff0447279b4"}, - {file = "cftime-1.6.4.post1-cp313-cp313-win_amd64.whl", hash = "sha256:d2a8c223faea7f1248ab469cc0d7795dd46f2a423789038f439fee7190bae259"}, - {file = "cftime-1.6.4.post1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9df3e2d49e548c62d1939e923800b08d2ab732d3ac8d75b857edd7982c878552"}, - {file = "cftime-1.6.4.post1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2892b7e7654142d825655f60eb66c3e1af745901890316907071d44cf9a18d8a"}, - {file = "cftime-1.6.4.post1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4ab54e6c04e68395d454cd4001188fc4ade2fe48035589ed65af80c4527ef08"}, - {file = "cftime-1.6.4.post1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:568b69fc52f406e361db62a4d7a219c6fb0ced138937144c3b3a511648dd6c50"}, - {file = "cftime-1.6.4.post1-cp38-cp38-win_amd64.whl", hash = "sha256:640911d2629f4a8f81f6bc0163a983b6b94f86d1007449b8cbfd926136cda253"}, - {file = "cftime-1.6.4.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:44e9f8052600803b55f8cb6bcac2be49405c21efa900ec77a9fb7f692db2f7a6"}, - {file = "cftime-1.6.4.post1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a90b6ef4a3fc65322c212a2c99cec75d1886f1ebaf0ff6189f7b327566762222"}, - {file = "cftime-1.6.4.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:652700130dbcca3ae36dbb5b61ff360e62aa09fabcabc42ec521091a14389901"}, - {file = "cftime-1.6.4.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a7fb6cc541a027dab37fdeb695f8a2b21cd7d200be606f81b5abc38f2391e2"}, - {file = "cftime-1.6.4.post1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:fc2c0abe2dbd147e1b1e6d0f3de19a5ea8b04956acc204830fd8418066090989"}, - {file = "cftime-1.6.4.post1-cp39-cp39-win_amd64.whl", hash = "sha256:0ee2f5af8643aa1b47b7e388763a1a6e0dc05558cd2902cffb9cbcf954397648"}, - {file = "cftime-1.6.4.post1.tar.gz", hash = "sha256:50ac76cc9f10ab7bd46e44a71c51a6927051b499b4407df4f29ab13d741b942f"}, -] - -[package.dependencies] -numpy = {version = ">=1.26.0b1", markers = "python_version >= \"3.12.0.rc1\""} - [[package]] name = "charset-normalizer" -version = "3.4.2" +version = "3.4.3" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - { file = "charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-win32.whl", hash = "sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cad5f45b3146325bb38d6855642f6fd609c3f7cad4dbaf75549bf3b904d3184" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2680962a4848b3c4f155dc2ee64505a9c57186d0d56b43123b17ca3de18f0fa" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:36b31da18b8890a76ec181c3cf44326bf2c48e36d393ca1b72b3f484113ea344" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4074c5a429281bf056ddd4c5d3b740ebca4d43ffffe2ef4bf4d2d05114299da" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9e36a97bee9b86ef9a1cf7bb96747eb7a15c2f22bdb5b516434b00f2a599f02" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:1b1bde144d98e446b056ef98e59c256e9294f6b74d7af6846bf5ffdafd687a7d" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:915f3849a011c1f593ab99092f3cecfcb4d65d8feb4a64cf1bf2d22074dc0ec4" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:fb707f3e15060adf5b7ada797624a6c6e0138e2a26baa089df64c68ee98e040f" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:25a23ea5c7edc53e0f29bae2c44fcb5a1aa10591aae107f2a2b2583a9c5cbc64" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:770cab594ecf99ae64c236bc9ee3439c3f46be49796e265ce0cc8bc17b10294f" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-win32.whl", hash = "sha256:6a0289e4589e8bdfef02a80478f1dfcb14f0ab696b5a00e1f4b8a14a307a3c58" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6fc1f5b51fa4cecaa18f2bd7a003f3dd039dd615cd69a2afd6d3b19aed6775f2" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76af085e67e56c8816c3ccf256ebd136def2ed9654525348cfa744b6802b69eb" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45ba65510e2647721e35323d6ef54c7974959f6081b58d4ef5d87c60c84919a" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:046595208aae0120559a67693ecc65dd75d46f7bf687f159127046628178dc45" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75d10d37a47afee94919c4fab4c22b9bc2a8bf7d4f46f87363bcf0573f3ff4f5" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6333b3aa5a12c26b2a4d4e7335a28f1475e0e5e17d69d55141ee3cab736f66d1" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8323a9b031aa0393768b87f04b4164a40037fb2a3c11ac06a03ffecd3618027" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:24498ba8ed6c2e0b56d4acbf83f2d989720a93b41d712ebd4f4979660db4417b" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:844da2b5728b5ce0e32d863af26f32b5ce61bc4273a9c720a9f3aa9df73b1455" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:65c981bdbd3f57670af8b59777cbfae75364b483fa8a9f420f08094531d54a01" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3c21d4fca343c805a52c0c78edc01e3477f6dd1ad7c47653241cf2a206d4fc58" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dc7039885fa1baf9be153a0626e337aa7ec8bf96b0128605fb0d77788ddc1681" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-win32.whl", hash = "sha256:8272b73e1c5603666618805fe821edba66892e2870058c94c53147602eab29c7" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:70f7172939fdf8790425ba31915bfbe8335030f05b9913d7ae00a87d4395620a" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:005fa3432484527f9732ebd315da8da8001593e2cf46a3d817669f062c3d9ed4" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e92fca20c46e9f5e1bb485887d074918b13543b1c2a1185e69bb8d17ab6236a7" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50bf98d5e563b83cc29471fa114366e6806bc06bc7a25fd59641e41445327836" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:721c76e84fe669be19c5791da68232ca2e05ba5185575086e384352e2c309597" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82d8fd25b7f4675d0c47cf95b594d4e7b158aca33b76aa63d07186e13c0e0ab7" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3daeac64d5b371dea99714f08ffc2c208522ec6b06fbc7866a450dd446f5c0f" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dccab8d5fa1ef9bfba0590ecf4d46df048d18ffe3eec01eeb73a42e0d9e7a8ba" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:aaf27faa992bfee0264dc1f03f4c75e9fcdda66a519db6b957a3f826e285cf12" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:eb30abc20df9ab0814b5a2524f23d75dcf83cde762c161917a2b4b7b55b1e518" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:c72fbbe68c6f32f251bdc08b8611c7b3060612236e960ef848e0a517ddbe76c5" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:982bb1e8b4ffda883b3d0a521e23abcd6fd17418f6d2c4118d257a10199c0ce3" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-win32.whl", hash = "sha256:43e0933a0eff183ee85833f341ec567c0980dae57c464d8a508e1b2ceb336471" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:d11b54acf878eef558599658b0ffca78138c8c3655cf4f3a4a673c437e67732e" }, - { file = "charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0" }, - { file = "charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63" }, + {file = "charset_normalizer-3.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fb7f67a1bfa6e40b438170ebdc8158b78dc465a5a67b6dde178a46987b244a72"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc9370a2da1ac13f0153780040f465839e6cccb4a1e44810124b4e22483c93fe"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:07a0eae9e2787b586e129fdcbe1af6997f8d0e5abaa0bc98c0e20e124d67e601"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:74d77e25adda8581ffc1c720f1c81ca082921329452eba58b16233ab1842141c"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0e909868420b7049dafd3a31d45125b31143eec59235311fc4c57ea26a4acd2"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c6f162aabe9a91a309510d74eeb6507fab5fff92337a15acbe77753d88d9dcf0"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4ca4c094de7771a98d7fbd67d9e5dbf1eb73efa4f744a730437d8a3a5cf994f0"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:02425242e96bcf29a49711b0ca9f37e451da7c70562bc10e8ed992a5a7a25cc0"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:78deba4d8f9590fe4dae384aeff04082510a709957e968753ff3c48399f6f92a"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-win32.whl", hash = "sha256:d79c198e27580c8e958906f803e63cddb77653731be08851c7df0b1a14a8fc0f"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:c6e490913a46fa054e03699c70019ab869e990270597018cef1d8562132c2669"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-win32.whl", hash = "sha256:6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0f2be7e0cf7754b9a30eb01f4295cc3d4358a479843b31f328afd210e2c7598c"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c60e092517a73c632ec38e290eba714e9627abe9d301c8c8a12ec32c314a2a4b"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:252098c8c7a873e17dd696ed98bbe91dbacd571da4b87df3736768efa7a792e4"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3653fad4fe3ed447a596ae8638b437f827234f01a8cd801842e43f3d0a6b281b"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8999f965f922ae054125286faf9f11bc6932184b93011d138925a1773830bbe9"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d95bfb53c211b57198bb91c46dd5a2d8018b3af446583aab40074bf7988401cb"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:5b413b0b1bfd94dbf4023ad6945889f374cd24e3f62de58d6bb102c4d9ae534a"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:b5e3b2d152e74e100a9e9573837aba24aab611d39428ded46f4e4022ea7d1942"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a2d08ac246bb48479170408d6c19f6385fa743e7157d716e144cad849b2dd94b"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-win32.whl", hash = "sha256:ec557499516fc90fd374bf2e32349a2887a876fbf162c160e3c01b6849eaf557"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:5d8d01eac18c423815ed4f4a2ec3b439d654e55ee4ad610e153cf02faf67ea40"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:70bfc5f2c318afece2f5838ea5e4c3febada0be750fcf4775641052bbba14d05"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23b6b24d74478dc833444cbd927c338349d6ae852ba53a0d02a2de1fce45b96e"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:34a7f768e3f985abdb42841e20e17b330ad3aaf4bb7e7aeeb73db2e70f077b99"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fb731e5deb0c7ef82d698b0f4c5bb724633ee2a489401594c5c88b02e6cb15f7"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:257f26fed7d7ff59921b78244f3cd93ed2af1800ff048c33f624c87475819dd7"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1ef99f0456d3d46a50945c98de1774da86f8e992ab5c77865ea8b8195341fc19"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:2c322db9c8c89009a990ef07c3bcc9f011a3269bc06782f916cd3d9eed7c9312"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:511729f456829ef86ac41ca78c63a5cb55240ed23b4b737faca0eb1abb1c41bc"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:88ab34806dea0671532d3f82d82b85e8fc23d7b2dd12fa837978dad9bb392a34"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-win32.whl", hash = "sha256:16a8770207946ac75703458e2c743631c79c59c5890c80011d536248f8eaa432"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:d22dbedd33326a4a5190dd4fe9e9e693ef12160c77382d9e87919bce54f3d4ca"}, + {file = "charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a"}, + {file = "charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14"}, ] [[package]] @@ -505,27 +166,15 @@ version = "8.2.1" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.10" -groups = ["main", "dev"] +groups = ["dev"] files = [ - { file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b" }, - { file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202" }, + {file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b"}, + {file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202"}, ] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} -[[package]] -name = "cloudpickle" -version = "3.1.1" -description = "Pickler class to extend the standard pickle.Pickler functionality" -optional = false -python-versions = ">=3.8" -groups = ["main"] -files = [ - { file = "cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e" }, - { file = "cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64" }, -] - [[package]] name = "colorama" version = "0.4.6" @@ -537,330 +186,127 @@ files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -markers = { main = "platform_system == \"Windows\" or sys_platform == \"win32\"" } +markers = {main = "sys_platform == \"win32\""} [[package]] name = "colorlog" -version = "6.9.0" +version = "6.10.1" description = "Add colours to the output of Python's logging module." optional = false python-versions = ">=3.6" groups = ["main"] files = [ - { file = "colorlog-6.9.0-py3-none-any.whl", hash = "sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff" }, - { file = "colorlog-6.9.0.tar.gz", hash = "sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2" }, + {file = "colorlog-6.10.1-py3-none-any.whl", hash = "sha256:2d7e8348291948af66122cff006c9f8da6255d224e7cf8e37d8de2df3bad8c9c"}, + {file = "colorlog-6.10.1.tar.gz", hash = "sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321"}, ] [package.dependencies] -colorama = { version = "*", markers = "sys_platform == \"win32\"" } +colorama = {version = "*", markers = "sys_platform == \"win32\""} [package.extras] development = ["black", "flake8", "mypy", "pytest", "types-colorama"] -[[package]] -name = "comm" -version = "0.2.2" -description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, - {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, -] - -[package.dependencies] -traitlets = ">=4" - -[package.extras] -test = ["pytest"] - [[package]] name = "coverage" -version = "7.9.2" +version = "7.10.4" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "coverage-7.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:66283a192a14a3854b2e7f3418d7db05cdf411012ab7ff5db98ff3b181e1f912" }, - { file = "coverage-7.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4e01d138540ef34fcf35c1aa24d06c3de2a4cffa349e29a10056544f35cca15f" }, - { file = "coverage-7.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f22627c1fe2745ee98d3ab87679ca73a97e75ca75eb5faee48660d060875465f" }, - { file = "coverage-7.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b1c2d8363247b46bd51f393f86c94096e64a1cf6906803fa8d5a9d03784bdbf" }, - { file = "coverage-7.9.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c10c882b114faf82dbd33e876d0cbd5e1d1ebc0d2a74ceef642c6152f3f4d547" }, - { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:de3c0378bdf7066c3988d66cd5232d161e933b87103b014ab1b0b4676098fa45" }, - { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1e2f097eae0e5991e7623958a24ced3282676c93c013dde41399ff63e230fcf2" }, - { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:28dc1f67e83a14e7079b6cea4d314bc8b24d1aed42d3582ff89c0295f09b181e" }, - { file = "coverage-7.9.2-cp310-cp310-win32.whl", hash = "sha256:bf7d773da6af9e10dbddacbf4e5cab13d06d0ed93561d44dae0188a42c65be7e" }, - { file = "coverage-7.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:0c0378ba787681ab1897f7c89b415bd56b0b2d9a47e5a3d8dc0ea55aac118d6c" }, - { file = "coverage-7.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a7a56a2964a9687b6aba5b5ced6971af308ef6f79a91043c05dd4ee3ebc3e9ba" }, - { file = "coverage-7.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:123d589f32c11d9be7fe2e66d823a236fe759b0096f5db3fb1b75b2fa414a4fa" }, - { file = "coverage-7.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:333b2e0ca576a7dbd66e85ab402e35c03b0b22f525eed82681c4b866e2e2653a" }, - { file = "coverage-7.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:326802760da234baf9f2f85a39e4a4b5861b94f6c8d95251f699e4f73b1835dc" }, - { file = "coverage-7.9.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19e7be4cfec248df38ce40968c95d3952fbffd57b400d4b9bb580f28179556d2" }, - { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0b4a4cb73b9f2b891c1788711408ef9707666501ba23684387277ededab1097c" }, - { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:2c8937fa16c8c9fbbd9f118588756e7bcdc7e16a470766a9aef912dd3f117dbd" }, - { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:42da2280c4d30c57a9b578bafd1d4494fa6c056d4c419d9689e66d775539be74" }, - { file = "coverage-7.9.2-cp311-cp311-win32.whl", hash = "sha256:14fa8d3da147f5fdf9d298cacc18791818f3f1a9f542c8958b80c228320e90c6" }, - { file = "coverage-7.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:549cab4892fc82004f9739963163fd3aac7a7b0df430669b75b86d293d2df2a7" }, - { file = "coverage-7.9.2-cp311-cp311-win_arm64.whl", hash = "sha256:c2667a2b913e307f06aa4e5677f01a9746cd08e4b35e14ebcde6420a9ebb4c62" }, - { file = "coverage-7.9.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ae9eb07f1cfacd9cfe8eaee6f4ff4b8a289a668c39c165cd0c8548484920ffc0" }, - { file = "coverage-7.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9ce85551f9a1119f02adc46d3014b5ee3f765deac166acf20dbb851ceb79b6f3" }, - { file = "coverage-7.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8f6389ac977c5fb322e0e38885fbbf901743f79d47f50db706e7644dcdcb6e1" }, - { file = "coverage-7.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff0d9eae8cdfcd58fe7893b88993723583a6ce4dfbfd9f29e001922544f95615" }, - { file = "coverage-7.9.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fae939811e14e53ed8a9818dad51d434a41ee09df9305663735f2e2d2d7d959b" }, - { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:31991156251ec202c798501e0a42bbdf2169dcb0f137b1f5c0f4267f3fc68ef9" }, - { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d0d67963f9cbfc7c7f96d4ac74ed60ecbebd2ea6eeb51887af0f8dce205e545f" }, - { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:49b752a2858b10580969ec6af6f090a9a440a64a301ac1528d7ca5f7ed497f4d" }, - { file = "coverage-7.9.2-cp312-cp312-win32.whl", hash = "sha256:88d7598b8ee130f32f8a43198ee02edd16d7f77692fa056cb779616bbea1b355" }, - { file = "coverage-7.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:9dfb070f830739ee49d7c83e4941cc767e503e4394fdecb3b54bfdac1d7662c0" }, - { file = "coverage-7.9.2-cp312-cp312-win_arm64.whl", hash = "sha256:4e2c058aef613e79df00e86b6d42a641c877211384ce5bd07585ed7ba71ab31b" }, - { file = "coverage-7.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:985abe7f242e0d7bba228ab01070fde1d6c8fa12f142e43debe9ed1dde686038" }, - { file = "coverage-7.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82c3939264a76d44fde7f213924021ed31f55ef28111a19649fec90c0f109e6d" }, - { file = "coverage-7.9.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae5d563e970dbe04382f736ec214ef48103d1b875967c89d83c6e3f21706d5b3" }, - { file = "coverage-7.9.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bdd612e59baed2a93c8843c9a7cb902260f181370f1d772f4842987535071d14" }, - { file = "coverage-7.9.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:256ea87cb2a1ed992bcdfc349d8042dcea1b80436f4ddf6e246d6bee4b5d73b6" }, - { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f44ae036b63c8ea432f610534a2668b0c3aee810e7037ab9d8ff6883de480f5b" }, - { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:82d76ad87c932935417a19b10cfe7abb15fd3f923cfe47dbdaa74ef4e503752d" }, - { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:619317bb86de4193debc712b9e59d5cffd91dc1d178627ab2a77b9870deb2868" }, - { file = "coverage-7.9.2-cp313-cp313-win32.whl", hash = "sha256:0a07757de9feb1dfafd16ab651e0f628fd7ce551604d1bf23e47e1ddca93f08a" }, - { file = "coverage-7.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:115db3d1f4d3f35f5bb021e270edd85011934ff97c8797216b62f461dd69374b" }, - { file = "coverage-7.9.2-cp313-cp313-win_arm64.whl", hash = "sha256:48f82f889c80af8b2a7bb6e158d95a3fbec6a3453a1004d04e4f3b5945a02694" }, - { file = "coverage-7.9.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:55a28954545f9d2f96870b40f6c3386a59ba8ed50caf2d949676dac3ecab99f5" }, - { file = "coverage-7.9.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cdef6504637731a63c133bb2e6f0f0214e2748495ec15fe42d1e219d1b133f0b" }, - { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcd5ebe66c7a97273d5d2ddd4ad0ed2e706b39630ed4b53e713d360626c3dbb3" }, - { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9303aed20872d7a3c9cb39c5d2b9bdbe44e3a9a1aecb52920f7e7495410dfab8" }, - { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc18ea9e417a04d1920a9a76fe9ebd2f43ca505b81994598482f938d5c315f46" }, - { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6406cff19880aaaadc932152242523e892faff224da29e241ce2fca329866584" }, - { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2d0d4f6ecdf37fcc19c88fec3e2277d5dee740fb51ffdd69b9579b8c31e4232e" }, - { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c33624f50cf8de418ab2b4d6ca9eda96dc45b2c4231336bac91454520e8d1fac" }, - { file = "coverage-7.9.2-cp313-cp313t-win32.whl", hash = "sha256:1df6b76e737c6a92210eebcb2390af59a141f9e9430210595251fbaf02d46926" }, - { file = "coverage-7.9.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f5fd54310b92741ebe00d9c0d1d7b2b27463952c022da6d47c175d246a98d1bd" }, - { file = "coverage-7.9.2-cp313-cp313t-win_arm64.whl", hash = "sha256:c48c2375287108c887ee87d13b4070a381c6537d30e8487b24ec721bf2a781cb" }, - { file = "coverage-7.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ddc39510ac922a5c4c27849b739f875d3e1d9e590d1e7b64c98dadf037a16cce" }, - { file = "coverage-7.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a535c0c7364acd55229749c2b3e5eebf141865de3a8f697076a3291985f02d30" }, - { file = "coverage-7.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df0f9ef28e0f20c767ccdccfc5ae5f83a6f4a2fbdfbcbcc8487a8a78771168c8" }, - { file = "coverage-7.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f3da12e0ccbcb348969221d29441ac714bbddc4d74e13923d3d5a7a0bebef7a" }, - { file = "coverage-7.9.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a17eaf46f56ae0f870f14a3cbc2e4632fe3771eab7f687eda1ee59b73d09fe4" }, - { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:669135a9d25df55d1ed56a11bf555f37c922cf08d80799d4f65d77d7d6123fcf" }, - { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:9d3a700304d01a627df9db4322dc082a0ce1e8fc74ac238e2af39ced4c083193" }, - { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:71ae8b53855644a0b1579d4041304ddc9995c7b21c8a1f16753c4d8903b4dfed" }, - { file = "coverage-7.9.2-cp39-cp39-win32.whl", hash = "sha256:dd7a57b33b5cf27acb491e890720af45db05589a80c1ffc798462a765be6d4d7" }, - { file = "coverage-7.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:f65bb452e579d5540c8b37ec105dd54d8b9307b07bcaa186818c104ffda22441" }, - { file = "coverage-7.9.2-pp39.pp310.pp311-none-any.whl", hash = "sha256:8a1166db2fb62473285bcb092f586e081e92656c7dfa8e9f62b4d39d7e6b5050" }, - { file = "coverage-7.9.2-py3-none-any.whl", hash = "sha256:e425cd5b00f6fc0ed7cdbd766c70be8baab4b7839e4d4fe5fac48581dd968ea4" }, - { file = "coverage-7.9.2.tar.gz", hash = "sha256:997024fa51e3290264ffd7492ec97d0690293ccd2b45a6cd7d82d945a4a80c8b" }, + {file = "coverage-7.10.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d92d6edb0ccafd20c6fbf9891ca720b39c2a6a4b4a6f9cf323ca2c986f33e475"}, + {file = "coverage-7.10.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7202da14dc0236884fcc45665ffb2d79d4991a53fbdf152ab22f69f70923cc22"}, + {file = "coverage-7.10.4-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ada418633ae24ec8d0fcad5efe6fc7aa3c62497c6ed86589e57844ad04365674"}, + {file = "coverage-7.10.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b828e33eca6c3322adda3b5884456f98c435182a44917ded05005adfa1415500"}, + {file = "coverage-7.10.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:802793ba397afcfdbe9f91f89d65ae88b958d95edc8caf948e1f47d8b6b2b606"}, + {file = "coverage-7.10.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d0b23512338c54101d3bf7a1ab107d9d75abda1d5f69bc0887fd079253e4c27e"}, + {file = "coverage-7.10.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f36b7dcf72d06a8c5e2dd3aca02be2b1b5db5f86404627dff834396efce958f2"}, + {file = "coverage-7.10.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fce316c367a1dc2c411821365592eeb335ff1781956d87a0410eae248188ba51"}, + {file = "coverage-7.10.4-cp310-cp310-win32.whl", hash = "sha256:8c5dab29fc8070b3766b5fc85f8d89b19634584429a2da6d42da5edfadaf32ae"}, + {file = "coverage-7.10.4-cp310-cp310-win_amd64.whl", hash = "sha256:4b0d114616f0fccb529a1817457d5fb52a10e106f86c5fb3b0bd0d45d0d69b93"}, + {file = "coverage-7.10.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:05d5f98ec893d4a2abc8bc5f046f2f4367404e7e5d5d18b83de8fde1093ebc4f"}, + {file = "coverage-7.10.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9267efd28f8994b750d171e58e481e3bbd69e44baed540e4c789f8e368b24b88"}, + {file = "coverage-7.10.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:4456a039fdc1a89ea60823d0330f1ac6f97b0dbe9e2b6fb4873e889584b085fb"}, + {file = "coverage-7.10.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c2bfbd2a9f7e68a21c5bd191be94bfdb2691ac40d325bac9ef3ae45ff5c753d9"}, + {file = "coverage-7.10.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ab7765f10ae1df7e7fe37de9e64b5a269b812ee22e2da3f84f97b1c7732a0d8"}, + {file = "coverage-7.10.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a09b13695166236e171ec1627ff8434b9a9bae47528d0ba9d944c912d33b3d2"}, + {file = "coverage-7.10.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5c9e75dfdc0167d5675e9804f04a56b2cf47fb83a524654297000b578b8adcb7"}, + {file = "coverage-7.10.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c751261bfe6481caba15ec005a194cb60aad06f29235a74c24f18546d8377df0"}, + {file = "coverage-7.10.4-cp311-cp311-win32.whl", hash = "sha256:051c7c9e765f003c2ff6e8c81ccea28a70fb5b0142671e4e3ede7cebd45c80af"}, + {file = "coverage-7.10.4-cp311-cp311-win_amd64.whl", hash = "sha256:1a647b152f10be08fb771ae4a1421dbff66141e3d8ab27d543b5eb9ea5af8e52"}, + {file = "coverage-7.10.4-cp311-cp311-win_arm64.whl", hash = "sha256:b09b9e4e1de0d406ca9f19a371c2beefe3193b542f64a6dd40cfcf435b7d6aa0"}, + {file = "coverage-7.10.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a1f0264abcabd4853d4cb9b3d164adbf1565da7dab1da1669e93f3ea60162d79"}, + {file = "coverage-7.10.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:536cbe6b118a4df231b11af3e0f974a72a095182ff8ec5f4868c931e8043ef3e"}, + {file = "coverage-7.10.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:9a4c0d84134797b7bf3f080599d0cd501471f6c98b715405166860d79cfaa97e"}, + {file = "coverage-7.10.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7c155fc0f9cee8c9803ea0ad153ab6a3b956baa5d4cd993405dc0b45b2a0b9e0"}, + {file = "coverage-7.10.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a5f2ab6e451d4b07855d8bcf063adf11e199bff421a4ba57f5bb95b7444ca62"}, + {file = "coverage-7.10.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:685b67d99b945b0c221be0780c336b303a7753b3e0ec0d618c795aada25d5e7a"}, + {file = "coverage-7.10.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0c079027e50c2ae44da51c2e294596cbc9dbb58f7ca45b30651c7e411060fc23"}, + {file = "coverage-7.10.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3749aa72b93ce516f77cf5034d8e3c0dfd45c6e8a163a602ede2dc5f9a0bb927"}, + {file = "coverage-7.10.4-cp312-cp312-win32.whl", hash = "sha256:fecb97b3a52fa9bcd5a7375e72fae209088faf671d39fae67261f37772d5559a"}, + {file = "coverage-7.10.4-cp312-cp312-win_amd64.whl", hash = "sha256:26de58f355626628a21fe6a70e1e1fad95702dafebfb0685280962ae1449f17b"}, + {file = "coverage-7.10.4-cp312-cp312-win_arm64.whl", hash = "sha256:67e8885408f8325198862bc487038a4980c9277d753cb8812510927f2176437a"}, + {file = "coverage-7.10.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2b8e1d2015d5dfdbf964ecef12944c0c8c55b885bb5c0467ae8ef55e0e151233"}, + {file = "coverage-7.10.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:25735c299439018d66eb2dccf54f625aceb78645687a05f9f848f6e6c751e169"}, + {file = "coverage-7.10.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:715c06cb5eceac4d9b7cdf783ce04aa495f6aff657543fea75c30215b28ddb74"}, + {file = "coverage-7.10.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e017ac69fac9aacd7df6dc464c05833e834dc5b00c914d7af9a5249fcccf07ef"}, + {file = "coverage-7.10.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bad180cc40b3fccb0f0e8c702d781492654ac2580d468e3ffc8065e38c6c2408"}, + {file = "coverage-7.10.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:becbdcd14f685fada010a5f792bf0895675ecf7481304fe159f0cd3f289550bd"}, + {file = "coverage-7.10.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0b485ca21e16a76f68060911f97ebbe3e0d891da1dbbce6af7ca1ab3f98b9097"}, + {file = "coverage-7.10.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6c1d098ccfe8e1e0a1ed9a0249138899948afd2978cbf48eb1cc3fcd38469690"}, + {file = "coverage-7.10.4-cp313-cp313-win32.whl", hash = "sha256:8630f8af2ca84b5c367c3df907b1706621abe06d6929f5045fd628968d421e6e"}, + {file = "coverage-7.10.4-cp313-cp313-win_amd64.whl", hash = "sha256:f68835d31c421736be367d32f179e14ca932978293fe1b4c7a6a49b555dff5b2"}, + {file = "coverage-7.10.4-cp313-cp313-win_arm64.whl", hash = "sha256:6eaa61ff6724ca7ebc5326d1fae062d85e19b38dd922d50903702e6078370ae7"}, + {file = "coverage-7.10.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:702978108876bfb3d997604930b05fe769462cc3000150b0e607b7b444f2fd84"}, + {file = "coverage-7.10.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e8f978e8c5521d9c8f2086ac60d931d583fab0a16f382f6eb89453fe998e2484"}, + {file = "coverage-7.10.4-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:df0ac2ccfd19351411c45e43ab60932b74472e4648b0a9edf6a3b58846e246a9"}, + {file = "coverage-7.10.4-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:73a0d1aaaa3796179f336448e1576a3de6fc95ff4f07c2d7251d4caf5d18cf8d"}, + {file = "coverage-7.10.4-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:873da6d0ed6b3ffc0bc01f2c7e3ad7e2023751c0d8d86c26fe7322c314b031dc"}, + {file = "coverage-7.10.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c6446c75b0e7dda5daa876a1c87b480b2b52affb972fedd6c22edf1aaf2e00ec"}, + {file = "coverage-7.10.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:6e73933e296634e520390c44758d553d3b573b321608118363e52113790633b9"}, + {file = "coverage-7.10.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:52073d4b08d2cb571234c8a71eb32af3c6923149cf644a51d5957ac128cf6aa4"}, + {file = "coverage-7.10.4-cp313-cp313t-win32.whl", hash = "sha256:e24afb178f21f9ceb1aefbc73eb524769aa9b504a42b26857243f881af56880c"}, + {file = "coverage-7.10.4-cp313-cp313t-win_amd64.whl", hash = "sha256:be04507ff1ad206f4be3d156a674e3fb84bbb751ea1b23b142979ac9eebaa15f"}, + {file = "coverage-7.10.4-cp313-cp313t-win_arm64.whl", hash = "sha256:f3e3ff3f69d02b5dad67a6eac68cc9c71ae343b6328aae96e914f9f2f23a22e2"}, + {file = "coverage-7.10.4-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:a59fe0af7dd7211ba595cf7e2867458381f7e5d7b4cffe46274e0b2f5b9f4eb4"}, + {file = "coverage-7.10.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3a6c35c5b70f569ee38dc3350cd14fdd0347a8b389a18bb37538cc43e6f730e6"}, + {file = "coverage-7.10.4-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:acb7baf49f513554c4af6ef8e2bd6e8ac74e6ea0c7386df8b3eb586d82ccccc4"}, + {file = "coverage-7.10.4-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a89afecec1ed12ac13ed203238b560cbfad3522bae37d91c102e690b8b1dc46c"}, + {file = "coverage-7.10.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:480442727f464407d8ade6e677b7f21f3b96a9838ab541b9a28ce9e44123c14e"}, + {file = "coverage-7.10.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a89bf193707f4a17f1ed461504031074d87f035153239f16ce86dfb8f8c7ac76"}, + {file = "coverage-7.10.4-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:3ddd912c2fc440f0fb3229e764feec85669d5d80a988ff1b336a27d73f63c818"}, + {file = "coverage-7.10.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:8a538944ee3a42265e61c7298aeba9ea43f31c01271cf028f437a7b4075592cf"}, + {file = "coverage-7.10.4-cp314-cp314-win32.whl", hash = "sha256:fd2e6002be1c62476eb862b8514b1ba7e7684c50165f2a8d389e77da6c9a2ebd"}, + {file = "coverage-7.10.4-cp314-cp314-win_amd64.whl", hash = "sha256:ec113277f2b5cf188d95fb66a65c7431f2b9192ee7e6ec9b72b30bbfb53c244a"}, + {file = "coverage-7.10.4-cp314-cp314-win_arm64.whl", hash = "sha256:9744954bfd387796c6a091b50d55ca7cac3d08767795b5eec69ad0f7dbf12d38"}, + {file = "coverage-7.10.4-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:5af4829904dda6aabb54a23879f0f4412094ba9ef153aaa464e3c1b1c9bc98e6"}, + {file = "coverage-7.10.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7bba5ed85e034831fac761ae506c0644d24fd5594727e174b5a73aff343a7508"}, + {file = "coverage-7.10.4-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d57d555b0719834b55ad35045de6cc80fc2b28e05adb6b03c98479f9553b387f"}, + {file = "coverage-7.10.4-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ba62c51a72048bb1ea72db265e6bd8beaabf9809cd2125bbb5306c6ce105f214"}, + {file = "coverage-7.10.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0acf0c62a6095f07e9db4ec365cc58c0ef5babb757e54745a1aa2ea2a2564af1"}, + {file = "coverage-7.10.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e1033bf0f763f5cf49ffe6594314b11027dcc1073ac590b415ea93463466deec"}, + {file = "coverage-7.10.4-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:92c29eff894832b6a40da1789b1f252305af921750b03ee4535919db9179453d"}, + {file = "coverage-7.10.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:822c4c830989c2093527e92acd97be4638a44eb042b1bdc0e7a278d84a070bd3"}, + {file = "coverage-7.10.4-cp314-cp314t-win32.whl", hash = "sha256:e694d855dac2e7cf194ba33653e4ba7aad7267a802a7b3fc4347d0517d5d65cd"}, + {file = "coverage-7.10.4-cp314-cp314t-win_amd64.whl", hash = "sha256:efcc54b38ef7d5bfa98050f220b415bc5bb3d432bd6350a861cf6da0ede2cdcd"}, + {file = "coverage-7.10.4-cp314-cp314t-win_arm64.whl", hash = "sha256:6f3a3496c0fa26bfac4ebc458747b778cff201c8ae94fa05e1391bab0dbc473c"}, + {file = "coverage-7.10.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:48fd4d52600c2a9d5622e52dfae674a7845c5e1dceaf68b88c99feb511fbcfd6"}, + {file = "coverage-7.10.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:56217b470d09d69e6b7dcae38200f95e389a77db801cb129101697a4553b18b6"}, + {file = "coverage-7.10.4-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:44ac3f21a6e28c5ff7f7a47bca5f87885f6a1e623e637899125ba47acd87334d"}, + {file = "coverage-7.10.4-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3387739d72c84d17b4d2f7348749cac2e6700e7152026912b60998ee9a40066b"}, + {file = "coverage-7.10.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3f111ff20d9a6348e0125be892608e33408dd268f73b020940dfa8511ad05503"}, + {file = "coverage-7.10.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:01a852f0a9859734b018a3f483cc962d0b381d48d350b1a0c47d618c73a0c398"}, + {file = "coverage-7.10.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:225111dd06759ba4e37cee4c0b4f3df2b15c879e9e3c37bf986389300b9917c3"}, + {file = "coverage-7.10.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2178d4183bd1ba608f0bb12e71e55838ba1b7dbb730264f8b08de9f8ef0c27d0"}, + {file = "coverage-7.10.4-cp39-cp39-win32.whl", hash = "sha256:93d175fe81913aee7a6ea430abbdf2a79f1d9fd451610e12e334e4fe3264f563"}, + {file = "coverage-7.10.4-cp39-cp39-win_amd64.whl", hash = "sha256:2221a823404bb941c7721cf0ef55ac6ee5c25d905beb60c0bba5e5e85415d353"}, + {file = "coverage-7.10.4-py3-none-any.whl", hash = "sha256:065d75447228d05121e5c938ca8f0e91eed60a1eb2d1258d42d5084fecfc3302"}, + {file = "coverage-7.10.4.tar.gz", hash = "sha256:25f5130af6c8e7297fd14634955ba9e1697f47143f289e2a23284177c0061d27"}, ] [package.extras] toml = ["tomli ; python_full_version <= \"3.11.0a6\""] -[[package]] -name = "crc32c" -version = "2.7.1" -description = "A python package implementing the crc32c algorithm in hardware and software" -optional = false -python-versions = ">=3.7" -groups = ["main"] -files = [ - { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1fd1f9c6b50d7357736676278a1b8c8986737b8a1c76d7eab4baa71d0b6af67f" }, - { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:805c2be1bc0e251c48439a62b0422385899c15289483692bc70e78473c1039f1" }, - { file = "crc32c-2.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f4333e62b7844dfde112dbb8489fd2970358eddc3310db21e943a9f6994df749" }, - { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f0fadc741e79dc705e2d9ee967473e8a061d26b04310ed739f1ee292f33674f" }, - { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91ced31055d26d59385d708bbd36689e1a1d604d4b0ceb26767eb5a83156f85d" }, - { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36ffa999b72e3c17f6a066ae9e970b40f8c65f38716e436c39a33b809bc6ed9f" }, - { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e80114dd7f462297e54d5da1b9ff472e5249c5a2b406aa51c371bb0edcbf76bd" }, - { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:676f5b46da268b5190f9fb91b3f037a00d114b411313664438525db876adc71f" }, - { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8d0e660c9ed269e90692993a4457a932fc22c9cc96caf79dd1f1a84da85bb312" }, - { file = "crc32c-2.7.1-cp310-cp310-win32.whl", hash = "sha256:17a2c3f8c6d85b04b5511af827b5dbbda4e672d188c0b9f20a8156e93a1aa7b6" }, - { file = "crc32c-2.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3208764c29688f91a35392073229975dd7687b6cb9f76b919dae442cabcd5126" }, - { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:19e03a50545a3ef400bd41667d5525f71030488629c57d819e2dd45064f16192" }, - { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c03286b1e5ce9bed7090084f206aacd87c5146b4b10de56fe9e86cbbbf851cf" }, - { file = "crc32c-2.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:80ebbf144a1a56a532b353e81fa0f3edca4f4baa1bf92b1dde2c663a32bb6a15" }, - { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96b794fd11945298fdd5eb1290a812efb497c14bc42592c5c992ca077458eeba" }, - { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9df7194dd3c0efb5a21f5d70595b7a8b4fd9921fbbd597d6d8e7a11eca3e2d27" }, - { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d698eec444b18e296a104d0b9bb6c596c38bdcb79d24eba49604636e9d747305" }, - { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e07cf10ef852d219d179333fd706d1c415626f1f05e60bd75acf0143a4d8b225" }, - { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d2a051f296e6e92e13efee3b41db388931cdb4a2800656cd1ed1d9fe4f13a086" }, - { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1738259802978cdf428f74156175da6a5fdfb7256f647fdc0c9de1bc6cd7173" }, - { file = "crc32c-2.7.1-cp311-cp311-win32.whl", hash = "sha256:f7786d219a1a1bf27d0aa1869821d11a6f8e90415cfffc1e37791690d4a848a1" }, - { file = "crc32c-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:887f6844bb3ad35f0778cd10793ad217f7123a5422e40041231b8c4c7329649d" }, - { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f7d1c4e761fe42bf856130daf8b2658df33fe0ced3c43dadafdfeaa42b57b950" }, - { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:73361c79a6e4605204457f19fda18b042a94508a52e53d10a4239da5fb0f6a34" }, - { file = "crc32c-2.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:afd778fc8ac0ed2ffbfb122a9aa6a0e409a8019b894a1799cda12c01534493e0" }, - { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56ef661b34e9f25991fface7f9ad85e81bbc1b3fe3b916fd58c893eabe2fa0b8" }, - { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:571aa4429444b5d7f588e4377663592145d2d25eb1635abb530f1281794fc7c9" }, - { file = "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" }, - { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:99d17637c4867672cb8adeea007294e3c3df9d43964369516cfe2c1f47ce500a" }, - { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f4a400ac3c69a32e180d8753fd7ec7bccb80ade7ab0812855dce8a208e72495f" }, - { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:588587772e55624dd9c7a906ec9e8773ae0b6ac5e270fc0bc84ee2758eba90d5" }, - { file = "crc32c-2.7.1-cp312-cp312-win32.whl", hash = "sha256:9f14b60e5a14206e8173dd617fa0c4df35e098a305594082f930dae5488da428" }, - { file = "crc32c-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:7c810a246660a24dc818047dc5f89c7ce7b2814e1e08a8e99993f4103f7219e8" }, - { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:24949bffb06fc411cc18188d33357923cb935273642164d0bb37a5f375654169" }, - { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2d5d326e7e118d4fa60187770d86b66af2fdfc63ce9eeb265f0d3e7d49bebe0b" }, - { file = "crc32c-2.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba110df60c64c8e2d77a9425b982a520ccdb7abe42f06604f4d98a45bb1fff62" }, - { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c277f9d16a3283e064d54854af0976b72abaa89824955579b2b3f37444f89aae" }, - { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:881af0478a01331244e27197356929edbdeaef6a9f81b5c6bacfea18d2139289" }, - { file = "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" }, - { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2416c4d88696ac322632555c0f81ab35e15f154bc96055da6cf110d642dbc10" }, - { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:60254251b88ec9b9795215f0f9ec015a6b5eef8b2c5fba1267c672d83c78fc02" }, - { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:edefc0e46f3c37372183f70338e5bdee42f6789b62fcd36ec53aa933e9dfbeaf" }, - { file = "crc32c-2.7.1-cp313-cp313-win32.whl", hash = "sha256:813af8111218970fe2adb833c5e5239f091b9c9e76f03b4dd91aaba86e99b499" }, - { file = "crc32c-2.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:7d9ede7be8e4ec1c9e90aaf6884decbeef10e3473e6ddac032706d710cab5888" }, - { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:db9ac92294284b22521356715784b91cc9094eee42a5282ab281b872510d1831" }, - { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8fcd7f2f29a30dc92af64a9ee3d38bde0c82bd20ad939999427aac94bbd87373" }, - { file = "crc32c-2.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5c056ef043393085523e149276a7ce0cb534b872e04f3e20d74d9a94a75c0ad7" }, - { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03a92551a343702629af91f78d205801219692b6909f8fa126b830e332bfb0e0" }, - { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb9424ec1a8ca54763155a703e763bcede82e6569fe94762614bb2de1412d4e1" }, - { file = "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" }, - { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:57a20dfc27995f568f64775eea2bbb58ae269f1a1144561df5e4a4955f79db32" }, - { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:f7186d098bfd2cff25eac6880b7c7ad80431b90610036131c1c7dd0eab42a332" }, - { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:55a77e29a265418fa34bef15bd0f2c60afae5348988aaf35ed163b4bbf93cf37" }, - { file = "crc32c-2.7.1-cp313-cp313t-win32.whl", hash = "sha256:ae38a4b6aa361595d81cab441405fbee905c72273e80a1c010fb878ae77ac769" }, - { file = "crc32c-2.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:eee2a43b663feb6c79a6c1c6e5eae339c2b72cfac31ee54ec0209fa736cf7ee5" }, - { file = "crc32c-2.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:04a56e9f4995559fa86bcf5d0ed5c48505a36e2be1c41d70cae5c080d9a00b74" }, - { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88c5c9c21cd9fff593bb7dfe97d3287438c8aecbcc73d227f2366860a0663521" }, - { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:595146cb94ba0055301d273113add2af5859b467db41b50367f47870c2d0a81c" }, - { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9f3792872f1320961f33aaf0198edea371aee393bcc221fab66d10ecffd77d" }, - { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:999a40d75cd1696e779f6f99c29fa52be777197d1d9e3ae69cb919a05a369c1e" }, - { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:eff485526172cee7e6d1fa9c23913f92c7d38ab05674b0b578767c7b693faf5d" }, - { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:541dac90c64ed9ce05f85a71066567e854c1b40743a01d83fa2c66419a2e97b6" }, - { file = "crc32c-2.7.1-cp37-cp37m-win32.whl", hash = "sha256:7138ec26e79100c4cf4294ef40027a1cff26a1e23b7e5eb70efe5d7ff37cbc66" }, - { file = "crc32c-2.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:35a3ed12ac2e2551a07d246b7e6512ac39db021e006205a40c1cfd32ea73fcc3" }, - { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af062f11aea283b7e9c95f3a97fb6bb96ac08a9063f71621c2140237df141ada" }, - { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8f25ca521ecf7cccfff0ecae4d0538b5c0c7235d27bf098241f3e2bf86aed713" }, - { file = "crc32c-2.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1410bcd909be36ccbf8a52c45e4bddca77adfd4e80789ac3cd575c024086516d" }, - { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33fc8cb32f82685ebefd078e740925ea9da37a008ed5f43b68fc8324f8ca4a37" }, - { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad3dc6283ce53ad7d1dc5775003460110ab7eebf348efebe0486a531b28f8184" }, - { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:758ead20e122496764ae50db26bb90fb47fc4b6d242c8e99e87c3f1dae1f1dce" }, - { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e436d9044bbd51936f7aeb8b322543c516bf22371a17970a370a10af1661fa54" }, - { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:47e5be99057264b603e3cd88cf091985f33c16d3c8609f1c83ed6e72ec4179b4" }, - { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:280509210e622a236f16f031856847fd0d6704df662d7209da819ccfb40c6167" }, - { file = "crc32c-2.7.1-cp38-cp38-win32.whl", hash = "sha256:4ab48e048cfa123a9f9bdc5d4d687a3461723132c749c721a6d358605e6d470d" }, - { file = "crc32c-2.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:65471d1b1b6e10a404ca8200a4271d5bc0a552c3f5dcd943c1c7835f766ea02d" }, - { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:39ca842586084bca24f9c4ab43e2d99191b1186b2f89b2122b470d0730254d1b" }, - { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a911abc33d453b3f171a3200b1e18b3fc39c204670b5b0a353cca99e4c664332" }, - { file = "crc32c-2.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:22a72e81ec08a7ece6a35ac68d1ed32dd4a8be7949b164db88d4b4a4bade5c5a" }, - { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54d6f8c5be6815eabd6e3e90fa0bc13045183a6aa33a30dd684eb0f062b92213" }, - { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c855726d71dee7ae25f81c6b54293455fc66802f34d334d22bea1f6ce8bc21c" }, - { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98d5f7fc364bb9c4c4123d149406fbee063f2e8c2cff19a12f13e50faa146237" }, - { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:51ffba582c95a281e5a3f71eacdafc96b9a1835ddae245385639458fff197034" }, - { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3950d3c340c9d70889630ef81fba8666abfd0cf0aa19fd9c3a55634e0b383b0f" }, - { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:522fba1770aad8f7eb189f21fca591a51d96dcc749859088f462281324aec30b" }, - { file = "crc32c-2.7.1-cp39-cp39-win32.whl", hash = "sha256:812723e222b6a9fe0562554d72f4f072c3a95720c60ee500984e7d0e568caac3" }, - { file = "crc32c-2.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:6793fcfe9d4130230d196abbe4021c01ffe8e85c92633bf3c8559f9836c227f5" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:2e83fedebcdeb80c19e76b7a0e5103528bb062521c40702bf34516a429e81df3" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30004a7383538ef93bda9b22f7b3805bc0aa5625ab2675690e1b676b19417d4b" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a01b0983aa87f517c12418f9898ecf2083bf86f4ea04122e053357c3edb0d73f" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb2b963c42128b38872e9ed63f04a73ce1ff89a1dfad7ea38add6fe6296497b8" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cdd5e576fee5d255c1e68a4dae4420f21e57e6f05900b38d5ae47c713fc3330d" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:79f0ff50863aeb441fbfa87e9db6542ddfe3e941189dece832b0af2e454dbab0" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cd27a1e400d77e9872fa1303e8f9d30bd050df35ee4858354ce0b59f8227d32" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:274739b3e1591bd4b7ec98764f2f79c6fbcc0f7d7676d5f17369832fe14ee4f0" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:050f52045b4a033a245e0ee4357e1a793de5af6496c82250ef13d8cb90a21e20" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ceb4ca126f75694bda020a307221563d3c522719c0acedcc81ffb985b4867c94" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:eabefe7a6fb5dfc6318fb35f4d98893baef17ebda9b311498e870526d32168e7" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:217edd9ba8c5f0c3ad60c82a11fa78f01162fa106fd7f5d17175dac6bf1eedf9" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15d640d9d4aa213aec6c837f602081a17d1522f8cd78b52334b62ee27b083410" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:519878822bf9bdead63c25a5e4bdc26d2eae9da6056f92b9b5f3023c08f1d016" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:2bf69cfa4c3ea9f060fe06db00b7e34f771c83f73dd2c3568c2c9019479e34c2" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e89d51c90f6730b67b12c97d49099ba18d0fdce18541fab94d2be95d1c939adb" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:488a0feba1bb005d0dd2f702c1da4849d083e88d82cd27b83ac2d2d93af80755" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:919262b7a12ef63f222ec19c0e092f39268802652e11669315257ae6249ec79f" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4181240f6080c38eec9dd1539cd23a304a12100d3f4ffe43234f32064fae5ef0" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fedde1e53507d0ede1980e8109442edd108c04ab100abcd5145c274820dacd4f" }, - { file = "crc32c-2.7.1.tar.gz", hash = "sha256:f91b144a21eef834d64178e01982bb9179c354b3e9e5f4c803b0e5096384968c" }, -] - -[[package]] -name = "dask" -version = "2025.7.0" -description = "Parallel PyData with Task Scheduling" -optional = false -python-versions = ">=3.10" -groups = ["main"] -files = [ - { file = "dask-2025.7.0-py3-none-any.whl", hash = "sha256:073c29c4e99c2400a39a8a67874f35c1d15bf7af9ae3d0c30af3c7c1199f24ae" }, - { file = "dask-2025.7.0.tar.gz", hash = "sha256:c3a0d4e78882e85ea81dbc71e6459713e45676e2d17e776c2f3f19848039e4cf" }, -] - -[package.dependencies] -click = ">=8.1" -cloudpickle = ">=3.0.0" -fsspec = ">=2021.09.0" -packaging = ">=20.0" -partd = ">=1.4.0" -pyyaml = ">=5.3.1" -toolz = ">=0.10.0" - -[package.extras] -array = ["numpy (>=1.24)"] -complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=14.0.1)"] -dataframe = ["dask[array]", "pandas (>=2.0)", "pyarrow (>=14.0.1)"] -diagnostics = ["bokeh (>=3.1.0)", "jinja2 (>=2.10.3)"] -distributed = ["distributed (==2025.7.0)"] -test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] - -[[package]] -name = "debugpy" -version = "1.8.15" -description = "An implementation of the Debug Adapter Protocol for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "debugpy-1.8.15-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e9a8125c85172e3ec30985012e7a81ea5e70bbb836637f8a4104f454f9b06c97" }, - { file = "debugpy-1.8.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fd0b6b5eccaa745c214fd240ea82f46049d99ef74b185a3517dad3ea1ec55d9" }, - { file = "debugpy-1.8.15-cp310-cp310-win32.whl", hash = "sha256:8181cce4d344010f6bfe94a531c351a46a96b0f7987750932b2908e7a1e14a55" }, - { file = "debugpy-1.8.15-cp310-cp310-win_amd64.whl", hash = "sha256:af2dcae4e4cd6e8b35f982ccab29fe65f7e8766e10720a717bc80c464584ee21" }, - { file = "debugpy-1.8.15-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:babc4fb1962dd6a37e94d611280e3d0d11a1f5e6c72ac9b3d87a08212c4b6dd3" }, - { file = "debugpy-1.8.15-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f778e68f2986a58479d0ac4f643e0b8c82fdd97c2e200d4d61e7c2d13838eb53" }, - { file = "debugpy-1.8.15-cp311-cp311-win32.whl", hash = "sha256:f9d1b5abd75cd965e2deabb1a06b0e93a1546f31f9f621d2705e78104377c702" }, - { file = "debugpy-1.8.15-cp311-cp311-win_amd64.whl", hash = "sha256:62954fb904bec463e2b5a415777f6d1926c97febb08ef1694da0e5d1463c5c3b" }, - { file = "debugpy-1.8.15-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:3dcc7225cb317469721ab5136cda9ff9c8b6e6fb43e87c9e15d5b108b99d01ba" }, - { file = "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" }, - { file = "debugpy-1.8.15-cp312-cp312-win32.whl", hash = "sha256:b08e9b0bc260cf324c890626961dad4ffd973f7568fbf57feb3c3a65ab6b6327" }, - { file = "debugpy-1.8.15-cp312-cp312-win_amd64.whl", hash = "sha256:e2a4fe357c92334272eb2845fcfcdbec3ef9f22c16cf613c388ac0887aed15fa" }, - { file = "debugpy-1.8.15-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:f5e01291ad7d6649aed5773256c5bba7a1a556196300232de1474c3c372592bf" }, - { file = "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" }, - { file = "debugpy-1.8.15-cp313-cp313-win32.whl", hash = "sha256:fcf0748d4f6e25f89dc5e013d1129ca6f26ad4da405e0723a4f704583896a709" }, - { file = "debugpy-1.8.15-cp313-cp313-win_amd64.whl", hash = "sha256:73c943776cb83e36baf95e8f7f8da765896fd94b05991e7bc162456d25500683" }, - { file = "debugpy-1.8.15-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:054cd4935bd2e4964dfe1aeee4d6bca89d0c833366776fc35387f8a2f517dd00" }, - { file = "debugpy-1.8.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21c4288e662997df3176c4b9d93ee1393913fbaf320732be332d538000c53208" }, - { file = "debugpy-1.8.15-cp38-cp38-win32.whl", hash = "sha256:aaa8ce6a37d764f93fe583d7c6ca58eb7550b36941387483db113125f122bb0d" }, - { file = "debugpy-1.8.15-cp38-cp38-win_amd64.whl", hash = "sha256:71cdf7f676af78e70f005c7fad2ef9da0edc2a24befbf3ab146a51f0d58048c2" }, - { file = "debugpy-1.8.15-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:085b6d0adb3eb457c2823ac497a0690b10a99eff8b01c01a041e84579f114b56" }, - { file = "debugpy-1.8.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd546a405381d17527814852642df0a74b7da8acc20ae5f3cfad0b7c86419511" }, - { file = "debugpy-1.8.15-cp39-cp39-win32.whl", hash = "sha256:ae0d445fe11ff4351428e6c2389e904e1cdcb4a47785da5a5ec4af6c5b95fce5" }, - { file = "debugpy-1.8.15-cp39-cp39-win_amd64.whl", hash = "sha256:de7db80189ca97ab4b10a87e4039cfe4dd7ddfccc8f33b5ae40fcd33792fc67a" }, - { file = "debugpy-1.8.15-py2.py3-none-any.whl", hash = "sha256:bce2e6c5ff4f2e00b98d45e7e01a49c7b489ff6df5f12d881c67d2f1ac635f3d" }, - { file = "debugpy-1.8.15.tar.gz", hash = "sha256:58d7a20b7773ab5ee6bdfb2e6cf622fdf1e40c9d5aef2857d85391526719ac00" }, -] - -[[package]] -name = "decorator" -version = "5.2.1" -description = "Decorators for Humans" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a" }, - { file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360" }, -] - -[[package]] -name = "defusedxml" -version = "0.7.1" -description = "XML bomb protection for Python stdlib modules" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["dev"] -files = [ - {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, - {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, -] - [[package]] name = "distlib" version = "0.4.0" @@ -869,128 +315,22 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - { file = "distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16" }, - { file = "distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d" }, -] - -[[package]] -name = "donfig" -version = "0.8.1.post1" -description = "Python package for configuring a python package" -optional = false -python-versions = ">=3.8" -groups = ["main"] -files = [ - { file = "donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d" }, - { file = "donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52" }, -] - -[package.dependencies] -pyyaml = "*" - -[package.extras] -docs = ["cloudpickle", "numpydoc", "pytest", "sphinx (>=4.0.0)"] -test = ["cloudpickle", "pytest"] - -[[package]] -name = "executing" -version = "2.2.0" -description = "Get the currently executing AST node of a frame, and other information" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa" }, - { file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755" }, -] - -[package.extras] -tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich ; python_version >= \"3.11\""] - -[[package]] -name = "fastjsonschema" -version = "2.21.1" -description = "Fastest Python implementation of JSON schema" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - { file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667" }, - { file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4" }, + {file = "distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16"}, + {file = "distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d"}, ] -[package.extras] -devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] - [[package]] name = "filelock" -version = "3.18.0" +version = "3.19.1" description = "A platform independent file lock." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de" }, - { file = "filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2" }, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] -typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] - -[[package]] -name = "fqdn" -version = "1.4.0" -description = "Validate fully-qualified domain names compliant to RFC 1035 and the preferred form in RFC 3686 s. 2." -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - { file = "fqdn-1.4.0-py3-none-any.whl", hash = "sha256:e935616ae81c9c60a22267593fe8e6af68cecc68549cc71bb9bfbcbbcb383386" }, - { file = "fqdn-1.4.0.tar.gz", hash = "sha256:30e8f2e685ce87cdace4712fd97c5d09f5e6fa519bbb66e8f188f6a7cb3a5c4e" }, -] - -[[package]] -name = "fsspec" -version = "2025.7.0" -description = "File-system specification" -optional = false -python-versions = ">=3.9" -groups = ["main"] -files = [ - { file = "fsspec-2025.7.0-py3-none-any.whl", hash = "sha256:8b012e39f63c7d5f10474de957f3ab793b47b45ae7d39f2fb735f8bbe25c0e21" }, - { file = "fsspec-2025.7.0.tar.gz", hash = "sha256:786120687ffa54b8283d942929540d8bc5ccfa820deb555a2b5d0ed2b737bf58" }, + {file = "filelock-3.19.1-py3-none-any.whl", hash = "sha256:d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d"}, + {file = "filelock-3.19.1.tar.gz", hash = "sha256:66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58"}, ] -[package.extras] -abfs = ["adlfs"] -adl = ["adlfs"] -arrow = ["pyarrow (>=1)"] -dask = ["dask", "distributed"] -dev = ["pre-commit", "ruff (>=0.5)"] -doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"] -dropbox = ["dropbox", "dropboxdrivefs", "requests"] -full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] -fuse = ["fusepy"] -gcs = ["gcsfs"] -git = ["pygit2"] -github = ["requests"] -gs = ["gcsfs"] -gui = ["panel"] -hdfs = ["pyarrow (>=1)"] -http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] -libarchive = ["libarchive-c"] -oci = ["ocifs"] -s3 = ["s3fs"] -sftp = ["paramiko"] -smb = ["smbprotocol"] -ssh = ["paramiko"] -test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"] -test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] -test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard ; python_version < \"3.14\""] -tqdm = ["tqdm"] - [[package]] name = "ghp-import" version = "2.1.0" @@ -999,8 +339,8 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - { file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343" }, - { file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619" }, + {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, + {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, ] [package.dependencies] @@ -1011,88 +351,29 @@ dev = ["flake8", "markdown", "twine", "wheel"] [[package]] name = "griffe" -version = "1.7.3" +version = "1.12.1" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "griffe-1.7.3-py3-none-any.whl", hash = "sha256:c6b3ee30c2f0f17f30bcdef5068d6ab7a2a4f1b8bf1a3e74b56fffd21e1c5f75" }, - { file = "griffe-1.7.3.tar.gz", hash = "sha256:52ee893c6a3a968b639ace8015bec9d36594961e156e23315c8e8e51401fa50b" }, + {file = "griffe-1.12.1-py3-none-any.whl", hash = "sha256:2d7c12334de00089c31905424a00abcfd931b45b8b516967f224133903d302cc"}, + {file = "griffe-1.12.1.tar.gz", hash = "sha256:29f5a6114c0aeda7d9c86a570f736883f8a2c5b38b57323d56b3d1c000565567"}, ] [package.dependencies] colorama = ">=0.4" -[[package]] -name = "h11" -version = "0.16.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86" }, - { file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1" }, -] - -[[package]] -name = "httpcore" -version = "1.0.9" -description = "A minimal low-level HTTP client." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55" }, - { file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8" }, -] - -[package.dependencies] -certifi = "*" -h11 = ">=0.16" - -[package.extras] -asyncio = ["anyio (>=4.0,<5.0)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<1.0)"] - -[[package]] -name = "httpx" -version = "0.28.1" -description = "The next generation HTTP client." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad" }, - { file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc" }, -] - -[package.dependencies] -anyio = "*" -certifi = "*" -httpcore = "==1.*" -idna = "*" - -[package.extras] -brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -zstd = ["zstandard (>=0.18.0)"] - [[package]] name = "identify" -version = "2.6.12" +version = "2.6.13" description = "File identification library for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2" }, - { file = "identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6" }, + {file = "identify-2.6.13-py2.py3-none-any.whl", hash = "sha256:60381139b3ae39447482ecc406944190f690d4a2997f2584062089848361b33b"}, + {file = "identify-2.6.13.tar.gz", hash = "sha256:da8d6c828e773620e13bfa86ea601c5a5310ba4bcd65edf378198b56a1f9fb32"}, ] [package.extras] @@ -1121,148 +402,10 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760" }, - { file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7" }, + {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, + {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, ] -[[package]] -name = "ipykernel" -version = "6.29.5" -description = "IPython Kernel for Jupyter" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, - {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, -] - -[package.dependencies] -appnope = {version = "*", markers = "platform_system == \"Darwin\""} -comm = ">=0.1.1" -debugpy = ">=1.6.5" -ipython = ">=7.23.1" -jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -matplotlib-inline = ">=0.1" -nest-asyncio = "*" -packaging = "*" -psutil = "*" -pyzmq = ">=24" -tornado = ">=6.1" -traitlets = ">=5.4.0" - -[package.extras] -cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] -pyqt5 = ["pyqt5"] -pyside6 = ["pyside6"] -test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] - -[[package]] -name = "ipython" -version = "9.4.0" -description = "IPython: Productive Interactive Computing" -optional = false -python-versions = ">=3.11" -groups = ["dev"] -files = [ - { file = "ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066" }, - { file = "ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270" }, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -decorator = "*" -ipython-pygments-lexers = "*" -jedi = ">=0.16" -matplotlib-inline = "*" -pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} -prompt_toolkit = ">=3.0.41,<3.1.0" -pygments = ">=2.4.0" -stack_data = "*" -traitlets = ">=5.13.0" - -[package.extras] -all = ["ipython[doc,matplotlib,test,test-extra]"] -black = ["black"] -doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinx_toml (==0.0.4)", "typing_extensions"] -matplotlib = ["matplotlib"] -test = ["packaging", "pytest", "pytest-asyncio (<0.22)", "testpath"] -test-extra = ["curio", "ipykernel", "ipython[test]", "jupyter_ai", "matplotlib (!=3.2.0)", "nbclient", "nbformat", "numpy (>=1.23)", "pandas", "trio"] - -[[package]] -name = "ipython-pygments-lexers" -version = "1.1.1" -description = "Defines a variety of Pygments lexers for highlighting IPython code." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c" }, - { file = "ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81" }, -] - -[package.dependencies] -pygments = "*" - -[[package]] -name = "ipywidgets" -version = "8.1.7" -description = "Jupyter interactive widgets" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - { file = "ipywidgets-8.1.7-py3-none-any.whl", hash = "sha256:764f2602d25471c213919b8a1997df04bef869251db4ca8efba1b76b1bd9f7bb" }, - { file = "ipywidgets-8.1.7.tar.gz", hash = "sha256:15f1ac050b9ccbefd45dccfbb2ef6bed0029d8278682d569d71b8dd96bee0376" }, -] - -[package.dependencies] -comm = ">=0.1.3" -ipython = ">=6.1.0" -jupyterlab_widgets = ">=3.0.15,<3.1.0" -traitlets = ">=4.3.1" -widgetsnbextension = ">=4.0.14,<4.1.0" - -[package.extras] -test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] - -[[package]] -name = "isoduration" -version = "20.11.0" -description = "Operations with ISO 8601 durations" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, - {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, -] - -[package.dependencies] -arrow = ">=0.15.0" - -[[package]] -name = "jedi" -version = "0.19.2" -description = "An autocompletion tool for Python that can be used for text editors." -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - { file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9" }, - { file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0" }, -] - -[package.dependencies] -parso = ">=0.8.4,<0.9.0" - -[package.extras] -docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] -qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["Django", "attrs", "colorama", "docopt", "pytest (<9.0.0)"] - [[package]] name = "jinja2" version = "3.1.6" @@ -1271,8 +414,8 @@ optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - { file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67" }, - { file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d" }, + {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, + {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, ] [package.dependencies] @@ -1281,381 +424,6 @@ MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] -[[package]] -name = "json5" -version = "0.12.0" -description = "A Python implementation of the JSON5 data format." -optional = false -python-versions = ">=3.8.0" -groups = ["dev"] -files = [ - { file = "json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db" }, - { file = "json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a" }, -] - -[package.extras] -dev = ["build (==1.2.2.post1)", "coverage (==7.5.4) ; python_version < \"3.9\"", "coverage (==7.8.0) ; python_version >= \"3.9\"", "mypy (==1.14.1) ; python_version < \"3.9\"", "mypy (==1.15.0) ; python_version >= \"3.9\"", "pip (==25.0.1)", "pylint (==3.2.7) ; python_version < \"3.9\"", "pylint (==3.3.6) ; python_version >= \"3.9\"", "ruff (==0.11.2)", "twine (==6.1.0)", "uv (==0.6.11)"] - -[[package]] -name = "jsonpointer" -version = "3.0.0" -description = "Identify specific nodes in a JSON document (RFC 6901)" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, - {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, -] - -[[package]] -name = "jsonschema" -version = "4.25.0" -description = "An implementation of JSON Schema validation for Python" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "jsonschema-4.25.0-py3-none-any.whl", hash = "sha256:24c2e8da302de79c8b9382fee3e76b355e44d2a4364bb207159ce10b517bd716" }, - { file = "jsonschema-4.25.0.tar.gz", hash = "sha256:e63acf5c11762c0e6672ffb61482bdf57f0876684d8d249c0fe2d730d48bc55f" }, -] - -[package.dependencies] -attrs = ">=22.2.0" -fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""} -jsonschema-specifications = ">=2023.03.6" -referencing = ">=0.28.4" -rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} -rfc3987-syntax = { version = ">=1.1.0", optional = true, markers = "extra == \"format-nongpl\"" } -rpds-py = ">=0.7.1" -uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -webcolors = {version = ">=24.6.0", optional = true, markers = "extra == \"format-nongpl\""} - -[package.extras] -format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] -format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "rfc3987-syntax (>=1.1.0)", "uri-template", "webcolors (>=24.6.0)"] - -[[package]] -name = "jsonschema-specifications" -version = "2025.4.1" -description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af" }, - { file = "jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608" }, -] - -[package.dependencies] -referencing = ">=0.31.0" - -[[package]] -name = "jupyter" -version = "1.1.1" -description = "Jupyter metapackage. Install all the Jupyter components in one go." -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83"}, - {file = "jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a"}, -] - -[package.dependencies] -ipykernel = "*" -ipywidgets = "*" -jupyter-console = "*" -jupyterlab = "*" -nbconvert = "*" -notebook = "*" - -[[package]] -name = "jupyter-client" -version = "8.6.3" -description = "Jupyter protocol implementation and client libraries" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, - {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, -] - -[package.dependencies] -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -python-dateutil = ">=2.8.2" -pyzmq = ">=23.0" -tornado = ">=6.2" -traitlets = ">=5.3" - -[package.extras] -docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko ; sys_platform == \"win32\"", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] - -[[package]] -name = "jupyter-console" -version = "6.6.3" -description = "Jupyter terminal console" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"}, - {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"}, -] - -[package.dependencies] -ipykernel = ">=6.14" -ipython = "*" -jupyter-client = ">=7.0.0" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -prompt-toolkit = ">=3.0.30" -pygments = "*" -pyzmq = ">=17" -traitlets = ">=5.4" - -[package.extras] -test = ["flaky", "pexpect", "pytest"] - -[[package]] -name = "jupyter-core" -version = "5.8.1" -description = "Jupyter core package. A base package on which Jupyter projects rely." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0" }, - { file = "jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941" }, -] - -[package.dependencies] -platformdirs = ">=2.5" -pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} -traitlets = ">=5.3" - -[package.extras] -docs = ["intersphinx-registry", "myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-spelling", "traitlets"] -test = ["ipykernel", "pre-commit", "pytest (<9)", "pytest-cov", "pytest-timeout"] - -[[package]] -name = "jupyter-events" -version = "0.12.0" -description = "Jupyter Event System library" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb" }, - { file = "jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b" }, -] - -[package.dependencies] -jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]} -packaging = "*" -python-json-logger = ">=2.0.4" -pyyaml = ">=5.3" -referencing = "*" -rfc3339-validator = "*" -rfc3986-validator = ">=0.1.1" -traitlets = ">=5.3" - -[package.extras] -cli = ["click", "rich"] -docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme (>=0.16)", "sphinx (>=8)", "sphinxcontrib-spelling"] -test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"] - -[[package]] -name = "jupyter-lsp" -version = "2.2.6" -description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "jupyter_lsp-2.2.6-py3-none-any.whl", hash = "sha256:283783752bf0b459ee7fa88effa72104d87dd343b82d5c06cf113ef755b15b6d" }, - { file = "jupyter_lsp-2.2.6.tar.gz", hash = "sha256:0566bd9bb04fd9e6774a937ed01522b555ba78be37bebef787c8ab22de4c0361" }, -] - -[package.dependencies] -jupyter_server = ">=1.1.2" - -[[package]] -name = "jupyter-server" -version = "2.16.0" -description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e" }, - { file = "jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6" }, -] - -[package.dependencies] -anyio = ">=3.1.0" -argon2-cffi = ">=21.1" -jinja2 = ">=3.0.3" -jupyter-client = ">=7.4.4" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -jupyter-events = ">=0.11.0" -jupyter-server-terminals = ">=0.4.4" -nbconvert = ">=6.4.4" -nbformat = ">=5.3.0" -overrides = ">=5.0" -packaging = ">=22.0" -prometheus-client = ">=0.9" -pywinpty = {version = ">=2.0.1", markers = "os_name == \"nt\""} -pyzmq = ">=24" -send2trash = ">=1.8.2" -terminado = ">=0.8.3" -tornado = ">=6.2.0" -traitlets = ">=5.6.0" -websocket-client = ">=1.7" - -[package.extras] -docs = ["ipykernel", "jinja2", "jupyter-client", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"] -test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0,<9)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.7)", "pytest-timeout", "requests"] - -[[package]] -name = "jupyter-server-terminals" -version = "0.5.3" -description = "A Jupyter Server Extension Providing Terminals." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, - {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, -] - -[package.dependencies] -pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""} -terminado = ">=0.8.3" - -[package.extras] -docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"] -test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"] - -[[package]] -name = "jupyterlab" -version = "4.4.4" -description = "JupyterLab computational environment" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "jupyterlab-4.4.4-py3-none-any.whl", hash = "sha256:711611e4f59851152eb93316c3547c3ec6291f16bb455f1f4fa380d25637e0dd" }, - { file = "jupyterlab-4.4.4.tar.gz", hash = "sha256:163fee1ef702e0a057f75d2eed3ed1da8a986d59eb002cbeb6f0c2779e6cd153" }, -] - -[package.dependencies] -async-lru = ">=1.0.0" -httpx = ">=0.25.0" -ipykernel = ">=6.5.0" -jinja2 = ">=3.0.3" -jupyter-core = "*" -jupyter-lsp = ">=2.0.0" -jupyter-server = ">=2.4.0,<3" -jupyterlab-server = ">=2.27.1,<3" -notebook-shim = ">=0.2" -packaging = "*" -setuptools = ">=41.1.0" -tornado = ">=6.2.0" -traitlets = "*" - -[package.extras] -dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.11.4)"] -docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<8.2.0)", "sphinx-copybutton"] -docs-screenshots = ["altair (==5.5.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.5)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.3.post1)", "matplotlib (==3.10.0)", "nbconvert (>=7.0.0)", "pandas (==2.2.3)", "scipy (==1.15.1)", "vega-datasets (==0.9.0)"] -test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] -upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)", "pyyaml-include (<3.0)", "tomli-w (<2.0)"] - -[[package]] -name = "jupyterlab-pygments" -version = "0.3.0" -description = "Pygments theme using JupyterLab CSS variables" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, - {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, -] - -[[package]] -name = "jupyterlab-server" -version = "2.27.3" -description = "A set of server components for JupyterLab and JupyterLab like applications." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4"}, - {file = "jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4"}, -] - -[package.dependencies] -babel = ">=2.10" -jinja2 = ">=3.0.3" -json5 = ">=0.9.0" -jsonschema = ">=4.18.0" -jupyter-server = ">=1.21,<3" -packaging = ">=21.3" -requests = ">=2.31" - -[package.extras] -docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"] -openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"] -test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0,<8)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] - -[[package]] -name = "jupyterlab-widgets" -version = "3.0.15" -description = "Jupyter interactive widgets for JupyterLab" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - { file = "jupyterlab_widgets-3.0.15-py3-none-any.whl", hash = "sha256:d59023d7d7ef71400d51e6fee9a88867f6e65e10a4201605d2d7f3e8f012a31c" }, - { file = "jupyterlab_widgets-3.0.15.tar.gz", hash = "sha256:2920888a0c2922351a9202817957a68c07d99673504d6cd37345299e971bb08b" }, -] - -[[package]] -name = "lark" -version = "1.2.2" -description = "a modern parsing library" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "lark-1.2.2-py3-none-any.whl", hash = "sha256:c2276486b02f0f1b90be155f2c8ba4a8e194d42775786db622faccd652d8e80c" }, - { file = "lark-1.2.2.tar.gz", hash = "sha256:ca807d0162cd16cef15a8feecb862d7319e7a09bdb13aef927968e45040fed80" }, -] - -[package.extras] -atomic-cache = ["atomicwrites"] -interegular = ["interegular (>=0.3.1,<0.4.0)"] -nearley = ["js2py"] -regex = ["regex"] - -[[package]] -name = "locket" -version = "1.0.0" -description = "File-based locks for Python on Linux and Windows" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -groups = ["main"] -files = [ - {file = "locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3"}, - {file = "locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632"}, -] - [[package]] name = "markdown" version = "3.8.2" @@ -1664,8 +432,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24" }, - { file = "markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45" }, + {file = "markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24"}, + {file = "markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45"}, ] [package.extras] @@ -1740,46 +508,19 @@ files = [ {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, - {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, -] - -[[package]] -name = "matplotlib-inline" -version = "0.1.7" -description = "Inline Matplotlib backend for Jupyter" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, - {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, -] - -[package.dependencies] -traitlets = "*" - -[[package]] -name = "mergedeep" -version = "1.3.4" -description = "A deep merge function for 🐍." -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - { file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307" }, - { file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8" }, + {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, ] [[package]] -name = "mistune" -version = "3.1.3" -description = "A sane and fast Markdown parser with useful plugins and renderers" +name = "mergedeep" +version = "1.3.4" +description = "A deep merge function for 🐍." optional = false -python-versions = ">=3.8" +python-versions = ">=3.6" groups = ["dev"] files = [ - { file = "mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9" }, - { file = "mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0" }, + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, ] [[package]] @@ -1790,13 +531,13 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e" }, - { file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2" }, + {file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e"}, + {file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2"}, ] [package.dependencies] click = ">=7.0" -colorama = { version = ">=0.4", markers = "platform_system == \"Windows\"" } +colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} ghp-import = ">=1.0" jinja2 = ">=2.11.1" markdown = ">=3.3.6" @@ -1821,8 +562,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13" }, - { file = "mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749" }, + {file = "mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13"}, + {file = "mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749"}, ] [package.dependencies] @@ -1838,8 +579,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134" }, - { file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c" }, + {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, + {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, ] [package.dependencies] @@ -1849,19 +590,20 @@ pyyaml = ">=5.1" [[package]] name = "mkdocs-material" -version = "9.6.15" +version = "9.6.17" description = "Documentation that simply works" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "mkdocs_material-9.6.15-py3-none-any.whl", hash = "sha256:ac969c94d4fe5eb7c924b6d2f43d7db41159ea91553d18a9afc4780c34f2717a" }, - { file = "mkdocs_material-9.6.15.tar.gz", hash = "sha256:64adf8fa8dba1a17905b6aee1894a5aafd966d4aeb44a11088519b0f5ca4f1b5" }, + {file = "mkdocs_material-9.6.17-py3-none-any.whl", hash = "sha256:221dd8b37a63f52e580bcab4a7e0290e4a6f59bd66190be9c3d40767e05f9417"}, + {file = "mkdocs_material-9.6.17.tar.gz", hash = "sha256:48ae7aec72a3f9f501a70be3fbd329c96ff5f5a385b67a1563e5ed5ce064affe"}, ] [package.dependencies] babel = ">=2.10,<3.0" backrefs = ">=5.7.post1,<6.0" +click = "<8.2.2" colorama = ">=0.4,<1.0" jinja2 = ">=3.1,<4.0" markdown = ">=3.2,<4.0" @@ -1885,8 +627,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31" }, - { file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443" }, + {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, + {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, ] [[package]] @@ -1897,8 +639,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "mkdocstrings-0.29.1-py3-none-any.whl", hash = "sha256:37a9736134934eea89cbd055a513d40a020d87dfcae9e3052c2a6b8cd4af09b6" }, - { file = "mkdocstrings-0.29.1.tar.gz", hash = "sha256:8722f8f8c5cd75da56671e0a0c1bbed1df9946c0cef74794d6141b34011abd42" }, + {file = "mkdocstrings-0.29.1-py3-none-any.whl", hash = "sha256:37a9736134934eea89cbd055a513d40a020d87dfcae9e3052c2a6b8cd4af09b6"}, + {file = "mkdocstrings-0.29.1.tar.gz", hash = "sha256:8722f8f8c5cd75da56671e0a0c1bbed1df9946c0cef74794d6141b34011abd42"}, ] [package.dependencies] @@ -1907,7 +649,7 @@ Markdown = ">=3.6" MarkupSafe = ">=1.1" mkdocs = ">=1.6" mkdocs-autorefs = ">=1.4" -mkdocstrings-python = { version = ">=1.16.2", optional = true, markers = "extra == \"python\"" } +mkdocstrings-python = {version = ">=1.16.2", optional = true, markers = "extra == \"python\""} pymdown-extensions = ">=6.3" [package.extras] @@ -1923,8 +665,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "mkdocstrings_python-1.16.12-py3-none-any.whl", hash = "sha256:22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374" }, - { file = "mkdocstrings_python-1.16.12.tar.gz", hash = "sha256:9b9eaa066e0024342d433e332a41095c4e429937024945fea511afe58f63175d" }, + {file = "mkdocstrings_python-1.16.12-py3-none-any.whl", hash = "sha256:22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374"}, + {file = "mkdocstrings_python-1.16.12.tar.gz", hash = "sha256:9b9eaa066e0024342d433e332a41095c4e429937024945fea511afe58f63175d"}, ] [package.dependencies] @@ -1934,44 +676,50 @@ mkdocstrings = ">=0.28.3" [[package]] name = "mypy" -version = "1.17.0" +version = "1.17.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "mypy-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8e08de6138043108b3b18f09d3f817a4783912e48828ab397ecf183135d84d6" }, - { file = "mypy-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce4a17920ec144647d448fc43725b5873548b1aae6c603225626747ededf582d" }, - { file = "mypy-1.17.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ff25d151cc057fdddb1cb1881ef36e9c41fa2a5e78d8dd71bee6e4dcd2bc05b" }, - { file = "mypy-1.17.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93468cf29aa9a132bceb103bd8475f78cacde2b1b9a94fd978d50d4bdf616c9a" }, - { file = "mypy-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:98189382b310f16343151f65dd7e6867386d3e35f7878c45cfa11383d175d91f" }, - { file = "mypy-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:c004135a300ab06a045c1c0d8e3f10215e71d7b4f5bb9a42ab80236364429937" }, - { file = "mypy-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9d4fe5c72fd262d9c2c91c1117d16aac555e05f5beb2bae6a755274c6eec42be" }, - { file = "mypy-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96b196e5c16f41b4f7736840e8455958e832871990c7ba26bf58175e357ed61" }, - { file = "mypy-1.17.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:73a0ff2dd10337ceb521c080d4147755ee302dcde6e1a913babd59473904615f" }, - { file = "mypy-1.17.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:24cfcc1179c4447854e9e406d3af0f77736d631ec87d31c6281ecd5025df625d" }, - { file = "mypy-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3c56f180ff6430e6373db7a1d569317675b0a451caf5fef6ce4ab365f5f2f6c3" }, - { file = "mypy-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:eafaf8b9252734400f9b77df98b4eee3d2eecab16104680d51341c75702cad70" }, - { file = "mypy-1.17.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f986f1cab8dbec39ba6e0eaa42d4d3ac6686516a5d3dccd64be095db05ebc6bb" }, - { file = "mypy-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:51e455a54d199dd6e931cd7ea987d061c2afbaf0960f7f66deef47c90d1b304d" }, - { file = "mypy-1.17.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3204d773bab5ff4ebbd1f8efa11b498027cd57017c003ae970f310e5b96be8d8" }, - { file = "mypy-1.17.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1051df7ec0886fa246a530ae917c473491e9a0ba6938cfd0ec2abc1076495c3e" }, - { file = "mypy-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f773c6d14dcc108a5b141b4456b0871df638eb411a89cd1c0c001fc4a9d08fc8" }, - { file = "mypy-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:1619a485fd0e9c959b943c7b519ed26b712de3002d7de43154a489a2d0fd817d" }, - { file = "mypy-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c41aa59211e49d717d92b3bb1238c06d387c9325d3122085113c79118bebb06" }, - { file = "mypy-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e69db1fb65b3114f98c753e3930a00514f5b68794ba80590eb02090d54a5d4a" }, - { file = "mypy-1.17.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:03ba330b76710f83d6ac500053f7727270b6b8553b0423348ffb3af6f2f7b889" }, - { file = "mypy-1.17.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:037bc0f0b124ce46bfde955c647f3e395c6174476a968c0f22c95a8d2f589bba" }, - { file = "mypy-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c38876106cb6132259683632b287238858bd58de267d80defb6f418e9ee50658" }, - { file = "mypy-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:d30ba01c0f151998f367506fab31c2ac4527e6a7b2690107c7a7f9e3cb419a9c" }, - { file = "mypy-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:63e751f1b5ab51d6f3d219fe3a2fe4523eaa387d854ad06906c63883fde5b1ab" }, - { file = "mypy-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7fb09d05e0f1c329a36dcd30e27564a3555717cde87301fae4fb542402ddfad" }, - { file = "mypy-1.17.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b72c34ce05ac3a1361ae2ebb50757fb6e3624032d91488d93544e9f82db0ed6c" }, - { file = "mypy-1.17.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:434ad499ad8dde8b2f6391ddfa982f41cb07ccda8e3c67781b1bfd4e5f9450a8" }, - { file = "mypy-1.17.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f105f61a5eff52e137fd73bee32958b2add9d9f0a856f17314018646af838e97" }, - { file = "mypy-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:ba06254a5a22729853209550d80f94e28690d5530c661f9416a68ac097b13fc4" }, - { file = "mypy-1.17.0-py3-none-any.whl", hash = "sha256:15d9d0018237ab058e5de3d8fce61b6fa72cc59cc78fd91f1b474bce12abf496" }, - { file = "mypy-1.17.0.tar.gz", hash = "sha256:e5d7ccc08ba089c06e2f5629c660388ef1fee708444f1dee0b9203fa031dee03" }, + {file = "mypy-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3fbe6d5555bf608c47203baa3e72dbc6ec9965b3d7c318aa9a4ca76f465bd972"}, + {file = "mypy-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80ef5c058b7bce08c83cac668158cb7edea692e458d21098c7d3bce35a5d43e7"}, + {file = "mypy-1.17.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4a580f8a70c69e4a75587bd925d298434057fe2a428faaf927ffe6e4b9a98df"}, + {file = "mypy-1.17.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd86bb649299f09d987a2eebb4d52d10603224500792e1bee18303bbcc1ce390"}, + {file = "mypy-1.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a76906f26bd8d51ea9504966a9c25419f2e668f012e0bdf3da4ea1526c534d94"}, + {file = "mypy-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:e79311f2d904ccb59787477b7bd5d26f3347789c06fcd7656fa500875290264b"}, + {file = "mypy-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad37544be07c5d7fba814eb370e006df58fed8ad1ef33ed1649cb1889ba6ff58"}, + {file = "mypy-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:064e2ff508e5464b4bd807a7c1625bc5047c5022b85c70f030680e18f37273a5"}, + {file = "mypy-1.17.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:70401bbabd2fa1aa7c43bb358f54037baf0586f41e83b0ae67dd0534fc64edfd"}, + {file = "mypy-1.17.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e92bdc656b7757c438660f775f872a669b8ff374edc4d18277d86b63edba6b8b"}, + {file = "mypy-1.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c1fdf4abb29ed1cb091cf432979e162c208a5ac676ce35010373ff29247bcad5"}, + {file = "mypy-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:ff2933428516ab63f961644bc49bc4cbe42bbffb2cd3b71cc7277c07d16b1a8b"}, + {file = "mypy-1.17.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:69e83ea6553a3ba79c08c6e15dbd9bfa912ec1e493bf75489ef93beb65209aeb"}, + {file = "mypy-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b16708a66d38abb1e6b5702f5c2c87e133289da36f6a1d15f6a5221085c6403"}, + {file = "mypy-1.17.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:89e972c0035e9e05823907ad5398c5a73b9f47a002b22359b177d40bdaee7056"}, + {file = "mypy-1.17.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03b6d0ed2b188e35ee6d5c36b5580cffd6da23319991c49ab5556c023ccf1341"}, + {file = "mypy-1.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c837b896b37cd103570d776bda106eabb8737aa6dd4f248451aecf53030cdbeb"}, + {file = "mypy-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:665afab0963a4b39dff7c1fa563cc8b11ecff7910206db4b2e64dd1ba25aed19"}, + {file = "mypy-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93378d3203a5c0800c6b6d850ad2f19f7a3cdf1a3701d3416dbf128805c6a6a7"}, + {file = "mypy-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:15d54056f7fe7a826d897789f53dd6377ec2ea8ba6f776dc83c2902b899fee81"}, + {file = "mypy-1.17.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:209a58fed9987eccc20f2ca94afe7257a8f46eb5df1fb69958650973230f91e6"}, + {file = "mypy-1.17.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:099b9a5da47de9e2cb5165e581f158e854d9e19d2e96b6698c0d64de911dd849"}, + {file = "mypy-1.17.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa6ffadfbe6994d724c5a1bb6123a7d27dd68fc9c059561cd33b664a79578e14"}, + {file = "mypy-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:9a2b7d9180aed171f033c9f2fc6c204c1245cf60b0cb61cf2e7acc24eea78e0a"}, + {file = "mypy-1.17.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:15a83369400454c41ed3a118e0cc58bd8123921a602f385cb6d6ea5df050c733"}, + {file = "mypy-1.17.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:55b918670f692fc9fba55c3298d8a3beae295c5cded0a55dccdc5bbead814acd"}, + {file = "mypy-1.17.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:62761474061feef6f720149d7ba876122007ddc64adff5ba6f374fda35a018a0"}, + {file = "mypy-1.17.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c49562d3d908fd49ed0938e5423daed8d407774a479b595b143a3d7f87cdae6a"}, + {file = "mypy-1.17.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:397fba5d7616a5bc60b45c7ed204717eaddc38f826e3645402c426057ead9a91"}, + {file = "mypy-1.17.1-cp314-cp314-win_amd64.whl", hash = "sha256:9d6b20b97d373f41617bd0708fd46aa656059af57f2ef72aa8c7d6a2b73b74ed"}, + {file = "mypy-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5d1092694f166a7e56c805caaf794e0585cabdbf1df36911c414e4e9abb62ae9"}, + {file = "mypy-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:79d44f9bfb004941ebb0abe8eff6504223a9c1ac51ef967d1263c6572bbebc99"}, + {file = "mypy-1.17.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b01586eed696ec905e61bd2568f48740f7ac4a45b3a468e6423a03d3788a51a8"}, + {file = "mypy-1.17.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43808d9476c36b927fbcd0b0255ce75efe1b68a080154a38ae68a7e62de8f0f8"}, + {file = "mypy-1.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:feb8cc32d319edd5859da2cc084493b3e2ce5e49a946377663cc90f6c15fb259"}, + {file = "mypy-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d7598cf74c3e16539d4e2f0b8d8c318e00041553d83d4861f87c7a72e95ac24d"}, + {file = "mypy-1.17.1-py3-none-any.whl", hash = "sha256:a9f52c0351c21fe24c21d8c0eb1f62967b262d6729393397b6f443c3b773c3b9"}, + {file = "mypy-1.17.1.tar.gz", hash = "sha256:25e01ec741ab5bb3eec8ba9cdb0f769230368a22c959c4937360efb89b7e9f01"}, ] [package.dependencies] @@ -1994,152 +742,10 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505" }, - { file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558" }, -] - -[[package]] -name = "nbclient" -version = "0.10.2" -description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." -optional = false -python-versions = ">=3.9.0" -groups = ["dev"] -files = [ - { file = "nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d" }, - { file = "nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193" }, -] - -[package.dependencies] -jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -nbformat = ">=5.1" -traitlets = ">=5.4" - -[package.extras] -dev = ["pre-commit"] -docs = ["autodoc-traits", "flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "mock", "moto", "myst-parser", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling", "testpath", "xmltodict"] -test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] - -[[package]] -name = "nbconvert" -version = "7.16.6" -description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b" }, - { file = "nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582" }, -] - -[package.dependencies] -beautifulsoup4 = "*" -bleach = { version = "!=5.0.0", extras = ["css"] } -defusedxml = "*" -jinja2 = ">=3.0" -jupyter-core = ">=4.7" -jupyterlab-pygments = "*" -markupsafe = ">=2.0" -mistune = ">=2.0.3,<4" -nbclient = ">=0.5.0" -nbformat = ">=5.7" -packaging = "*" -pandocfilters = ">=1.4.1" -pygments = ">=2.4.1" -traitlets = ">=5.1" - -[package.extras] -all = ["flaky", "ipykernel", "ipython", "ipywidgets (>=7.5)", "myst-parser", "nbsphinx (>=0.2.12)", "playwright", "pydata-sphinx-theme", "pyqtwebengine (>=5.15)", "pytest (>=7)", "sphinx (==5.0.2)", "sphinxcontrib-spelling", "tornado (>=6.1)"] -docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"] -qtpdf = ["pyqtwebengine (>=5.15)"] -qtpng = ["pyqtwebengine (>=5.15)"] -serve = ["tornado (>=6.1)"] -test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest (>=7)"] -webpdf = ["playwright"] - -[[package]] -name = "nbformat" -version = "5.10.4" -description = "The Jupyter Notebook format" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, - {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, -] - -[package.dependencies] -fastjsonschema = ">=2.15" -jsonschema = ">=2.6" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -traitlets = ">=5.1" - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["pep440", "pre-commit", "pytest", "testpath"] - -[[package]] -name = "nest-asyncio" -version = "1.6.0" -description = "Patch asyncio to allow nested event loops" -optional = false -python-versions = ">=3.5" -groups = ["dev"] -files = [ - {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, - {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, -] - -[[package]] -name = "netcdf4" -version = "1.7.2" -description = "Provides an object-oriented python interface to the netCDF version 4 library" -optional = false -python-versions = ">=3.8" -groups = ["main"] -files = [ - {file = "netCDF4-1.7.2-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:5e9b485e3bd9294d25ff7dc9addefce42b3d23c1ee7e3627605277d159819392"}, - {file = "netCDF4-1.7.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:118b476fd00d7e3ab9aa7771186d547da645ae3b49c0c7bdab866793ebf22f07"}, - {file = "netCDF4-1.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abe5b1837ff209185ecfe50bd71884c866b3ee69691051833e410e57f177e059"}, - {file = "netCDF4-1.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28021c7e886e5bccf9a8ce504c032d1d7f98d86f67495fb7cf2c9564eba04510"}, - {file = "netCDF4-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:7460b638e41c8ce4179d082a81cb6456f0ce083d4d959f4d9e87a95cd86f64cb"}, - {file = "netCDF4-1.7.2-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:09d61c2ddb6011afb51e77ea0f25cd0bdc28887fb426ffbbc661d920f20c9749"}, - {file = "netCDF4-1.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:fd2a16dbddeb8fa7cf48c37bfc1967290332f2862bb82f984eec2007bb120aeb"}, - {file = "netCDF4-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f54f5d39ffbcf1726a1e6fd90cb5fa74277ecea739a5fa0f424636d71beafe24"}, - {file = "netCDF4-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:902aa50d70f49d002d896212a171d344c38f7b8ca520837c56c922ac1535c4a3"}, - {file = "netCDF4-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3291f9ad0c98c49a4dd16aefad1a9abd3a1b884171db6c81bdcee94671cfabe3"}, - {file = "netCDF4-1.7.2-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e73e3baa0b74afc414e53ff5095748fdbec7fb346eda351e567c23f2f0d247f1"}, - {file = "netCDF4-1.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a51da09258b31776f474c1d47e484fc7214914cdc59edf4cee789ba632184591"}, - {file = "netCDF4-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb95b11804fe051897d1f2044b05d82a1847bc2549631cdd2f655dde7de77a9c"}, - {file = "netCDF4-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d8a848373723f41ef662590b4f5e1832227501c9fd4513e8ad8da58c269977"}, - {file = "netCDF4-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:568ea369e00b581302d77fc5fd0b8f78e520c7e08d0b5af5219ba51f3f1cd694"}, - {file = "netCDF4-1.7.2-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:205a5f1de3ddb993c7c97fb204a923a22408cc2e5facf08d75a8eb89b3e7e1a8"}, - {file = "netCDF4-1.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:96653fc75057df196010818367c63ba6d7e9af603df0a7fe43fcdad3fe0e9e56"}, - {file = "netCDF4-1.7.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30d20e56b9ba2c48884eb89c91b63e6c0612b4927881707e34402719153ef17f"}, - {file = "netCDF4-1.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d6bfd38ba0bde04d56f06c1554714a2ea9dab75811c89450dc3ec57a9d36b80"}, - {file = "netCDF4-1.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:5c5fbee6134ee1246c397e1508e5297d825aa19221fdf3fa8dc9727ad824d7a5"}, - {file = "netCDF4-1.7.2-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:6bf402c2c7c063474576e5cf89af877d0b0cd097d9316d5bc4fcb22b62f12567"}, - {file = "netCDF4-1.7.2-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:5bdf3b34e6fd4210e34fdc5d1a669a22c4863d96f8a20a3928366acae7b3cbbb"}, - {file = "netCDF4-1.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:657774404b9f78a5e4d26506ac9bfe106e4a37238282a70803cc7ce679c5a6cc"}, - {file = "netCDF4-1.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e896d92f01fbf365e33e2513d5a8c4cfe16ff406aae9b6034e5ba1538c8c7a8"}, - {file = "netCDF4-1.7.2-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:eb87c08d1700fe67c301898cf5ba3a3e1f8f2fbb417fcd0e2ac784846b60b058"}, - {file = "netCDF4-1.7.2-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:59b403032774c723ee749d7f2135be311bad7d00d1db284bebfab58b9d5cdb92"}, - {file = "netCDF4-1.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:572f71459ef4b30e8554dcc4e1e6f55de515acc82a50968b48fe622244a64548"}, - {file = "netCDF4-1.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f77e72281acc5f331f82271e5f7f014d46f5ca9bcaa5aafe3e46d66cee21320"}, - {file = "netCDF4-1.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:d0fa7a9674fae8ae4877e813173c3ff7a6beee166b8730bdc847f517b282ed31"}, - {file = "netcdf4-1.7.2.tar.gz", hash = "sha256:a4c6375540b19989896136943abb6d44850ff6f1fa7d3f063253b1ad3f8b7fce"}, + {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, + {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, ] -[package.dependencies] -certifi = "*" -cftime = "*" -numpy = "*" - -[package.extras] -tests = ["Cython", "packaging", "pytest"] - [[package]] name = "nodeenv" version = "1.9.1" @@ -2152,171 +758,16 @@ files = [ {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] -[[package]] -name = "notebook" -version = "7.4.4" -description = "Jupyter Notebook - A web-based notebook environment for interactive computing" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "notebook-7.4.4-py3-none-any.whl", hash = "sha256:32840f7f777b6bff79bb101159336e9b332bdbfba1495b8739e34d1d65cbc1c0" }, - { file = "notebook-7.4.4.tar.gz", hash = "sha256:392fd501e266f2fb3466c6fcd3331163a2184968cb5c5accf90292e01dfe528c" }, -] - -[package.dependencies] -jupyter-server = ">=2.4.0,<3" -jupyterlab = ">=4.4.4,<4.5" -jupyterlab-server = ">=2.27.1,<3" -notebook-shim = ">=0.2,<0.3" -tornado = ">=6.2.0" - -[package.extras] -dev = ["hatch", "pre-commit"] -docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["importlib-resources (>=5.0) ; python_version < \"3.10\"", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] - -[[package]] -name = "notebook-shim" -version = "0.2.4" -description = "A shim layer for notebook traits and config" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, - {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, -] - -[package.dependencies] -jupyter-server = ">=1.8,<3" - -[package.extras] -test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"] - -[[package]] -name = "numcodecs" -version = "0.16.1" -description = "A Python package providing buffer compression and transformation codecs for use in data storage and communication applications." -optional = false -python-versions = ">=3.11" -groups = ["main"] -files = [ - { file = "numcodecs-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5348a25aefbce37ea7c00c3363d36176155233c95597e5905a932e9620df960d" }, - { file = "numcodecs-0.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2058b0a985470809c720d2457758b61e6c9495a49d5f20dfac9b5ebabd8848eb" }, - { file = "numcodecs-0.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b216b6d7bc207b85d41fddbc25b09fd00d76e265454db6e3fb09d5da0216397" }, - { file = "numcodecs-0.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2308d56c4f84a5b942f8668b4adedd3d9cdd6a22e6e6e20768ec356c77050f38" }, - { file = "numcodecs-0.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:acd8d68b4b815e62cb91e6064a53dac51ee99849350784ee16dd52cdbb4bc70f" }, - { file = "numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122" }, - { file = "numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458" }, - { file = "numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40" }, - { file = "numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609" }, - { file = "numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df" }, - { file = "numcodecs-0.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2ad8ee940315f59188accfc3f2d39726a4ca0d76b49bf8d0018e121f01c49028" }, - { file = "numcodecs-0.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:179ca7bf3525a0f7379df7767d87dd495253de44597cb7e511198b28b09da633" }, - { file = "numcodecs-0.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e2babbb50bf348ae982818d5560af330eab0dcd925fb0e49509785ad57d11db" }, - { file = "numcodecs-0.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4b29d8d3284b72bfad4fb83d672a17f497ae86ee1ef8087bac7222b620d3d91" }, - { file = "numcodecs-0.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:06489635f43e1a959aea73cb830d78cf3adb07ac5f34daccb92091e4d9ac6b07" }, - { file = "numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1" }, -] - -[package.dependencies] -crc32c = { version = ">=2.7", optional = true, markers = "extra == \"crc32c\"" } -numpy = ">=1.24" -typing_extensions = "*" - -[package.extras] -crc32c = ["crc32c (>=2.7)"] -docs = ["numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-issues"] -msgpack = ["msgpack"] -pcodec = ["pcodec (>=0.3,<0.4)"] -test = ["coverage", "pytest", "pytest-cov"] -test-extras = ["importlib_metadata"] -zfpy = ["zfpy (>=1.0.0)"] - -[[package]] -name = "numpy" -version = "2.3.1" -description = "Fundamental package for array computing in Python" -optional = false -python-versions = ">=3.11" -groups = ["main"] -files = [ - { file = "numpy-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6ea9e48336a402551f52cd8f593343699003d2353daa4b72ce8d34f66b722070" }, - { file = "numpy-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ccb7336eaf0e77c1635b232c141846493a588ec9ea777a7c24d7166bb8533ae" }, - { file = "numpy-2.3.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0bb3a4a61e1d327e035275d2a993c96fa786e4913aa089843e6a2d9dd205c66a" }, - { file = "numpy-2.3.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:e344eb79dab01f1e838ebb67aab09965fb271d6da6b00adda26328ac27d4a66e" }, - { file = "numpy-2.3.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:467db865b392168ceb1ef1ffa6f5a86e62468c43e0cfb4ab6da667ede10e58db" }, - { file = "numpy-2.3.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:afed2ce4a84f6b0fc6c1ce734ff368cbf5a5e24e8954a338f3bdffa0718adffb" }, - { file = "numpy-2.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0025048b3c1557a20bc80d06fdeb8cc7fc193721484cca82b2cfa072fec71a93" }, - { file = "numpy-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a5ee121b60aa509679b682819c602579e1df14a5b07fe95671c8849aad8f2115" }, - { file = "numpy-2.3.1-cp311-cp311-win32.whl", hash = "sha256:a8b740f5579ae4585831b3cf0e3b0425c667274f82a484866d2adf9570539369" }, - { file = "numpy-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:d4580adadc53311b163444f877e0789f1c8861e2698f6b2a4ca852fda154f3ff" }, - { file = "numpy-2.3.1-cp311-cp311-win_arm64.whl", hash = "sha256:ec0bdafa906f95adc9a0c6f26a4871fa753f25caaa0e032578a30457bff0af6a" }, - { file = "numpy-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2959d8f268f3d8ee402b04a9ec4bb7604555aeacf78b360dc4ec27f1d508177d" }, - { file = "numpy-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:762e0c0c6b56bdedfef9a8e1d4538556438288c4276901ea008ae44091954e29" }, - { file = "numpy-2.3.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:867ef172a0976aaa1f1d1b63cf2090de8b636a7674607d514505fb7276ab08fc" }, - { file = "numpy-2.3.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:4e602e1b8682c2b833af89ba641ad4176053aaa50f5cacda1a27004352dde943" }, - { file = "numpy-2.3.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8e333040d069eba1652fb08962ec5b76af7f2c7bce1df7e1418c8055cf776f25" }, - { file = "numpy-2.3.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e7cbf5a5eafd8d230a3ce356d892512185230e4781a361229bd902ff403bc660" }, - { file = "numpy-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f1b8f26d1086835f442286c1d9b64bb3974b0b1e41bb105358fd07d20872952" }, - { file = "numpy-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ee8340cb48c9b7a5899d1149eece41ca535513a9698098edbade2a8e7a84da77" }, - { file = "numpy-2.3.1-cp312-cp312-win32.whl", hash = "sha256:e772dda20a6002ef7061713dc1e2585bc1b534e7909b2030b5a46dae8ff077ab" }, - { file = "numpy-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:cfecc7822543abdea6de08758091da655ea2210b8ffa1faf116b940693d3df76" }, - { file = "numpy-2.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:7be91b2239af2658653c5bb6f1b8bccafaf08226a258caf78ce44710a0160d30" }, - { file = "numpy-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25a1992b0a3fdcdaec9f552ef10d8103186f5397ab45e2d25f8ac51b1a6b97e8" }, - { file = "numpy-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7dea630156d39b02a63c18f508f85010230409db5b2927ba59c8ba4ab3e8272e" }, - { file = "numpy-2.3.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bada6058dd886061f10ea15f230ccf7dfff40572e99fef440a4a857c8728c9c0" }, - { file = "numpy-2.3.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:a894f3816eb17b29e4783e5873f92faf55b710c2519e5c351767c51f79d8526d" }, - { file = "numpy-2.3.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:18703df6c4a4fee55fd3d6e5a253d01c5d33a295409b03fda0c86b3ca2ff41a1" }, - { file = "numpy-2.3.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5902660491bd7a48b2ec16c23ccb9124b8abfd9583c5fdfa123fe6b421e03de1" }, - { file = "numpy-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:36890eb9e9d2081137bd78d29050ba63b8dab95dff7912eadf1185e80074b2a0" }, - { file = "numpy-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a780033466159c2270531e2b8ac063704592a0bc62ec4a1b991c7c40705eb0e8" }, - { file = "numpy-2.3.1-cp313-cp313-win32.whl", hash = "sha256:39bff12c076812595c3a306f22bfe49919c5513aa1e0e70fac756a0be7c2a2b8" }, - { file = "numpy-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d5ee6eec45f08ce507a6570e06f2f879b374a552087a4179ea7838edbcbfa42" }, - { file = "numpy-2.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:0c4d9e0a8368db90f93bd192bfa771ace63137c3488d198ee21dfb8e7771916e" }, - { file = "numpy-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b0b5397374f32ec0649dd98c652a1798192042e715df918c20672c62fb52d4b8" }, - { file = "numpy-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c5bdf2015ccfcee8253fb8be695516ac4457c743473a43290fd36eba6a1777eb" }, - { file = "numpy-2.3.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d70f20df7f08b90a2062c1f07737dd340adccf2068d0f1b9b3d56e2038979fee" }, - { file = "numpy-2.3.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:2fb86b7e58f9ac50e1e9dd1290154107e47d1eef23a0ae9145ded06ea606f992" }, - { file = "numpy-2.3.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:23ab05b2d241f76cb883ce8b9a93a680752fbfcbd51c50eff0b88b979e471d8c" }, - { file = "numpy-2.3.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ce2ce9e5de4703a673e705183f64fd5da5bf36e7beddcb63a25ee2286e71ca48" }, - { file = "numpy-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c4913079974eeb5c16ccfd2b1f09354b8fed7e0d6f2cab933104a09a6419b1ee" }, - { file = "numpy-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:010ce9b4f00d5c036053ca684c77441f2f2c934fd23bee058b4d6f196efd8280" }, - { file = "numpy-2.3.1-cp313-cp313t-win32.whl", hash = "sha256:6269b9edfe32912584ec496d91b00b6d34282ca1d07eb10e82dfc780907d6c2e" }, - { file = "numpy-2.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2a809637460e88a113e186e87f228d74ae2852a2e0c44de275263376f17b5bdc" }, - { file = "numpy-2.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:eccb9a159db9aed60800187bc47a6d3451553f0e1b08b068d8b277ddfbb9b244" }, - { file = "numpy-2.3.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ad506d4b09e684394c42c966ec1527f6ebc25da7f4da4b1b056606ffe446b8a3" }, - { file = "numpy-2.3.1-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:ebb8603d45bc86bbd5edb0d63e52c5fd9e7945d3a503b77e486bd88dde67a19b" }, - { file = "numpy-2.3.1-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:15aa4c392ac396e2ad3d0a2680c0f0dee420f9fed14eef09bdb9450ee6dcb7b7" }, - { file = "numpy-2.3.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c6e0bf9d1a2f50d2b65a7cf56db37c095af17b59f6c132396f7c6d5dd76484df" }, - { file = "numpy-2.3.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:eabd7e8740d494ce2b4ea0ff05afa1b7b291e978c0ae075487c51e8bd93c0c68" }, - { file = "numpy-2.3.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:e610832418a2bc09d974cc9fecebfa51e9532d6190223bc5ef6a7402ebf3b5cb" }, - { file = "numpy-2.3.1.tar.gz", hash = "sha256:1ec9ae20a4226da374362cca3c62cd753faf2f951440b0e3b98e93c235441d2b" }, -] - -[[package]] -name = "overrides" -version = "7.7.0" -description = "A decorator to automatically detect mismatch when overriding a method." -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, - {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, -] - [[package]] name = "packaging" version = "25.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["dev"] files = [ - { file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484" }, - { file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f" }, + {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, + {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, ] [[package]] @@ -2327,144 +778,14 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - { file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591" }, - { file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945" }, + {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, + {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, ] [package.extras] dev = ["pytest", "tox"] lint = ["black"] -[[package]] -name = "pandas" -version = "2.3.1" -description = "Powerful data structures for data analysis, time series, and statistics" -optional = false -python-versions = ">=3.9" -groups = ["main"] -files = [ - { file = "pandas-2.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:22c2e866f7209ebc3a8f08d75766566aae02bcc91d196935a1d9e59c7b990ac9" }, - { file = "pandas-2.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3583d348546201aff730c8c47e49bc159833f971c2899d6097bce68b9112a4f1" }, - { file = "pandas-2.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f951fbb702dacd390561e0ea45cdd8ecfa7fb56935eb3dd78e306c19104b9b0" }, - { file = "pandas-2.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd05b72ec02ebfb993569b4931b2e16fbb4d6ad6ce80224a3ee838387d83a191" }, - { file = "pandas-2.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1b916a627919a247d865aed068eb65eb91a344b13f5b57ab9f610b7716c92de1" }, - { file = "pandas-2.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fe67dc676818c186d5a3d5425250e40f179c2a89145df477dd82945eaea89e97" }, - { file = "pandas-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:2eb789ae0274672acbd3c575b0598d213345660120a257b47b5dafdc618aec83" }, - { file = "pandas-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2b0540963d83431f5ce8870ea02a7430adca100cec8a050f0811f8e31035541b" }, - { file = "pandas-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fe7317f578c6a153912bd2292f02e40c1d8f253e93c599e82620c7f69755c74f" }, - { file = "pandas-2.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6723a27ad7b244c0c79d8e7007092d7c8f0f11305770e2f4cd778b3ad5f9f85" }, - { file = "pandas-2.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3462c3735fe19f2638f2c3a40bd94ec2dc5ba13abbb032dd2fa1f540a075509d" }, - { file = "pandas-2.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:98bcc8b5bf7afed22cc753a28bc4d9e26e078e777066bc53fac7904ddef9a678" }, - { file = "pandas-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4d544806b485ddf29e52d75b1f559142514e60ef58a832f74fb38e48d757b299" }, - { file = "pandas-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:b3cd4273d3cb3707b6fffd217204c52ed92859533e31dc03b7c5008aa933aaab" }, - { file = "pandas-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:689968e841136f9e542020698ee1c4fbe9caa2ed2213ae2388dc7b81721510d3" }, - { file = "pandas-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:025e92411c16cbe5bb2a4abc99732a6b132f439b8aab23a59fa593eb00704232" }, - { file = "pandas-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b7ff55f31c4fcb3e316e8f7fa194566b286d6ac430afec0d461163312c5841e" }, - { file = "pandas-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dcb79bf373a47d2a40cf7232928eb7540155abbc460925c2c96d2d30b006eb4" }, - { file = "pandas-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:56a342b231e8862c96bdb6ab97170e203ce511f4d0429589c8ede1ee8ece48b8" }, - { file = "pandas-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ca7ed14832bce68baef331f4d7f294411bed8efd032f8109d690df45e00c4679" }, - { file = "pandas-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:ac942bfd0aca577bef61f2bc8da8147c4ef6879965ef883d8e8d5d2dc3e744b8" }, - { file = "pandas-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9026bd4a80108fac2239294a15ef9003c4ee191a0f64b90f170b40cfb7cf2d22" }, - { file = "pandas-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6de8547d4fdb12421e2d047a2c446c623ff4c11f47fddb6b9169eb98ffba485a" }, - { file = "pandas-2.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:782647ddc63c83133b2506912cc6b108140a38a37292102aaa19c81c83db2928" }, - { file = "pandas-2.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba6aff74075311fc88504b1db890187a3cd0f887a5b10f5525f8e2ef55bfdb9" }, - { file = "pandas-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e5635178b387bd2ba4ac040f82bc2ef6e6b500483975c4ebacd34bec945fda12" }, - { file = "pandas-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6f3bf5ec947526106399a9e1d26d40ee2b259c66422efdf4de63c848492d91bb" }, - { file = "pandas-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:1c78cf43c8fde236342a1cb2c34bcff89564a7bfed7e474ed2fffa6aed03a956" }, - { file = "pandas-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8dfc17328e8da77be3cf9f47509e5637ba8f137148ed0e9b5241e1baf526e20a" }, - { file = "pandas-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ec6c851509364c59a5344458ab935e6451b31b818be467eb24b0fe89bd05b6b9" }, - { file = "pandas-2.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:911580460fc4884d9b05254b38a6bfadddfcc6aaef856fb5859e7ca202e45275" }, - { file = "pandas-2.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f4d6feeba91744872a600e6edbbd5b033005b431d5ae8379abee5bcfa479fab" }, - { file = "pandas-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fe37e757f462d31a9cd7580236a82f353f5713a80e059a29753cf938c6775d96" }, - { file = "pandas-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5db9637dbc24b631ff3707269ae4559bce4b7fd75c1c4d7e13f40edc42df4444" }, - { file = "pandas-2.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4645f770f98d656f11c69e81aeb21c6fca076a44bed3dcbb9396a4311bc7f6d8" }, - { file = "pandas-2.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:342e59589cc454aaff7484d75b816a433350b3d7964d7847327edda4d532a2e3" }, - { file = "pandas-2.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d12f618d80379fde6af007f65f0c25bd3e40251dbd1636480dfffce2cf1e6da" }, - { file = "pandas-2.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd71c47a911da120d72ef173aeac0bf5241423f9bfea57320110a978457e069e" }, - { file = "pandas-2.3.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:09e3b1587f0f3b0913e21e8b32c3119174551deb4a4eba4a89bc7377947977e7" }, - { file = "pandas-2.3.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2323294c73ed50f612f67e2bf3ae45aea04dce5690778e08a09391897f35ff88" }, - { file = "pandas-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:b4b0de34dc8499c2db34000ef8baad684cfa4cbd836ecee05f323ebfba348c7d" }, - { file = "pandas-2.3.1.tar.gz", hash = "sha256:0a95b9ac964fe83ce317827f80304d37388ea77616b1425f0ae41c9d2d0d7bb2" }, -] - -[package.dependencies] -numpy = {version = ">=1.26.0", markers = "python_version >= \"3.12\""} -python-dateutil = ">=2.8.2" -pytz = ">=2020.1" -tzdata = ">=2022.7" - -[package.extras] -all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] -aws = ["s3fs (>=2022.11.0)"] -clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] -compression = ["zstandard (>=0.19.0)"] -computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] -consortium-standard = ["dataframe-api-compat (>=0.1.7)"] -excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] -feather = ["pyarrow (>=10.0.1)"] -fss = ["fsspec (>=2022.11.0)"] -gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] -hdf5 = ["tables (>=3.8.0)"] -html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] -mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] -output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] -parquet = ["pyarrow (>=10.0.1)"] -performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] -plot = ["matplotlib (>=3.6.3)"] -postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] -pyarrow = ["pyarrow (>=10.0.1)"] -spss = ["pyreadstat (>=1.2.0)"] -sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] -test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] -xml = ["lxml (>=4.9.2)"] - -[[package]] -name = "pandocfilters" -version = "1.5.1" -description = "Utilities for writing pandoc filters in python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -groups = ["dev"] -files = [ - {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, - {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, -] - -[[package]] -name = "parso" -version = "0.8.4" -description = "A Python Parser" -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, - {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, -] - -[package.extras] -qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["docopt", "pytest"] - -[[package]] -name = "partd" -version = "1.4.2" -description = "Appendable key-value storage" -optional = false -python-versions = ">=3.9" -groups = ["main"] -files = [ - {file = "partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f"}, - {file = "partd-1.4.2.tar.gz", hash = "sha256:d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c"}, -] - -[package.dependencies] -locket = "*" -toolz = "*" - -[package.extras] -complete = ["blosc", "numpy (>=1.20.0)", "pandas (>=1.3)", "pyzmq"] - [[package]] name = "pathspec" version = "0.12.1" @@ -2477,22 +798,6 @@ files = [ {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] -[[package]] -name = "pexpect" -version = "4.9.0" -description = "Pexpect allows easy control of interactive console applications." -optional = false -python-versions = "*" -groups = ["dev"] -markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" -files = [ - {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, - {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, -] - -[package.dependencies] -ptyprocess = ">=0.5" - [[package]] name = "platformdirs" version = "4.3.8" @@ -2501,8 +806,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4" }, - { file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc" }, + {file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4"}, + {file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc"}, ] [package.extras] @@ -2518,24 +823,36 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746" }, - { file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3" }, + {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, + {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, ] [package.extras] dev = ["pre-commit", "tox"] testing = ["coverage", "pytest", "pytest-benchmark"] +[[package]] +name = "poetry-core" +version = "2.1.3" +description = "Poetry PEP 517 Build Backend" +optional = false +python-versions = "<4.0,>=3.9" +groups = ["dev"] +files = [ + {file = "poetry_core-2.1.3-py3-none-any.whl", hash = "sha256:2c704f05016698a54ca1d327f46ce2426d72eaca6ff614132c8477c292266771"}, + {file = "poetry_core-2.1.3.tar.gz", hash = "sha256:0522a015477ed622c89aad56a477a57813cace0c8e7ff2a2906b7ef4a2e296a4"}, +] + [[package]] name = "pre-commit" -version = "4.2.0" +version = "4.3.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd" }, - { file = "pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146" }, + {file = "pre_commit-4.3.0-py2.py3-none-any.whl", hash = "sha256:2b0747ad7e6e967169136edffee14c16e148a778a54e4f967921aa1ebf2308d8"}, + {file = "pre_commit-4.3.0.tar.gz", hash = "sha256:499fe450cc9d42e9d58e606262795ecb64dd05438943c62b66f6a8673da30b16"}, ] [package.dependencies] @@ -2545,117 +862,23 @@ nodeenv = ">=0.11.1" pyyaml = ">=5.1" virtualenv = ">=20.10.0" -[[package]] -name = "prometheus-client" -version = "0.22.1" -description = "Python client for the Prometheus monitoring system." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "prometheus_client-0.22.1-py3-none-any.whl", hash = "sha256:cca895342e308174341b2cbf99a56bef291fbc0ef7b9e5412a0f26d653ba7094" }, - { file = "prometheus_client-0.22.1.tar.gz", hash = "sha256:190f1331e783cf21eb60bca559354e0a4d4378facecf78f5428c39b675d20d28" }, -] - -[package.extras] -twisted = ["twisted"] - -[[package]] -name = "prompt-toolkit" -version = "3.0.51" -description = "Library for building powerful interactive command lines in Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07" }, - { file = "prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed" }, -] - -[package.dependencies] -wcwidth = "*" - -[[package]] -name = "psutil" -version = "7.0.0" -description = "Cross-platform lib for process and system monitoring in Python. NOTE: the syntax of this script MUST be kept compatible with Python 2.7." -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - { file = "psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25" }, - { file = "psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da" }, - { file = "psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91" }, - { file = "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" }, - { file = "psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993" }, - { file = "psutil-7.0.0-cp36-cp36m-win32.whl", hash = "sha256:84df4eb63e16849689f76b1ffcb36db7b8de703d1bc1fe41773db487621b6c17" }, - { file = "psutil-7.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1e744154a6580bc968a0195fd25e80432d3afec619daf145b9e5ba16cc1d688e" }, - { file = "psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99" }, - { file = "psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553" }, - { file = "psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456" }, -] - -[package.extras] -dev = ["abi3audit", "black (==24.10.0)", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest", "pytest-cov", "pytest-xdist", "requests", "rstcheck", "ruff", "setuptools", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "vulture", "wheel"] -test = ["pytest", "pytest-xdist", "setuptools"] - -[[package]] -name = "ptyprocess" -version = "0.7.0" -description = "Run a subprocess in a pseudo terminal" -optional = false -python-versions = "*" -groups = ["dev"] -markers = "os_name != \"nt\" or sys_platform != \"win32\" and sys_platform != \"emscripten\"" -files = [ - {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, - {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, -] - -[[package]] -name = "pure-eval" -version = "0.2.3" -description = "Safely evaluate AST nodes without side effects" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, - {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, -] - -[package.extras] -tests = ["pytest"] - -[[package]] -name = "pycparser" -version = "2.22" -description = "C parser in Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, - {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, -] - [[package]] name = "pydantic" -version = "2.11.7" +version = "2.12.3" description = "Data validation using Python type hints" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - { file = "pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b" }, - { file = "pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db" }, + {file = "pydantic-2.12.3-py3-none-any.whl", hash = "sha256:6986454a854bc3bc6e5443e1369e06a3a456af9d339eda45510f517d9ea5c6bf"}, + {file = "pydantic-2.12.3.tar.gz", hash = "sha256:1da1c82b0fc140bb0103bc1441ffe062154c8d38491189751ee00fd8ca65ce74"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.33.2" -typing-extensions = ">=4.12.2" -typing-inspection = ">=0.4.0" +pydantic-core = "2.41.4" +typing-extensions = ">=4.14.1" +typing-inspection = ">=0.4.2" [package.extras] email = ["email-validator (>=2.0.0)"] @@ -2663,115 +886,133 @@ timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows [[package]] name = "pydantic-core" -version = "2.33.2" +version = "2.41.4" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - { file = "pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8" }, - { file = "pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d53b22f2032c42eaaf025f7c40c2e3b94568ae077a606f006d206a463bc69572" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0405262705a123b7ce9f0b92f123334d67b70fd1f20a9372b907ce1080c7ba02" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b25d91e288e2c4e0662b8038a28c6a07eaac3e196cfc4ff69de4ea3db992a1b" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bdfe4b3789761f3bcb4b1ddf33355a71079858958e3a552f16d5af19768fef2" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:efec8db3266b76ef9607c2c4c419bdb06bf335ae433b80816089ea7585816f6a" }, - { file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:031c57d67ca86902726e0fae2214ce6770bbe2f710dc33063187a68744a5ecac" }, - { file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:f8de619080e944347f5f20de29a975c2d815d9ddd8be9b9b7268e2e3ef68605a" }, - { file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73662edf539e72a9440129f231ed3757faab89630d291b784ca99237fb94db2b" }, - { file = "pydantic_core-2.33.2-cp310-cp310-win32.whl", hash = "sha256:0a39979dcbb70998b0e505fb1556a1d550a0781463ce84ebf915ba293ccb7e22" }, - { file = "pydantic_core-2.33.2-cp310-cp310-win_amd64.whl", hash = "sha256:b0379a2b24882fef529ec3b4987cb5d003b9cda32256024e6fe1586ac45fc640" }, - { file = "pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7" }, - { file = "pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e" }, - { file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d" }, - { file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30" }, - { file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf" }, - { file = "pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51" }, - { file = "pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab" }, - { file = "pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65" }, - { file = "pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc" }, - { file = "pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b" }, - { file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1" }, - { file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6" }, - { file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea" }, - { file = "pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290" }, - { file = "pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2" }, - { file = "pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab" }, - { file = "pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f" }, - { file = "pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56" }, - { file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5" }, - { file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e" }, - { file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162" }, - { file = "pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849" }, - { file = "pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9" }, - { file = "pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9" }, - { file = "pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac" }, - { file = "pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5" }, - { file = "pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9" }, - { file = "pydantic_core-2.33.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a2b911a5b90e0374d03813674bf0a5fbbb7741570dcd4b4e85a2e48d17def29d" }, - { file = "pydantic_core-2.33.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6fa6dfc3e4d1f734a34710f391ae822e0a8eb8559a85c6979e14e65ee6ba2954" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c54c939ee22dc8e2d545da79fc5381f1c020d6d3141d3bd747eab59164dc89fb" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53a57d2ed685940a504248187d5685e49eb5eef0f696853647bf37c418c538f7" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09fb9dd6571aacd023fe6aaca316bd01cf60ab27240d7eb39ebd66a3a15293b4" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e6116757f7959a712db11f3e9c0a99ade00a5bbedae83cb801985aa154f071b" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d55ab81c57b8ff8548c3e4947f119551253f4e3787a7bbc0b6b3ca47498a9d3" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c20c462aa4434b33a2661701b861604913f912254e441ab8d78d30485736115a" }, - { file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44857c3227d3fb5e753d5fe4a3420d6376fa594b07b621e220cd93703fe21782" }, - { file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:eb9b459ca4df0e5c87deb59d37377461a538852765293f9e6ee834f0435a93b9" }, - { file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9fcd347d2cc5c23b06de6d3b7b8275be558a0c90549495c699e379a80bf8379e" }, - { file = "pydantic_core-2.33.2-cp39-cp39-win32.whl", hash = "sha256:83aa99b1285bc8f038941ddf598501a86f1536789740991d7d8756e34f1e74d9" }, - { file = "pydantic_core-2.33.2-cp39-cp39-win_amd64.whl", hash = "sha256:f481959862f57f29601ccced557cc2e817bce7533ab8e01a797a48b49c9692b3" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c4aa4e82353f65e548c476b37e64189783aa5384903bfea4f41580f255fddfa" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d946c8bf0d5c24bf4fe333af284c59a19358aa3ec18cb3dc4370080da1e8ad29" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87b31b6846e361ef83fedb187bb5b4372d0da3f7e28d85415efa92d6125d6e6d" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa9d91b338f2df0508606f7009fde642391425189bba6d8c653afd80fd6bb64e" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2058a32994f1fde4ca0480ab9d1e75a0e8c87c22b53a3ae66554f9af78f2fe8c" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:0e03262ab796d986f978f79c943fc5f620381be7287148b8010b4097f79a39ec" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1a8695a8d00c73e50bff9dfda4d540b7dee29ff9b8053e38380426a85ef10052" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fa754d1850735a0b0e03bcffd9d4b4343eb417e47196e4485d9cca326073a42c" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a11c8d26a50bfab49002947d3d237abe4d9e4b5bdc8846a63537b6488e197808" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:87acbfcf8e90ca885206e98359d7dca4bcbb35abdc0ff66672a293e1d7a19101" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7f92c15cd1e97d4b12acd1cc9004fa092578acfa57b67ad5e43a197175d01a64" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3f26877a748dc4251cfcfda9dfb5f13fcb034f5308388066bcfe9031b63ae7d" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac89aea9af8cd672fa7b510e7b8c33b0bba9a43186680550ccf23020f32d535" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:970919794d126ba8645f3837ab6046fb4e72bbc057b3709144066204c19a455d" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3eb3fe62804e8f859c49ed20a8451342de53ed764150cb14ca71357c765dc2a6" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:3abcd9392a36025e3bd55f9bd38d908bd17962cc49bc6da8e7e96285336e2bca" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3a1c81334778f9e3af2f8aeb7a960736e5cab1dfebfb26aabca09afd2906c039" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2807668ba86cb38c6817ad9bc66215ab8584d1d304030ce4f0887336f28a5e27" }, - { file = "pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc" }, -] - -[package.dependencies] -typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + {file = "pydantic_core-2.41.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2442d9a4d38f3411f22eb9dd0912b7cbf4b7d5b6c92c4173b75d3e1ccd84e36e"}, + {file = "pydantic_core-2.41.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:30a9876226dda131a741afeab2702e2d127209bde3c65a2b8133f428bc5d006b"}, + {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d55bbac04711e2980645af68b97d445cdbcce70e5216de444a6c4b6943ebcccd"}, + {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e1d778fb7849a42d0ee5927ab0f7453bf9f85eef8887a546ec87db5ddb178945"}, + {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b65077a4693a98b90ec5ad8f203ad65802a1b9b6d4a7e48066925a7e1606706"}, + {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:62637c769dee16eddb7686bf421be48dfc2fae93832c25e25bc7242e698361ba"}, + {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dfe3aa529c8f501babf6e502936b9e8d4698502b2cfab41e17a028d91b1ac7b"}, + {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ca2322da745bf2eeb581fc9ea3bbb31147702163ccbcbf12a3bb630e4bf05e1d"}, + {file = "pydantic_core-2.41.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e8cd3577c796be7231dcf80badcf2e0835a46665eaafd8ace124d886bab4d700"}, + {file = "pydantic_core-2.41.4-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:1cae8851e174c83633f0833e90636832857297900133705ee158cf79d40f03e6"}, + {file = "pydantic_core-2.41.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a26d950449aae348afe1ac8be5525a00ae4235309b729ad4d3399623125b43c9"}, + {file = "pydantic_core-2.41.4-cp310-cp310-win32.whl", hash = "sha256:0cf2a1f599efe57fa0051312774280ee0f650e11152325e41dfd3018ef2c1b57"}, + {file = "pydantic_core-2.41.4-cp310-cp310-win_amd64.whl", hash = "sha256:a8c2e340d7e454dc3340d3d2e8f23558ebe78c98aa8f68851b04dcb7bc37abdc"}, + {file = "pydantic_core-2.41.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:28ff11666443a1a8cf2a044d6a545ebffa8382b5f7973f22c36109205e65dc80"}, + {file = "pydantic_core-2.41.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:61760c3925d4633290292bad462e0f737b840508b4f722247d8729684f6539ae"}, + {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eae547b7315d055b0de2ec3965643b0ab82ad0106a7ffd29615ee9f266a02827"}, + {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef9ee5471edd58d1fcce1c80ffc8783a650e3e3a193fe90d52e43bb4d87bff1f"}, + {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:15dd504af121caaf2c95cb90c0ebf71603c53de98305621b94da0f967e572def"}, + {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3a926768ea49a8af4d36abd6a8968b8790f7f76dd7cbd5a4c180db2b4ac9a3a2"}, + {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6916b9b7d134bff5440098a4deb80e4cb623e68974a87883299de9124126c2a8"}, + {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5cf90535979089df02e6f17ffd076f07237efa55b7343d98760bde8743c4b265"}, + {file = "pydantic_core-2.41.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7533c76fa647fade2d7ec75ac5cc079ab3f34879626dae5689b27790a6cf5a5c"}, + {file = "pydantic_core-2.41.4-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:37e516bca9264cbf29612539801ca3cd5d1be465f940417b002905e6ed79d38a"}, + {file = "pydantic_core-2.41.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0c19cb355224037c83642429b8ce261ae108e1c5fbf5c028bac63c77b0f8646e"}, + {file = "pydantic_core-2.41.4-cp311-cp311-win32.whl", hash = "sha256:09c2a60e55b357284b5f31f5ab275ba9f7f70b7525e18a132ec1f9160b4f1f03"}, + {file = "pydantic_core-2.41.4-cp311-cp311-win_amd64.whl", hash = "sha256:711156b6afb5cb1cb7c14a2cc2c4a8b4c717b69046f13c6b332d8a0a8f41ca3e"}, + {file = "pydantic_core-2.41.4-cp311-cp311-win_arm64.whl", hash = "sha256:6cb9cf7e761f4f8a8589a45e49ed3c0d92d1d696a45a6feaee8c904b26efc2db"}, + {file = "pydantic_core-2.41.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ab06d77e053d660a6faaf04894446df7b0a7e7aba70c2797465a0a1af00fc887"}, + {file = "pydantic_core-2.41.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c53ff33e603a9c1179a9364b0a24694f183717b2e0da2b5ad43c316c956901b2"}, + {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:304c54176af2c143bd181d82e77c15c41cbacea8872a2225dd37e6544dce9999"}, + {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:025ba34a4cf4fb32f917d5d188ab5e702223d3ba603be4d8aca2f82bede432a4"}, + {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9f5f30c402ed58f90c70e12eff65547d3ab74685ffe8283c719e6bead8ef53f"}, + {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd96e5d15385d301733113bcaa324c8bcf111275b7675a9c6e88bfb19fc05e3b"}, + {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98f348cbb44fae6e9653c1055db7e29de67ea6a9ca03a5fa2c2e11a47cff0e47"}, + {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec22626a2d14620a83ca583c6f5a4080fa3155282718b6055c2ea48d3ef35970"}, + {file = "pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3a95d4590b1f1a43bf33ca6d647b990a88f4a3824a8c4572c708f0b45a5290ed"}, + {file = "pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:f9672ab4d398e1b602feadcffcdd3af44d5f5e6ddc15bc7d15d376d47e8e19f8"}, + {file = "pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:84d8854db5f55fead3b579f04bda9a36461dab0730c5d570e1526483e7bb8431"}, + {file = "pydantic_core-2.41.4-cp312-cp312-win32.whl", hash = "sha256:9be1c01adb2ecc4e464392c36d17f97e9110fbbc906bcbe1c943b5b87a74aabd"}, + {file = "pydantic_core-2.41.4-cp312-cp312-win_amd64.whl", hash = "sha256:d682cf1d22bab22a5be08539dca3d1593488a99998f9f412137bc323179067ff"}, + {file = "pydantic_core-2.41.4-cp312-cp312-win_arm64.whl", hash = "sha256:833eebfd75a26d17470b58768c1834dfc90141b7afc6eb0429c21fc5a21dcfb8"}, + {file = "pydantic_core-2.41.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:85e050ad9e5f6fe1004eec65c914332e52f429bc0ae12d6fa2092407a462c746"}, + {file = "pydantic_core-2.41.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7393f1d64792763a48924ba31d1e44c2cfbc05e3b1c2c9abb4ceeadd912cced"}, + {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94dab0940b0d1fb28bcab847adf887c66a27a40291eedf0b473be58761c9799a"}, + {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:de7c42f897e689ee6f9e93c4bec72b99ae3b32a2ade1c7e4798e690ff5246e02"}, + {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:664b3199193262277b8b3cd1e754fb07f2c6023289c815a1e1e8fb415cb247b1"}, + {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d95b253b88f7d308b1c0b417c4624f44553ba4762816f94e6986819b9c273fb2"}, + {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1351f5bbdbbabc689727cb91649a00cb9ee7203e0a6e54e9f5ba9e22e384b84"}, + {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1affa4798520b148d7182da0615d648e752de4ab1a9566b7471bc803d88a062d"}, + {file = "pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7b74e18052fea4aa8dea2fb7dbc23d15439695da6cbe6cfc1b694af1115df09d"}, + {file = "pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:285b643d75c0e30abda9dc1077395624f314a37e3c09ca402d4015ef5979f1a2"}, + {file = "pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:f52679ff4218d713b3b33f88c89ccbf3a5c2c12ba665fb80ccc4192b4608dbab"}, + {file = "pydantic_core-2.41.4-cp313-cp313-win32.whl", hash = "sha256:ecde6dedd6fff127c273c76821bb754d793be1024bc33314a120f83a3c69460c"}, + {file = "pydantic_core-2.41.4-cp313-cp313-win_amd64.whl", hash = "sha256:d081a1f3800f05409ed868ebb2d74ac39dd0c1ff6c035b5162356d76030736d4"}, + {file = "pydantic_core-2.41.4-cp313-cp313-win_arm64.whl", hash = "sha256:f8e49c9c364a7edcbe2a310f12733aad95b022495ef2a8d653f645e5d20c1564"}, + {file = "pydantic_core-2.41.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ed97fd56a561f5eb5706cebe94f1ad7c13b84d98312a05546f2ad036bafe87f4"}, + {file = "pydantic_core-2.41.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a870c307bf1ee91fc58a9a61338ff780d01bfae45922624816878dce784095d2"}, + {file = "pydantic_core-2.41.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d25e97bc1f5f8f7985bdc2335ef9e73843bb561eb1fa6831fdfc295c1c2061cf"}, + {file = "pydantic_core-2.41.4-cp313-cp313t-win_amd64.whl", hash = "sha256:d405d14bea042f166512add3091c1af40437c2e7f86988f3915fabd27b1e9cd2"}, + {file = "pydantic_core-2.41.4-cp313-cp313t-win_arm64.whl", hash = "sha256:19f3684868309db5263a11bace3c45d93f6f24afa2ffe75a647583df22a2ff89"}, + {file = "pydantic_core-2.41.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:e9205d97ed08a82ebb9a307e92914bb30e18cdf6f6b12ca4bedadb1588a0bfe1"}, + {file = "pydantic_core-2.41.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:82df1f432b37d832709fbcc0e24394bba04a01b6ecf1ee87578145c19cde12ac"}, + {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc3b4cc4539e055cfa39a3763c939f9d409eb40e85813257dcd761985a108554"}, + {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b1eb1754fce47c63d2ff57fdb88c351a6c0150995890088b33767a10218eaa4e"}, + {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e6ab5ab30ef325b443f379ddb575a34969c333004fca5a1daa0133a6ffaad616"}, + {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:31a41030b1d9ca497634092b46481b937ff9397a86f9f51bd41c4767b6fc04af"}, + {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a44ac1738591472c3d020f61c6df1e4015180d6262ebd39bf2aeb52571b60f12"}, + {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d72f2b5e6e82ab8f94ea7d0d42f83c487dc159c5240d8f83beae684472864e2d"}, + {file = "pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:c4d1e854aaf044487d31143f541f7aafe7b482ae72a022c664b2de2e466ed0ad"}, + {file = "pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b568af94267729d76e6ee5ececda4e283d07bbb28e8148bb17adad93d025d25a"}, + {file = "pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:6d55fb8b1e8929b341cc313a81a26e0d48aa3b519c1dbaadec3a6a2b4fcad025"}, + {file = "pydantic_core-2.41.4-cp314-cp314-win32.whl", hash = "sha256:5b66584e549e2e32a1398df11da2e0a7eff45d5c2d9db9d5667c5e6ac764d77e"}, + {file = "pydantic_core-2.41.4-cp314-cp314-win_amd64.whl", hash = "sha256:557a0aab88664cc552285316809cab897716a372afaf8efdbef756f8b890e894"}, + {file = "pydantic_core-2.41.4-cp314-cp314-win_arm64.whl", hash = "sha256:3f1ea6f48a045745d0d9f325989d8abd3f1eaf47dd00485912d1a3a63c623a8d"}, + {file = "pydantic_core-2.41.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6c1fe4c5404c448b13188dd8bd2ebc2bdd7e6727fa61ff481bcc2cca894018da"}, + {file = "pydantic_core-2.41.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:523e7da4d43b113bf8e7b49fa4ec0c35bf4fe66b2230bfc5c13cc498f12c6c3e"}, + {file = "pydantic_core-2.41.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5729225de81fb65b70fdb1907fcf08c75d498f4a6f15af005aabb1fdadc19dfa"}, + {file = "pydantic_core-2.41.4-cp314-cp314t-win_amd64.whl", hash = "sha256:de2cfbb09e88f0f795fd90cf955858fc2c691df65b1f21f0aa00b99f3fbc661d"}, + {file = "pydantic_core-2.41.4-cp314-cp314t-win_arm64.whl", hash = "sha256:d34f950ae05a83e0ede899c595f312ca976023ea1db100cd5aa188f7005e3ab0"}, + {file = "pydantic_core-2.41.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:646e76293345954acea6966149683047b7b2ace793011922208c8e9da12b0062"}, + {file = "pydantic_core-2.41.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cc8e85a63085a137d286e2791037f5fdfff0aabb8b899483ca9c496dd5797338"}, + {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:692c622c8f859a17c156492783902d8370ac7e121a611bd6fe92cc71acf9ee8d"}, + {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d1e2906efb1031a532600679b424ef1d95d9f9fb507f813951f23320903adbd7"}, + {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e04e2f7f8916ad3ddd417a7abdd295276a0bf216993d9318a5d61cc058209166"}, + {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df649916b81822543d1c8e0e1d079235f68acdc7d270c911e8425045a8cfc57e"}, + {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c529f862fdba70558061bb936fe00ddbaaa0c647fd26e4a4356ef1d6561891"}, + {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3b4c5a1fd3a311563ed866c2c9b62da06cb6398bee186484ce95c820db71cb"}, + {file = "pydantic_core-2.41.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6e0fc40d84448f941df9b3334c4b78fe42f36e3bf631ad54c3047a0cdddc2514"}, + {file = "pydantic_core-2.41.4-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:44e7625332683b6c1c8b980461475cde9595eff94447500e80716db89b0da005"}, + {file = "pydantic_core-2.41.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:170ee6835f6c71081d031ef1c3b4dc4a12b9efa6a9540f93f95b82f3c7571ae8"}, + {file = "pydantic_core-2.41.4-cp39-cp39-win32.whl", hash = "sha256:3adf61415efa6ce977041ba9745183c0e1f637ca849773afa93833e04b163feb"}, + {file = "pydantic_core-2.41.4-cp39-cp39-win_amd64.whl", hash = "sha256:a238dd3feee263eeaeb7dc44aea4ba1364682c4f9f9467e6af5596ba322c2332"}, + {file = "pydantic_core-2.41.4-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:a1b2cfec3879afb742a7b0bcfa53e4f22ba96571c9e54d6a3afe1052d17d843b"}, + {file = "pydantic_core-2.41.4-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:d175600d975b7c244af6eb9c9041f10059f20b8bbffec9e33fdd5ee3f67cdc42"}, + {file = "pydantic_core-2.41.4-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f184d657fa4947ae5ec9c47bd7e917730fa1cbb78195037e32dcbab50aca5ee"}, + {file = "pydantic_core-2.41.4-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ed810568aeffed3edc78910af32af911c835cc39ebbfacd1f0ab5dd53028e5c"}, + {file = "pydantic_core-2.41.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:4f5d640aeebb438517150fdeec097739614421900e4a08db4a3ef38898798537"}, + {file = "pydantic_core-2.41.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:4a9ab037b71927babc6d9e7fc01aea9e66dc2a4a34dff06ef0724a4049629f94"}, + {file = "pydantic_core-2.41.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4dab9484ec605c3016df9ad4fd4f9a390bc5d816a3b10c6550f8424bb80b18c"}, + {file = "pydantic_core-2.41.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8a5028425820731d8c6c098ab642d7b8b999758e24acae03ed38a66eca8335"}, + {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e5ab4fc177dd41536b3c32b2ea11380dd3d4619a385860621478ac2d25ceb00"}, + {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:3d88d0054d3fa11ce936184896bed3c1c5441d6fa483b498fac6a5d0dd6f64a9"}, + {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b2a054a8725f05b4b6503357e0ac1c4e8234ad3b0c2ac130d6ffc66f0e170e2"}, + {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0d9db5a161c99375a0c68c058e227bee1d89303300802601d76a3d01f74e258"}, + {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:6273ea2c8ffdac7b7fda2653c49682db815aebf4a89243a6feccf5e36c18c347"}, + {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:4c973add636efc61de22530b2ef83a65f39b6d6f656df97f678720e20de26caa"}, + {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b69d1973354758007f46cf2d44a4f3d0933f10b6dc9bf15cf1356e037f6f731a"}, + {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3619320641fd212aaf5997b6ca505e97540b7e16418f4a241f44cdf108ffb50d"}, + {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:491535d45cd7ad7e4a2af4a5169b0d07bebf1adfd164b0368da8aa41e19907a5"}, + {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:54d86c0cada6aba4ec4c047d0e348cbad7063b87ae0f005d9f8c9ad04d4a92a2"}, + {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eca1124aced216b2500dc2609eade086d718e8249cb9696660ab447d50a758bd"}, + {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c9024169becccf0cb470ada03ee578d7348c119a0d42af3dcf9eda96e3a247c"}, + {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:26895a4268ae5a2849269f4991cdc97236e4b9c010e51137becf25182daac405"}, + {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:ca4df25762cf71308c446e33c9b1fdca2923a3f13de616e2a949f38bf21ff5a8"}, + {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:5a28fcedd762349519276c36634e71853b4541079cab4acaaac60c4421827308"}, + {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c173ddcd86afd2535e2b695217e82191580663a1d1928239f877f5a1649ef39f"}, + {file = "pydantic_core-2.41.4.tar.gz", hash = "sha256:70e47929a9d4a1905a67e4b687d5946026390568a8e952b92824118063cee4d5"}, +] + +[package.dependencies] +typing-extensions = ">=4.14.1" [[package]] name = "pygments" @@ -2781,8 +1022,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b" }, - { file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887" }, + {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"}, + {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, ] [package.extras] @@ -2790,14 +1031,14 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pymdown-extensions" -version = "10.16" +version = "10.16.1" description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pymdown_extensions-10.16-py3-none-any.whl", hash = "sha256:f5dd064a4db588cb2d95229fc4ee63a1b16cc8b4d0e6145c0899ed8723da1df2" }, - { file = "pymdown_extensions-10.16.tar.gz", hash = "sha256:71dac4fca63fabeffd3eb9038b756161a33ec6e8d230853d3cecf562155ab3de" }, + {file = "pymdown_extensions-10.16.1-py3-none-any.whl", hash = "sha256:d6ba157a6c03146a7fb122b2b9a121300056384eafeec9c9f9e584adfdb2a32d"}, + {file = "pymdown_extensions-10.16.1.tar.gz", hash = "sha256:aace82bcccba3efc03e25d584e6a22d27a8e17caa3f4dd9f207e49b787aa9a91"}, ] [package.dependencies] @@ -2805,174 +1046,72 @@ markdown = ">=3.6" pyyaml = "*" [package.extras] -extra = ["pygments (>=2.19.1)"] - -[[package]] -name = "pyproj" -version = "3.7.1" -description = "Python interface to PROJ (cartographic projections and coordinate transformations library)" -optional = false -python-versions = ">=3.10" -groups = ["main"] -files = [ - { file = "pyproj-3.7.1-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:bf09dbeb333c34e9c546364e7df1ff40474f9fddf9e70657ecb0e4f670ff0b0e" }, - { file = "pyproj-3.7.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:6575b2e53cc9e3e461ad6f0692a5564b96e7782c28631c7771c668770915e169" }, - { file = "pyproj-3.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cb516ee35ed57789b46b96080edf4e503fdb62dbb2e3c6581e0d6c83fca014b" }, - { file = "pyproj-3.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e47c4e93b88d99dd118875ee3ca0171932444cdc0b52d493371b5d98d0f30ee" }, - { file = "pyproj-3.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3e8d276caeae34fcbe4813855d0d97b9b825bab8d7a8b86d859c24a6213a5a0d" }, - { file = "pyproj-3.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f173f851ee75e54acdaa053382b6825b400cb2085663a9bb073728a59c60aebb" }, - { file = "pyproj-3.7.1-cp310-cp310-win32.whl", hash = "sha256:f550281ed6e5ea88fcf04a7c6154e246d5714be495c50c9e8e6b12d3fb63e158" }, - { file = "pyproj-3.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3537668992a709a2e7f068069192138618c00d0ba113572fdd5ee5ffde8222f3" }, - { file = "pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d" }, - { file = "pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067" }, - { file = "pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa" }, - { file = "pyproj-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5dcf24ede53d8abab7d8a77f69ff1936c6a8843ef4fcc574646e4be66e5739" }, - { file = "pyproj-3.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c2e7449840a44ce860d8bea2c6c1c4bc63fa07cba801dcce581d14dcb031a02" }, - { file = "pyproj-3.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0829865c1d3a3543f918b3919dc601eea572d6091c0dd175e1a054db9c109274" }, - { file = "pyproj-3.7.1-cp311-cp311-win32.whl", hash = "sha256:6181960b4b812e82e588407fe5c9c68ada267c3b084db078f248db5d7f45d18a" }, - { file = "pyproj-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ad0ff443a785d84e2b380869fdd82e6bfc11eba6057d25b4409a9bbfa867970" }, - { file = "pyproj-3.7.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:2781029d90df7f8d431e29562a3f2d8eafdf233c4010d6fc0381858dc7373217" }, - { file = "pyproj-3.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d61bf8ab04c73c1da08eedaf21a103b72fa5b0a9b854762905f65ff8b375d394" }, - { file = "pyproj-3.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04abc517a8555d1b05fcee768db3280143fe42ec39fdd926a2feef31631a1f2f" }, - { file = "pyproj-3.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084c0a475688f934d386c2ab3b6ce03398a473cd48adfda70d9ab8f87f2394a0" }, - { file = "pyproj-3.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a20727a23b1e49c7dc7fe3c3df8e56a8a7acdade80ac2f5cca29d7ca5564c145" }, - { file = "pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d" }, - { file = "pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274" }, - { file = "pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98" }, - { file = "pyproj-3.7.1-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:5f8d02ef4431dee414d1753d13fa82a21a2f61494737b5f642ea668d76164d6d" }, - { file = "pyproj-3.7.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:0b853ae99bda66cbe24b4ccfe26d70601d84375940a47f553413d9df570065e0" }, - { file = "pyproj-3.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83db380c52087f9e9bdd8a527943b2e7324f275881125e39475c4f9277bdeec4" }, - { file = "pyproj-3.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b35ed213892e211a3ce2bea002aa1183e1a2a9b79e51bb3c6b15549a831ae528" }, - { file = "pyproj-3.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a8b15b0463d1303bab113d1a6af2860a0d79013c3a66fcc5475ce26ef717fd4f" }, - { file = "pyproj-3.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:87229e42b75e89f4dad6459200f92988c5998dfb093c7c631fb48524c86cd5dc" }, - { file = "pyproj-3.7.1-cp313-cp313-win32.whl", hash = "sha256:d666c3a3faaf3b1d7fc4a544059c4eab9d06f84a604b070b7aa2f318e227798e" }, - { file = "pyproj-3.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:d3caac7473be22b6d6e102dde6c46de73b96bc98334e577dfaee9886f102ea2e" }, - { file = "pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47" }, -] - -[package.dependencies] -certifi = "*" - -[[package]] -name = "pytest" -version = "8.4.1" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7" }, - { file = "pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c" }, -] - -[package.dependencies] -colorama = { version = ">=0.4", markers = "sys_platform == \"win32\"" } -iniconfig = ">=1" -packaging = ">=20" -pluggy = ">=1.5,<2" -pygments = ">=2.7.2" - -[package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main", "dev"] -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" +extra = ["pygments (>=2.19.1)"] [[package]] -name = "python-json-logger" -version = "3.3.0" -description = "JSON Log Formatter for the Python Logging Package" +name = "pytest" +version = "8.4.1" +description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7" }, - { file = "python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84" }, + {file = "pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7"}, + {file = "pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c"}, ] -[package.extras] -dev = ["backports.zoneinfo ; python_version < \"3.9\"", "black", "build", "freezegun", "mdx_truly_sane_lists", "mike", "mkdocs", "mkdocs-awesome-pages-plugin", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-material (>=8.5)", "mkdocstrings[python]", "msgspec ; implementation_name != \"pypy\"", "mypy", "orjson ; implementation_name != \"pypy\"", "pylint", "pytest", "tzdata", "validate-pyproject[all]"] +[package.dependencies] +colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} +iniconfig = ">=1" +packaging = ">=20" +pluggy = ">=1.5,<2" +pygments = ">=2.7.2" -[[package]] -name = "pytz" -version = "2025.2" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -groups = ["main"] -files = [ - { file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00" }, - { file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3" }, -] +[package.extras] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] [[package]] -name = "pywin32" -version = "311" -description = "Python for Window Extensions" +name = "pytest-cov" +version = "6.2.1" +description = "Pytest plugin for measuring coverage." optional = false -python-versions = "*" +python-versions = ">=3.9" groups = ["dev"] -markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"" files = [ - { file = "pywin32-311-cp310-cp310-win32.whl", hash = "sha256:d03ff496d2a0cd4a5893504789d4a15399133fe82517455e78bad62efbb7f0a3" }, - { file = "pywin32-311-cp310-cp310-win_amd64.whl", hash = "sha256:797c2772017851984b97180b0bebe4b620bb86328e8a884bb626156295a63b3b" }, - { file = "pywin32-311-cp310-cp310-win_arm64.whl", hash = "sha256:0502d1facf1fed4839a9a51ccbcc63d952cf318f78ffc00a7e78528ac27d7a2b" }, - { file = "pywin32-311-cp311-cp311-win32.whl", hash = "sha256:184eb5e436dea364dcd3d2316d577d625c0351bf237c4e9a5fabbcfa5a58b151" }, - { file = "pywin32-311-cp311-cp311-win_amd64.whl", hash = "sha256:3ce80b34b22b17ccbd937a6e78e7225d80c52f5ab9940fe0506a1a16f3dab503" }, - { file = "pywin32-311-cp311-cp311-win_arm64.whl", hash = "sha256:a733f1388e1a842abb67ffa8e7aad0e70ac519e09b0f6a784e65a136ec7cefd2" }, - { file = "pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31" }, - { file = "pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067" }, - { file = "pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852" }, - { file = "pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d" }, - { file = "pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d" }, - { file = "pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a" }, - { file = "pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee" }, - { file = "pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87" }, - { file = "pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42" }, - { file = "pywin32-311-cp38-cp38-win32.whl", hash = "sha256:6c6f2969607b5023b0d9ce2541f8d2cbb01c4f46bc87456017cf63b73f1e2d8c" }, - { file = "pywin32-311-cp38-cp38-win_amd64.whl", hash = "sha256:c8015b09fb9a5e188f83b7b04de91ddca4658cee2ae6f3bc483f0b21a77ef6cd" }, - { file = "pywin32-311-cp39-cp39-win32.whl", hash = "sha256:aba8f82d551a942cb20d4a83413ccbac30790b50efb89a75e4f586ac0bb8056b" }, - { file = "pywin32-311-cp39-cp39-win_amd64.whl", hash = "sha256:e0c4cfb0621281fe40387df582097fd796e80430597cb9944f0ae70447bacd91" }, - { file = "pywin32-311-cp39-cp39-win_arm64.whl", hash = "sha256:62ea666235135fee79bb154e695f3ff67370afefd71bd7fea7512fc70ef31e3d" }, + {file = "pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5"}, + {file = "pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2"}, ] +[package.dependencies] +coverage = {version = ">=7.5", extras = ["toml"]} +pluggy = ">=1.2" +pytest = ">=6.2.5" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] + [[package]] -name = "pywinpty" -version = "2.0.15" -description = "Pseudo terminal support for Windows from Python." +name = "python-dateutil" +version = "2.9.0.post0" +description = "Extensions to the standard Python datetime module" optional = false -python-versions = ">=3.9" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" groups = ["dev"] -markers = "os_name == \"nt\"" files = [ - { file = "pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e" }, - { file = "pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca" }, - { file = "pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc" }, - { file = "pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408" }, - { file = "pywinpty-2.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:a4560ad8c01e537708d2790dbe7da7d986791de805d89dd0d3697ca59e9e4901" }, - { file = "pywinpty-2.0.15-cp39-cp39-win_amd64.whl", hash = "sha256:d261cd88fcd358cfb48a7ca0700db3e1c088c9c10403c9ebc0d8a8b57aa6a117" }, - { file = "pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2" }, + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, ] +[package.dependencies] +six = ">=1.5" + [[package]] name = "pyyaml" version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["dev"] files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -3037,121 +1176,13 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04" }, - { file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff" }, + {file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04"}, + {file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff"}, ] [package.dependencies] pyyaml = "*" -[[package]] -name = "pyzmq" -version = "27.0.0" -description = "Python bindings for 0MQ" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "pyzmq-27.0.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:b973ee650e8f442ce482c1d99ca7ab537c69098d53a3d046676a484fd710c87a" }, - { file = "pyzmq-27.0.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:661942bc7cd0223d569d808f2e5696d9cc120acc73bf3e88a1f1be7ab648a7e4" }, - { file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50360fb2a056ffd16e5f4177eee67f1dd1017332ea53fb095fe7b5bf29c70246" }, - { file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf209a6dc4b420ed32a7093642843cbf8703ed0a7d86c16c0b98af46762ebefb" }, - { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c2dace4a7041cca2fba5357a2d7c97c5effdf52f63a1ef252cfa496875a3762d" }, - { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:63af72b2955fc77caf0a77444baa2431fcabb4370219da38e1a9f8d12aaebe28" }, - { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e8c4adce8e37e75c4215297d7745551b8dcfa5f728f23ce09bf4e678a9399413" }, - { file = "pyzmq-27.0.0-cp310-cp310-win32.whl", hash = "sha256:5d5ef4718ecab24f785794e0e7536436698b459bfbc19a1650ef55280119d93b" }, - { file = "pyzmq-27.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:e40609380480b3d12c30f841323f42451c755b8fece84235236f5fe5ffca8c1c" }, - { file = "pyzmq-27.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:6b0397b0be277b46762956f576e04dc06ced265759e8c2ff41a0ee1aa0064198" }, - { file = "pyzmq-27.0.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:21457825249b2a53834fa969c69713f8b5a79583689387a5e7aed880963ac564" }, - { file = "pyzmq-27.0.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1958947983fef513e6e98eff9cb487b60bf14f588dc0e6bf35fa13751d2c8251" }, - { file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0dc628b5493f9a8cd9844b8bee9732ef587ab00002157c9329e4fc0ef4d3afa" }, - { file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7bbe9e1ed2c8d3da736a15694d87c12493e54cc9dc9790796f0321794bbc91f" }, - { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dc1091f59143b471d19eb64f54bae4f54bcf2a466ffb66fe45d94d8d734eb495" }, - { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7011ade88c8e535cf140f8d1a59428676fbbce7c6e54fefce58bf117aefb6667" }, - { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2c386339d7e3f064213aede5d03d054b237937fbca6dd2197ac8cf3b25a6b14e" }, - { file = "pyzmq-27.0.0-cp311-cp311-win32.whl", hash = "sha256:0546a720c1f407b2172cb04b6b094a78773491497e3644863cf5c96c42df8cff" }, - { file = "pyzmq-27.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:15f39d50bd6c9091c67315ceb878a4f531957b121d2a05ebd077eb35ddc5efed" }, - { file = "pyzmq-27.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c5817641eebb391a2268c27fecd4162448e03538387093cdbd8bf3510c316b38" }, - { file = "pyzmq-27.0.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:cbabc59dcfaac66655c040dfcb8118f133fb5dde185e5fc152628354c1598e52" }, - { file = "pyzmq-27.0.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0ac5179cba4b2f94f1aa208fbb77b62c4c9bf24dd446278b8b602cf85fcda3" }, - { file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53a48f0228eab6cbf69fde3aa3c03cbe04e50e623ef92ae395fce47ef8a76152" }, - { file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:111db5f395e09f7e775f759d598f43cb815fc58e0147623c4816486e1a39dc22" }, - { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c8878011653dcdc27cc2c57e04ff96f0471e797f5c19ac3d7813a245bcb24371" }, - { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:c0ed2c1f335ba55b5fdc964622254917d6b782311c50e138863eda409fbb3b6d" }, - { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e918d70862d4cfd4b1c187310015646a14e1f5917922ab45b29f28f345eeb6be" }, - { file = "pyzmq-27.0.0-cp312-abi3-win32.whl", hash = "sha256:88b4e43cab04c3c0f0d55df3b1eef62df2b629a1a369b5289a58f6fa8b07c4f4" }, - { file = "pyzmq-27.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:dce4199bf5f648a902ce37e7b3afa286f305cd2ef7a8b6ec907470ccb6c8b371" }, - { file = "pyzmq-27.0.0-cp312-abi3-win_arm64.whl", hash = "sha256:56e46bbb85d52c1072b3f809cc1ce77251d560bc036d3a312b96db1afe76db2e" }, - { file = "pyzmq-27.0.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c36ad534c0c29b4afa088dc53543c525b23c0797e01b69fef59b1a9c0e38b688" }, - { file = "pyzmq-27.0.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:67855c14173aec36395d7777aaba3cc527b393821f30143fd20b98e1ff31fd38" }, - { file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8617c7d43cd8ccdb62aebe984bfed77ca8f036e6c3e46dd3dddda64b10f0ab7a" }, - { file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67bfbcbd0a04c575e8103a6061d03e393d9f80ffdb9beb3189261e9e9bc5d5e9" }, - { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5cd11d46d7b7e5958121b3eaf4cd8638eff3a720ec527692132f05a57f14341d" }, - { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b801c2e40c5aa6072c2f4876de8dccd100af6d9918d4d0d7aa54a1d982fd4f44" }, - { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20d5cb29e8c5f76a127c75b6e7a77e846bc4b655c373baa098c26a61b7ecd0ef" }, - { file = "pyzmq-27.0.0-cp313-cp313t-win32.whl", hash = "sha256:a20528da85c7ac7a19b7384e8c3f8fa707841fd85afc4ed56eda59d93e3d98ad" }, - { file = "pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f" }, - { file = "pyzmq-27.0.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:f4162dbbd9c5c84fb930a36f290b08c93e35fce020d768a16fc8891a2f72bab8" }, - { file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:4e7d0a8d460fba526cc047333bdcbf172a159b8bd6be8c3eb63a416ff9ba1477" }, - { file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:29f44e3c26b9783816ba9ce274110435d8f5b19bbd82f7a6c7612bb1452a3597" }, - { file = "pyzmq-27.0.0-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e435540fa1da54667f0026cf1e8407fe6d8a11f1010b7f06b0b17214ebfcf5e" }, - { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:51f5726de3532b8222e569990c8aa34664faa97038304644679a51d906e60c6e" }, - { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:42c7555123679637c99205b1aa9e8f7d90fe29d4c243c719e347d4852545216c" }, - { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a979b7cf9e33d86c4949df527a3018767e5f53bc3b02adf14d4d8db1db63ccc0" }, - { file = "pyzmq-27.0.0-cp38-cp38-win32.whl", hash = "sha256:26b72c5ae20bf59061c3570db835edb81d1e0706ff141747055591c4b41193f8" }, - { file = "pyzmq-27.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:55a0155b148fe0428285a30922f7213539aa84329a5ad828bca4bbbc665c70a4" }, - { file = "pyzmq-27.0.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:100f6e5052ba42b2533011d34a018a5ace34f8cac67cb03cfa37c8bdae0ca617" }, - { file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:bf6c6b061efd00404b9750e2cfbd9507492c8d4b3721ded76cb03786131be2ed" }, - { file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ee05728c0b0b2484a9fc20466fa776fffb65d95f7317a3419985b8c908563861" }, - { file = "pyzmq-27.0.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7cdf07fe0a557b131366f80727ec8ccc4b70d89f1e3f920d94a594d598d754f0" }, - { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:90252fa2ff3a104219db1f5ced7032a7b5fc82d7c8d2fec2b9a3e6fd4e25576b" }, - { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ea6d441c513bf18c578c73c323acf7b4184507fc244762193aa3a871333c9045" }, - { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ae2b34bcfaae20c064948a4113bf8709eee89fd08317eb293ae4ebd69b4d9740" }, - { file = "pyzmq-27.0.0-cp39-cp39-win32.whl", hash = "sha256:5b10bd6f008937705cf6e7bf8b6ece5ca055991e3eb130bca8023e20b86aa9a3" }, - { file = "pyzmq-27.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:00387d12a8af4b24883895f7e6b9495dc20a66027b696536edac35cb988c38f3" }, - { file = "pyzmq-27.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:4c19d39c04c29a6619adfeb19e3735c421b3bfee082f320662f52e59c47202ba" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:656c1866505a5735d0660b7da6d7147174bbf59d4975fc2b7f09f43c9bc25745" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:74175b9e12779382432dd1d1f5960ebe7465d36649b98a06c6b26be24d173fab" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8c6de908465697a8708e4d6843a1e884f567962fc61eb1706856545141d0cbb" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c644aaacc01d0df5c7072826df45e67301f191c55f68d7b2916d83a9ddc1b551" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:10f70c1d9a446a85013a36871a296007f6fe4232b530aa254baf9da3f8328bc0" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd1dc59763effd1576f8368047c9c31468fce0af89d76b5067641137506792ae" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:60e8cc82d968174650c1860d7b716366caab9973787a1c060cf8043130f7d0f7" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:14fe7aaac86e4e93ea779a821967360c781d7ac5115b3f1a171ced77065a0174" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6ad0562d4e6abb785be3e4dd68599c41be821b521da38c402bc9ab2a8e7ebc7e" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:9df43a2459cd3a3563404c1456b2c4c69564daa7dbaf15724c09821a3329ce46" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8c86ea8fe85e2eb0ffa00b53192c401477d5252f6dd1db2e2ed21c1c30d17e5e" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:c45fee3968834cd291a13da5fac128b696c9592a9493a0f7ce0b47fa03cc574d" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cae73bb6898c4e045fbed5024cb587e4110fddb66f6163bcab5f81f9d4b9c496" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:26d542258c7a1f35a9cff3d887687d3235006134b0ac1c62a6fe1ad3ac10440e" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:04cd50ef3b28e35ced65740fb9956a5b3f77a6ff32fcd887e3210433f437dd0f" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:39ddd3ba0a641f01d8f13a3cfd4c4924eb58e660d8afe87e9061d6e8ca6f7ac3" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:8ca7e6a0388dd9e1180b14728051068f4efe83e0d2de058b5ff92c63f399a73f" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2524c40891be6a3106885a3935d58452dd83eb7a5742a33cc780a1ad4c49dec0" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a56e3e5bd2d62a01744fd2f1ce21d760c7c65f030e9522738d75932a14ab62a" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:096af9e133fec3a72108ddefba1e42985cb3639e9de52cfd336b6fc23aa083e9" }, - { file = "pyzmq-27.0.0.tar.gz", hash = "sha256:b1f08eeb9ce1510e6939b6e5dcd46a17765e2333daae78ecf4606808442e52cf" }, -] - -[package.dependencies] -cffi = {version = "*", markers = "implementation_name == \"pypy\""} - -[[package]] -name = "referencing" -version = "0.36.2" -description = "JSON Referencing + Python" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0" }, - { file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa" }, -] - -[package.dependencies] -attrs = ">=22.2.0" -rpds-py = ">=0.7.0" - [[package]] name = "requests" version = "2.32.4" @@ -3160,8 +1191,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c" }, - { file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422" }, + {file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c"}, + {file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"}, ] [package.dependencies] @@ -3174,440 +1205,57 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] -[[package]] -name = "rfc3339-validator" -version = "0.1.4" -description = "A pure python RFC3339 validator" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["dev"] -files = [ - {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, - {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "rfc3986-validator" -version = "0.1.1" -description = "Pure python rfc3986 validator" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["dev"] -files = [ - {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, - {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, -] - -[[package]] -name = "rfc3987-syntax" -version = "1.1.0" -description = "Helper functions to syntactically validate strings according to RFC 3987." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "rfc3987_syntax-1.1.0-py3-none-any.whl", hash = "sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f" }, - { file = "rfc3987_syntax-1.1.0.tar.gz", hash = "sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d" }, -] - -[package.dependencies] -lark = ">=1.2.2" - -[package.extras] -testing = ["pytest (>=8.3.5)"] - -[[package]] -name = "rpds-py" -version = "0.26.0" -description = "Python bindings to Rust's persistent data structures (rpds)" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "rpds_py-0.26.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4c70c70f9169692b36307a95f3d8c0a9fcd79f7b4a383aad5eaa0e9718b79b37" }, - { file = "rpds_py-0.26.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:777c62479d12395bfb932944e61e915741e364c843afc3196b694db3d669fcd0" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec671691e72dff75817386aa02d81e708b5a7ec0dec6669ec05213ff6b77e1bd" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a1cb5d6ce81379401bbb7f6dbe3d56de537fb8235979843f0d53bc2e9815a79" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f789e32fa1fb6a7bf890e0124e7b42d1e60d28ebff57fe806719abb75f0e9a3" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c55b0a669976cf258afd718de3d9ad1b7d1fe0a91cd1ab36f38b03d4d4aeaaf" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c70d9ec912802ecfd6cd390dadb34a9578b04f9bcb8e863d0a7598ba5e9e7ccc" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3021933c2cb7def39d927b9862292e0f4c75a13d7de70eb0ab06efed4c508c19" }, - { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8a7898b6ca3b7d6659e55cdac825a2e58c638cbf335cde41f4619e290dd0ad11" }, - { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:12bff2ad9447188377f1b2794772f91fe68bb4bbfa5a39d7941fbebdbf8c500f" }, - { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:191aa858f7d4902e975d4cf2f2d9243816c91e9605070aeb09c0a800d187e323" }, - { file = "rpds_py-0.26.0-cp310-cp310-win32.whl", hash = "sha256:b37a04d9f52cb76b6b78f35109b513f6519efb481d8ca4c321f6a3b9580b3f45" }, - { file = "rpds_py-0.26.0-cp310-cp310-win_amd64.whl", hash = "sha256:38721d4c9edd3eb6670437d8d5e2070063f305bfa2d5aa4278c51cedcd508a84" }, - { file = "rpds_py-0.26.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9e8cb77286025bdb21be2941d64ac6ca016130bfdcd228739e8ab137eb4406ed" }, - { file = "rpds_py-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e09330b21d98adc8ccb2dbb9fc6cb434e8908d4c119aeaa772cb1caab5440a0" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9c1b92b774b2e68d11193dc39620d62fd8ab33f0a3c77ecdabe19c179cdbc1" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:824e6d3503ab990d7090768e4dfd9e840837bae057f212ff9f4f05ec6d1975e7" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ad7fd2258228bf288f2331f0a6148ad0186b2e3643055ed0db30990e59817a6" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dc23bbb3e06ec1ea72d515fb572c1fea59695aefbffb106501138762e1e915e" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d80bf832ac7b1920ee29a426cdca335f96a2b5caa839811803e999b41ba9030d" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0919f38f5542c0a87e7b4afcafab6fd2c15386632d249e9a087498571250abe3" }, - { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d422b945683e409000c888e384546dbab9009bb92f7c0b456e217988cf316107" }, - { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a7711fa562ba2da1aa757e11024ad6d93bad6ad7ede5afb9af144623e5f76a" }, - { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238e8c8610cb7c29460e37184f6799547f7e09e6a9bdbdab4e8edb90986a2318" }, - { file = "rpds_py-0.26.0-cp311-cp311-win32.whl", hash = "sha256:893b022bfbdf26d7bedb083efeea624e8550ca6eb98bf7fea30211ce95b9201a" }, - { file = "rpds_py-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:87a5531de9f71aceb8af041d72fc4cab4943648d91875ed56d2e629bef6d4c03" }, - { file = "rpds_py-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:de2713f48c1ad57f89ac25b3cb7daed2156d8e822cf0eca9b96a6f990718cc41" }, - { file = "rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d" }, - { file = "rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323" }, - { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158" }, - { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3" }, - { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2" }, - { file = "rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44" }, - { file = "rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c" }, - { file = "rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8" }, - { file = "rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d" }, - { file = "rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1" }, - { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9" }, - { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9" }, - { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba" }, - { file = "rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b" }, - { file = "rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5" }, - { file = "rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256" }, - { file = "rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618" }, - { file = "rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed" }, - { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632" }, - { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c" }, - { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0" }, - { file = "rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9" }, - { file = "rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9" }, - { file = "rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a" }, - { file = "rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387" }, - { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af" }, - { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33" }, - { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953" }, - { file = "rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9" }, - { file = "rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37" }, - { file = "rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867" }, - { file = "rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da" }, - { file = "rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b" }, - { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a" }, - { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170" }, - { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e" }, - { file = "rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f" }, - { file = "rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7" }, - { file = "rpds_py-0.26.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:7a48af25d9b3c15684059d0d1fc0bc30e8eee5ca521030e2bffddcab5be40226" }, - { file = "rpds_py-0.26.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0c71c2f6bf36e61ee5c47b2b9b5d47e4d1baad6426bfed9eea3e858fc6ee8806" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d815d48b1804ed7867b539236b6dd62997850ca1c91cad187f2ddb1b7bbef19" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84cfbd4d4d2cdeb2be61a057a258d26b22877266dd905809e94172dff01a42ae" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fbaa70553ca116c77717f513e08815aec458e6b69a028d4028d403b3bc84ff37" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39bfea47c375f379d8e87ab4bb9eb2c836e4f2069f0f65731d85e55d74666387" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1533b7eb683fb5f38c1d68a3c78f5fdd8f1412fa6b9bf03b40f450785a0ab915" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c5ab0ee51f560d179b057555b4f601b7df909ed31312d301b99f8b9fc6028284" }, - { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e5162afc9e0d1f9cae3b577d9c29ddbab3505ab39012cb794d94a005825bde21" }, - { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:43f10b007033f359bc3fa9cd5e6c1e76723f056ffa9a6b5c117cc35720a80292" }, - { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e3730a48e5622e598293eee0762b09cff34dd3f271530f47b0894891281f051d" }, - { file = "rpds_py-0.26.0-cp39-cp39-win32.whl", hash = "sha256:4b1f66eb81eab2e0ff5775a3a312e5e2e16bf758f7b06be82fb0d04078c7ac51" }, - { file = "rpds_py-0.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:519067e29f67b5c90e64fb1a6b6e9d2ec0ba28705c51956637bac23a2f4ddae1" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3c0909c5234543ada2515c05dc08595b08d621ba919629e94427e8e03539c958" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c1fb0cda2abcc0ac62f64e2ea4b4e64c57dfd6b885e693095460c61bde7bb18e" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84d142d2d6cf9b31c12aa4878d82ed3b2324226270b89b676ac62ccd7df52d08" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a547e21c5610b7e9093d870be50682a6a6cf180d6da0f42c47c306073bfdbbf6" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:35e9a70a0f335371275cdcd08bc5b8051ac494dd58bff3bbfb421038220dc871" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dfa6115c6def37905344d56fb54c03afc49104e2ca473d5dedec0f6606913b4" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:313cfcd6af1a55a286a3c9a25f64af6d0e46cf60bc5798f1db152d97a216ff6f" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f7bf2496fa563c046d05e4d232d7b7fd61346e2402052064b773e5c378bf6f73" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:aa81873e2c8c5aa616ab8e017a481a96742fdf9313c40f14338ca7dbf50cb55f" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:68ffcf982715f5b5b7686bdd349ff75d422e8f22551000c24b30eaa1b7f7ae84" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6188de70e190847bb6db3dc3981cbadff87d27d6fe9b4f0e18726d55795cee9b" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1c962145c7473723df9722ba4c058de12eb5ebedcb4e27e7d902920aa3831ee8" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f61a9326f80ca59214d1cceb0a09bb2ece5b2563d4e0cd37bfd5515c28510674" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:183f857a53bcf4b1b42ef0f57ca553ab56bdd170e49d8091e96c51c3d69ca696" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:941c1cfdf4799d623cf3aa1d326a6b4fdb7a5799ee2687f3516738216d2262fb" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72a8d9564a717ee291f554eeb4bfeafe2309d5ec0aa6c475170bdab0f9ee8e88" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:511d15193cbe013619dd05414c35a7dedf2088fcee93c6bbb7c77859765bd4e8" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aea1f9741b603a8d8fedb0ed5502c2bc0accbc51f43e2ad1337fe7259c2b77a5" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4019a9d473c708cf2f16415688ef0b4639e07abaa569d72f74745bbeffafa2c7" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:093d63b4b0f52d98ebae33b8c50900d3d67e0666094b1be7a12fffd7f65de74b" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2abe21d8ba64cded53a2a677e149ceb76dcf44284202d737178afe7ba540c1eb" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:4feb7511c29f8442cbbc28149a92093d32e815a28aa2c50d333826ad2a20fdf0" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e99685fc95d386da368013e7fb4269dd39c30d99f812a8372d62f244f662709c" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a90a13408a7a856b87be8a9f008fff53c5080eea4e4180f6c2e546e4a972fb5d" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ac51b65e8dc76cf4949419c54c5528adb24fc721df722fd452e5fbc236f5c40" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59b2093224a18c6508d95cfdeba8db9cbfd6f3494e94793b58972933fcee4c6d" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f01a5d6444a3258b00dc07b6ea4733e26f8072b788bef750baa37b370266137" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6e2c12160c72aeda9d1283e612f68804621f448145a210f1bf1d79151c47090" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb28c1f569f8d33b2b5dcd05d0e6ef7005d8639c54c2f0be824f05aedf715255" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1766b5724c3f779317d5321664a343c07773c8c5fd1532e4039e6cc7d1a815be" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b6d9e5a2ed9c4988c8f9b28b3bc0e3e5b1aaa10c28d210a594ff3a8c02742daf" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b5f7a446ddaf6ca0fad9a5535b56fbfc29998bf0e0b450d174bbec0d600e1d72" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:eed5ac260dd545fbc20da5f4f15e7efe36a55e0e7cf706e4ec005b491a9546a0" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:582462833ba7cee52e968b0341b85e392ae53d44c0f9af6a5927c80e539a8b67" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:69a607203441e07e9a8a529cff1d5b73f6a160f22db1097211e6212a68567d11" }, - { file = "rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0" }, -] - [[package]] name = "ruff" -version = "0.12.4" +version = "0.12.9" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - { file = "ruff-0.12.4-py3-none-linux_armv6l.whl", hash = "sha256:cb0d261dac457ab939aeb247e804125a5d521b21adf27e721895b0d3f83a0d0a" }, - { file = "ruff-0.12.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:55c0f4ca9769408d9b9bac530c30d3e66490bd2beb2d3dae3e4128a1f05c7442" }, - { file = "ruff-0.12.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a8224cc3722c9ad9044da7f89c4c1ec452aef2cfe3904365025dd2f51daeae0e" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9949d01d64fa3672449a51ddb5d7548b33e130240ad418884ee6efa7a229586" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:be0593c69df9ad1465e8a2d10e3defd111fdb62dcd5be23ae2c06da77e8fcffb" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7dea966bcb55d4ecc4cc3270bccb6f87a337326c9dcd3c07d5b97000dbff41c" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:afcfa3ab5ab5dd0e1c39bf286d829e042a15e966b3726eea79528e2e24d8371a" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c057ce464b1413c926cdb203a0f858cd52f3e73dcb3270a3318d1630f6395bb3" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e64b90d1122dc2713330350626b10d60818930819623abbb56535c6466cce045" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2abc48f3d9667fdc74022380b5c745873499ff827393a636f7a59da1515e7c57" }, - { file = "ruff-0.12.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2b2449dc0c138d877d629bea151bee8c0ae3b8e9c43f5fcaafcd0c0d0726b184" }, - { file = "ruff-0.12.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:56e45bb11f625db55f9b70477062e6a1a04d53628eda7784dce6e0f55fd549eb" }, - { file = "ruff-0.12.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:478fccdb82ca148a98a9ff43658944f7ab5ec41c3c49d77cd99d44da019371a1" }, - { file = "ruff-0.12.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0fc426bec2e4e5f4c4f182b9d2ce6a75c85ba9bcdbe5c6f2a74fcb8df437df4b" }, - { file = "ruff-0.12.4-py3-none-win32.whl", hash = "sha256:4de27977827893cdfb1211d42d84bc180fceb7b72471104671c59be37041cf93" }, - { file = "ruff-0.12.4-py3-none-win_amd64.whl", hash = "sha256:fe0b9e9eb23736b453143d72d2ceca5db323963330d5b7859d60d101147d461a" }, - { file = "ruff-0.12.4-py3-none-win_arm64.whl", hash = "sha256:0618ec4442a83ab545e5b71202a5c0ed7791e8471435b94e655b570a5031a98e" }, - { file = "ruff-0.12.4.tar.gz", hash = "sha256:13efa16df6c6eeb7d0f091abae50f58e9522f3843edb40d56ad52a5a4a4b6873" }, -] - -[[package]] -name = "send2trash" -version = "1.8.3" -description = "Send file to trash natively under Mac OS X, Windows and Linux" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -groups = ["dev"] -files = [ - {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, - {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, -] - -[package.extras] -nativelib = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\"", "pywin32 ; sys_platform == \"win32\""] -objc = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\""] -win32 = ["pywin32 ; sys_platform == \"win32\""] - -[[package]] -name = "setuptools" -version = "80.9.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922" }, - { file = "setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c" }, + {file = "ruff-0.12.9-py3-none-linux_armv6l.whl", hash = "sha256:fcebc6c79fcae3f220d05585229463621f5dbf24d79fdc4936d9302e177cfa3e"}, + {file = "ruff-0.12.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:aed9d15f8c5755c0e74467731a007fcad41f19bcce41cd75f768bbd687f8535f"}, + {file = "ruff-0.12.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5b15ea354c6ff0d7423814ba6d44be2807644d0c05e9ed60caca87e963e93f70"}, + {file = "ruff-0.12.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d596c2d0393c2502eaabfef723bd74ca35348a8dac4267d18a94910087807c53"}, + {file = "ruff-0.12.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b15599931a1a7a03c388b9c5df1bfa62be7ede6eb7ef753b272381f39c3d0ff"}, + {file = "ruff-0.12.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3d02faa2977fb6f3f32ddb7828e212b7dd499c59eb896ae6c03ea5c303575756"}, + {file = "ruff-0.12.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:17d5b6b0b3a25259b69ebcba87908496e6830e03acfb929ef9fd4c58675fa2ea"}, + {file = "ruff-0.12.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:72db7521860e246adbb43f6ef464dd2a532ef2ef1f5dd0d470455b8d9f1773e0"}, + {file = "ruff-0.12.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a03242c1522b4e0885af63320ad754d53983c9599157ee33e77d748363c561ce"}, + {file = "ruff-0.12.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fc83e4e9751e6c13b5046d7162f205d0a7bac5840183c5beebf824b08a27340"}, + {file = "ruff-0.12.9-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:881465ed56ba4dd26a691954650de6ad389a2d1fdb130fe51ff18a25639fe4bb"}, + {file = "ruff-0.12.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:43f07a3ccfc62cdb4d3a3348bf0588358a66da756aa113e071b8ca8c3b9826af"}, + {file = "ruff-0.12.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:07adb221c54b6bba24387911e5734357f042e5669fa5718920ee728aba3cbadc"}, + {file = "ruff-0.12.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f5cd34fabfdea3933ab85d72359f118035882a01bff15bd1d2b15261d85d5f66"}, + {file = "ruff-0.12.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:f6be1d2ca0686c54564da8e7ee9e25f93bdd6868263805f8c0b8fc6a449db6d7"}, + {file = "ruff-0.12.9-py3-none-win32.whl", hash = "sha256:cc7a37bd2509974379d0115cc5608a1a4a6c4bff1b452ea69db83c8855d53f93"}, + {file = "ruff-0.12.9-py3-none-win_amd64.whl", hash = "sha256:6fb15b1977309741d7d098c8a3cb7a30bc112760a00fb6efb7abc85f00ba5908"}, + {file = "ruff-0.12.9-py3-none-win_arm64.whl", hash = "sha256:63c8c819739d86b96d500cce885956a1a48ab056bbcbc61b747ad494b2485089"}, + {file = "ruff-0.12.9.tar.gz", hash = "sha256:fbd94b2e3c623f659962934e52c2bea6fc6da11f667a427a368adaf3af2c866a"}, ] -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.8.0) ; sys_platform != \"cygwin\""] -core = ["importlib_metadata (>=6) ; python_version < \"3.10\"", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.14.*)", "pytest-mypy"] - [[package]] name = "six" version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main", "dev"] -files = [ - { file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274" }, - { file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" }, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - -[[package]] -name = "soupsieve" -version = "2.7" -description = "A modern CSS selector implementation for Beautiful Soup." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4" }, - { file = "soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a" }, -] - -[[package]] -name = "stack-data" -version = "0.6.3" -description = "Extract data from python stack frames and tracebacks for informative displays" -optional = false -python-versions = "*" groups = ["dev"] files = [ - {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, - {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, -] - -[package.dependencies] -asttokens = ">=2.1.0" -executing = ">=1.2.0" -pure-eval = "*" - -[package.extras] -tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] - -[[package]] -name = "terminado" -version = "0.18.1" -description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, - {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, -] - -[package.dependencies] -ptyprocess = {version = "*", markers = "os_name != \"nt\""} -pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""} -tornado = ">=6.1.0" - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"] -typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"] - -[[package]] -name = "tinycss2" -version = "1.4.0" -description = "A tiny CSS parser" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, - {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, -] - -[package.dependencies] -webencodings = ">=0.4" - -[package.extras] -doc = ["sphinx", "sphinx_rtd_theme"] -test = ["pytest", "ruff"] - -[[package]] -name = "toolz" -version = "1.0.0" -description = "List processing tools and functional utilities" -optional = false -python-versions = ">=3.8" -groups = ["main"] -files = [ - {file = "toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236"}, - {file = "toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02"}, -] - -[[package]] -name = "tornado" -version = "6.5.1" -description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7" }, - { file = "tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6" }, - { file = "tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888" }, - { file = "tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331" }, - { file = "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" }, - { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401" }, - { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692" }, - { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a" }, - { file = "tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365" }, - { file = "tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b" }, - { file = "tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7" }, - { file = "tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c" }, -] - -[[package]] -name = "traitlets" -version = "5.14.3" -description = "Traitlets Python configuration system" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, - {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, -] - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] - -[[package]] -name = "types-python-dateutil" -version = "2.9.0.20250708" -description = "Typing stubs for python-dateutil" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "types_python_dateutil-2.9.0.20250708-py3-none-any.whl", hash = "sha256:4d6d0cc1cc4d24a2dc3816024e502564094497b713f7befda4d5bc7a8e3fd21f" }, - { file = "types_python_dateutil-2.9.0.20250708.tar.gz", hash = "sha256:ccdbd75dab2d6c9696c350579f34cffe2c281e4c5f27a585b2a2438dd1d5c8ab" }, + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] [[package]] name = "types-pyyaml" -version = "6.0.12.20250516" +version = "6.0.12.20250809" description = "Typing stubs for PyYAML" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530" }, - { file = "types_pyyaml-6.0.12.20250516.tar.gz", hash = "sha256:9f21a70216fc0fa1b216a8176db5f9e0af6eb35d2f2932acb87689d03a5bf6ba" }, + {file = "types_pyyaml-6.0.12.20250809-py3-none-any.whl", hash = "sha256:032b6003b798e7de1a1ddfeefee32fac6486bdfe4845e0ae0e7fb3ee4512b52f"}, + {file = "types_pyyaml-6.0.12.20250809.tar.gz", hash = "sha256:af4a1aca028f18e75297da2ee0da465f799627370d74073e96fee876524f61b5"}, ] [[package]] @@ -3618,52 +1266,25 @@ optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - { file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76" }, - { file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36" }, + {file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76"}, + {file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36"}, ] [[package]] name = "typing-inspection" -version = "0.4.1" +version = "0.4.2" description = "Runtime typing introspection tools" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - { file = "typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51" }, - { file = "typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28" }, + {file = "typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7"}, + {file = "typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464"}, ] [package.dependencies] typing-extensions = ">=4.12.0" -[[package]] -name = "tzdata" -version = "2025.2" -description = "Provider of IANA time zone data" -optional = false -python-versions = ">=2" -groups = ["main"] -files = [ - { file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8" }, - { file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9" }, -] - -[[package]] -name = "uri-template" -version = "1.3.0" -description = "RFC 6570 URI Template Processor" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, - {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, -] - -[package.extras] -dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"] - [[package]] name = "urllib3" version = "2.5.0" @@ -3672,8 +1293,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc" }, - { file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760" }, + {file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"}, + {file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760"}, ] [package.extras] @@ -3684,14 +1305,14 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.31.2" +version = "20.34.0" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11" }, - { file = "virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af" }, + {file = "virtualenv-20.34.0-py3-none-any.whl", hash = "sha256:341f5afa7eee943e4984a9207c025feedd768baff6753cd660c857ceb3e36026"}, + {file = "virtualenv-20.34.0.tar.gz", hash = "sha256:44815b2c9dee7ed86e387b842a84f20b93f7f417f95886ca1996a72a4138eb1a"}, ] [package.dependencies] @@ -3711,160 +1332,42 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26" }, - { file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112" }, - { file = "watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3" }, - { file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c" }, - { file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2" }, - { file = "watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c" }, - { file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948" }, - { file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860" }, - { file = "watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0" }, - { file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c" }, - { file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134" }, - { file = "watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b" }, - { file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8" }, - { file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a" }, - { file = "watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c" }, - { file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881" }, - { file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11" }, - { file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa" }, - { file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2" }, - { file = "watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a" }, - { file = "watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680" }, - { file = "watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f" }, - { file = "watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282" }, + {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26"}, + {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112"}, + {file = "watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c"}, + {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881"}, + {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11"}, + {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa"}, + {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2"}, + {file = "watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a"}, + {file = "watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680"}, + {file = "watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f"}, + {file = "watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282"}, ] [package.extras] watchmedo = ["PyYAML (>=3.10)"] -[[package]] -name = "wcwidth" -version = "0.2.13" -description = "Measures the displayed width of unicode strings in a terminal" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, - {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, -] - -[[package]] -name = "webcolors" -version = "24.11.1" -description = "A library for working with the color formats defined by HTML and CSS." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9" }, - { file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6" }, -] - -[[package]] -name = "webencodings" -version = "0.5.1" -description = "Character encoding aliases for legacy web content" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, - {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, -] - -[[package]] -name = "websocket-client" -version = "1.8.0" -description = "WebSocket client for Python with low level API options" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, - {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, -] - -[package.extras] -docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"] -optional = ["python-socks", "wsaccel"] -test = ["websockets"] - -[[package]] -name = "widgetsnbextension" -version = "4.0.14" -description = "Jupyter interactive widgets for Jupyter Notebook" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - { file = "widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575" }, - { file = "widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af" }, -] - -[[package]] -name = "xarray" -version = "2025.7.1" -description = "N-D labeled arrays and datasets in Python" -optional = false -python-versions = ">=3.11" -groups = ["main"] -files = [ - { file = "xarray-2025.7.1-py3-none-any.whl", hash = "sha256:e8647b659e53bd350d7c5a91c34dd4122ad6a3ca0bc41399d424a7c0273c7635" }, - { file = "xarray-2025.7.1.tar.gz", hash = "sha256:2884bf5672b540fcc6ff8c20a3196bda0d78fbfb4d67398d60526e97c2faceef" }, -] - -[package.dependencies] -numpy = ">=1.26" -packaging = ">=24.1" -pandas = ">=2.2" - -[package.extras] -accel = ["bottleneck", "flox (>=0.9)", "numba (>=0.59)", "numbagg (>=0.8)", "opt_einsum", "scipy (>=1.13)"] -complete = ["xarray[accel,etc,io,parallel,viz]"] -etc = ["sparse (>=0.15)"] -io = ["cftime", "fsspec", "h5netcdf", "netCDF4 (>=1.6.0)", "pooch", "pydap", "scipy (>=1.13)", "zarr (>=2.18)"] -parallel = ["dask[complete]"] -types = ["pandas-stubs", "scipy-stubs", "types-PyYAML", "types-Pygments", "types-colorama", "types-decorator", "types-defusedxml", "types-docutils", "types-networkx", "types-openpyxl", "types-pexpect", "types-psutil", "types-pycurl", "types-python-dateutil", "types-pytz", "types-setuptools"] -viz = ["cartopy (>=0.23)", "matplotlib", "nc-time-axis", "seaborn"] - -[[package]] -name = "zarr" -version = "3.1.0" -description = "An implementation of chunked, compressed, N-dimensional arrays for Python" -optional = false -python-versions = ">=3.11" -groups = ["main"] -files = [ - { file = "zarr-3.1.0-py3-none-any.whl", hash = "sha256:bd3d2f88d602d43f81df82e26dd115ea66635a2af5bf6da261d3c640bb4c1ce4" }, - { file = "zarr-3.1.0.tar.gz", hash = "sha256:ace5b111dc69d5315cb1655dfd0f816c5acf9798d2ad92f43b608a52c8c8ac2b" }, -] - -[package.dependencies] -donfig = ">=0.8" -numcodecs = { version = ">=0.14", extras = ["crc32c"] } -numpy = ">=1.26" -packaging = ">=22.0" -typing-extensions = ">=4.9" - -[package.extras] -docs = ["astroid (<4)", "numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "pytest", "rich", "s3fs (>=2023.10.0)", "sphinx (==8.1.3)", "sphinx-autoapi (==3.4.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx-copybutton", "sphinx-design", "sphinx-issues", "sphinx-reredirects", "towncrier"] -gpu = ["cupy-cuda12x"] -optional = ["rich", "universal-pathlib"] -remote = ["fsspec (>=2023.10.0)", "obstore (>=0.5.1)"] -remote-tests = ["botocore", "fsspec (>=2023.10.0)", "moto[s3,server]", "obstore (>=0.5.1)", "requests", "s3fs (>=2023.10.0)"] -test = ["coverage", "hypothesis", "mypy", "packaging", "pytest (<8.4)", "pytest-accept", "pytest-asyncio", "pytest-cov", "pytest-xdist", "rich", "tomlkit", "uv"] - [metadata] lock-version = "2.1" -python-versions = ">=3.13" -content-hash = "3ca97b9e51214f096f076795391e3d64556d52f47c53450bcf99ffd0c495f64b" +python-versions = ">=3.13,<3.15.0" +content-hash = "1db325c51badf87c9a1b8435aa6a233e47204df736d2ed3256a3799ba819ed50" diff --git a/pyproject.toml b/pyproject.toml index 81c3d03..a11dd15 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ authors = [ ] license = { text = "MPL2.0" } readme = "README.md" -requires-python = ">=3.13" +requires-python = ">=3.13,<3.15.0" dynamic = ["dependencies"] [tool.poetry.urls] @@ -16,18 +16,10 @@ repository = "https://github.com/alliander-opensource/meteoforge" documentation = "https://github.com/alliander-opensource/meteoforge" [tool.poetry.dependencies] -dask = "^2025.7" -netcdf4 = "^1.7.2" -numpy = "^2.3.1" -pydantic = "^2.11.7" -pyproj = "^3.7.1" -xarray = "^2025.7.1" -zarr = "^3.1.0" -colorlog = "^6.9.0" +pydantic = "^2.12.3" +colorlog = "^6.10.1" [tool.poetry.group.dev.dependencies] -coverage = "^7.9.2" -jupyter = "^1.1.1" mkdocs = "^1.6.1" mkdocs-material = "^9.6.15" mkdocstrings = { extras = ["python"], version = "^0.29.1" } @@ -36,6 +28,8 @@ pre-commit = "^4.2.0" pytest = "^8.4.1" ruff = "^0.12.4" types-pyyaml = "^6.0.12.20250516" +poetry-core = "^2.1.3" +pytest-cov = "^6.2.1" [build-system] requires = ["poetry-core"] @@ -105,7 +99,7 @@ addopts = [ "--cov-report=xml", "--cov-report=term-missing" ] -minversion = "8.3.2" +minversion = "8.4.1" testpaths = ["tests"] [tool.coverage.run] From 95df0369f7d57994b9739bd356ca3fe09dd218ee Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 21:55:43 +0200 Subject: [PATCH 12/50] feature: Partial copy and adjustment --- src/meteoforge/spatial_temporal/locations.py | 87 ++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/src/meteoforge/spatial_temporal/locations.py b/src/meteoforge/spatial_temporal/locations.py index 0a5cd78..ed13f74 100644 --- a/src/meteoforge/spatial_temporal/locations.py +++ b/src/meteoforge/spatial_temporal/locations.py @@ -1,2 +1,89 @@ # SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project # SPDX-License-Identifier: MPL-2.0 +from pyproj import CRS +from pyproj.exceptions import CRSError + +from src.meteoforge.logging.logging import logger + + +class MFLocation: + """The base class for representing geographic locations in MeteoForge. + + This class serves as a base for various location based formats, such as coordinates, bounding boxes, and polygons. + It provides a common interface for working with these different formats, allowing for the easy conversion and + manipulation of geographic data. + + Attributes + ---------- + x (float): + The x-coordinate of the location. Typically, this represents longitude, but this can vary based on the + Coordinate Reference System (CRS) used. + y (float): + The y-coordinate of the location. Typically, this represents latitude, but this can vary based on the + Coordinate Reference System (CRS) used. + crs (int): + The coordinate reference system of the location, if applicable via EPSG numerical code. This is used to + properly interpret the x and y coordinates in a geographic context. The default setting is EPSG code 4326, + which represents the WGS 84 geographic coordinate system. + + """ + + def __init__(self, *, x: int | float, y: int | float, epsg_code: int = 4326): + """Initializes the MFLocation with x, y coordinates and an optional EPSG code.""" + # Validate the input parameters + if self.valid_location(x, y, epsg_code): + # Set the instance variables + self.x = float(x) + self.y = float(y) + self.crs = epsg_code + else: + raise ValueError("Invalid location parameters") + + @staticmethod + def valid_location(x: float, y: float, epsg_code: int = 4326) -> bool: + """Validates the location parameters for type and existence.""" + logger.debug(f"Validating location: x={x}, y={y}, epgs_code={epsg_code}") + + # Validate the types of x, y, and epgs_code + if not isinstance(x, (int, float)): + raise ValueError("x must be a number") + if not isinstance(y, (int, float)): + raise ValueError("y must be a number") + if not isinstance(epsg_code, int): + raise ValueError("epgs_code must be an integer") + + logger.debug(f"Type validation passed: x={type(x)}, y={type(y)}, epgs_code={type(epsg_code)}") + + # Validate the CRS type suggested by the EPSG code + MFLocation.valid_crs(epsg_code) + + logger.debug(f"CRS validation passed for EPSG code: {epsg_code}") + + # Check that x and y are within valid ranges for geographic coordinates on the given CRS + ... + + logger.debug(f"Location validation passed and valid: x={x}, y={y}, epsg_code={epsg_code}") + + @staticmethod + def valid_crs(epsg_code: int) -> bool: + """Validates the EPSG code for known coordinate reference systems.""" + logger.debug(f"Validating CRS with EPSG code: {epsg_code}") + + try: + crs = CRS.from_epsg(epsg_code) + except CRSError as e: + raise ValueError(f"invalid EPSG code '{crs}': --<<-- {e} -->>--") from e + + # Check that the CRS is not deprecated + if crs.is_deprecated: + raise ValueError( + f"The CRS with EPSG code {epsg_code} is deprecated. Please use a different (non-deprecated) CRS." + ) + + # Check that the CRS is for an x,y based geographic coordinate system + if not crs.is_geographic and not crs.is_geocentric: + raise ValueError( + "The MFLocation class type only supports Geographic (CRS.is_geographic=True) and Geocentric Coordinate " + "Systems (CRS.is_geocentric=True)." + ) + return True From 324eebd159c9c00d460f273d6856fe8f767d750d Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sun, 12 Oct 2025 11:33:20 +0200 Subject: [PATCH 13/50] feature: In between commit Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- CODE_OF_CONDUCT.rst => CODE_OF_CONDUCT.md | 63 +- SECURITY.md | 4 + poetry.lock | 3975 +++++++++++++++--- pyproject.toml | 19 +- src/__init__.py | 2 + src/meteoforge/core/__init__.py | 2 + src/meteoforge/logging/__init__.py | 2 + src/meteoforge/parameters/__init__.py | 2 + src/meteoforge/spatial_temporal/__init__.py | 2 + src/meteoforge/spatial_temporal/locations.py | 39 +- 10 files changed, 3405 insertions(+), 705 deletions(-) rename CODE_OF_CONDUCT.rst => CODE_OF_CONDUCT.md (58%) create mode 100644 src/__init__.py create mode 100644 src/meteoforge/core/__init__.py create mode 100644 src/meteoforge/logging/__init__.py create mode 100644 src/meteoforge/parameters/__init__.py create mode 100644 src/meteoforge/spatial_temporal/__init__.py diff --git a/CODE_OF_CONDUCT.rst b/CODE_OF_CONDUCT.md similarity index 58% rename from CODE_OF_CONDUCT.rst rename to CODE_OF_CONDUCT.md index 91f4640..067546c 100644 --- a/CODE_OF_CONDUCT.rst +++ b/CODE_OF_CONDUCT.md @@ -1,15 +1,9 @@ [//]: # (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) [//]: # (SPDX-License-Identifier: MPL-2.0) -.. _code-of-conduct: +# Code of Conduct -=============== -Code of Conduct -=============== - ----------- -Our Pledge ----------- +## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and @@ -18,33 +12,29 @@ size, disability, ethnicity, gender identity and expression, level of experience, education, socioeconomic status, nationality, personal appearance, race, religion, or sexual identity and orientation. -------------- -Our Standards -------------- +## Our Standards Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting +- The use of sexualized language or imagery and unwelcome sexual attention or + advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic + address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting --------------------- -Our Responsibilities --------------------- +## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in @@ -56,9 +46,7 @@ not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ------ -Scope ------ +## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of @@ -67,18 +55,17 @@ address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. -------------------- -Conflict Resolution -------------------- +## Conflict Resolution -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at OSPO@alliander. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at * +*OSPO@alliander**. All complaints will be reviewed and investigated and will result in a response that is deemed +necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to +the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership. ------------ -Attribution ------------ +## Attribution This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at -https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + diff --git a/SECURITY.md b/SECURITY.md index 4c4821f..5ebbfca 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -19,6 +19,10 @@ Please describe clearly how the issue can be reproduced, so we can fix it quickl the affected system and a description of the vulnerability are sufficient. We may contact you if we need more information about a complex vulnerability. +## Other issues + +For non-security related issues, please use the [issue tracker]( + ## Thanks We don't have a bug bounty program, but we're grateful for all the reports we get. We offer an Alliander Security hoodie diff --git a/poetry.lock b/poetry.lock index eae691b..3b274e4 100644 --- a/poetry.lock +++ b/poetry.lock @@ -6,12 +6,167 @@ version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" -groups = ["main"] +groups = ["main", "dev"] files = [ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] +[[package]] +name = "anyio" +version = "4.9.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c" }, + { file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028" }, +] + +[package.dependencies] +idna = ">=2.8" +sniffio = ">=1.1" + +[package.extras] +doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] +test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] +trio = ["trio (>=0.26.1)"] + +[[package]] +name = "appnope" +version = "0.1.4" +description = "Disable App Nap on macOS >= 10.9" +optional = false +python-versions = ">=3.6" +groups = ["dev"] +markers = "platform_system == \"Darwin\"" +files = [ + {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, + {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, +] + +[[package]] +name = "argon2-cffi" +version = "25.1.0" +description = "Argon2 for Python" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741" }, + { file = "argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1" }, +] + +[package.dependencies] +argon2-cffi-bindings = "*" + +[[package]] +name = "argon2-cffi-bindings" +version = "21.2.0" +description = "Low-level CFFI bindings for Argon2" +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"}, + {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, +] + +[package.dependencies] +cffi = ">=1.0.1" + +[package.extras] +dev = ["cogapp", "pre-commit", "pytest", "wheel"] +tests = ["pytest"] + +[[package]] +name = "arrow" +version = "1.3.0" +description = "Better dates & times for Python" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, + {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, +] + +[package.dependencies] +python-dateutil = ">=2.7.0" +types-python-dateutil = ">=2.8.10" + +[package.extras] +doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] +test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"] + +[[package]] +name = "asttokens" +version = "3.0.0" +description = "Annotate AST trees with source code positions" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2" }, + { file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7" }, +] + +[package.extras] +astroid = ["astroid (>=2,<4)"] +test = ["astroid (>=2,<4)", "pytest", "pytest-cov", "pytest-xdist"] + +[[package]] +name = "async-lru" +version = "2.0.5" +description = "Simple LRU cache for asyncio" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943" }, + { file = "async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb" }, +] + +[[package]] +name = "attrs" +version = "25.3.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3" }, + { file = "attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b" }, +] + +[package.extras] +benchmark = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +cov = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier"] +tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\""] + [[package]] name = "babel" version = "2.17.0" @@ -20,8 +175,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, - {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, + { file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2" }, + { file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d" }, ] [package.extras] @@ -35,30 +190,152 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f"}, - {file = "backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf"}, - {file = "backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa"}, - {file = "backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b"}, - {file = "backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9"}, - {file = "backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60"}, - {file = "backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59"}, + { file = "backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f" }, + { file = "backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf" }, + { file = "backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa" }, + { file = "backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b" }, + { file = "backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9" }, + { file = "backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60" }, + { file = "backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59" }, ] [package.extras] extras = ["regex"] +[[package]] +name = "beautifulsoup4" +version = "4.13.4" +description = "Screen-scraping library" +optional = false +python-versions = ">=3.7.0" +groups = ["dev"] +files = [ + { file = "beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b" }, + { file = "beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195" }, +] + +[package.dependencies] +soupsieve = ">1.2" +typing-extensions = ">=4.0.0" + +[package.extras] +cchardet = ["cchardet"] +chardet = ["chardet"] +charset-normalizer = ["charset-normalizer"] +html5lib = ["html5lib"] +lxml = ["lxml"] + +[[package]] +name = "bleach" +version = "6.2.0" +description = "An easy safelist-based HTML-sanitizing tool." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e" }, + { file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f" }, +] + +[package.dependencies] +tinycss2 = { version = ">=1.1.0,<1.5", optional = true, markers = "extra == \"css\"" } +webencodings = "*" + +[package.extras] +css = ["tinycss2 (>=1.1.0,<1.5)"] + [[package]] name = "certifi" -version = "2025.8.3" +version = "2025.7.14" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.7" +groups = ["main", "dev"] +files = [ + { file = "certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2" }, + { file = "certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995" }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +description = "Foreign Function Interface for Python calling C code." +optional = false +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5"}, - {file = "certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] +[package.dependencies] +pycparser = "*" + [[package]] name = "cfgv" version = "3.4.0" @@ -71,93 +348,155 @@ files = [ {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, ] +[[package]] +name = "cftime" +version = "1.6.4.post1" +description = "Time-handling functionality from netcdf4-python" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "cftime-1.6.4.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0baa9bc4850929da9f92c25329aa1f651e2d6f23e237504f337ee9e12a769f5d"}, + {file = "cftime-1.6.4.post1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6bb6b087f4b2513c37670bccd457e2a666ca489c5f2aad6e2c0e94604dc1b5b9"}, + {file = "cftime-1.6.4.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d9bdeb9174962c9ca00015190bfd693de6b0ec3ec0b3dbc35c693a4f48efdcc"}, + {file = "cftime-1.6.4.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e735cfd544878eb94d0108ff5a093bd1a332dba90f979a31a357756d609a90d5"}, + {file = "cftime-1.6.4.post1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1dcd1b140bf50da6775c56bd7ca179e84bd258b2f159b53eefd5c514b341f2bf"}, + {file = "cftime-1.6.4.post1-cp310-cp310-win_amd64.whl", hash = "sha256:e60b8f24b20753f7548f410f7510e28b941f336f84bd34e3cfd7874af6e70281"}, + {file = "cftime-1.6.4.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1bf7be0a0afc87628cb8c8483412aac6e48e83877004faa0936afb5bf8a877ba"}, + {file = "cftime-1.6.4.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f64ca83acc4e3029f737bf3a32530ffa1fbf53124f5bee70b47548bc58671a7"}, + {file = "cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ebdfd81726b0cfb8b524309224fa952898dfa177c13d5f6af5b18cefbf497d"}, + {file = "cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ea0965a4c87739aebd84fe8eed966e5809d10065eeffd35c99c274b6f8da15"}, + {file = "cftime-1.6.4.post1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:800a18aea4e8cb2b206450397cb8a53b154798738af3cdd3c922ce1ca198b0e6"}, + {file = "cftime-1.6.4.post1-cp311-cp311-win_amd64.whl", hash = "sha256:5dcfc872f455db1f12eabe3c3ba98e93757cd60ed3526a53246e966ccde46c8a"}, + {file = "cftime-1.6.4.post1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a590f73506f4704ba5e154ef55bfbaed5e1b4ac170f3caeb8c58e4f2c619ee4e"}, + {file = "cftime-1.6.4.post1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:933cb10e1af4e362e77f513e3eb92b34a688729ddbf938bbdfa5ac20a7f44ba0"}, + {file = "cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf17a1b36f62e9e73c4c9363dd811e1bbf1170f5ac26d343fb26012ccf482908"}, + {file = "cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e18021f421aa26527bad8688c1acf0c85fa72730beb6efce969c316743294f2"}, + {file = "cftime-1.6.4.post1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5835b9d622f9304d1c23a35603a0f068739f428d902860f25e6e7e5a1b7cd8ea"}, + {file = "cftime-1.6.4.post1-cp312-cp312-win_amd64.whl", hash = "sha256:7f50bf0d1b664924aaee636eb2933746b942417d1f8b82ab6c1f6e8ba0da6885"}, + {file = "cftime-1.6.4.post1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5c89766ebf088c097832ea618c24ed5075331f0b7bf8e9c2d4144aefbf2f1850"}, + {file = "cftime-1.6.4.post1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7f27113f7ccd1ca32881fdcb9a4bec806a5f54ae621fc1c374f1171f3ed98ef2"}, + {file = "cftime-1.6.4.post1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da367b23eea7cf4df071c88e014a1600d6c5bbf22e3393a4af409903fa397e28"}, + {file = "cftime-1.6.4.post1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6579c5c83cdf09d73aa94c7bc34925edd93c5f2c7dd28e074f568f7e376271a0"}, + {file = "cftime-1.6.4.post1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6b731c7133d17b479ca0c3c46a7a04f96197f0a4d753f4c2284c3ff0447279b4"}, + {file = "cftime-1.6.4.post1-cp313-cp313-win_amd64.whl", hash = "sha256:d2a8c223faea7f1248ab469cc0d7795dd46f2a423789038f439fee7190bae259"}, + {file = "cftime-1.6.4.post1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9df3e2d49e548c62d1939e923800b08d2ab732d3ac8d75b857edd7982c878552"}, + {file = "cftime-1.6.4.post1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2892b7e7654142d825655f60eb66c3e1af745901890316907071d44cf9a18d8a"}, + {file = "cftime-1.6.4.post1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4ab54e6c04e68395d454cd4001188fc4ade2fe48035589ed65af80c4527ef08"}, + {file = "cftime-1.6.4.post1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:568b69fc52f406e361db62a4d7a219c6fb0ced138937144c3b3a511648dd6c50"}, + {file = "cftime-1.6.4.post1-cp38-cp38-win_amd64.whl", hash = "sha256:640911d2629f4a8f81f6bc0163a983b6b94f86d1007449b8cbfd926136cda253"}, + {file = "cftime-1.6.4.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:44e9f8052600803b55f8cb6bcac2be49405c21efa900ec77a9fb7f692db2f7a6"}, + {file = "cftime-1.6.4.post1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a90b6ef4a3fc65322c212a2c99cec75d1886f1ebaf0ff6189f7b327566762222"}, + {file = "cftime-1.6.4.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:652700130dbcca3ae36dbb5b61ff360e62aa09fabcabc42ec521091a14389901"}, + {file = "cftime-1.6.4.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a7fb6cc541a027dab37fdeb695f8a2b21cd7d200be606f81b5abc38f2391e2"}, + {file = "cftime-1.6.4.post1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:fc2c0abe2dbd147e1b1e6d0f3de19a5ea8b04956acc204830fd8418066090989"}, + {file = "cftime-1.6.4.post1-cp39-cp39-win_amd64.whl", hash = "sha256:0ee2f5af8643aa1b47b7e388763a1a6e0dc05558cd2902cffb9cbcf954397648"}, + {file = "cftime-1.6.4.post1.tar.gz", hash = "sha256:50ac76cc9f10ab7bd46e44a71c51a6927051b499b4407df4f29ab13d741b942f"}, +] + +[package.dependencies] +numpy = {version = ">=1.26.0b1", markers = "python_version >= \"3.12.0.rc1\""} + [[package]] name = "charset-normalizer" -version = "3.4.3" +version = "3.4.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "charset_normalizer-3.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fb7f67a1bfa6e40b438170ebdc8158b78dc465a5a67b6dde178a46987b244a72"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc9370a2da1ac13f0153780040f465839e6cccb4a1e44810124b4e22483c93fe"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:07a0eae9e2787b586e129fdcbe1af6997f8d0e5abaa0bc98c0e20e124d67e601"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:74d77e25adda8581ffc1c720f1c81ca082921329452eba58b16233ab1842141c"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0e909868420b7049dafd3a31d45125b31143eec59235311fc4c57ea26a4acd2"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c6f162aabe9a91a309510d74eeb6507fab5fff92337a15acbe77753d88d9dcf0"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4ca4c094de7771a98d7fbd67d9e5dbf1eb73efa4f744a730437d8a3a5cf994f0"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:02425242e96bcf29a49711b0ca9f37e451da7c70562bc10e8ed992a5a7a25cc0"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:78deba4d8f9590fe4dae384aeff04082510a709957e968753ff3c48399f6f92a"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-win32.whl", hash = "sha256:d79c198e27580c8e958906f803e63cddb77653731be08851c7df0b1a14a8fc0f"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:c6e490913a46fa054e03699c70019ab869e990270597018cef1d8562132c2669"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-win32.whl", hash = "sha256:6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0f2be7e0cf7754b9a30eb01f4295cc3d4358a479843b31f328afd210e2c7598c"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c60e092517a73c632ec38e290eba714e9627abe9d301c8c8a12ec32c314a2a4b"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:252098c8c7a873e17dd696ed98bbe91dbacd571da4b87df3736768efa7a792e4"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3653fad4fe3ed447a596ae8638b437f827234f01a8cd801842e43f3d0a6b281b"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8999f965f922ae054125286faf9f11bc6932184b93011d138925a1773830bbe9"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d95bfb53c211b57198bb91c46dd5a2d8018b3af446583aab40074bf7988401cb"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:5b413b0b1bfd94dbf4023ad6945889f374cd24e3f62de58d6bb102c4d9ae534a"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:b5e3b2d152e74e100a9e9573837aba24aab611d39428ded46f4e4022ea7d1942"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a2d08ac246bb48479170408d6c19f6385fa743e7157d716e144cad849b2dd94b"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-win32.whl", hash = "sha256:ec557499516fc90fd374bf2e32349a2887a876fbf162c160e3c01b6849eaf557"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:5d8d01eac18c423815ed4f4a2ec3b439d654e55ee4ad610e153cf02faf67ea40"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:70bfc5f2c318afece2f5838ea5e4c3febada0be750fcf4775641052bbba14d05"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23b6b24d74478dc833444cbd927c338349d6ae852ba53a0d02a2de1fce45b96e"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:34a7f768e3f985abdb42841e20e17b330ad3aaf4bb7e7aeeb73db2e70f077b99"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fb731e5deb0c7ef82d698b0f4c5bb724633ee2a489401594c5c88b02e6cb15f7"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:257f26fed7d7ff59921b78244f3cd93ed2af1800ff048c33f624c87475819dd7"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1ef99f0456d3d46a50945c98de1774da86f8e992ab5c77865ea8b8195341fc19"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:2c322db9c8c89009a990ef07c3bcc9f011a3269bc06782f916cd3d9eed7c9312"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:511729f456829ef86ac41ca78c63a5cb55240ed23b4b737faca0eb1abb1c41bc"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:88ab34806dea0671532d3f82d82b85e8fc23d7b2dd12fa837978dad9bb392a34"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-win32.whl", hash = "sha256:16a8770207946ac75703458e2c743631c79c59c5890c80011d536248f8eaa432"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:d22dbedd33326a4a5190dd4fe9e9e693ef12160c77382d9e87919bce54f3d4ca"}, - {file = "charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a"}, - {file = "charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14"}, + { file = "charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-win32.whl", hash = "sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cad5f45b3146325bb38d6855642f6fd609c3f7cad4dbaf75549bf3b904d3184" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2680962a4848b3c4f155dc2ee64505a9c57186d0d56b43123b17ca3de18f0fa" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:36b31da18b8890a76ec181c3cf44326bf2c48e36d393ca1b72b3f484113ea344" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4074c5a429281bf056ddd4c5d3b740ebca4d43ffffe2ef4bf4d2d05114299da" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9e36a97bee9b86ef9a1cf7bb96747eb7a15c2f22bdb5b516434b00f2a599f02" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:1b1bde144d98e446b056ef98e59c256e9294f6b74d7af6846bf5ffdafd687a7d" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:915f3849a011c1f593ab99092f3cecfcb4d65d8feb4a64cf1bf2d22074dc0ec4" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:fb707f3e15060adf5b7ada797624a6c6e0138e2a26baa089df64c68ee98e040f" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:25a23ea5c7edc53e0f29bae2c44fcb5a1aa10591aae107f2a2b2583a9c5cbc64" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:770cab594ecf99ae64c236bc9ee3439c3f46be49796e265ce0cc8bc17b10294f" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-win32.whl", hash = "sha256:6a0289e4589e8bdfef02a80478f1dfcb14f0ab696b5a00e1f4b8a14a307a3c58" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6fc1f5b51fa4cecaa18f2bd7a003f3dd039dd615cd69a2afd6d3b19aed6775f2" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76af085e67e56c8816c3ccf256ebd136def2ed9654525348cfa744b6802b69eb" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45ba65510e2647721e35323d6ef54c7974959f6081b58d4ef5d87c60c84919a" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:046595208aae0120559a67693ecc65dd75d46f7bf687f159127046628178dc45" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75d10d37a47afee94919c4fab4c22b9bc2a8bf7d4f46f87363bcf0573f3ff4f5" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6333b3aa5a12c26b2a4d4e7335a28f1475e0e5e17d69d55141ee3cab736f66d1" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8323a9b031aa0393768b87f04b4164a40037fb2a3c11ac06a03ffecd3618027" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:24498ba8ed6c2e0b56d4acbf83f2d989720a93b41d712ebd4f4979660db4417b" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:844da2b5728b5ce0e32d863af26f32b5ce61bc4273a9c720a9f3aa9df73b1455" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:65c981bdbd3f57670af8b59777cbfae75364b483fa8a9f420f08094531d54a01" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3c21d4fca343c805a52c0c78edc01e3477f6dd1ad7c47653241cf2a206d4fc58" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dc7039885fa1baf9be153a0626e337aa7ec8bf96b0128605fb0d77788ddc1681" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-win32.whl", hash = "sha256:8272b73e1c5603666618805fe821edba66892e2870058c94c53147602eab29c7" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:70f7172939fdf8790425ba31915bfbe8335030f05b9913d7ae00a87d4395620a" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:005fa3432484527f9732ebd315da8da8001593e2cf46a3d817669f062c3d9ed4" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e92fca20c46e9f5e1bb485887d074918b13543b1c2a1185e69bb8d17ab6236a7" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50bf98d5e563b83cc29471fa114366e6806bc06bc7a25fd59641e41445327836" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:721c76e84fe669be19c5791da68232ca2e05ba5185575086e384352e2c309597" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82d8fd25b7f4675d0c47cf95b594d4e7b158aca33b76aa63d07186e13c0e0ab7" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3daeac64d5b371dea99714f08ffc2c208522ec6b06fbc7866a450dd446f5c0f" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dccab8d5fa1ef9bfba0590ecf4d46df048d18ffe3eec01eeb73a42e0d9e7a8ba" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:aaf27faa992bfee0264dc1f03f4c75e9fcdda66a519db6b957a3f826e285cf12" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:eb30abc20df9ab0814b5a2524f23d75dcf83cde762c161917a2b4b7b55b1e518" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:c72fbbe68c6f32f251bdc08b8611c7b3060612236e960ef848e0a517ddbe76c5" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:982bb1e8b4ffda883b3d0a521e23abcd6fd17418f6d2c4118d257a10199c0ce3" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-win32.whl", hash = "sha256:43e0933a0eff183ee85833f341ec567c0980dae57c464d8a508e1b2ceb336471" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:d11b54acf878eef558599658b0ffca78138c8c3655cf4f3a4a673c437e67732e" }, + { file = "charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0" }, + { file = "charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63" }, ] [[package]] @@ -166,263 +505,1219 @@ version = "8.2.1" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.10" -groups = ["dev"] +groups = ["main", "dev"] files = [ - {file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b"}, - {file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202"}, + { file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b" }, + { file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202" }, ] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} +[[package]] +name = "cloudpickle" +version = "3.1.1" +description = "Pickler class to extend the standard pickle.Pickler functionality" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + { file = "cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e" }, + { file = "cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64" }, +] + [[package]] name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["main", "dev"] +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main", "dev"] +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] +markers = { main = "platform_system == \"Windows\" or sys_platform == \"win32\"" } + +[[package]] +name = "colorlog" +version = "6.9.0" +description = "Add colours to the output of Python's logging module." +optional = false +python-versions = ">=3.6" +groups = ["main"] +files = [ + { file = "colorlog-6.9.0-py3-none-any.whl", hash = "sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff" }, + { file = "colorlog-6.9.0.tar.gz", hash = "sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2" }, +] + +[package.dependencies] +colorama = { version = "*", markers = "sys_platform == \"win32\"" } + +[package.extras] +development = ["black", "flake8", "mypy", "pytest", "types-colorama"] + +[[package]] +name = "comm" +version = "0.2.2" +description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, + {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, +] + +[package.dependencies] +traitlets = ">=4" + +[package.extras] +test = ["pytest"] + +[[package]] +name = "coverage" +version = "7.9.2" +description = "Code coverage measurement for Python" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "coverage-7.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:66283a192a14a3854b2e7f3418d7db05cdf411012ab7ff5db98ff3b181e1f912" }, + { file = "coverage-7.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4e01d138540ef34fcf35c1aa24d06c3de2a4cffa349e29a10056544f35cca15f" }, + { file = "coverage-7.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f22627c1fe2745ee98d3ab87679ca73a97e75ca75eb5faee48660d060875465f" }, + { file = "coverage-7.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b1c2d8363247b46bd51f393f86c94096e64a1cf6906803fa8d5a9d03784bdbf" }, + { file = "coverage-7.9.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c10c882b114faf82dbd33e876d0cbd5e1d1ebc0d2a74ceef642c6152f3f4d547" }, + { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:de3c0378bdf7066c3988d66cd5232d161e933b87103b014ab1b0b4676098fa45" }, + { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1e2f097eae0e5991e7623958a24ced3282676c93c013dde41399ff63e230fcf2" }, + { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:28dc1f67e83a14e7079b6cea4d314bc8b24d1aed42d3582ff89c0295f09b181e" }, + { file = "coverage-7.9.2-cp310-cp310-win32.whl", hash = "sha256:bf7d773da6af9e10dbddacbf4e5cab13d06d0ed93561d44dae0188a42c65be7e" }, + { file = "coverage-7.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:0c0378ba787681ab1897f7c89b415bd56b0b2d9a47e5a3d8dc0ea55aac118d6c" }, + { file = "coverage-7.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a7a56a2964a9687b6aba5b5ced6971af308ef6f79a91043c05dd4ee3ebc3e9ba" }, + { file = "coverage-7.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:123d589f32c11d9be7fe2e66d823a236fe759b0096f5db3fb1b75b2fa414a4fa" }, + { file = "coverage-7.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:333b2e0ca576a7dbd66e85ab402e35c03b0b22f525eed82681c4b866e2e2653a" }, + { file = "coverage-7.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:326802760da234baf9f2f85a39e4a4b5861b94f6c8d95251f699e4f73b1835dc" }, + { file = "coverage-7.9.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19e7be4cfec248df38ce40968c95d3952fbffd57b400d4b9bb580f28179556d2" }, + { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0b4a4cb73b9f2b891c1788711408ef9707666501ba23684387277ededab1097c" }, + { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:2c8937fa16c8c9fbbd9f118588756e7bcdc7e16a470766a9aef912dd3f117dbd" }, + { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:42da2280c4d30c57a9b578bafd1d4494fa6c056d4c419d9689e66d775539be74" }, + { file = "coverage-7.9.2-cp311-cp311-win32.whl", hash = "sha256:14fa8d3da147f5fdf9d298cacc18791818f3f1a9f542c8958b80c228320e90c6" }, + { file = "coverage-7.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:549cab4892fc82004f9739963163fd3aac7a7b0df430669b75b86d293d2df2a7" }, + { file = "coverage-7.9.2-cp311-cp311-win_arm64.whl", hash = "sha256:c2667a2b913e307f06aa4e5677f01a9746cd08e4b35e14ebcde6420a9ebb4c62" }, + { file = "coverage-7.9.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ae9eb07f1cfacd9cfe8eaee6f4ff4b8a289a668c39c165cd0c8548484920ffc0" }, + { file = "coverage-7.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9ce85551f9a1119f02adc46d3014b5ee3f765deac166acf20dbb851ceb79b6f3" }, + { file = "coverage-7.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8f6389ac977c5fb322e0e38885fbbf901743f79d47f50db706e7644dcdcb6e1" }, + { file = "coverage-7.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff0d9eae8cdfcd58fe7893b88993723583a6ce4dfbfd9f29e001922544f95615" }, + { file = "coverage-7.9.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fae939811e14e53ed8a9818dad51d434a41ee09df9305663735f2e2d2d7d959b" }, + { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:31991156251ec202c798501e0a42bbdf2169dcb0f137b1f5c0f4267f3fc68ef9" }, + { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d0d67963f9cbfc7c7f96d4ac74ed60ecbebd2ea6eeb51887af0f8dce205e545f" }, + { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:49b752a2858b10580969ec6af6f090a9a440a64a301ac1528d7ca5f7ed497f4d" }, + { file = "coverage-7.9.2-cp312-cp312-win32.whl", hash = "sha256:88d7598b8ee130f32f8a43198ee02edd16d7f77692fa056cb779616bbea1b355" }, + { file = "coverage-7.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:9dfb070f830739ee49d7c83e4941cc767e503e4394fdecb3b54bfdac1d7662c0" }, + { file = "coverage-7.9.2-cp312-cp312-win_arm64.whl", hash = "sha256:4e2c058aef613e79df00e86b6d42a641c877211384ce5bd07585ed7ba71ab31b" }, + { file = "coverage-7.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:985abe7f242e0d7bba228ab01070fde1d6c8fa12f142e43debe9ed1dde686038" }, + { file = "coverage-7.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82c3939264a76d44fde7f213924021ed31f55ef28111a19649fec90c0f109e6d" }, + { file = "coverage-7.9.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae5d563e970dbe04382f736ec214ef48103d1b875967c89d83c6e3f21706d5b3" }, + { file = "coverage-7.9.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bdd612e59baed2a93c8843c9a7cb902260f181370f1d772f4842987535071d14" }, + { file = "coverage-7.9.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:256ea87cb2a1ed992bcdfc349d8042dcea1b80436f4ddf6e246d6bee4b5d73b6" }, + { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f44ae036b63c8ea432f610534a2668b0c3aee810e7037ab9d8ff6883de480f5b" }, + { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:82d76ad87c932935417a19b10cfe7abb15fd3f923cfe47dbdaa74ef4e503752d" }, + { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:619317bb86de4193debc712b9e59d5cffd91dc1d178627ab2a77b9870deb2868" }, + { file = "coverage-7.9.2-cp313-cp313-win32.whl", hash = "sha256:0a07757de9feb1dfafd16ab651e0f628fd7ce551604d1bf23e47e1ddca93f08a" }, + { file = "coverage-7.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:115db3d1f4d3f35f5bb021e270edd85011934ff97c8797216b62f461dd69374b" }, + { file = "coverage-7.9.2-cp313-cp313-win_arm64.whl", hash = "sha256:48f82f889c80af8b2a7bb6e158d95a3fbec6a3453a1004d04e4f3b5945a02694" }, + { file = "coverage-7.9.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:55a28954545f9d2f96870b40f6c3386a59ba8ed50caf2d949676dac3ecab99f5" }, + { file = "coverage-7.9.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cdef6504637731a63c133bb2e6f0f0214e2748495ec15fe42d1e219d1b133f0b" }, + { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcd5ebe66c7a97273d5d2ddd4ad0ed2e706b39630ed4b53e713d360626c3dbb3" }, + { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9303aed20872d7a3c9cb39c5d2b9bdbe44e3a9a1aecb52920f7e7495410dfab8" }, + { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc18ea9e417a04d1920a9a76fe9ebd2f43ca505b81994598482f938d5c315f46" }, + { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6406cff19880aaaadc932152242523e892faff224da29e241ce2fca329866584" }, + { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2d0d4f6ecdf37fcc19c88fec3e2277d5dee740fb51ffdd69b9579b8c31e4232e" }, + { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c33624f50cf8de418ab2b4d6ca9eda96dc45b2c4231336bac91454520e8d1fac" }, + { file = "coverage-7.9.2-cp313-cp313t-win32.whl", hash = "sha256:1df6b76e737c6a92210eebcb2390af59a141f9e9430210595251fbaf02d46926" }, + { file = "coverage-7.9.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f5fd54310b92741ebe00d9c0d1d7b2b27463952c022da6d47c175d246a98d1bd" }, + { file = "coverage-7.9.2-cp313-cp313t-win_arm64.whl", hash = "sha256:c48c2375287108c887ee87d13b4070a381c6537d30e8487b24ec721bf2a781cb" }, + { file = "coverage-7.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ddc39510ac922a5c4c27849b739f875d3e1d9e590d1e7b64c98dadf037a16cce" }, + { file = "coverage-7.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a535c0c7364acd55229749c2b3e5eebf141865de3a8f697076a3291985f02d30" }, + { file = "coverage-7.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df0f9ef28e0f20c767ccdccfc5ae5f83a6f4a2fbdfbcbcc8487a8a78771168c8" }, + { file = "coverage-7.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f3da12e0ccbcb348969221d29441ac714bbddc4d74e13923d3d5a7a0bebef7a" }, + { file = "coverage-7.9.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a17eaf46f56ae0f870f14a3cbc2e4632fe3771eab7f687eda1ee59b73d09fe4" }, + { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:669135a9d25df55d1ed56a11bf555f37c922cf08d80799d4f65d77d7d6123fcf" }, + { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:9d3a700304d01a627df9db4322dc082a0ce1e8fc74ac238e2af39ced4c083193" }, + { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:71ae8b53855644a0b1579d4041304ddc9995c7b21c8a1f16753c4d8903b4dfed" }, + { file = "coverage-7.9.2-cp39-cp39-win32.whl", hash = "sha256:dd7a57b33b5cf27acb491e890720af45db05589a80c1ffc798462a765be6d4d7" }, + { file = "coverage-7.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:f65bb452e579d5540c8b37ec105dd54d8b9307b07bcaa186818c104ffda22441" }, + { file = "coverage-7.9.2-pp39.pp310.pp311-none-any.whl", hash = "sha256:8a1166db2fb62473285bcb092f586e081e92656c7dfa8e9f62b4d39d7e6b5050" }, + { file = "coverage-7.9.2-py3-none-any.whl", hash = "sha256:e425cd5b00f6fc0ed7cdbd766c70be8baab4b7839e4d4fe5fac48581dd968ea4" }, + { file = "coverage-7.9.2.tar.gz", hash = "sha256:997024fa51e3290264ffd7492ec97d0690293ccd2b45a6cd7d82d945a4a80c8b" }, +] + +[package.extras] +toml = ["tomli ; python_full_version <= \"3.11.0a6\""] + +[[package]] +name = "crc32c" +version = "2.7.1" +description = "A python package implementing the crc32c algorithm in hardware and software" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1fd1f9c6b50d7357736676278a1b8c8986737b8a1c76d7eab4baa71d0b6af67f" }, + { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:805c2be1bc0e251c48439a62b0422385899c15289483692bc70e78473c1039f1" }, + { file = "crc32c-2.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f4333e62b7844dfde112dbb8489fd2970358eddc3310db21e943a9f6994df749" }, + { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f0fadc741e79dc705e2d9ee967473e8a061d26b04310ed739f1ee292f33674f" }, + { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91ced31055d26d59385d708bbd36689e1a1d604d4b0ceb26767eb5a83156f85d" }, + { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36ffa999b72e3c17f6a066ae9e970b40f8c65f38716e436c39a33b809bc6ed9f" }, + { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e80114dd7f462297e54d5da1b9ff472e5249c5a2b406aa51c371bb0edcbf76bd" }, + { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:676f5b46da268b5190f9fb91b3f037a00d114b411313664438525db876adc71f" }, + { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8d0e660c9ed269e90692993a4457a932fc22c9cc96caf79dd1f1a84da85bb312" }, + { file = "crc32c-2.7.1-cp310-cp310-win32.whl", hash = "sha256:17a2c3f8c6d85b04b5511af827b5dbbda4e672d188c0b9f20a8156e93a1aa7b6" }, + { file = "crc32c-2.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3208764c29688f91a35392073229975dd7687b6cb9f76b919dae442cabcd5126" }, + { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:19e03a50545a3ef400bd41667d5525f71030488629c57d819e2dd45064f16192" }, + { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c03286b1e5ce9bed7090084f206aacd87c5146b4b10de56fe9e86cbbbf851cf" }, + { file = "crc32c-2.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:80ebbf144a1a56a532b353e81fa0f3edca4f4baa1bf92b1dde2c663a32bb6a15" }, + { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96b794fd11945298fdd5eb1290a812efb497c14bc42592c5c992ca077458eeba" }, + { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9df7194dd3c0efb5a21f5d70595b7a8b4fd9921fbbd597d6d8e7a11eca3e2d27" }, + { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d698eec444b18e296a104d0b9bb6c596c38bdcb79d24eba49604636e9d747305" }, + { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e07cf10ef852d219d179333fd706d1c415626f1f05e60bd75acf0143a4d8b225" }, + { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d2a051f296e6e92e13efee3b41db388931cdb4a2800656cd1ed1d9fe4f13a086" }, + { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1738259802978cdf428f74156175da6a5fdfb7256f647fdc0c9de1bc6cd7173" }, + { file = "crc32c-2.7.1-cp311-cp311-win32.whl", hash = "sha256:f7786d219a1a1bf27d0aa1869821d11a6f8e90415cfffc1e37791690d4a848a1" }, + { file = "crc32c-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:887f6844bb3ad35f0778cd10793ad217f7123a5422e40041231b8c4c7329649d" }, + { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f7d1c4e761fe42bf856130daf8b2658df33fe0ced3c43dadafdfeaa42b57b950" }, + { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:73361c79a6e4605204457f19fda18b042a94508a52e53d10a4239da5fb0f6a34" }, + { file = "crc32c-2.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:afd778fc8ac0ed2ffbfb122a9aa6a0e409a8019b894a1799cda12c01534493e0" }, + { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56ef661b34e9f25991fface7f9ad85e81bbc1b3fe3b916fd58c893eabe2fa0b8" }, + { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:571aa4429444b5d7f588e4377663592145d2d25eb1635abb530f1281794fc7c9" }, + { file = "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" }, + { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:99d17637c4867672cb8adeea007294e3c3df9d43964369516cfe2c1f47ce500a" }, + { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f4a400ac3c69a32e180d8753fd7ec7bccb80ade7ab0812855dce8a208e72495f" }, + { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:588587772e55624dd9c7a906ec9e8773ae0b6ac5e270fc0bc84ee2758eba90d5" }, + { file = "crc32c-2.7.1-cp312-cp312-win32.whl", hash = "sha256:9f14b60e5a14206e8173dd617fa0c4df35e098a305594082f930dae5488da428" }, + { file = "crc32c-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:7c810a246660a24dc818047dc5f89c7ce7b2814e1e08a8e99993f4103f7219e8" }, + { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:24949bffb06fc411cc18188d33357923cb935273642164d0bb37a5f375654169" }, + { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2d5d326e7e118d4fa60187770d86b66af2fdfc63ce9eeb265f0d3e7d49bebe0b" }, + { file = "crc32c-2.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba110df60c64c8e2d77a9425b982a520ccdb7abe42f06604f4d98a45bb1fff62" }, + { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c277f9d16a3283e064d54854af0976b72abaa89824955579b2b3f37444f89aae" }, + { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:881af0478a01331244e27197356929edbdeaef6a9f81b5c6bacfea18d2139289" }, + { file = "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" }, + { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2416c4d88696ac322632555c0f81ab35e15f154bc96055da6cf110d642dbc10" }, + { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:60254251b88ec9b9795215f0f9ec015a6b5eef8b2c5fba1267c672d83c78fc02" }, + { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:edefc0e46f3c37372183f70338e5bdee42f6789b62fcd36ec53aa933e9dfbeaf" }, + { file = "crc32c-2.7.1-cp313-cp313-win32.whl", hash = "sha256:813af8111218970fe2adb833c5e5239f091b9c9e76f03b4dd91aaba86e99b499" }, + { file = "crc32c-2.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:7d9ede7be8e4ec1c9e90aaf6884decbeef10e3473e6ddac032706d710cab5888" }, + { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:db9ac92294284b22521356715784b91cc9094eee42a5282ab281b872510d1831" }, + { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8fcd7f2f29a30dc92af64a9ee3d38bde0c82bd20ad939999427aac94bbd87373" }, + { file = "crc32c-2.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5c056ef043393085523e149276a7ce0cb534b872e04f3e20d74d9a94a75c0ad7" }, + { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03a92551a343702629af91f78d205801219692b6909f8fa126b830e332bfb0e0" }, + { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb9424ec1a8ca54763155a703e763bcede82e6569fe94762614bb2de1412d4e1" }, + { file = "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" }, + { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:57a20dfc27995f568f64775eea2bbb58ae269f1a1144561df5e4a4955f79db32" }, + { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:f7186d098bfd2cff25eac6880b7c7ad80431b90610036131c1c7dd0eab42a332" }, + { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:55a77e29a265418fa34bef15bd0f2c60afae5348988aaf35ed163b4bbf93cf37" }, + { file = "crc32c-2.7.1-cp313-cp313t-win32.whl", hash = "sha256:ae38a4b6aa361595d81cab441405fbee905c72273e80a1c010fb878ae77ac769" }, + { file = "crc32c-2.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:eee2a43b663feb6c79a6c1c6e5eae339c2b72cfac31ee54ec0209fa736cf7ee5" }, + { file = "crc32c-2.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:04a56e9f4995559fa86bcf5d0ed5c48505a36e2be1c41d70cae5c080d9a00b74" }, + { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88c5c9c21cd9fff593bb7dfe97d3287438c8aecbcc73d227f2366860a0663521" }, + { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:595146cb94ba0055301d273113add2af5859b467db41b50367f47870c2d0a81c" }, + { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9f3792872f1320961f33aaf0198edea371aee393bcc221fab66d10ecffd77d" }, + { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:999a40d75cd1696e779f6f99c29fa52be777197d1d9e3ae69cb919a05a369c1e" }, + { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:eff485526172cee7e6d1fa9c23913f92c7d38ab05674b0b578767c7b693faf5d" }, + { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:541dac90c64ed9ce05f85a71066567e854c1b40743a01d83fa2c66419a2e97b6" }, + { file = "crc32c-2.7.1-cp37-cp37m-win32.whl", hash = "sha256:7138ec26e79100c4cf4294ef40027a1cff26a1e23b7e5eb70efe5d7ff37cbc66" }, + { file = "crc32c-2.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:35a3ed12ac2e2551a07d246b7e6512ac39db021e006205a40c1cfd32ea73fcc3" }, + { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af062f11aea283b7e9c95f3a97fb6bb96ac08a9063f71621c2140237df141ada" }, + { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8f25ca521ecf7cccfff0ecae4d0538b5c0c7235d27bf098241f3e2bf86aed713" }, + { file = "crc32c-2.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1410bcd909be36ccbf8a52c45e4bddca77adfd4e80789ac3cd575c024086516d" }, + { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33fc8cb32f82685ebefd078e740925ea9da37a008ed5f43b68fc8324f8ca4a37" }, + { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad3dc6283ce53ad7d1dc5775003460110ab7eebf348efebe0486a531b28f8184" }, + { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:758ead20e122496764ae50db26bb90fb47fc4b6d242c8e99e87c3f1dae1f1dce" }, + { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e436d9044bbd51936f7aeb8b322543c516bf22371a17970a370a10af1661fa54" }, + { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:47e5be99057264b603e3cd88cf091985f33c16d3c8609f1c83ed6e72ec4179b4" }, + { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:280509210e622a236f16f031856847fd0d6704df662d7209da819ccfb40c6167" }, + { file = "crc32c-2.7.1-cp38-cp38-win32.whl", hash = "sha256:4ab48e048cfa123a9f9bdc5d4d687a3461723132c749c721a6d358605e6d470d" }, + { file = "crc32c-2.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:65471d1b1b6e10a404ca8200a4271d5bc0a552c3f5dcd943c1c7835f766ea02d" }, + { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:39ca842586084bca24f9c4ab43e2d99191b1186b2f89b2122b470d0730254d1b" }, + { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a911abc33d453b3f171a3200b1e18b3fc39c204670b5b0a353cca99e4c664332" }, + { file = "crc32c-2.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:22a72e81ec08a7ece6a35ac68d1ed32dd4a8be7949b164db88d4b4a4bade5c5a" }, + { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54d6f8c5be6815eabd6e3e90fa0bc13045183a6aa33a30dd684eb0f062b92213" }, + { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c855726d71dee7ae25f81c6b54293455fc66802f34d334d22bea1f6ce8bc21c" }, + { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98d5f7fc364bb9c4c4123d149406fbee063f2e8c2cff19a12f13e50faa146237" }, + { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:51ffba582c95a281e5a3f71eacdafc96b9a1835ddae245385639458fff197034" }, + { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3950d3c340c9d70889630ef81fba8666abfd0cf0aa19fd9c3a55634e0b383b0f" }, + { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:522fba1770aad8f7eb189f21fca591a51d96dcc749859088f462281324aec30b" }, + { file = "crc32c-2.7.1-cp39-cp39-win32.whl", hash = "sha256:812723e222b6a9fe0562554d72f4f072c3a95720c60ee500984e7d0e568caac3" }, + { file = "crc32c-2.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:6793fcfe9d4130230d196abbe4021c01ffe8e85c92633bf3c8559f9836c227f5" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:2e83fedebcdeb80c19e76b7a0e5103528bb062521c40702bf34516a429e81df3" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30004a7383538ef93bda9b22f7b3805bc0aa5625ab2675690e1b676b19417d4b" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a01b0983aa87f517c12418f9898ecf2083bf86f4ea04122e053357c3edb0d73f" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb2b963c42128b38872e9ed63f04a73ce1ff89a1dfad7ea38add6fe6296497b8" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cdd5e576fee5d255c1e68a4dae4420f21e57e6f05900b38d5ae47c713fc3330d" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:79f0ff50863aeb441fbfa87e9db6542ddfe3e941189dece832b0af2e454dbab0" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cd27a1e400d77e9872fa1303e8f9d30bd050df35ee4858354ce0b59f8227d32" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:274739b3e1591bd4b7ec98764f2f79c6fbcc0f7d7676d5f17369832fe14ee4f0" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:050f52045b4a033a245e0ee4357e1a793de5af6496c82250ef13d8cb90a21e20" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ceb4ca126f75694bda020a307221563d3c522719c0acedcc81ffb985b4867c94" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:eabefe7a6fb5dfc6318fb35f4d98893baef17ebda9b311498e870526d32168e7" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:217edd9ba8c5f0c3ad60c82a11fa78f01162fa106fd7f5d17175dac6bf1eedf9" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15d640d9d4aa213aec6c837f602081a17d1522f8cd78b52334b62ee27b083410" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:519878822bf9bdead63c25a5e4bdc26d2eae9da6056f92b9b5f3023c08f1d016" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:2bf69cfa4c3ea9f060fe06db00b7e34f771c83f73dd2c3568c2c9019479e34c2" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e89d51c90f6730b67b12c97d49099ba18d0fdce18541fab94d2be95d1c939adb" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:488a0feba1bb005d0dd2f702c1da4849d083e88d82cd27b83ac2d2d93af80755" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:919262b7a12ef63f222ec19c0e092f39268802652e11669315257ae6249ec79f" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4181240f6080c38eec9dd1539cd23a304a12100d3f4ffe43234f32064fae5ef0" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fedde1e53507d0ede1980e8109442edd108c04ab100abcd5145c274820dacd4f" }, + { file = "crc32c-2.7.1.tar.gz", hash = "sha256:f91b144a21eef834d64178e01982bb9179c354b3e9e5f4c803b0e5096384968c" }, +] + +[[package]] +name = "dask" +version = "2025.9.1" +description = "Parallel PyData with Task Scheduling" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + { file = "dask-2025.9.1-py3-none-any.whl", hash = "sha256:2a8a7dc933caaea2f47745a65a6ec93d9e616e12aab53b4f03ee161d31939110" }, + { file = "dask-2025.9.1.tar.gz", hash = "sha256:718df73e1fd3d7e2b8546e0f04ce08e1ed7f9aa3da1eecd0c1f44c8b6d52f7e0" }, +] + +[package.dependencies] +click = ">=8.1" +cloudpickle = ">=3.0.0" +fsspec = ">=2021.09.0" +packaging = ">=20.0" +partd = ">=1.4.0" +pyyaml = ">=5.3.1" +toolz = ">=0.10.0" + +[package.extras] +array = ["numpy (>=1.24)"] +complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=14.0.1)"] +dataframe = ["dask[array]", "pandas (>=2.0)", "pyarrow (>=14.0.1)"] +diagnostics = ["bokeh (>=3.1.0)", "jinja2 (>=2.10.3)"] +distributed = ["distributed (==2025.9.1)"] +test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] + +[[package]] +name = "debugpy" +version = "1.8.15" +description = "An implementation of the Debug Adapter Protocol for Python" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "debugpy-1.8.15-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e9a8125c85172e3ec30985012e7a81ea5e70bbb836637f8a4104f454f9b06c97" }, + { file = "debugpy-1.8.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fd0b6b5eccaa745c214fd240ea82f46049d99ef74b185a3517dad3ea1ec55d9" }, + { file = "debugpy-1.8.15-cp310-cp310-win32.whl", hash = "sha256:8181cce4d344010f6bfe94a531c351a46a96b0f7987750932b2908e7a1e14a55" }, + { file = "debugpy-1.8.15-cp310-cp310-win_amd64.whl", hash = "sha256:af2dcae4e4cd6e8b35f982ccab29fe65f7e8766e10720a717bc80c464584ee21" }, + { file = "debugpy-1.8.15-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:babc4fb1962dd6a37e94d611280e3d0d11a1f5e6c72ac9b3d87a08212c4b6dd3" }, + { file = "debugpy-1.8.15-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f778e68f2986a58479d0ac4f643e0b8c82fdd97c2e200d4d61e7c2d13838eb53" }, + { file = "debugpy-1.8.15-cp311-cp311-win32.whl", hash = "sha256:f9d1b5abd75cd965e2deabb1a06b0e93a1546f31f9f621d2705e78104377c702" }, + { file = "debugpy-1.8.15-cp311-cp311-win_amd64.whl", hash = "sha256:62954fb904bec463e2b5a415777f6d1926c97febb08ef1694da0e5d1463c5c3b" }, + { file = "debugpy-1.8.15-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:3dcc7225cb317469721ab5136cda9ff9c8b6e6fb43e87c9e15d5b108b99d01ba" }, + { file = "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" }, + { file = "debugpy-1.8.15-cp312-cp312-win32.whl", hash = "sha256:b08e9b0bc260cf324c890626961dad4ffd973f7568fbf57feb3c3a65ab6b6327" }, + { file = "debugpy-1.8.15-cp312-cp312-win_amd64.whl", hash = "sha256:e2a4fe357c92334272eb2845fcfcdbec3ef9f22c16cf613c388ac0887aed15fa" }, + { file = "debugpy-1.8.15-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:f5e01291ad7d6649aed5773256c5bba7a1a556196300232de1474c3c372592bf" }, + { file = "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" }, + { file = "debugpy-1.8.15-cp313-cp313-win32.whl", hash = "sha256:fcf0748d4f6e25f89dc5e013d1129ca6f26ad4da405e0723a4f704583896a709" }, + { file = "debugpy-1.8.15-cp313-cp313-win_amd64.whl", hash = "sha256:73c943776cb83e36baf95e8f7f8da765896fd94b05991e7bc162456d25500683" }, + { file = "debugpy-1.8.15-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:054cd4935bd2e4964dfe1aeee4d6bca89d0c833366776fc35387f8a2f517dd00" }, + { file = "debugpy-1.8.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21c4288e662997df3176c4b9d93ee1393913fbaf320732be332d538000c53208" }, + { file = "debugpy-1.8.15-cp38-cp38-win32.whl", hash = "sha256:aaa8ce6a37d764f93fe583d7c6ca58eb7550b36941387483db113125f122bb0d" }, + { file = "debugpy-1.8.15-cp38-cp38-win_amd64.whl", hash = "sha256:71cdf7f676af78e70f005c7fad2ef9da0edc2a24befbf3ab146a51f0d58048c2" }, + { file = "debugpy-1.8.15-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:085b6d0adb3eb457c2823ac497a0690b10a99eff8b01c01a041e84579f114b56" }, + { file = "debugpy-1.8.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd546a405381d17527814852642df0a74b7da8acc20ae5f3cfad0b7c86419511" }, + { file = "debugpy-1.8.15-cp39-cp39-win32.whl", hash = "sha256:ae0d445fe11ff4351428e6c2389e904e1cdcb4a47785da5a5ec4af6c5b95fce5" }, + { file = "debugpy-1.8.15-cp39-cp39-win_amd64.whl", hash = "sha256:de7db80189ca97ab4b10a87e4039cfe4dd7ddfccc8f33b5ae40fcd33792fc67a" }, + { file = "debugpy-1.8.15-py2.py3-none-any.whl", hash = "sha256:bce2e6c5ff4f2e00b98d45e7e01a49c7b489ff6df5f12d881c67d2f1ac635f3d" }, + { file = "debugpy-1.8.15.tar.gz", hash = "sha256:58d7a20b7773ab5ee6bdfb2e6cf622fdf1e40c9d5aef2857d85391526719ac00" }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +description = "Decorators for Humans" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a" }, + { file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360" }, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +description = "XML bomb protection for Python stdlib modules" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] +files = [ + {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, + {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, +] + +[[package]] +name = "distlib" +version = "0.4.0" +description = "Distribution utilities" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + { file = "distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16" }, + { file = "distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d" }, +] + +[[package]] +name = "donfig" +version = "0.8.1.post1" +description = "Python package for configuring a python package" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + { file = "donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d" }, + { file = "donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52" }, +] + +[package.dependencies] +pyyaml = "*" + +[package.extras] +docs = ["cloudpickle", "numpydoc", "pytest", "sphinx (>=4.0.0)"] +test = ["cloudpickle", "pytest"] + +[[package]] +name = "executing" +version = "2.2.0" +description = "Get the currently executing AST node of a frame, and other information" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa" }, + { file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755" }, +] + +[package.extras] +tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich ; python_version >= \"3.11\""] + +[[package]] +name = "fastjsonschema" +version = "2.21.1" +description = "Fastest Python implementation of JSON schema" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + { file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667" }, + { file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4" }, +] + +[package.extras] +devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] + +[[package]] +name = "fawltydeps" +version = "0.20.0" +description = "Find undeclared and unused 3rd-party dependencies in your Python project." +optional = false +python-versions = ">=3.9.2" +groups = ["dev"] +files = [ + { file = "fawltydeps-0.20.0-py3-none-any.whl", hash = "sha256:d3bfb260c54135ec5dfa2583a7381c45d2759deb23f6de6f4905da9adac67512" }, + { file = "fawltydeps-0.20.0.tar.gz", hash = "sha256:ad080b284a2278c9940540b643483aff8b57794a1362735d3024c270810c0182" }, +] + +[package.dependencies] +importlib_metadata = ">=6.6.0" +isort = ">=5.10" +packaging = ">=24.0" +pip-requirements-parser = ">=32.0.1" +pydantic = ">=1.10.4,<3.0.0" +PyYAML = ">=6.0.1" + +[package.extras] +uv = ["uv (>=0.1.6)"] + +[[package]] +name = "filelock" +version = "3.18.0" +description = "A platform independent file lock." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de" }, + { file = "filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2" }, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] +typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] + +[[package]] +name = "fqdn" +version = "1.4.0" +description = "Validate fully-qualified domain names compliant to RFC 1035 and the preferred form in RFC 3686 s. 2." +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + { file = "fqdn-1.4.0-py3-none-any.whl", hash = "sha256:e935616ae81c9c60a22267593fe8e6af68cecc68549cc71bb9bfbcbbcb383386" }, + { file = "fqdn-1.4.0.tar.gz", hash = "sha256:30e8f2e685ce87cdace4712fd97c5d09f5e6fa519bbb66e8f188f6a7cb3a5c4e" }, +] + +[[package]] +name = "fsspec" +version = "2025.7.0" +description = "File-system specification" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + { file = "fsspec-2025.7.0-py3-none-any.whl", hash = "sha256:8b012e39f63c7d5f10474de957f3ab793b47b45ae7d39f2fb735f8bbe25c0e21" }, + { file = "fsspec-2025.7.0.tar.gz", hash = "sha256:786120687ffa54b8283d942929540d8bc5ccfa820deb555a2b5d0ed2b737bf58" }, +] + +[package.extras] +abfs = ["adlfs"] +adl = ["adlfs"] +arrow = ["pyarrow (>=1)"] +dask = ["dask", "distributed"] +dev = ["pre-commit", "ruff (>=0.5)"] +doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"] +dropbox = ["dropbox", "dropboxdrivefs", "requests"] +full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] +fuse = ["fusepy"] +gcs = ["gcsfs"] +git = ["pygit2"] +github = ["requests"] +gs = ["gcsfs"] +gui = ["panel"] +hdfs = ["pyarrow (>=1)"] +http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] +libarchive = ["libarchive-c"] +oci = ["ocifs"] +s3 = ["s3fs"] +sftp = ["paramiko"] +smb = ["smbprotocol"] +ssh = ["paramiko"] +test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"] +test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] +test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard ; python_version < \"3.14\""] +tqdm = ["tqdm"] + +[[package]] +name = "ghp-import" +version = "2.1.0" +description = "Copy your docs directly to the gh-pages branch." +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + { file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343" }, + { file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619" }, +] + +[package.dependencies] +python-dateutil = ">=2.8.1" + +[package.extras] +dev = ["flake8", "markdown", "twine", "wheel"] + +[[package]] +name = "griffe" +version = "1.7.3" +description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "griffe-1.7.3-py3-none-any.whl", hash = "sha256:c6b3ee30c2f0f17f30bcdef5068d6ab7a2a4f1b8bf1a3e74b56fffd21e1c5f75" }, + { file = "griffe-1.7.3.tar.gz", hash = "sha256:52ee893c6a3a968b639ace8015bec9d36594961e156e23315c8e8e51401fa50b" }, +] + +[package.dependencies] +colorama = ">=0.4" + +[[package]] +name = "h11" +version = "0.16.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86" }, + { file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55" }, + { file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8" }, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.16" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<1.0)"] + +[[package]] +name = "httpx" +version = "0.28.1" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad" }, + { file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc" }, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" + +[package.extras] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "identify" +version = "2.6.12" +description = "File identification library for Python" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2" }, + { file = "identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6" }, +] + +[package.extras] +license = ["ukkonen"] + +[[package]] +name = "idna" +version = "3.10" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, +] + +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + +[[package]] +name = "importlib-metadata" +version = "8.7.0" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd" }, + { file = "importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000" }, +] + +[package.dependencies] +zipp = ">=3.20" + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +perf = ["ipython"] +test = ["flufl.flake8", "importlib_resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +type = ["pytest-mypy"] + +[[package]] +name = "iniconfig" +version = "2.1.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760" }, + { file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7" }, +] + +[[package]] +name = "ipykernel" +version = "6.29.5" +description = "IPython Kernel for Jupyter" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, + {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, +] + +[package.dependencies] +appnope = {version = "*", markers = "platform_system == \"Darwin\""} +comm = ">=0.1.1" +debugpy = ">=1.6.5" +ipython = ">=7.23.1" +jupyter-client = ">=6.1.12" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +matplotlib-inline = ">=0.1" +nest-asyncio = "*" +packaging = "*" +psutil = "*" +pyzmq = ">=24" +tornado = ">=6.1" +traitlets = ">=5.4.0" + +[package.extras] +cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] +pyqt5 = ["pyqt5"] +pyside6 = ["pyside6"] +test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "ipython" +version = "9.4.0" +description = "IPython: Productive Interactive Computing" +optional = false +python-versions = ">=3.11" +groups = ["dev"] +files = [ + { file = "ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066" }, + { file = "ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270" }, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +decorator = "*" +ipython-pygments-lexers = "*" +jedi = ">=0.16" +matplotlib-inline = "*" +pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} +prompt_toolkit = ">=3.0.41,<3.1.0" +pygments = ">=2.4.0" +stack_data = "*" +traitlets = ">=5.13.0" + +[package.extras] +all = ["ipython[doc,matplotlib,test,test-extra]"] +black = ["black"] +doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinx_toml (==0.0.4)", "typing_extensions"] +matplotlib = ["matplotlib"] +test = ["packaging", "pytest", "pytest-asyncio (<0.22)", "testpath"] +test-extra = ["curio", "ipykernel", "ipython[test]", "jupyter_ai", "matplotlib (!=3.2.0)", "nbclient", "nbformat", "numpy (>=1.23)", "pandas", "trio"] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +description = "Defines a variety of Pygments lexers for highlighting IPython code." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c" }, + { file = "ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81" }, +] + +[package.dependencies] +pygments = "*" + +[[package]] +name = "ipywidgets" +version = "8.1.7" +description = "Jupyter interactive widgets" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + { file = "ipywidgets-8.1.7-py3-none-any.whl", hash = "sha256:764f2602d25471c213919b8a1997df04bef869251db4ca8efba1b76b1bd9f7bb" }, + { file = "ipywidgets-8.1.7.tar.gz", hash = "sha256:15f1ac050b9ccbefd45dccfbb2ef6bed0029d8278682d569d71b8dd96bee0376" }, +] + +[package.dependencies] +comm = ">=0.1.3" +ipython = ">=6.1.0" +jupyterlab_widgets = ">=3.0.15,<3.1.0" +traitlets = ">=4.3.1" +widgetsnbextension = ">=4.0.14,<4.1.0" + +[package.extras] +test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] + +[[package]] +name = "isoduration" +version = "20.11.0" +description = "Operations with ISO 8601 durations" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, + {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, +] + +[package.dependencies] +arrow = ">=0.15.0" + +[[package]] +name = "isort" +version = "7.0.0" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.10.0" +groups = ["dev"] +files = [ + { file = "isort-7.0.0-py3-none-any.whl", hash = "sha256:1bcabac8bc3c36c7fb7b98a76c8abb18e0f841a3ba81decac7691008592499c1" }, + { file = "isort-7.0.0.tar.gz", hash = "sha256:5513527951aadb3ac4292a41a16cbc50dd1642432f5e8c20057d414bdafb4187" }, +] + +[package.extras] +colors = ["colorama"] +plugins = ["setuptools"] + +[[package]] +name = "jedi" +version = "0.19.2" +description = "An autocompletion tool for Python that can be used for text editors." +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + { file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9" }, + { file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0" }, +] + +[package.dependencies] +parso = ">=0.8.4,<0.9.0" + +[package.extras] +docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] +qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] +testing = ["Django", "attrs", "colorama", "docopt", "pytest (<9.0.0)"] + +[[package]] +name = "jinja2" +version = "3.1.6" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + { file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67" }, + { file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d" }, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "json5" +version = "0.12.0" +description = "A Python implementation of the JSON5 data format." +optional = false +python-versions = ">=3.8.0" +groups = ["dev"] +files = [ + { file = "json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db" }, + { file = "json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a" }, +] + +[package.extras] +dev = ["build (==1.2.2.post1)", "coverage (==7.5.4) ; python_version < \"3.9\"", "coverage (==7.8.0) ; python_version >= \"3.9\"", "mypy (==1.14.1) ; python_version < \"3.9\"", "mypy (==1.15.0) ; python_version >= \"3.9\"", "pip (==25.0.1)", "pylint (==3.2.7) ; python_version < \"3.9\"", "pylint (==3.3.6) ; python_version >= \"3.9\"", "ruff (==0.11.2)", "twine (==6.1.0)", "uv (==0.6.11)"] + +[[package]] +name = "jsonpointer" +version = "3.0.0" +description = "Identify specific nodes in a JSON document (RFC 6901)" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, + {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, +] + +[[package]] +name = "jsonschema" +version = "4.25.0" +description = "An implementation of JSON Schema validation for Python" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "jsonschema-4.25.0-py3-none-any.whl", hash = "sha256:24c2e8da302de79c8b9382fee3e76b355e44d2a4364bb207159ce10b517bd716" }, + { file = "jsonschema-4.25.0.tar.gz", hash = "sha256:e63acf5c11762c0e6672ffb61482bdf57f0876684d8d249c0fe2d730d48bc55f" }, +] + +[package.dependencies] +attrs = ">=22.2.0" +fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""} +jsonschema-specifications = ">=2023.03.6" +referencing = ">=0.28.4" +rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} +rfc3987-syntax = { version = ">=1.1.0", optional = true, markers = "extra == \"format-nongpl\"" } +rpds-py = ">=0.7.1" +uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +webcolors = {version = ">=24.6.0", optional = true, markers = "extra == \"format-nongpl\""} + +[package.extras] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "rfc3987-syntax (>=1.1.0)", "uri-template", "webcolors (>=24.6.0)"] + +[[package]] +name = "jsonschema-specifications" +version = "2025.4.1" +description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af" }, + { file = "jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608" }, +] + +[package.dependencies] +referencing = ">=0.31.0" + +[[package]] +name = "jupyter" +version = "1.1.1" +description = "Jupyter metapackage. Install all the Jupyter components in one go." +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83"}, + {file = "jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a"}, +] + +[package.dependencies] +ipykernel = "*" +ipywidgets = "*" +jupyter-console = "*" +jupyterlab = "*" +nbconvert = "*" +notebook = "*" + +[[package]] +name = "jupyter-client" +version = "8.6.3" +description = "Jupyter protocol implementation and client libraries" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, + {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, +] + +[package.dependencies] +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +python-dateutil = ">=2.8.2" +pyzmq = ">=23.0" +tornado = ">=6.2" +traitlets = ">=5.3" + +[package.extras] +docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko ; sys_platform == \"win32\"", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] + +[[package]] +name = "jupyter-console" +version = "6.6.3" +description = "Jupyter terminal console" +optional = false +python-versions = ">=3.7" +groups = ["dev"] files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, + {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"}, + {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"}, ] -markers = {main = "sys_platform == \"win32\""} + +[package.dependencies] +ipykernel = ">=6.14" +ipython = "*" +jupyter-client = ">=7.0.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +prompt-toolkit = ">=3.0.30" +pygments = "*" +pyzmq = ">=17" +traitlets = ">=5.4" + +[package.extras] +test = ["flaky", "pexpect", "pytest"] [[package]] -name = "colorlog" -version = "6.10.1" -description = "Add colours to the output of Python's logging module." +name = "jupyter-core" +version = "5.8.1" +description = "Jupyter core package. A base package on which Jupyter projects rely." optional = false -python-versions = ">=3.6" -groups = ["main"] +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "colorlog-6.10.1-py3-none-any.whl", hash = "sha256:2d7e8348291948af66122cff006c9f8da6255d224e7cf8e37d8de2df3bad8c9c"}, - {file = "colorlog-6.10.1.tar.gz", hash = "sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321"}, + { file = "jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0" }, + { file = "jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941" }, ] [package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} +platformdirs = ">=2.5" +pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} +traitlets = ">=5.3" [package.extras] -development = ["black", "flake8", "mypy", "pytest", "types-colorama"] +docs = ["intersphinx-registry", "myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-spelling", "traitlets"] +test = ["ipykernel", "pre-commit", "pytest (<9)", "pytest-cov", "pytest-timeout"] [[package]] -name = "coverage" -version = "7.10.4" -description = "Code coverage measurement for Python" +name = "jupyter-events" +version = "0.12.0" +description = "Jupyter Event System library" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "coverage-7.10.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d92d6edb0ccafd20c6fbf9891ca720b39c2a6a4b4a6f9cf323ca2c986f33e475"}, - {file = "coverage-7.10.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7202da14dc0236884fcc45665ffb2d79d4991a53fbdf152ab22f69f70923cc22"}, - {file = "coverage-7.10.4-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ada418633ae24ec8d0fcad5efe6fc7aa3c62497c6ed86589e57844ad04365674"}, - {file = "coverage-7.10.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b828e33eca6c3322adda3b5884456f98c435182a44917ded05005adfa1415500"}, - {file = "coverage-7.10.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:802793ba397afcfdbe9f91f89d65ae88b958d95edc8caf948e1f47d8b6b2b606"}, - {file = "coverage-7.10.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d0b23512338c54101d3bf7a1ab107d9d75abda1d5f69bc0887fd079253e4c27e"}, - {file = "coverage-7.10.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f36b7dcf72d06a8c5e2dd3aca02be2b1b5db5f86404627dff834396efce958f2"}, - {file = "coverage-7.10.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fce316c367a1dc2c411821365592eeb335ff1781956d87a0410eae248188ba51"}, - {file = "coverage-7.10.4-cp310-cp310-win32.whl", hash = "sha256:8c5dab29fc8070b3766b5fc85f8d89b19634584429a2da6d42da5edfadaf32ae"}, - {file = "coverage-7.10.4-cp310-cp310-win_amd64.whl", hash = "sha256:4b0d114616f0fccb529a1817457d5fb52a10e106f86c5fb3b0bd0d45d0d69b93"}, - {file = "coverage-7.10.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:05d5f98ec893d4a2abc8bc5f046f2f4367404e7e5d5d18b83de8fde1093ebc4f"}, - {file = "coverage-7.10.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9267efd28f8994b750d171e58e481e3bbd69e44baed540e4c789f8e368b24b88"}, - {file = "coverage-7.10.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:4456a039fdc1a89ea60823d0330f1ac6f97b0dbe9e2b6fb4873e889584b085fb"}, - {file = "coverage-7.10.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c2bfbd2a9f7e68a21c5bd191be94bfdb2691ac40d325bac9ef3ae45ff5c753d9"}, - {file = "coverage-7.10.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ab7765f10ae1df7e7fe37de9e64b5a269b812ee22e2da3f84f97b1c7732a0d8"}, - {file = "coverage-7.10.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a09b13695166236e171ec1627ff8434b9a9bae47528d0ba9d944c912d33b3d2"}, - {file = "coverage-7.10.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5c9e75dfdc0167d5675e9804f04a56b2cf47fb83a524654297000b578b8adcb7"}, - {file = "coverage-7.10.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c751261bfe6481caba15ec005a194cb60aad06f29235a74c24f18546d8377df0"}, - {file = "coverage-7.10.4-cp311-cp311-win32.whl", hash = "sha256:051c7c9e765f003c2ff6e8c81ccea28a70fb5b0142671e4e3ede7cebd45c80af"}, - {file = "coverage-7.10.4-cp311-cp311-win_amd64.whl", hash = "sha256:1a647b152f10be08fb771ae4a1421dbff66141e3d8ab27d543b5eb9ea5af8e52"}, - {file = "coverage-7.10.4-cp311-cp311-win_arm64.whl", hash = "sha256:b09b9e4e1de0d406ca9f19a371c2beefe3193b542f64a6dd40cfcf435b7d6aa0"}, - {file = "coverage-7.10.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a1f0264abcabd4853d4cb9b3d164adbf1565da7dab1da1669e93f3ea60162d79"}, - {file = "coverage-7.10.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:536cbe6b118a4df231b11af3e0f974a72a095182ff8ec5f4868c931e8043ef3e"}, - {file = "coverage-7.10.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:9a4c0d84134797b7bf3f080599d0cd501471f6c98b715405166860d79cfaa97e"}, - {file = "coverage-7.10.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7c155fc0f9cee8c9803ea0ad153ab6a3b956baa5d4cd993405dc0b45b2a0b9e0"}, - {file = "coverage-7.10.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a5f2ab6e451d4b07855d8bcf063adf11e199bff421a4ba57f5bb95b7444ca62"}, - {file = "coverage-7.10.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:685b67d99b945b0c221be0780c336b303a7753b3e0ec0d618c795aada25d5e7a"}, - {file = "coverage-7.10.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0c079027e50c2ae44da51c2e294596cbc9dbb58f7ca45b30651c7e411060fc23"}, - {file = "coverage-7.10.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3749aa72b93ce516f77cf5034d8e3c0dfd45c6e8a163a602ede2dc5f9a0bb927"}, - {file = "coverage-7.10.4-cp312-cp312-win32.whl", hash = "sha256:fecb97b3a52fa9bcd5a7375e72fae209088faf671d39fae67261f37772d5559a"}, - {file = "coverage-7.10.4-cp312-cp312-win_amd64.whl", hash = "sha256:26de58f355626628a21fe6a70e1e1fad95702dafebfb0685280962ae1449f17b"}, - {file = "coverage-7.10.4-cp312-cp312-win_arm64.whl", hash = "sha256:67e8885408f8325198862bc487038a4980c9277d753cb8812510927f2176437a"}, - {file = "coverage-7.10.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2b8e1d2015d5dfdbf964ecef12944c0c8c55b885bb5c0467ae8ef55e0e151233"}, - {file = "coverage-7.10.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:25735c299439018d66eb2dccf54f625aceb78645687a05f9f848f6e6c751e169"}, - {file = "coverage-7.10.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:715c06cb5eceac4d9b7cdf783ce04aa495f6aff657543fea75c30215b28ddb74"}, - {file = "coverage-7.10.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e017ac69fac9aacd7df6dc464c05833e834dc5b00c914d7af9a5249fcccf07ef"}, - {file = "coverage-7.10.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bad180cc40b3fccb0f0e8c702d781492654ac2580d468e3ffc8065e38c6c2408"}, - {file = "coverage-7.10.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:becbdcd14f685fada010a5f792bf0895675ecf7481304fe159f0cd3f289550bd"}, - {file = "coverage-7.10.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0b485ca21e16a76f68060911f97ebbe3e0d891da1dbbce6af7ca1ab3f98b9097"}, - {file = "coverage-7.10.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6c1d098ccfe8e1e0a1ed9a0249138899948afd2978cbf48eb1cc3fcd38469690"}, - {file = "coverage-7.10.4-cp313-cp313-win32.whl", hash = "sha256:8630f8af2ca84b5c367c3df907b1706621abe06d6929f5045fd628968d421e6e"}, - {file = "coverage-7.10.4-cp313-cp313-win_amd64.whl", hash = "sha256:f68835d31c421736be367d32f179e14ca932978293fe1b4c7a6a49b555dff5b2"}, - {file = "coverage-7.10.4-cp313-cp313-win_arm64.whl", hash = "sha256:6eaa61ff6724ca7ebc5326d1fae062d85e19b38dd922d50903702e6078370ae7"}, - {file = "coverage-7.10.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:702978108876bfb3d997604930b05fe769462cc3000150b0e607b7b444f2fd84"}, - {file = "coverage-7.10.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e8f978e8c5521d9c8f2086ac60d931d583fab0a16f382f6eb89453fe998e2484"}, - {file = "coverage-7.10.4-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:df0ac2ccfd19351411c45e43ab60932b74472e4648b0a9edf6a3b58846e246a9"}, - {file = "coverage-7.10.4-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:73a0d1aaaa3796179f336448e1576a3de6fc95ff4f07c2d7251d4caf5d18cf8d"}, - {file = "coverage-7.10.4-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:873da6d0ed6b3ffc0bc01f2c7e3ad7e2023751c0d8d86c26fe7322c314b031dc"}, - {file = "coverage-7.10.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c6446c75b0e7dda5daa876a1c87b480b2b52affb972fedd6c22edf1aaf2e00ec"}, - {file = "coverage-7.10.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:6e73933e296634e520390c44758d553d3b573b321608118363e52113790633b9"}, - {file = "coverage-7.10.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:52073d4b08d2cb571234c8a71eb32af3c6923149cf644a51d5957ac128cf6aa4"}, - {file = "coverage-7.10.4-cp313-cp313t-win32.whl", hash = "sha256:e24afb178f21f9ceb1aefbc73eb524769aa9b504a42b26857243f881af56880c"}, - {file = "coverage-7.10.4-cp313-cp313t-win_amd64.whl", hash = "sha256:be04507ff1ad206f4be3d156a674e3fb84bbb751ea1b23b142979ac9eebaa15f"}, - {file = "coverage-7.10.4-cp313-cp313t-win_arm64.whl", hash = "sha256:f3e3ff3f69d02b5dad67a6eac68cc9c71ae343b6328aae96e914f9f2f23a22e2"}, - {file = "coverage-7.10.4-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:a59fe0af7dd7211ba595cf7e2867458381f7e5d7b4cffe46274e0b2f5b9f4eb4"}, - {file = "coverage-7.10.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3a6c35c5b70f569ee38dc3350cd14fdd0347a8b389a18bb37538cc43e6f730e6"}, - {file = "coverage-7.10.4-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:acb7baf49f513554c4af6ef8e2bd6e8ac74e6ea0c7386df8b3eb586d82ccccc4"}, - {file = "coverage-7.10.4-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a89afecec1ed12ac13ed203238b560cbfad3522bae37d91c102e690b8b1dc46c"}, - {file = "coverage-7.10.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:480442727f464407d8ade6e677b7f21f3b96a9838ab541b9a28ce9e44123c14e"}, - {file = "coverage-7.10.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a89bf193707f4a17f1ed461504031074d87f035153239f16ce86dfb8f8c7ac76"}, - {file = "coverage-7.10.4-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:3ddd912c2fc440f0fb3229e764feec85669d5d80a988ff1b336a27d73f63c818"}, - {file = "coverage-7.10.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:8a538944ee3a42265e61c7298aeba9ea43f31c01271cf028f437a7b4075592cf"}, - {file = "coverage-7.10.4-cp314-cp314-win32.whl", hash = "sha256:fd2e6002be1c62476eb862b8514b1ba7e7684c50165f2a8d389e77da6c9a2ebd"}, - {file = "coverage-7.10.4-cp314-cp314-win_amd64.whl", hash = "sha256:ec113277f2b5cf188d95fb66a65c7431f2b9192ee7e6ec9b72b30bbfb53c244a"}, - {file = "coverage-7.10.4-cp314-cp314-win_arm64.whl", hash = "sha256:9744954bfd387796c6a091b50d55ca7cac3d08767795b5eec69ad0f7dbf12d38"}, - {file = "coverage-7.10.4-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:5af4829904dda6aabb54a23879f0f4412094ba9ef153aaa464e3c1b1c9bc98e6"}, - {file = "coverage-7.10.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7bba5ed85e034831fac761ae506c0644d24fd5594727e174b5a73aff343a7508"}, - {file = "coverage-7.10.4-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d57d555b0719834b55ad35045de6cc80fc2b28e05adb6b03c98479f9553b387f"}, - {file = "coverage-7.10.4-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ba62c51a72048bb1ea72db265e6bd8beaabf9809cd2125bbb5306c6ce105f214"}, - {file = "coverage-7.10.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0acf0c62a6095f07e9db4ec365cc58c0ef5babb757e54745a1aa2ea2a2564af1"}, - {file = "coverage-7.10.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e1033bf0f763f5cf49ffe6594314b11027dcc1073ac590b415ea93463466deec"}, - {file = "coverage-7.10.4-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:92c29eff894832b6a40da1789b1f252305af921750b03ee4535919db9179453d"}, - {file = "coverage-7.10.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:822c4c830989c2093527e92acd97be4638a44eb042b1bdc0e7a278d84a070bd3"}, - {file = "coverage-7.10.4-cp314-cp314t-win32.whl", hash = "sha256:e694d855dac2e7cf194ba33653e4ba7aad7267a802a7b3fc4347d0517d5d65cd"}, - {file = "coverage-7.10.4-cp314-cp314t-win_amd64.whl", hash = "sha256:efcc54b38ef7d5bfa98050f220b415bc5bb3d432bd6350a861cf6da0ede2cdcd"}, - {file = "coverage-7.10.4-cp314-cp314t-win_arm64.whl", hash = "sha256:6f3a3496c0fa26bfac4ebc458747b778cff201c8ae94fa05e1391bab0dbc473c"}, - {file = "coverage-7.10.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:48fd4d52600c2a9d5622e52dfae674a7845c5e1dceaf68b88c99feb511fbcfd6"}, - {file = "coverage-7.10.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:56217b470d09d69e6b7dcae38200f95e389a77db801cb129101697a4553b18b6"}, - {file = "coverage-7.10.4-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:44ac3f21a6e28c5ff7f7a47bca5f87885f6a1e623e637899125ba47acd87334d"}, - {file = "coverage-7.10.4-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3387739d72c84d17b4d2f7348749cac2e6700e7152026912b60998ee9a40066b"}, - {file = "coverage-7.10.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3f111ff20d9a6348e0125be892608e33408dd268f73b020940dfa8511ad05503"}, - {file = "coverage-7.10.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:01a852f0a9859734b018a3f483cc962d0b381d48d350b1a0c47d618c73a0c398"}, - {file = "coverage-7.10.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:225111dd06759ba4e37cee4c0b4f3df2b15c879e9e3c37bf986389300b9917c3"}, - {file = "coverage-7.10.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2178d4183bd1ba608f0bb12e71e55838ba1b7dbb730264f8b08de9f8ef0c27d0"}, - {file = "coverage-7.10.4-cp39-cp39-win32.whl", hash = "sha256:93d175fe81913aee7a6ea430abbdf2a79f1d9fd451610e12e334e4fe3264f563"}, - {file = "coverage-7.10.4-cp39-cp39-win_amd64.whl", hash = "sha256:2221a823404bb941c7721cf0ef55ac6ee5c25d905beb60c0bba5e5e85415d353"}, - {file = "coverage-7.10.4-py3-none-any.whl", hash = "sha256:065d75447228d05121e5c938ca8f0e91eed60a1eb2d1258d42d5084fecfc3302"}, - {file = "coverage-7.10.4.tar.gz", hash = "sha256:25f5130af6c8e7297fd14634955ba9e1697f47143f289e2a23284177c0061d27"}, + { file = "jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb" }, + { file = "jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b" }, ] +[package.dependencies] +jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]} +packaging = "*" +python-json-logger = ">=2.0.4" +pyyaml = ">=5.3" +referencing = "*" +rfc3339-validator = "*" +rfc3986-validator = ">=0.1.1" +traitlets = ">=5.3" + [package.extras] -toml = ["tomli ; python_full_version <= \"3.11.0a6\""] +cli = ["click", "rich"] +docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme (>=0.16)", "sphinx (>=8)", "sphinxcontrib-spelling"] +test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"] [[package]] -name = "distlib" -version = "0.4.0" -description = "Distribution utilities" +name = "jupyter-lsp" +version = "2.2.6" +description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" optional = false -python-versions = "*" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16"}, - {file = "distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d"}, + { file = "jupyter_lsp-2.2.6-py3-none-any.whl", hash = "sha256:283783752bf0b459ee7fa88effa72104d87dd343b82d5c06cf113ef755b15b6d" }, + { file = "jupyter_lsp-2.2.6.tar.gz", hash = "sha256:0566bd9bb04fd9e6774a937ed01522b555ba78be37bebef787c8ab22de4c0361" }, ] +[package.dependencies] +jupyter_server = ">=1.1.2" + [[package]] -name = "filelock" -version = "3.19.1" -description = "A platform independent file lock." +name = "jupyter-server" +version = "2.16.0" +description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "filelock-3.19.1-py3-none-any.whl", hash = "sha256:d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d"}, - {file = "filelock-3.19.1.tar.gz", hash = "sha256:66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58"}, + { file = "jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e" }, + { file = "jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6" }, ] +[package.dependencies] +anyio = ">=3.1.0" +argon2-cffi = ">=21.1" +jinja2 = ">=3.0.3" +jupyter-client = ">=7.4.4" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +jupyter-events = ">=0.11.0" +jupyter-server-terminals = ">=0.4.4" +nbconvert = ">=6.4.4" +nbformat = ">=5.3.0" +overrides = ">=5.0" +packaging = ">=22.0" +prometheus-client = ">=0.9" +pywinpty = {version = ">=2.0.1", markers = "os_name == \"nt\""} +pyzmq = ">=24" +send2trash = ">=1.8.2" +terminado = ">=0.8.3" +tornado = ">=6.2.0" +traitlets = ">=5.6.0" +websocket-client = ">=1.7" + +[package.extras] +docs = ["ipykernel", "jinja2", "jupyter-client", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"] +test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0,<9)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.7)", "pytest-timeout", "requests"] + [[package]] -name = "ghp-import" -version = "2.1.0" -description = "Copy your docs directly to the gh-pages branch." +name = "jupyter-server-terminals" +version = "0.5.3" +description = "A Jupyter Server Extension Providing Terminals." optional = false -python-versions = "*" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, - {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, + {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, + {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, ] [package.dependencies] -python-dateutil = ">=2.8.1" +pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""} +terminado = ">=0.8.3" [package.extras] -dev = ["flake8", "markdown", "twine", "wheel"] +docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"] +test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"] [[package]] -name = "griffe" -version = "1.12.1" -description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." +name = "jupyterlab" +version = "4.4.4" +description = "JupyterLab computational environment" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "griffe-1.12.1-py3-none-any.whl", hash = "sha256:2d7c12334de00089c31905424a00abcfd931b45b8b516967f224133903d302cc"}, - {file = "griffe-1.12.1.tar.gz", hash = "sha256:29f5a6114c0aeda7d9c86a570f736883f8a2c5b38b57323d56b3d1c000565567"}, + { file = "jupyterlab-4.4.4-py3-none-any.whl", hash = "sha256:711611e4f59851152eb93316c3547c3ec6291f16bb455f1f4fa380d25637e0dd" }, + { file = "jupyterlab-4.4.4.tar.gz", hash = "sha256:163fee1ef702e0a057f75d2eed3ed1da8a986d59eb002cbeb6f0c2779e6cd153" }, ] [package.dependencies] -colorama = ">=0.4" +async-lru = ">=1.0.0" +httpx = ">=0.25.0" +ipykernel = ">=6.5.0" +jinja2 = ">=3.0.3" +jupyter-core = "*" +jupyter-lsp = ">=2.0.0" +jupyter-server = ">=2.4.0,<3" +jupyterlab-server = ">=2.27.1,<3" +notebook-shim = ">=0.2" +packaging = "*" +setuptools = ">=41.1.0" +tornado = ">=6.2.0" +traitlets = "*" + +[package.extras] +dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.11.4)"] +docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<8.2.0)", "sphinx-copybutton"] +docs-screenshots = ["altair (==5.5.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.5)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.3.post1)", "matplotlib (==3.10.0)", "nbconvert (>=7.0.0)", "pandas (==2.2.3)", "scipy (==1.15.1)", "vega-datasets (==0.9.0)"] +test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] +upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)", "pyyaml-include (<3.0)", "tomli-w (<2.0)"] [[package]] -name = "identify" -version = "2.6.13" -description = "File identification library for Python" +name = "jupyterlab-pygments" +version = "0.3.0" +description = "Pygments theme using JupyterLab CSS variables" optional = false -python-versions = ">=3.9" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "identify-2.6.13-py2.py3-none-any.whl", hash = "sha256:60381139b3ae39447482ecc406944190f690d4a2997f2584062089848361b33b"}, - {file = "identify-2.6.13.tar.gz", hash = "sha256:da8d6c828e773620e13bfa86ea601c5a5310ba4bcd65edf378198b56a1f9fb32"}, + {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, + {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, ] -[package.extras] -license = ["ukkonen"] - [[package]] -name = "idna" -version = "3.10" -description = "Internationalized Domain Names in Applications (IDNA)" +name = "jupyterlab-server" +version = "2.27.3" +description = "A set of server components for JupyterLab and JupyterLab like applications." optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, + {file = "jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4"}, + {file = "jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4"}, ] +[package.dependencies] +babel = ">=2.10" +jinja2 = ">=3.0.3" +json5 = ">=0.9.0" +jsonschema = ">=4.18.0" +jupyter-server = ">=1.21,<3" +packaging = ">=21.3" +requests = ">=2.31" + [package.extras] -all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] +docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"] +openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"] +test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0,<8)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] [[package]] -name = "iniconfig" -version = "2.1.0" -description = "brain-dead simple config-ini parsing" +name = "jupyterlab-widgets" +version = "3.0.15" +description = "Jupyter interactive widgets for JupyterLab" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, - {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, + { file = "jupyterlab_widgets-3.0.15-py3-none-any.whl", hash = "sha256:d59023d7d7ef71400d51e6fee9a88867f6e65e10a4201605d2d7f3e8f012a31c" }, + { file = "jupyterlab_widgets-3.0.15.tar.gz", hash = "sha256:2920888a0c2922351a9202817957a68c07d99673504d6cd37345299e971bb08b" }, ] [[package]] -name = "jinja2" -version = "3.1.6" -description = "A very fast and expressive template engine." +name = "lark" +version = "1.2.2" +description = "a modern parsing library" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, - {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, + { file = "lark-1.2.2-py3-none-any.whl", hash = "sha256:c2276486b02f0f1b90be155f2c8ba4a8e194d42775786db622faccd652d8e80c" }, + { file = "lark-1.2.2.tar.gz", hash = "sha256:ca807d0162cd16cef15a8feecb862d7319e7a09bdb13aef927968e45040fed80" }, ] -[package.dependencies] -MarkupSafe = ">=2.0" - [package.extras] -i18n = ["Babel (>=2.7)"] +atomic-cache = ["atomicwrites"] +interegular = ["interegular (>=0.3.1,<0.4.0)"] +nearley = ["js2py"] +regex = ["regex"] + +[[package]] +name = "locket" +version = "1.0.0" +description = "File-based locks for Python on Linux and Windows" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["main"] +files = [ + {file = "locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3"}, + {file = "locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632"}, +] [[package]] name = "markdown" @@ -432,8 +1727,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24"}, - {file = "markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45"}, + { file = "markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24" }, + { file = "markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45" }, ] [package.extras] @@ -511,6 +1806,21 @@ files = [ {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, ] +[[package]] +name = "matplotlib-inline" +version = "0.1.7" +description = "Inline Matplotlib backend for Jupyter" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, + {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, +] + +[package.dependencies] +traitlets = "*" + [[package]] name = "mergedeep" version = "1.3.4" @@ -519,8 +1829,20 @@ optional = false python-versions = ">=3.6" groups = ["dev"] files = [ - {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, - {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, + { file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307" }, + { file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8" }, +] + +[[package]] +name = "mistune" +version = "3.1.3" +description = "A sane and fast Markdown parser with useful plugins and renderers" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9" }, + { file = "mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0" }, ] [[package]] @@ -531,13 +1853,13 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e"}, - {file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2"}, + { file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e" }, + { file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2" }, ] [package.dependencies] click = ">=7.0" -colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} +colorama = { version = ">=0.4", markers = "platform_system == \"Windows\"" } ghp-import = ">=1.0" jinja2 = ">=2.11.1" markdown = ">=3.3.6" @@ -562,200 +1884,513 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13"}, - {file = "mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749"}, + { file = "mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13" }, + { file = "mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749" }, +] + +[package.dependencies] +Markdown = ">=3.3" +markupsafe = ">=2.0.1" +mkdocs = ">=1.1" + +[[package]] +name = "mkdocs-get-deps" +version = "0.2.0" +description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134" }, + { file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c" }, +] + +[package.dependencies] +mergedeep = ">=1.3.4" +platformdirs = ">=2.2.0" +pyyaml = ">=5.1" + +[[package]] +name = "mkdocs-material" +version = "9.6.15" +description = "Documentation that simply works" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "mkdocs_material-9.6.15-py3-none-any.whl", hash = "sha256:ac969c94d4fe5eb7c924b6d2f43d7db41159ea91553d18a9afc4780c34f2717a" }, + { file = "mkdocs_material-9.6.15.tar.gz", hash = "sha256:64adf8fa8dba1a17905b6aee1894a5aafd966d4aeb44a11088519b0f5ca4f1b5" }, +] + +[package.dependencies] +babel = ">=2.10,<3.0" +backrefs = ">=5.7.post1,<6.0" +colorama = ">=0.4,<1.0" +jinja2 = ">=3.1,<4.0" +markdown = ">=3.2,<4.0" +mkdocs = ">=1.6,<2.0" +mkdocs-material-extensions = ">=1.3,<2.0" +paginate = ">=0.5,<1.0" +pygments = ">=2.16,<3.0" +pymdown-extensions = ">=10.2,<11.0" +requests = ">=2.26,<3.0" + +[package.extras] +git = ["mkdocs-git-committers-plugin-2 (>=1.1,<3)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] +imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] +recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] + +[[package]] +name = "mkdocs-material-extensions" +version = "1.3.1" +description = "Extension pack for Python Markdown and MkDocs Material." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31" }, + { file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443" }, +] + +[[package]] +name = "mkdocstrings" +version = "0.29.1" +description = "Automatic documentation from sources, for MkDocs." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "mkdocstrings-0.29.1-py3-none-any.whl", hash = "sha256:37a9736134934eea89cbd055a513d40a020d87dfcae9e3052c2a6b8cd4af09b6" }, + { file = "mkdocstrings-0.29.1.tar.gz", hash = "sha256:8722f8f8c5cd75da56671e0a0c1bbed1df9946c0cef74794d6141b34011abd42" }, +] + +[package.dependencies] +Jinja2 = ">=2.11.1" +Markdown = ">=3.6" +MarkupSafe = ">=1.1" +mkdocs = ">=1.6" +mkdocs-autorefs = ">=1.4" +mkdocstrings-python = { version = ">=1.16.2", optional = true, markers = "extra == \"python\"" } +pymdown-extensions = ">=6.3" + +[package.extras] +crystal = ["mkdocstrings-crystal (>=0.3.4)"] +python = ["mkdocstrings-python (>=1.16.2)"] +python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] + +[[package]] +name = "mkdocstrings-python" +version = "1.16.12" +description = "A Python handler for mkdocstrings." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "mkdocstrings_python-1.16.12-py3-none-any.whl", hash = "sha256:22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374" }, + { file = "mkdocstrings_python-1.16.12.tar.gz", hash = "sha256:9b9eaa066e0024342d433e332a41095c4e429937024945fea511afe58f63175d" }, +] + +[package.dependencies] +griffe = ">=1.6.2" +mkdocs-autorefs = ">=1.4" +mkdocstrings = ">=0.28.3" + +[[package]] +name = "mypy" +version = "1.17.0" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "mypy-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8e08de6138043108b3b18f09d3f817a4783912e48828ab397ecf183135d84d6" }, + { file = "mypy-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce4a17920ec144647d448fc43725b5873548b1aae6c603225626747ededf582d" }, + { file = "mypy-1.17.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ff25d151cc057fdddb1cb1881ef36e9c41fa2a5e78d8dd71bee6e4dcd2bc05b" }, + { file = "mypy-1.17.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93468cf29aa9a132bceb103bd8475f78cacde2b1b9a94fd978d50d4bdf616c9a" }, + { file = "mypy-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:98189382b310f16343151f65dd7e6867386d3e35f7878c45cfa11383d175d91f" }, + { file = "mypy-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:c004135a300ab06a045c1c0d8e3f10215e71d7b4f5bb9a42ab80236364429937" }, + { file = "mypy-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9d4fe5c72fd262d9c2c91c1117d16aac555e05f5beb2bae6a755274c6eec42be" }, + { file = "mypy-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96b196e5c16f41b4f7736840e8455958e832871990c7ba26bf58175e357ed61" }, + { file = "mypy-1.17.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:73a0ff2dd10337ceb521c080d4147755ee302dcde6e1a913babd59473904615f" }, + { file = "mypy-1.17.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:24cfcc1179c4447854e9e406d3af0f77736d631ec87d31c6281ecd5025df625d" }, + { file = "mypy-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3c56f180ff6430e6373db7a1d569317675b0a451caf5fef6ce4ab365f5f2f6c3" }, + { file = "mypy-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:eafaf8b9252734400f9b77df98b4eee3d2eecab16104680d51341c75702cad70" }, + { file = "mypy-1.17.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f986f1cab8dbec39ba6e0eaa42d4d3ac6686516a5d3dccd64be095db05ebc6bb" }, + { file = "mypy-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:51e455a54d199dd6e931cd7ea987d061c2afbaf0960f7f66deef47c90d1b304d" }, + { file = "mypy-1.17.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3204d773bab5ff4ebbd1f8efa11b498027cd57017c003ae970f310e5b96be8d8" }, + { file = "mypy-1.17.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1051df7ec0886fa246a530ae917c473491e9a0ba6938cfd0ec2abc1076495c3e" }, + { file = "mypy-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f773c6d14dcc108a5b141b4456b0871df638eb411a89cd1c0c001fc4a9d08fc8" }, + { file = "mypy-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:1619a485fd0e9c959b943c7b519ed26b712de3002d7de43154a489a2d0fd817d" }, + { file = "mypy-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c41aa59211e49d717d92b3bb1238c06d387c9325d3122085113c79118bebb06" }, + { file = "mypy-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e69db1fb65b3114f98c753e3930a00514f5b68794ba80590eb02090d54a5d4a" }, + { file = "mypy-1.17.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:03ba330b76710f83d6ac500053f7727270b6b8553b0423348ffb3af6f2f7b889" }, + { file = "mypy-1.17.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:037bc0f0b124ce46bfde955c647f3e395c6174476a968c0f22c95a8d2f589bba" }, + { file = "mypy-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c38876106cb6132259683632b287238858bd58de267d80defb6f418e9ee50658" }, + { file = "mypy-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:d30ba01c0f151998f367506fab31c2ac4527e6a7b2690107c7a7f9e3cb419a9c" }, + { file = "mypy-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:63e751f1b5ab51d6f3d219fe3a2fe4523eaa387d854ad06906c63883fde5b1ab" }, + { file = "mypy-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7fb09d05e0f1c329a36dcd30e27564a3555717cde87301fae4fb542402ddfad" }, + { file = "mypy-1.17.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b72c34ce05ac3a1361ae2ebb50757fb6e3624032d91488d93544e9f82db0ed6c" }, + { file = "mypy-1.17.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:434ad499ad8dde8b2f6391ddfa982f41cb07ccda8e3c67781b1bfd4e5f9450a8" }, + { file = "mypy-1.17.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f105f61a5eff52e137fd73bee32958b2add9d9f0a856f17314018646af838e97" }, + { file = "mypy-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:ba06254a5a22729853209550d80f94e28690d5530c661f9416a68ac097b13fc4" }, + { file = "mypy-1.17.0-py3-none-any.whl", hash = "sha256:15d9d0018237ab058e5de3d8fce61b6fa72cc59cc78fd91f1b474bce12abf496" }, + { file = "mypy-1.17.0.tar.gz", hash = "sha256:e5d7ccc08ba089c06e2f5629c660388ef1fee708444f1dee0b9203fa031dee03" }, +] + +[package.dependencies] +mypy_extensions = ">=1.0.0" +pathspec = ">=0.9.0" +typing_extensions = ">=4.6.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +faster-cache = ["orjson"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505" }, + { file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558" }, +] + +[[package]] +name = "nbclient" +version = "0.10.2" +description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." +optional = false +python-versions = ">=3.9.0" +groups = ["dev"] +files = [ + { file = "nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d" }, + { file = "nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193" }, +] + +[package.dependencies] +jupyter-client = ">=6.1.12" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +nbformat = ">=5.1" +traitlets = ">=5.4" + +[package.extras] +dev = ["pre-commit"] +docs = ["autodoc-traits", "flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "mock", "moto", "myst-parser", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling", "testpath", "xmltodict"] +test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] + +[[package]] +name = "nbconvert" +version = "7.16.6" +description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b" }, + { file = "nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582" }, +] + +[package.dependencies] +beautifulsoup4 = "*" +bleach = { version = "!=5.0.0", extras = ["css"] } +defusedxml = "*" +jinja2 = ">=3.0" +jupyter-core = ">=4.7" +jupyterlab-pygments = "*" +markupsafe = ">=2.0" +mistune = ">=2.0.3,<4" +nbclient = ">=0.5.0" +nbformat = ">=5.7" +packaging = "*" +pandocfilters = ">=1.4.1" +pygments = ">=2.4.1" +traitlets = ">=5.1" + +[package.extras] +all = ["flaky", "ipykernel", "ipython", "ipywidgets (>=7.5)", "myst-parser", "nbsphinx (>=0.2.12)", "playwright", "pydata-sphinx-theme", "pyqtwebengine (>=5.15)", "pytest (>=7)", "sphinx (==5.0.2)", "sphinxcontrib-spelling", "tornado (>=6.1)"] +docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"] +qtpdf = ["pyqtwebengine (>=5.15)"] +qtpng = ["pyqtwebengine (>=5.15)"] +serve = ["tornado (>=6.1)"] +test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest (>=7)"] +webpdf = ["playwright"] + +[[package]] +name = "nbformat" +version = "5.10.4" +description = "The Jupyter Notebook format" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, + {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, ] [package.dependencies] -Markdown = ">=3.3" -markupsafe = ">=2.0.1" -mkdocs = ">=1.1" +fastjsonschema = ">=2.15" +jsonschema = ">=2.6" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +traitlets = ">=5.1" + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["pep440", "pre-commit", "pytest", "testpath"] [[package]] -name = "mkdocs-get-deps" -version = "0.2.0" -description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" +name = "nest-asyncio" +version = "1.6.0" +description = "Patch asyncio to allow nested event loops" optional = false -python-versions = ">=3.8" +python-versions = ">=3.5" groups = ["dev"] files = [ - {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, - {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, + {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, + {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, ] -[package.dependencies] -mergedeep = ">=1.3.4" -platformdirs = ">=2.2.0" -pyyaml = ">=5.1" - [[package]] -name = "mkdocs-material" -version = "9.6.17" -description = "Documentation that simply works" +name = "netcdf4" +version = "1.7.2" +description = "Provides an object-oriented python interface to the netCDF version 4 library" optional = false python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] files = [ - {file = "mkdocs_material-9.6.17-py3-none-any.whl", hash = "sha256:221dd8b37a63f52e580bcab4a7e0290e4a6f59bd66190be9c3d40767e05f9417"}, - {file = "mkdocs_material-9.6.17.tar.gz", hash = "sha256:48ae7aec72a3f9f501a70be3fbd329c96ff5f5a385b67a1563e5ed5ce064affe"}, + {file = "netCDF4-1.7.2-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:5e9b485e3bd9294d25ff7dc9addefce42b3d23c1ee7e3627605277d159819392"}, + {file = "netCDF4-1.7.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:118b476fd00d7e3ab9aa7771186d547da645ae3b49c0c7bdab866793ebf22f07"}, + {file = "netCDF4-1.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abe5b1837ff209185ecfe50bd71884c866b3ee69691051833e410e57f177e059"}, + {file = "netCDF4-1.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28021c7e886e5bccf9a8ce504c032d1d7f98d86f67495fb7cf2c9564eba04510"}, + {file = "netCDF4-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:7460b638e41c8ce4179d082a81cb6456f0ce083d4d959f4d9e87a95cd86f64cb"}, + {file = "netCDF4-1.7.2-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:09d61c2ddb6011afb51e77ea0f25cd0bdc28887fb426ffbbc661d920f20c9749"}, + {file = "netCDF4-1.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:fd2a16dbddeb8fa7cf48c37bfc1967290332f2862bb82f984eec2007bb120aeb"}, + {file = "netCDF4-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f54f5d39ffbcf1726a1e6fd90cb5fa74277ecea739a5fa0f424636d71beafe24"}, + {file = "netCDF4-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:902aa50d70f49d002d896212a171d344c38f7b8ca520837c56c922ac1535c4a3"}, + {file = "netCDF4-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3291f9ad0c98c49a4dd16aefad1a9abd3a1b884171db6c81bdcee94671cfabe3"}, + {file = "netCDF4-1.7.2-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e73e3baa0b74afc414e53ff5095748fdbec7fb346eda351e567c23f2f0d247f1"}, + {file = "netCDF4-1.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a51da09258b31776f474c1d47e484fc7214914cdc59edf4cee789ba632184591"}, + {file = "netCDF4-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb95b11804fe051897d1f2044b05d82a1847bc2549631cdd2f655dde7de77a9c"}, + {file = "netCDF4-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d8a848373723f41ef662590b4f5e1832227501c9fd4513e8ad8da58c269977"}, + {file = "netCDF4-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:568ea369e00b581302d77fc5fd0b8f78e520c7e08d0b5af5219ba51f3f1cd694"}, + {file = "netCDF4-1.7.2-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:205a5f1de3ddb993c7c97fb204a923a22408cc2e5facf08d75a8eb89b3e7e1a8"}, + {file = "netCDF4-1.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:96653fc75057df196010818367c63ba6d7e9af603df0a7fe43fcdad3fe0e9e56"}, + {file = "netCDF4-1.7.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30d20e56b9ba2c48884eb89c91b63e6c0612b4927881707e34402719153ef17f"}, + {file = "netCDF4-1.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d6bfd38ba0bde04d56f06c1554714a2ea9dab75811c89450dc3ec57a9d36b80"}, + {file = "netCDF4-1.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:5c5fbee6134ee1246c397e1508e5297d825aa19221fdf3fa8dc9727ad824d7a5"}, + {file = "netCDF4-1.7.2-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:6bf402c2c7c063474576e5cf89af877d0b0cd097d9316d5bc4fcb22b62f12567"}, + {file = "netCDF4-1.7.2-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:5bdf3b34e6fd4210e34fdc5d1a669a22c4863d96f8a20a3928366acae7b3cbbb"}, + {file = "netCDF4-1.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:657774404b9f78a5e4d26506ac9bfe106e4a37238282a70803cc7ce679c5a6cc"}, + {file = "netCDF4-1.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e896d92f01fbf365e33e2513d5a8c4cfe16ff406aae9b6034e5ba1538c8c7a8"}, + {file = "netCDF4-1.7.2-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:eb87c08d1700fe67c301898cf5ba3a3e1f8f2fbb417fcd0e2ac784846b60b058"}, + {file = "netCDF4-1.7.2-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:59b403032774c723ee749d7f2135be311bad7d00d1db284bebfab58b9d5cdb92"}, + {file = "netCDF4-1.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:572f71459ef4b30e8554dcc4e1e6f55de515acc82a50968b48fe622244a64548"}, + {file = "netCDF4-1.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f77e72281acc5f331f82271e5f7f014d46f5ca9bcaa5aafe3e46d66cee21320"}, + {file = "netCDF4-1.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:d0fa7a9674fae8ae4877e813173c3ff7a6beee166b8730bdc847f517b282ed31"}, + {file = "netcdf4-1.7.2.tar.gz", hash = "sha256:a4c6375540b19989896136943abb6d44850ff6f1fa7d3f063253b1ad3f8b7fce"}, ] [package.dependencies] -babel = ">=2.10,<3.0" -backrefs = ">=5.7.post1,<6.0" -click = "<8.2.2" -colorama = ">=0.4,<1.0" -jinja2 = ">=3.1,<4.0" -markdown = ">=3.2,<4.0" -mkdocs = ">=1.6,<2.0" -mkdocs-material-extensions = ">=1.3,<2.0" -paginate = ">=0.5,<1.0" -pygments = ">=2.16,<3.0" -pymdown-extensions = ">=10.2,<11.0" -requests = ">=2.26,<3.0" +certifi = "*" +cftime = "*" +numpy = "*" [package.extras] -git = ["mkdocs-git-committers-plugin-2 (>=1.1,<3)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] -imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] -recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] +tests = ["Cython", "packaging", "pytest"] [[package]] -name = "mkdocs-material-extensions" -version = "1.3.1" -description = "Extension pack for Python Markdown and MkDocs Material." +name = "nodeenv" +version = "1.9.1" +description = "Node.js virtual environment builder" optional = false -python-versions = ">=3.8" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" groups = ["dev"] files = [ - {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, - {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] [[package]] -name = "mkdocstrings" -version = "0.29.1" -description = "Automatic documentation from sources, for MkDocs." +name = "notebook" +version = "7.4.4" +description = "Jupyter Notebook - A web-based notebook environment for interactive computing" optional = false -python-versions = ">=3.9" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "mkdocstrings-0.29.1-py3-none-any.whl", hash = "sha256:37a9736134934eea89cbd055a513d40a020d87dfcae9e3052c2a6b8cd4af09b6"}, - {file = "mkdocstrings-0.29.1.tar.gz", hash = "sha256:8722f8f8c5cd75da56671e0a0c1bbed1df9946c0cef74794d6141b34011abd42"}, + { file = "notebook-7.4.4-py3-none-any.whl", hash = "sha256:32840f7f777b6bff79bb101159336e9b332bdbfba1495b8739e34d1d65cbc1c0" }, + { file = "notebook-7.4.4.tar.gz", hash = "sha256:392fd501e266f2fb3466c6fcd3331163a2184968cb5c5accf90292e01dfe528c" }, ] [package.dependencies] -Jinja2 = ">=2.11.1" -Markdown = ">=3.6" -MarkupSafe = ">=1.1" -mkdocs = ">=1.6" -mkdocs-autorefs = ">=1.4" -mkdocstrings-python = {version = ">=1.16.2", optional = true, markers = "extra == \"python\""} -pymdown-extensions = ">=6.3" +jupyter-server = ">=2.4.0,<3" +jupyterlab = ">=4.4.4,<4.5" +jupyterlab-server = ">=2.27.1,<3" +notebook-shim = ">=0.2,<0.3" +tornado = ">=6.2.0" [package.extras] -crystal = ["mkdocstrings-crystal (>=0.3.4)"] -python = ["mkdocstrings-python (>=1.16.2)"] -python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] +dev = ["hatch", "pre-commit"] +docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["importlib-resources (>=5.0) ; python_version < \"3.10\"", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] [[package]] -name = "mkdocstrings-python" -version = "1.16.12" -description = "A Python handler for mkdocstrings." +name = "notebook-shim" +version = "0.2.4" +description = "A shim layer for notebook traits and config" optional = false -python-versions = ">=3.9" +python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "mkdocstrings_python-1.16.12-py3-none-any.whl", hash = "sha256:22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374"}, - {file = "mkdocstrings_python-1.16.12.tar.gz", hash = "sha256:9b9eaa066e0024342d433e332a41095c4e429937024945fea511afe58f63175d"}, + {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, + {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, ] [package.dependencies] -griffe = ">=1.6.2" -mkdocs-autorefs = ">=1.4" -mkdocstrings = ">=0.28.3" +jupyter-server = ">=1.8,<3" + +[package.extras] +test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"] [[package]] -name = "mypy" -version = "1.17.1" -description = "Optional static typing for Python" +name = "numcodecs" +version = "0.16.1" +description = "A Python package providing buffer compression and transformation codecs for use in data storage and communication applications." optional = false -python-versions = ">=3.9" -groups = ["dev"] +python-versions = ">=3.11" +groups = ["main"] files = [ - {file = "mypy-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3fbe6d5555bf608c47203baa3e72dbc6ec9965b3d7c318aa9a4ca76f465bd972"}, - {file = "mypy-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80ef5c058b7bce08c83cac668158cb7edea692e458d21098c7d3bce35a5d43e7"}, - {file = "mypy-1.17.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4a580f8a70c69e4a75587bd925d298434057fe2a428faaf927ffe6e4b9a98df"}, - {file = "mypy-1.17.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd86bb649299f09d987a2eebb4d52d10603224500792e1bee18303bbcc1ce390"}, - {file = "mypy-1.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a76906f26bd8d51ea9504966a9c25419f2e668f012e0bdf3da4ea1526c534d94"}, - {file = "mypy-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:e79311f2d904ccb59787477b7bd5d26f3347789c06fcd7656fa500875290264b"}, - {file = "mypy-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad37544be07c5d7fba814eb370e006df58fed8ad1ef33ed1649cb1889ba6ff58"}, - {file = "mypy-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:064e2ff508e5464b4bd807a7c1625bc5047c5022b85c70f030680e18f37273a5"}, - {file = "mypy-1.17.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:70401bbabd2fa1aa7c43bb358f54037baf0586f41e83b0ae67dd0534fc64edfd"}, - {file = "mypy-1.17.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e92bdc656b7757c438660f775f872a669b8ff374edc4d18277d86b63edba6b8b"}, - {file = "mypy-1.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c1fdf4abb29ed1cb091cf432979e162c208a5ac676ce35010373ff29247bcad5"}, - {file = "mypy-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:ff2933428516ab63f961644bc49bc4cbe42bbffb2cd3b71cc7277c07d16b1a8b"}, - {file = "mypy-1.17.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:69e83ea6553a3ba79c08c6e15dbd9bfa912ec1e493bf75489ef93beb65209aeb"}, - {file = "mypy-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b16708a66d38abb1e6b5702f5c2c87e133289da36f6a1d15f6a5221085c6403"}, - {file = "mypy-1.17.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:89e972c0035e9e05823907ad5398c5a73b9f47a002b22359b177d40bdaee7056"}, - {file = "mypy-1.17.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03b6d0ed2b188e35ee6d5c36b5580cffd6da23319991c49ab5556c023ccf1341"}, - {file = "mypy-1.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c837b896b37cd103570d776bda106eabb8737aa6dd4f248451aecf53030cdbeb"}, - {file = "mypy-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:665afab0963a4b39dff7c1fa563cc8b11ecff7910206db4b2e64dd1ba25aed19"}, - {file = "mypy-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93378d3203a5c0800c6b6d850ad2f19f7a3cdf1a3701d3416dbf128805c6a6a7"}, - {file = "mypy-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:15d54056f7fe7a826d897789f53dd6377ec2ea8ba6f776dc83c2902b899fee81"}, - {file = "mypy-1.17.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:209a58fed9987eccc20f2ca94afe7257a8f46eb5df1fb69958650973230f91e6"}, - {file = "mypy-1.17.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:099b9a5da47de9e2cb5165e581f158e854d9e19d2e96b6698c0d64de911dd849"}, - {file = "mypy-1.17.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa6ffadfbe6994d724c5a1bb6123a7d27dd68fc9c059561cd33b664a79578e14"}, - {file = "mypy-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:9a2b7d9180aed171f033c9f2fc6c204c1245cf60b0cb61cf2e7acc24eea78e0a"}, - {file = "mypy-1.17.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:15a83369400454c41ed3a118e0cc58bd8123921a602f385cb6d6ea5df050c733"}, - {file = "mypy-1.17.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:55b918670f692fc9fba55c3298d8a3beae295c5cded0a55dccdc5bbead814acd"}, - {file = "mypy-1.17.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:62761474061feef6f720149d7ba876122007ddc64adff5ba6f374fda35a018a0"}, - {file = "mypy-1.17.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c49562d3d908fd49ed0938e5423daed8d407774a479b595b143a3d7f87cdae6a"}, - {file = "mypy-1.17.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:397fba5d7616a5bc60b45c7ed204717eaddc38f826e3645402c426057ead9a91"}, - {file = "mypy-1.17.1-cp314-cp314-win_amd64.whl", hash = "sha256:9d6b20b97d373f41617bd0708fd46aa656059af57f2ef72aa8c7d6a2b73b74ed"}, - {file = "mypy-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5d1092694f166a7e56c805caaf794e0585cabdbf1df36911c414e4e9abb62ae9"}, - {file = "mypy-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:79d44f9bfb004941ebb0abe8eff6504223a9c1ac51ef967d1263c6572bbebc99"}, - {file = "mypy-1.17.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b01586eed696ec905e61bd2568f48740f7ac4a45b3a468e6423a03d3788a51a8"}, - {file = "mypy-1.17.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43808d9476c36b927fbcd0b0255ce75efe1b68a080154a38ae68a7e62de8f0f8"}, - {file = "mypy-1.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:feb8cc32d319edd5859da2cc084493b3e2ce5e49a946377663cc90f6c15fb259"}, - {file = "mypy-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d7598cf74c3e16539d4e2f0b8d8c318e00041553d83d4861f87c7a72e95ac24d"}, - {file = "mypy-1.17.1-py3-none-any.whl", hash = "sha256:a9f52c0351c21fe24c21d8c0eb1f62967b262d6729393397b6f443c3b773c3b9"}, - {file = "mypy-1.17.1.tar.gz", hash = "sha256:25e01ec741ab5bb3eec8ba9cdb0f769230368a22c959c4937360efb89b7e9f01"}, + { file = "numcodecs-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5348a25aefbce37ea7c00c3363d36176155233c95597e5905a932e9620df960d" }, + { file = "numcodecs-0.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2058b0a985470809c720d2457758b61e6c9495a49d5f20dfac9b5ebabd8848eb" }, + { file = "numcodecs-0.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b216b6d7bc207b85d41fddbc25b09fd00d76e265454db6e3fb09d5da0216397" }, + { file = "numcodecs-0.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2308d56c4f84a5b942f8668b4adedd3d9cdd6a22e6e6e20768ec356c77050f38" }, + { file = "numcodecs-0.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:acd8d68b4b815e62cb91e6064a53dac51ee99849350784ee16dd52cdbb4bc70f" }, + { file = "numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122" }, + { file = "numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458" }, + { file = "numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40" }, + { file = "numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609" }, + { file = "numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df" }, + { file = "numcodecs-0.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2ad8ee940315f59188accfc3f2d39726a4ca0d76b49bf8d0018e121f01c49028" }, + { file = "numcodecs-0.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:179ca7bf3525a0f7379df7767d87dd495253de44597cb7e511198b28b09da633" }, + { file = "numcodecs-0.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e2babbb50bf348ae982818d5560af330eab0dcd925fb0e49509785ad57d11db" }, + { file = "numcodecs-0.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4b29d8d3284b72bfad4fb83d672a17f497ae86ee1ef8087bac7222b620d3d91" }, + { file = "numcodecs-0.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:06489635f43e1a959aea73cb830d78cf3adb07ac5f34daccb92091e4d9ac6b07" }, + { file = "numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1" }, ] [package.dependencies] -mypy_extensions = ">=1.0.0" -pathspec = ">=0.9.0" -typing_extensions = ">=4.6.0" +crc32c = { version = ">=2.7", optional = true, markers = "extra == \"crc32c\"" } +numpy = ">=1.24" +typing_extensions = "*" [package.extras] -dmypy = ["psutil (>=4.0)"] -faster-cache = ["orjson"] -install-types = ["pip"] -mypyc = ["setuptools (>=50)"] -reports = ["lxml"] +crc32c = ["crc32c (>=2.7)"] +docs = ["numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-issues"] +msgpack = ["msgpack"] +pcodec = ["pcodec (>=0.3,<0.4)"] +test = ["coverage", "pytest", "pytest-cov"] +test-extras = ["importlib_metadata"] +zfpy = ["zfpy (>=1.0.0)"] [[package]] -name = "mypy-extensions" -version = "1.1.0" -description = "Type system extensions for programs checked with the mypy type checker." +name = "numpy" +version = "2.3.3" +description = "Fundamental package for array computing in Python" optional = false -python-versions = ">=3.8" -groups = ["dev"] +python-versions = ">=3.11" +groups = ["main"] files = [ - {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, - {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, + { file = "numpy-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ffc4f5caba7dfcbe944ed674b7eef683c7e94874046454bb79ed7ee0236f59d" }, + { file = "numpy-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7e946c7170858a0295f79a60214424caac2ffdb0063d4d79cb681f9aa0aa569" }, + { file = "numpy-2.3.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:cd4260f64bc794c3390a63bf0728220dd1a68170c169088a1e0dfa2fde1be12f" }, + { file = "numpy-2.3.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:f0ddb4b96a87b6728df9362135e764eac3cfa674499943ebc44ce96c478ab125" }, + { file = "numpy-2.3.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:afd07d377f478344ec6ca2b8d4ca08ae8bd44706763d1efb56397de606393f48" }, + { file = "numpy-2.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc92a5dedcc53857249ca51ef29f5e5f2f8c513e22cfb90faeb20343b8c6f7a6" }, + { file = "numpy-2.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7af05ed4dc19f308e1d9fc759f36f21921eb7bbfc82843eeec6b2a2863a0aefa" }, + { file = "numpy-2.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:433bf137e338677cebdd5beac0199ac84712ad9d630b74eceeb759eaa45ddf30" }, + { file = "numpy-2.3.3-cp311-cp311-win32.whl", hash = "sha256:eb63d443d7b4ffd1e873f8155260d7f58e7e4b095961b01c91062935c2491e57" }, + { file = "numpy-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:ec9d249840f6a565f58d8f913bccac2444235025bbb13e9a4681783572ee3caa" }, + { file = "numpy-2.3.3-cp311-cp311-win_arm64.whl", hash = "sha256:74c2a948d02f88c11a3c075d9733f1ae67d97c6bdb97f2bb542f980458b257e7" }, + { file = "numpy-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cfdd09f9c84a1a934cde1eec2267f0a43a7cd44b2cca4ff95b7c0d14d144b0bf" }, + { file = "numpy-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb32e3cf0f762aee47ad1ddc6672988f7f27045b0783c887190545baba73aa25" }, + { file = "numpy-2.3.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396b254daeb0a57b1fe0ecb5e3cff6fa79a380fa97c8f7781a6d08cd429418fe" }, + { file = "numpy-2.3.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:067e3d7159a5d8f8a0b46ee11148fc35ca9b21f61e3c49fbd0a027450e65a33b" }, + { file = "numpy-2.3.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c02d0629d25d426585fb2e45a66154081b9fa677bc92a881ff1d216bc9919a8" }, + { file = "numpy-2.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9192da52b9745f7f0766531dcfa978b7763916f158bb63bdb8a1eca0068ab20" }, + { file = "numpy-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cd7de500a5b66319db419dc3c345244404a164beae0d0937283b907d8152e6ea" }, + { file = "numpy-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:93d4962d8f82af58f0b2eb85daaf1b3ca23fe0a85d0be8f1f2b7bb46034e56d7" }, + { file = "numpy-2.3.3-cp312-cp312-win32.whl", hash = "sha256:5534ed6b92f9b7dca6c0a19d6df12d41c68b991cef051d108f6dbff3babc4ebf" }, + { file = "numpy-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:497d7cad08e7092dba36e3d296fe4c97708c93daf26643a1ae4b03f6294d30eb" }, + { file = "numpy-2.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:ca0309a18d4dfea6fc6262a66d06c26cfe4640c3926ceec90e57791a82b6eee5" }, + { file = "numpy-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f5415fb78995644253370985342cd03572ef8620b934da27d77377a2285955bf" }, + { file = "numpy-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d00de139a3324e26ed5b95870ce63be7ec7352171bc69a4cf1f157a48e3eb6b7" }, + { file = "numpy-2.3.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9dc13c6a5829610cc07422bc74d3ac083bd8323f14e2827d992f9e52e22cd6a6" }, + { file = "numpy-2.3.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:d79715d95f1894771eb4e60fb23f065663b2298f7d22945d66877aadf33d00c7" }, + { file = "numpy-2.3.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:952cfd0748514ea7c3afc729a0fc639e61655ce4c55ab9acfab14bda4f402b4c" }, + { file = "numpy-2.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5b83648633d46f77039c29078751f80da65aa64d5622a3cd62aaef9d835b6c93" }, + { file = "numpy-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b001bae8cea1c7dfdb2ae2b017ed0a6f2102d7a70059df1e338e307a4c78a8ae" }, + { file = "numpy-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8e9aced64054739037d42fb84c54dd38b81ee238816c948c8f3ed134665dcd86" }, + { file = "numpy-2.3.3-cp313-cp313-win32.whl", hash = "sha256:9591e1221db3f37751e6442850429b3aabf7026d3b05542d102944ca7f00c8a8" }, + { file = "numpy-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f0dadeb302887f07431910f67a14d57209ed91130be0adea2f9793f1a4f817cf" }, + { file = "numpy-2.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:3c7cf302ac6e0b76a64c4aecf1a09e51abd9b01fc7feee80f6c43e3ab1b1dbc5" }, + { file = "numpy-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:eda59e44957d272846bb407aad19f89dc6f58fecf3504bd144f4c5cf81a7eacc" }, + { file = "numpy-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:823d04112bc85ef5c4fda73ba24e6096c8f869931405a80aa8b0e604510a26bc" }, + { file = "numpy-2.3.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:40051003e03db4041aa325da2a0971ba41cf65714e65d296397cc0e32de6018b" }, + { file = "numpy-2.3.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ee9086235dd6ab7ae75aba5662f582a81ced49f0f1c6de4260a78d8f2d91a19" }, + { file = "numpy-2.3.3-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94fcaa68757c3e2e668ddadeaa86ab05499a70725811e582b6a9858dd472fb30" }, + { file = "numpy-2.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da1a74b90e7483d6ce5244053399a614b1d6b7bc30a60d2f570e5071f8959d3e" }, + { file = "numpy-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2990adf06d1ecee3b3dcbb4977dfab6e9f09807598d647f04d385d29e7a3c3d3" }, + { file = "numpy-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ed635ff692483b8e3f0fcaa8e7eb8a75ee71aa6d975388224f70821421800cea" }, + { file = "numpy-2.3.3-cp313-cp313t-win32.whl", hash = "sha256:a333b4ed33d8dc2b373cc955ca57babc00cd6f9009991d9edc5ddbc1bac36bcd" }, + { file = "numpy-2.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4384a169c4d8f97195980815d6fcad04933a7e1ab3b530921c3fef7a1c63426d" }, + { file = "numpy-2.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:75370986cc0bc66f4ce5110ad35aae6d182cc4ce6433c40ad151f53690130bf1" }, + { file = "numpy-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cd052f1fa6a78dee696b58a914b7229ecfa41f0a6d96dc663c1220a55e137593" }, + { file = "numpy-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:414a97499480067d305fcac9716c29cf4d0d76db6ebf0bf3cbce666677f12652" }, + { file = "numpy-2.3.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:50a5fe69f135f88a2be9b6ca0481a68a136f6febe1916e4920e12f1a34e708a7" }, + { file = "numpy-2.3.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:b912f2ed2b67a129e6a601e9d93d4fa37bef67e54cac442a2f588a54afe5c67a" }, + { file = "numpy-2.3.3-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9e318ee0596d76d4cb3d78535dc005fa60e5ea348cd131a51e99d0bdbe0b54fe" }, + { file = "numpy-2.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce020080e4a52426202bdb6f7691c65bb55e49f261f31a8f506c9f6bc7450421" }, + { file = "numpy-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e6687dc183aa55dae4a705b35f9c0f8cb178bcaa2f029b241ac5356221d5c021" }, + { file = "numpy-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d8f3b1080782469fdc1718c4ed1d22549b5fb12af0d57d35e992158a772a37cf" }, + { file = "numpy-2.3.3-cp314-cp314-win32.whl", hash = "sha256:cb248499b0bc3be66ebd6578b83e5acacf1d6cb2a77f2248ce0e40fbec5a76d0" }, + { file = "numpy-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:691808c2b26b0f002a032c73255d0bd89751425f379f7bcd22d140db593a96e8" }, + { file = "numpy-2.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:9ad12e976ca7b10f1774b03615a2a4bab8addce37ecc77394d8e986927dc0dfe" }, + { file = "numpy-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9cc48e09feb11e1db00b320e9d30a4151f7369afb96bd0e48d942d09da3a0d00" }, + { file = "numpy-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:901bf6123879b7f251d3631967fd574690734236075082078e0571977c6a8e6a" }, + { file = "numpy-2.3.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:7f025652034199c301049296b59fa7d52c7e625017cae4c75d8662e377bf487d" }, + { file = "numpy-2.3.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:533ca5f6d325c80b6007d4d7fb1984c303553534191024ec6a524a4c92a5935a" }, + { file = "numpy-2.3.3-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0edd58682a399824633b66885d699d7de982800053acf20be1eaa46d92009c54" }, + { file = "numpy-2.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:367ad5d8fbec5d9296d18478804a530f1191e24ab4d75ab408346ae88045d25e" }, + { file = "numpy-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8f6ac61a217437946a1fa48d24c47c91a0c4f725237871117dea264982128097" }, + { file = "numpy-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:179a42101b845a816d464b6fe9a845dfaf308fdfc7925387195570789bb2c970" }, + { file = "numpy-2.3.3-cp314-cp314t-win32.whl", hash = "sha256:1250c5d3d2562ec4174bce2e3a1523041595f9b651065e4a4473f5f48a6bc8a5" }, + { file = "numpy-2.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:b37a0b2e5935409daebe82c1e42274d30d9dd355852529eab91dab8dcca7419f" }, + { file = "numpy-2.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:78c9f6560dc7e6b3990e32df7ea1a50bbd0e2a111e05209963f5ddcab7073b0b" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1e02c7159791cd481e1e6d5ddd766b62a4d5acf8df4d4d1afe35ee9c5c33a41e" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:dca2d0fc80b3893ae72197b39f69d55a3cd8b17ea1b50aa4c62de82419936150" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:99683cbe0658f8271b333a1b1b4bb3173750ad59c0c61f5bbdc5b318918fffe3" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:d9d537a39cc9de668e5cd0e25affb17aec17b577c6b3ae8a3d866b479fbe88d0" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8596ba2f8af5f93b01d97563832686d20206d303024777f6dfc2e7c7c3f1850e" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1ec5615b05369925bd1125f27df33f3b6c8bc10d788d5999ecd8769a1fa04db" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:2e267c7da5bf7309670523896df97f93f6e469fb931161f483cd6882b3b1a5dc" }, + { file = "numpy-2.3.3.tar.gz", hash = "sha256:ddc7c39727ba62b80dfdbedf400d1c10ddfa8eefbd7ec8dcb118be8b56d31029" }, ] [[package]] -name = "nodeenv" -version = "1.9.1" -description = "Node.js virtual environment builder" +name = "overrides" +version = "7.7.0" +description = "A decorator to automatically detect mismatch when overriding a method." optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +python-versions = ">=3.6" groups = ["dev"] files = [ - {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, - {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, + {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, + {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, ] [[package]] @@ -764,10 +2399,10 @@ version = "25.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" -groups = ["dev"] +groups = ["main", "dev"] files = [ - {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, - {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, + { file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484" }, + { file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f" }, ] [[package]] @@ -778,14 +2413,144 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, - {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, + { file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591" }, + { file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945" }, ] [package.extras] dev = ["pytest", "tox"] lint = ["black"] +[[package]] +name = "pandas" +version = "2.3.1" +description = "Powerful data structures for data analysis, time series, and statistics" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + { file = "pandas-2.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:22c2e866f7209ebc3a8f08d75766566aae02bcc91d196935a1d9e59c7b990ac9" }, + { file = "pandas-2.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3583d348546201aff730c8c47e49bc159833f971c2899d6097bce68b9112a4f1" }, + { file = "pandas-2.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f951fbb702dacd390561e0ea45cdd8ecfa7fb56935eb3dd78e306c19104b9b0" }, + { file = "pandas-2.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd05b72ec02ebfb993569b4931b2e16fbb4d6ad6ce80224a3ee838387d83a191" }, + { file = "pandas-2.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1b916a627919a247d865aed068eb65eb91a344b13f5b57ab9f610b7716c92de1" }, + { file = "pandas-2.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fe67dc676818c186d5a3d5425250e40f179c2a89145df477dd82945eaea89e97" }, + { file = "pandas-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:2eb789ae0274672acbd3c575b0598d213345660120a257b47b5dafdc618aec83" }, + { file = "pandas-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2b0540963d83431f5ce8870ea02a7430adca100cec8a050f0811f8e31035541b" }, + { file = "pandas-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fe7317f578c6a153912bd2292f02e40c1d8f253e93c599e82620c7f69755c74f" }, + { file = "pandas-2.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6723a27ad7b244c0c79d8e7007092d7c8f0f11305770e2f4cd778b3ad5f9f85" }, + { file = "pandas-2.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3462c3735fe19f2638f2c3a40bd94ec2dc5ba13abbb032dd2fa1f540a075509d" }, + { file = "pandas-2.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:98bcc8b5bf7afed22cc753a28bc4d9e26e078e777066bc53fac7904ddef9a678" }, + { file = "pandas-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4d544806b485ddf29e52d75b1f559142514e60ef58a832f74fb38e48d757b299" }, + { file = "pandas-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:b3cd4273d3cb3707b6fffd217204c52ed92859533e31dc03b7c5008aa933aaab" }, + { file = "pandas-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:689968e841136f9e542020698ee1c4fbe9caa2ed2213ae2388dc7b81721510d3" }, + { file = "pandas-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:025e92411c16cbe5bb2a4abc99732a6b132f439b8aab23a59fa593eb00704232" }, + { file = "pandas-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b7ff55f31c4fcb3e316e8f7fa194566b286d6ac430afec0d461163312c5841e" }, + { file = "pandas-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dcb79bf373a47d2a40cf7232928eb7540155abbc460925c2c96d2d30b006eb4" }, + { file = "pandas-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:56a342b231e8862c96bdb6ab97170e203ce511f4d0429589c8ede1ee8ece48b8" }, + { file = "pandas-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ca7ed14832bce68baef331f4d7f294411bed8efd032f8109d690df45e00c4679" }, + { file = "pandas-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:ac942bfd0aca577bef61f2bc8da8147c4ef6879965ef883d8e8d5d2dc3e744b8" }, + { file = "pandas-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9026bd4a80108fac2239294a15ef9003c4ee191a0f64b90f170b40cfb7cf2d22" }, + { file = "pandas-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6de8547d4fdb12421e2d047a2c446c623ff4c11f47fddb6b9169eb98ffba485a" }, + { file = "pandas-2.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:782647ddc63c83133b2506912cc6b108140a38a37292102aaa19c81c83db2928" }, + { file = "pandas-2.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba6aff74075311fc88504b1db890187a3cd0f887a5b10f5525f8e2ef55bfdb9" }, + { file = "pandas-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e5635178b387bd2ba4ac040f82bc2ef6e6b500483975c4ebacd34bec945fda12" }, + { file = "pandas-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6f3bf5ec947526106399a9e1d26d40ee2b259c66422efdf4de63c848492d91bb" }, + { file = "pandas-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:1c78cf43c8fde236342a1cb2c34bcff89564a7bfed7e474ed2fffa6aed03a956" }, + { file = "pandas-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8dfc17328e8da77be3cf9f47509e5637ba8f137148ed0e9b5241e1baf526e20a" }, + { file = "pandas-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ec6c851509364c59a5344458ab935e6451b31b818be467eb24b0fe89bd05b6b9" }, + { file = "pandas-2.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:911580460fc4884d9b05254b38a6bfadddfcc6aaef856fb5859e7ca202e45275" }, + { file = "pandas-2.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f4d6feeba91744872a600e6edbbd5b033005b431d5ae8379abee5bcfa479fab" }, + { file = "pandas-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fe37e757f462d31a9cd7580236a82f353f5713a80e059a29753cf938c6775d96" }, + { file = "pandas-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5db9637dbc24b631ff3707269ae4559bce4b7fd75c1c4d7e13f40edc42df4444" }, + { file = "pandas-2.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4645f770f98d656f11c69e81aeb21c6fca076a44bed3dcbb9396a4311bc7f6d8" }, + { file = "pandas-2.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:342e59589cc454aaff7484d75b816a433350b3d7964d7847327edda4d532a2e3" }, + { file = "pandas-2.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d12f618d80379fde6af007f65f0c25bd3e40251dbd1636480dfffce2cf1e6da" }, + { file = "pandas-2.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd71c47a911da120d72ef173aeac0bf5241423f9bfea57320110a978457e069e" }, + { file = "pandas-2.3.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:09e3b1587f0f3b0913e21e8b32c3119174551deb4a4eba4a89bc7377947977e7" }, + { file = "pandas-2.3.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2323294c73ed50f612f67e2bf3ae45aea04dce5690778e08a09391897f35ff88" }, + { file = "pandas-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:b4b0de34dc8499c2db34000ef8baad684cfa4cbd836ecee05f323ebfba348c7d" }, + { file = "pandas-2.3.1.tar.gz", hash = "sha256:0a95b9ac964fe83ce317827f80304d37388ea77616b1425f0ae41c9d2d0d7bb2" }, +] + +[package.dependencies] +numpy = {version = ">=1.26.0", markers = "python_version >= \"3.12\""} +python-dateutil = ">=2.8.2" +pytz = ">=2020.1" +tzdata = ">=2022.7" + +[package.extras] +all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] +aws = ["s3fs (>=2022.11.0)"] +clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] +compression = ["zstandard (>=0.19.0)"] +computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] +feather = ["pyarrow (>=10.0.1)"] +fss = ["fsspec (>=2022.11.0)"] +gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] +hdf5 = ["tables (>=3.8.0)"] +html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] +mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] +parquet = ["pyarrow (>=10.0.1)"] +performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] +plot = ["matplotlib (>=3.6.3)"] +postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] +spss = ["pyreadstat (>=1.2.0)"] +sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.9.2)"] + +[[package]] +name = "pandocfilters" +version = "1.5.1" +description = "Utilities for writing pandoc filters in python" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["dev"] +files = [ + {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, + {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, +] + +[[package]] +name = "parso" +version = "0.8.4" +description = "A Python Parser" +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, + {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, +] + +[package.extras] +qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] +testing = ["docopt", "pytest"] + +[[package]] +name = "partd" +version = "1.4.2" +description = "Appendable key-value storage" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f"}, + {file = "partd-1.4.2.tar.gz", hash = "sha256:d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c"}, +] + +[package.dependencies] +locket = "*" +toolz = "*" + +[package.extras] +complete = ["blosc", "numpy (>=1.20.0)", "pandas (>=1.3)", "pyzmq"] + [[package]] name = "pathspec" version = "0.12.1" @@ -798,6 +2563,42 @@ files = [ {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] +[[package]] +name = "pexpect" +version = "4.9.0" +description = "Pexpect allows easy control of interactive console applications." +optional = false +python-versions = "*" +groups = ["dev"] +markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" +files = [ + {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, + {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, +] + +[package.dependencies] +ptyprocess = ">=0.5" + +[[package]] +name = "pip-requirements-parser" +version = "32.0.1" +description = "pip requirements parser - a mostly correct pip requirements parsing library because it uses pip's own code." +optional = false +python-versions = ">=3.6.0" +groups = ["dev"] +files = [ + { file = "pip-requirements-parser-32.0.1.tar.gz", hash = "sha256:b4fa3a7a0be38243123cf9d1f3518da10c51bdb165a2b2985566247f9155a7d3" }, + { file = "pip_requirements_parser-32.0.1-py3-none-any.whl", hash = "sha256:4659bc2a667783e7a15d190f6fccf8b2486685b6dba4c19c3876314769c57526" }, +] + +[package.dependencies] +packaging = "*" +pyparsing = "*" + +[package.extras] +docs = ["Sphinx (>=3.3.1)", "doc8 (>=0.8.1)", "sphinx-rtd-theme (>=0.5.0)"] +testing = ["aboutcode-toolkit (>=6.0.0)", "black", "pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"] + [[package]] name = "platformdirs" version = "4.3.8" @@ -806,8 +2607,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4"}, - {file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc"}, + { file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4" }, + { file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc" }, ] [package.extras] @@ -823,36 +2624,24 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, - {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, + { file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746" }, + { file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3" }, ] [package.extras] dev = ["pre-commit", "tox"] testing = ["coverage", "pytest", "pytest-benchmark"] -[[package]] -name = "poetry-core" -version = "2.1.3" -description = "Poetry PEP 517 Build Backend" -optional = false -python-versions = "<4.0,>=3.9" -groups = ["dev"] -files = [ - {file = "poetry_core-2.1.3-py3-none-any.whl", hash = "sha256:2c704f05016698a54ca1d327f46ce2426d72eaca6ff614132c8477c292266771"}, - {file = "poetry_core-2.1.3.tar.gz", hash = "sha256:0522a015477ed622c89aad56a477a57813cace0c8e7ff2a2906b7ef4a2e296a4"}, -] - [[package]] name = "pre-commit" -version = "4.3.0" +version = "4.2.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pre_commit-4.3.0-py2.py3-none-any.whl", hash = "sha256:2b0747ad7e6e967169136edffee14c16e148a778a54e4f967921aa1ebf2308d8"}, - {file = "pre_commit-4.3.0.tar.gz", hash = "sha256:499fe450cc9d42e9d58e606262795ecb64dd05438943c62b66f6a8673da30b16"}, + { file = "pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd" }, + { file = "pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146" }, ] [package.dependencies] @@ -862,21 +2651,115 @@ nodeenv = ">=0.11.1" pyyaml = ">=5.1" virtualenv = ">=20.10.0" +[[package]] +name = "prometheus-client" +version = "0.22.1" +description = "Python client for the Prometheus monitoring system." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "prometheus_client-0.22.1-py3-none-any.whl", hash = "sha256:cca895342e308174341b2cbf99a56bef291fbc0ef7b9e5412a0f26d653ba7094" }, + { file = "prometheus_client-0.22.1.tar.gz", hash = "sha256:190f1331e783cf21eb60bca559354e0a4d4378facecf78f5428c39b675d20d28" }, +] + +[package.extras] +twisted = ["twisted"] + +[[package]] +name = "prompt-toolkit" +version = "3.0.51" +description = "Library for building powerful interactive command lines in Python" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07" }, + { file = "prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed" }, +] + +[package.dependencies] +wcwidth = "*" + +[[package]] +name = "psutil" +version = "7.0.0" +description = "Cross-platform lib for process and system monitoring in Python. NOTE: the syntax of this script MUST be kept compatible with Python 2.7." +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + { file = "psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25" }, + { file = "psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da" }, + { file = "psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91" }, + { file = "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" }, + { file = "psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993" }, + { file = "psutil-7.0.0-cp36-cp36m-win32.whl", hash = "sha256:84df4eb63e16849689f76b1ffcb36db7b8de703d1bc1fe41773db487621b6c17" }, + { file = "psutil-7.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1e744154a6580bc968a0195fd25e80432d3afec619daf145b9e5ba16cc1d688e" }, + { file = "psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99" }, + { file = "psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553" }, + { file = "psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456" }, +] + +[package.extras] +dev = ["abi3audit", "black (==24.10.0)", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest", "pytest-cov", "pytest-xdist", "requests", "rstcheck", "ruff", "setuptools", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "vulture", "wheel"] +test = ["pytest", "pytest-xdist", "setuptools"] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +description = "Run a subprocess in a pseudo terminal" +optional = false +python-versions = "*" +groups = ["dev"] +markers = "os_name != \"nt\" or sys_platform != \"win32\" and sys_platform != \"emscripten\"" +files = [ + {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, + {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +description = "Safely evaluate AST nodes without side effects" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, + {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, +] + +[package.extras] +tests = ["pytest"] + +[[package]] +name = "pycparser" +version = "2.22" +description = "C parser in Python" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, +] + [[package]] name = "pydantic" -version = "2.12.3" +version = "2.12.0" description = "Data validation using Python type hints" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["main", "dev"] files = [ - {file = "pydantic-2.12.3-py3-none-any.whl", hash = "sha256:6986454a854bc3bc6e5443e1369e06a3a456af9d339eda45510f517d9ea5c6bf"}, - {file = "pydantic-2.12.3.tar.gz", hash = "sha256:1da1c82b0fc140bb0103bc1441ffe062154c8d38491189751ee00fd8ca65ce74"}, + { file = "pydantic-2.12.0-py3-none-any.whl", hash = "sha256:f6a1da352d42790537e95e83a8bdfb91c7efbae63ffd0b86fa823899e807116f" }, + { file = "pydantic-2.12.0.tar.gz", hash = "sha256:c1a077e6270dbfb37bfd8b498b3981e2bb18f68103720e51fa6c306a5a9af563" }, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.41.4" +pydantic-core = "2.41.1" typing-extensions = ">=4.14.1" typing-inspection = ">=0.4.2" @@ -886,129 +2769,125 @@ timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows [[package]] name = "pydantic-core" -version = "2.41.4" +version = "2.41.1" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["main", "dev"] files = [ - {file = "pydantic_core-2.41.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2442d9a4d38f3411f22eb9dd0912b7cbf4b7d5b6c92c4173b75d3e1ccd84e36e"}, - {file = "pydantic_core-2.41.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:30a9876226dda131a741afeab2702e2d127209bde3c65a2b8133f428bc5d006b"}, - {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d55bbac04711e2980645af68b97d445cdbcce70e5216de444a6c4b6943ebcccd"}, - {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e1d778fb7849a42d0ee5927ab0f7453bf9f85eef8887a546ec87db5ddb178945"}, - {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b65077a4693a98b90ec5ad8f203ad65802a1b9b6d4a7e48066925a7e1606706"}, - {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:62637c769dee16eddb7686bf421be48dfc2fae93832c25e25bc7242e698361ba"}, - {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dfe3aa529c8f501babf6e502936b9e8d4698502b2cfab41e17a028d91b1ac7b"}, - {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ca2322da745bf2eeb581fc9ea3bbb31147702163ccbcbf12a3bb630e4bf05e1d"}, - {file = "pydantic_core-2.41.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e8cd3577c796be7231dcf80badcf2e0835a46665eaafd8ace124d886bab4d700"}, - {file = "pydantic_core-2.41.4-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:1cae8851e174c83633f0833e90636832857297900133705ee158cf79d40f03e6"}, - {file = "pydantic_core-2.41.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a26d950449aae348afe1ac8be5525a00ae4235309b729ad4d3399623125b43c9"}, - {file = "pydantic_core-2.41.4-cp310-cp310-win32.whl", hash = "sha256:0cf2a1f599efe57fa0051312774280ee0f650e11152325e41dfd3018ef2c1b57"}, - {file = "pydantic_core-2.41.4-cp310-cp310-win_amd64.whl", hash = "sha256:a8c2e340d7e454dc3340d3d2e8f23558ebe78c98aa8f68851b04dcb7bc37abdc"}, - {file = "pydantic_core-2.41.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:28ff11666443a1a8cf2a044d6a545ebffa8382b5f7973f22c36109205e65dc80"}, - {file = "pydantic_core-2.41.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:61760c3925d4633290292bad462e0f737b840508b4f722247d8729684f6539ae"}, - {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eae547b7315d055b0de2ec3965643b0ab82ad0106a7ffd29615ee9f266a02827"}, - {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef9ee5471edd58d1fcce1c80ffc8783a650e3e3a193fe90d52e43bb4d87bff1f"}, - {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:15dd504af121caaf2c95cb90c0ebf71603c53de98305621b94da0f967e572def"}, - {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3a926768ea49a8af4d36abd6a8968b8790f7f76dd7cbd5a4c180db2b4ac9a3a2"}, - {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6916b9b7d134bff5440098a4deb80e4cb623e68974a87883299de9124126c2a8"}, - {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5cf90535979089df02e6f17ffd076f07237efa55b7343d98760bde8743c4b265"}, - {file = "pydantic_core-2.41.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7533c76fa647fade2d7ec75ac5cc079ab3f34879626dae5689b27790a6cf5a5c"}, - {file = "pydantic_core-2.41.4-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:37e516bca9264cbf29612539801ca3cd5d1be465f940417b002905e6ed79d38a"}, - {file = "pydantic_core-2.41.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0c19cb355224037c83642429b8ce261ae108e1c5fbf5c028bac63c77b0f8646e"}, - {file = "pydantic_core-2.41.4-cp311-cp311-win32.whl", hash = "sha256:09c2a60e55b357284b5f31f5ab275ba9f7f70b7525e18a132ec1f9160b4f1f03"}, - {file = "pydantic_core-2.41.4-cp311-cp311-win_amd64.whl", hash = "sha256:711156b6afb5cb1cb7c14a2cc2c4a8b4c717b69046f13c6b332d8a0a8f41ca3e"}, - {file = "pydantic_core-2.41.4-cp311-cp311-win_arm64.whl", hash = "sha256:6cb9cf7e761f4f8a8589a45e49ed3c0d92d1d696a45a6feaee8c904b26efc2db"}, - {file = "pydantic_core-2.41.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ab06d77e053d660a6faaf04894446df7b0a7e7aba70c2797465a0a1af00fc887"}, - {file = "pydantic_core-2.41.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c53ff33e603a9c1179a9364b0a24694f183717b2e0da2b5ad43c316c956901b2"}, - {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:304c54176af2c143bd181d82e77c15c41cbacea8872a2225dd37e6544dce9999"}, - {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:025ba34a4cf4fb32f917d5d188ab5e702223d3ba603be4d8aca2f82bede432a4"}, - {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9f5f30c402ed58f90c70e12eff65547d3ab74685ffe8283c719e6bead8ef53f"}, - {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd96e5d15385d301733113bcaa324c8bcf111275b7675a9c6e88bfb19fc05e3b"}, - {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98f348cbb44fae6e9653c1055db7e29de67ea6a9ca03a5fa2c2e11a47cff0e47"}, - {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec22626a2d14620a83ca583c6f5a4080fa3155282718b6055c2ea48d3ef35970"}, - {file = "pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3a95d4590b1f1a43bf33ca6d647b990a88f4a3824a8c4572c708f0b45a5290ed"}, - {file = "pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:f9672ab4d398e1b602feadcffcdd3af44d5f5e6ddc15bc7d15d376d47e8e19f8"}, - {file = "pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:84d8854db5f55fead3b579f04bda9a36461dab0730c5d570e1526483e7bb8431"}, - {file = "pydantic_core-2.41.4-cp312-cp312-win32.whl", hash = "sha256:9be1c01adb2ecc4e464392c36d17f97e9110fbbc906bcbe1c943b5b87a74aabd"}, - {file = "pydantic_core-2.41.4-cp312-cp312-win_amd64.whl", hash = "sha256:d682cf1d22bab22a5be08539dca3d1593488a99998f9f412137bc323179067ff"}, - {file = "pydantic_core-2.41.4-cp312-cp312-win_arm64.whl", hash = "sha256:833eebfd75a26d17470b58768c1834dfc90141b7afc6eb0429c21fc5a21dcfb8"}, - {file = "pydantic_core-2.41.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:85e050ad9e5f6fe1004eec65c914332e52f429bc0ae12d6fa2092407a462c746"}, - {file = "pydantic_core-2.41.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7393f1d64792763a48924ba31d1e44c2cfbc05e3b1c2c9abb4ceeadd912cced"}, - {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94dab0940b0d1fb28bcab847adf887c66a27a40291eedf0b473be58761c9799a"}, - {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:de7c42f897e689ee6f9e93c4bec72b99ae3b32a2ade1c7e4798e690ff5246e02"}, - {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:664b3199193262277b8b3cd1e754fb07f2c6023289c815a1e1e8fb415cb247b1"}, - {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d95b253b88f7d308b1c0b417c4624f44553ba4762816f94e6986819b9c273fb2"}, - {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1351f5bbdbbabc689727cb91649a00cb9ee7203e0a6e54e9f5ba9e22e384b84"}, - {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1affa4798520b148d7182da0615d648e752de4ab1a9566b7471bc803d88a062d"}, - {file = "pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7b74e18052fea4aa8dea2fb7dbc23d15439695da6cbe6cfc1b694af1115df09d"}, - {file = "pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:285b643d75c0e30abda9dc1077395624f314a37e3c09ca402d4015ef5979f1a2"}, - {file = "pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:f52679ff4218d713b3b33f88c89ccbf3a5c2c12ba665fb80ccc4192b4608dbab"}, - {file = "pydantic_core-2.41.4-cp313-cp313-win32.whl", hash = "sha256:ecde6dedd6fff127c273c76821bb754d793be1024bc33314a120f83a3c69460c"}, - {file = "pydantic_core-2.41.4-cp313-cp313-win_amd64.whl", hash = "sha256:d081a1f3800f05409ed868ebb2d74ac39dd0c1ff6c035b5162356d76030736d4"}, - {file = "pydantic_core-2.41.4-cp313-cp313-win_arm64.whl", hash = "sha256:f8e49c9c364a7edcbe2a310f12733aad95b022495ef2a8d653f645e5d20c1564"}, - {file = "pydantic_core-2.41.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ed97fd56a561f5eb5706cebe94f1ad7c13b84d98312a05546f2ad036bafe87f4"}, - {file = "pydantic_core-2.41.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a870c307bf1ee91fc58a9a61338ff780d01bfae45922624816878dce784095d2"}, - {file = "pydantic_core-2.41.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d25e97bc1f5f8f7985bdc2335ef9e73843bb561eb1fa6831fdfc295c1c2061cf"}, - {file = "pydantic_core-2.41.4-cp313-cp313t-win_amd64.whl", hash = "sha256:d405d14bea042f166512add3091c1af40437c2e7f86988f3915fabd27b1e9cd2"}, - {file = "pydantic_core-2.41.4-cp313-cp313t-win_arm64.whl", hash = "sha256:19f3684868309db5263a11bace3c45d93f6f24afa2ffe75a647583df22a2ff89"}, - {file = "pydantic_core-2.41.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:e9205d97ed08a82ebb9a307e92914bb30e18cdf6f6b12ca4bedadb1588a0bfe1"}, - {file = "pydantic_core-2.41.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:82df1f432b37d832709fbcc0e24394bba04a01b6ecf1ee87578145c19cde12ac"}, - {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc3b4cc4539e055cfa39a3763c939f9d409eb40e85813257dcd761985a108554"}, - {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b1eb1754fce47c63d2ff57fdb88c351a6c0150995890088b33767a10218eaa4e"}, - {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e6ab5ab30ef325b443f379ddb575a34969c333004fca5a1daa0133a6ffaad616"}, - {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:31a41030b1d9ca497634092b46481b937ff9397a86f9f51bd41c4767b6fc04af"}, - {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a44ac1738591472c3d020f61c6df1e4015180d6262ebd39bf2aeb52571b60f12"}, - {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d72f2b5e6e82ab8f94ea7d0d42f83c487dc159c5240d8f83beae684472864e2d"}, - {file = "pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:c4d1e854aaf044487d31143f541f7aafe7b482ae72a022c664b2de2e466ed0ad"}, - {file = "pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b568af94267729d76e6ee5ececda4e283d07bbb28e8148bb17adad93d025d25a"}, - {file = "pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:6d55fb8b1e8929b341cc313a81a26e0d48aa3b519c1dbaadec3a6a2b4fcad025"}, - {file = "pydantic_core-2.41.4-cp314-cp314-win32.whl", hash = "sha256:5b66584e549e2e32a1398df11da2e0a7eff45d5c2d9db9d5667c5e6ac764d77e"}, - {file = "pydantic_core-2.41.4-cp314-cp314-win_amd64.whl", hash = "sha256:557a0aab88664cc552285316809cab897716a372afaf8efdbef756f8b890e894"}, - {file = "pydantic_core-2.41.4-cp314-cp314-win_arm64.whl", hash = "sha256:3f1ea6f48a045745d0d9f325989d8abd3f1eaf47dd00485912d1a3a63c623a8d"}, - {file = "pydantic_core-2.41.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6c1fe4c5404c448b13188dd8bd2ebc2bdd7e6727fa61ff481bcc2cca894018da"}, - {file = "pydantic_core-2.41.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:523e7da4d43b113bf8e7b49fa4ec0c35bf4fe66b2230bfc5c13cc498f12c6c3e"}, - {file = "pydantic_core-2.41.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5729225de81fb65b70fdb1907fcf08c75d498f4a6f15af005aabb1fdadc19dfa"}, - {file = "pydantic_core-2.41.4-cp314-cp314t-win_amd64.whl", hash = "sha256:de2cfbb09e88f0f795fd90cf955858fc2c691df65b1f21f0aa00b99f3fbc661d"}, - {file = "pydantic_core-2.41.4-cp314-cp314t-win_arm64.whl", hash = "sha256:d34f950ae05a83e0ede899c595f312ca976023ea1db100cd5aa188f7005e3ab0"}, - {file = "pydantic_core-2.41.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:646e76293345954acea6966149683047b7b2ace793011922208c8e9da12b0062"}, - {file = "pydantic_core-2.41.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cc8e85a63085a137d286e2791037f5fdfff0aabb8b899483ca9c496dd5797338"}, - {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:692c622c8f859a17c156492783902d8370ac7e121a611bd6fe92cc71acf9ee8d"}, - {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d1e2906efb1031a532600679b424ef1d95d9f9fb507f813951f23320903adbd7"}, - {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e04e2f7f8916ad3ddd417a7abdd295276a0bf216993d9318a5d61cc058209166"}, - {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df649916b81822543d1c8e0e1d079235f68acdc7d270c911e8425045a8cfc57e"}, - {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c529f862fdba70558061bb936fe00ddbaaa0c647fd26e4a4356ef1d6561891"}, - {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3b4c5a1fd3a311563ed866c2c9b62da06cb6398bee186484ce95c820db71cb"}, - {file = "pydantic_core-2.41.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6e0fc40d84448f941df9b3334c4b78fe42f36e3bf631ad54c3047a0cdddc2514"}, - {file = "pydantic_core-2.41.4-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:44e7625332683b6c1c8b980461475cde9595eff94447500e80716db89b0da005"}, - {file = "pydantic_core-2.41.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:170ee6835f6c71081d031ef1c3b4dc4a12b9efa6a9540f93f95b82f3c7571ae8"}, - {file = "pydantic_core-2.41.4-cp39-cp39-win32.whl", hash = "sha256:3adf61415efa6ce977041ba9745183c0e1f637ca849773afa93833e04b163feb"}, - {file = "pydantic_core-2.41.4-cp39-cp39-win_amd64.whl", hash = "sha256:a238dd3feee263eeaeb7dc44aea4ba1364682c4f9f9467e6af5596ba322c2332"}, - {file = "pydantic_core-2.41.4-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:a1b2cfec3879afb742a7b0bcfa53e4f22ba96571c9e54d6a3afe1052d17d843b"}, - {file = "pydantic_core-2.41.4-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:d175600d975b7c244af6eb9c9041f10059f20b8bbffec9e33fdd5ee3f67cdc42"}, - {file = "pydantic_core-2.41.4-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f184d657fa4947ae5ec9c47bd7e917730fa1cbb78195037e32dcbab50aca5ee"}, - {file = "pydantic_core-2.41.4-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ed810568aeffed3edc78910af32af911c835cc39ebbfacd1f0ab5dd53028e5c"}, - {file = "pydantic_core-2.41.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:4f5d640aeebb438517150fdeec097739614421900e4a08db4a3ef38898798537"}, - {file = "pydantic_core-2.41.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:4a9ab037b71927babc6d9e7fc01aea9e66dc2a4a34dff06ef0724a4049629f94"}, - {file = "pydantic_core-2.41.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4dab9484ec605c3016df9ad4fd4f9a390bc5d816a3b10c6550f8424bb80b18c"}, - {file = "pydantic_core-2.41.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8a5028425820731d8c6c098ab642d7b8b999758e24acae03ed38a66eca8335"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e5ab4fc177dd41536b3c32b2ea11380dd3d4619a385860621478ac2d25ceb00"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:3d88d0054d3fa11ce936184896bed3c1c5441d6fa483b498fac6a5d0dd6f64a9"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b2a054a8725f05b4b6503357e0ac1c4e8234ad3b0c2ac130d6ffc66f0e170e2"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0d9db5a161c99375a0c68c058e227bee1d89303300802601d76a3d01f74e258"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:6273ea2c8ffdac7b7fda2653c49682db815aebf4a89243a6feccf5e36c18c347"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:4c973add636efc61de22530b2ef83a65f39b6d6f656df97f678720e20de26caa"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b69d1973354758007f46cf2d44a4f3d0933f10b6dc9bf15cf1356e037f6f731a"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3619320641fd212aaf5997b6ca505e97540b7e16418f4a241f44cdf108ffb50d"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:491535d45cd7ad7e4a2af4a5169b0d07bebf1adfd164b0368da8aa41e19907a5"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:54d86c0cada6aba4ec4c047d0e348cbad7063b87ae0f005d9f8c9ad04d4a92a2"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eca1124aced216b2500dc2609eade086d718e8249cb9696660ab447d50a758bd"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c9024169becccf0cb470ada03ee578d7348c119a0d42af3dcf9eda96e3a247c"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:26895a4268ae5a2849269f4991cdc97236e4b9c010e51137becf25182daac405"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:ca4df25762cf71308c446e33c9b1fdca2923a3f13de616e2a949f38bf21ff5a8"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:5a28fcedd762349519276c36634e71853b4541079cab4acaaac60c4421827308"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c173ddcd86afd2535e2b695217e82191580663a1d1928239f877f5a1649ef39f"}, - {file = "pydantic_core-2.41.4.tar.gz", hash = "sha256:70e47929a9d4a1905a67e4b687d5946026390568a8e952b92824118063cee4d5"}, + { file = "pydantic_core-2.41.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:e63036298322e9aea1c8b7c0a6c1204d615dbf6ec0668ce5b83ff27f07404a61" }, + { file = "pydantic_core-2.41.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:241299ca91fc77ef64f11ed909d2d9220a01834e8e6f8de61275c4dd16b7c936" }, + { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ab7e594a2a5c24ab8013a7dc8cfe5f2260e80e490685814122081705c2cf2b0" }, + { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b054ef1a78519cb934b58e9c90c09e93b837c935dcd907b891f2b265b129eb6e" }, + { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f2ab7d10d0ab2ed6da54c757233eb0f48ebfb4f86e9b88ccecb3f92bbd61a538" }, + { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2757606b7948bb853a27e4040820306eaa0ccb9e8f9f8a0fa40cb674e170f350" }, + { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cec0e75eb61f606bad0a32f2be87507087514e26e8c73db6cbdb8371ccd27917" }, + { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0234236514f44a5bf552105cfe2543a12f48203397d9d0f866affa569345a5b5" }, + { file = "pydantic_core-2.41.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:1b974e41adfbb4ebb0f65fc4ca951347b17463d60893ba7d5f7b9bb087c83897" }, + { file = "pydantic_core-2.41.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:248dafb3204136113c383e91a4d815269f51562b6659b756cf3df14eefc7d0bb" }, + { file = "pydantic_core-2.41.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:678f9d76a91d6bcedd7568bbf6beb77ae8447f85d1aeebaab7e2f0829cfc3a13" }, + { file = "pydantic_core-2.41.1-cp310-cp310-win32.whl", hash = "sha256:dff5bee1d21ee58277900692a641925d2dddfde65182c972569b1a276d2ac8fb" }, + { file = "pydantic_core-2.41.1-cp310-cp310-win_amd64.whl", hash = "sha256:5042da12e5d97d215f91567110fdfa2e2595a25f17c19b9ff024f31c34f9b53e" }, + { file = "pydantic_core-2.41.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4f276a6134fe1fc1daa692642a3eaa2b7b858599c49a7610816388f5e37566a1" }, + { file = "pydantic_core-2.41.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07588570a805296ece009c59d9a679dc08fab72fb337365afb4f3a14cfbfc176" }, + { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28527e4b53400cd60ffbd9812ccb2b5135d042129716d71afd7e45bf42b855c0" }, + { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:46a1c935c9228bad738c8a41de06478770927baedf581d172494ab36a6b96575" }, + { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:447ddf56e2b7d28d200d3e9eafa936fe40485744b5a824b67039937580b3cb20" }, + { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:63892ead40c1160ac860b5debcc95c95c5a0035e543a8b5a4eac70dd22e995f4" }, + { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4a9543ca355e6df8fbe9c83e9faab707701e9103ae857ecb40f1c0cf8b0e94d" }, + { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f2611bdb694116c31e551ed82e20e39a90bea9b7ad9e54aaf2d045ad621aa7a1" }, + { file = "pydantic_core-2.41.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fecc130893a9b5f7bfe230be1bb8c61fe66a19db8ab704f808cb25a82aad0bc9" }, + { file = "pydantic_core-2.41.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:1e2df5f8344c99b6ea5219f00fdc8950b8e6f2c422fbc1cc122ec8641fac85a1" }, + { file = "pydantic_core-2.41.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:35291331e9d8ed94c257bab6be1cb3a380b5eee570a2784bffc055e18040a2ea" }, + { file = "pydantic_core-2.41.1-cp311-cp311-win32.whl", hash = "sha256:2876a095292668d753f1a868c4a57c4ac9f6acbd8edda8debe4218d5848cf42f" }, + { file = "pydantic_core-2.41.1-cp311-cp311-win_amd64.whl", hash = "sha256:b92d6c628e9a338846a28dfe3fcdc1a3279388624597898b105e078cdfc59298" }, + { file = "pydantic_core-2.41.1-cp311-cp311-win_arm64.whl", hash = "sha256:7d82ae99409eb69d507a89835488fb657faa03ff9968a9379567b0d2e2e56bc5" }, + { file = "pydantic_core-2.41.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:db2f82c0ccbce8f021ad304ce35cbe02aa2f95f215cac388eed542b03b4d5eb4" }, + { file = "pydantic_core-2.41.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:47694a31c710ced9205d5f1e7e8af3ca57cbb8a503d98cb9e33e27c97a501601" }, + { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93e9decce94daf47baf9e9d392f5f2557e783085f7c5e522011545d9d6858e00" }, + { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ab0adafdf2b89c8b84f847780a119437a0931eca469f7b44d356f2b426dd9741" }, + { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5da98cc81873f39fd56882e1569c4677940fbc12bce6213fad1ead784192d7c8" }, + { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:209910e88afb01fd0fd403947b809ba8dba0e08a095e1f703294fda0a8fdca51" }, + { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:365109d1165d78d98e33c5bfd815a9b5d7d070f578caefaabcc5771825b4ecb5" }, + { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:706abf21e60a2857acdb09502bc853ee5bce732955e7b723b10311114f033115" }, + { file = "pydantic_core-2.41.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bf0bd5417acf7f6a7ec3b53f2109f587be176cb35f9cf016da87e6017437a72d" }, + { file = "pydantic_core-2.41.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:2e71b1c6ceb9c78424ae9f63a07292fb769fb890a4e7efca5554c47f33a60ea5" }, + { file = "pydantic_core-2.41.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:80745b9770b4a38c25015b517451c817799bfb9d6499b0d13d8227ec941cb513" }, + { file = "pydantic_core-2.41.1-cp312-cp312-win32.whl", hash = "sha256:83b64d70520e7890453f1aa21d66fda44e7b35f1cfea95adf7b4289a51e2b479" }, + { file = "pydantic_core-2.41.1-cp312-cp312-win_amd64.whl", hash = "sha256:377defd66ee2003748ee93c52bcef2d14fde48fe28a0b156f88c3dbf9bc49a50" }, + { file = "pydantic_core-2.41.1-cp312-cp312-win_arm64.whl", hash = "sha256:c95caff279d49c1d6cdfe2996e6c2ad712571d3b9caaa209a404426c326c4bde" }, + { file = "pydantic_core-2.41.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70e790fce5f05204ef4403159857bfcd587779da78627b0babb3654f75361ebf" }, + { file = "pydantic_core-2.41.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9cebf1ca35f10930612d60bd0f78adfacee824c30a880e3534ba02c207cceceb" }, + { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:170406a37a5bc82c22c3274616bf6f17cc7df9c4a0a0a50449e559cb755db669" }, + { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:12d4257fc9187a0ccd41b8b327d6a4e57281ab75e11dda66a9148ef2e1fb712f" }, + { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a75a33b4db105dd1c8d57839e17ee12db8d5ad18209e792fa325dbb4baeb00f4" }, + { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08a589f850803a74e0fcb16a72081cafb0d72a3cdda500106942b07e76b7bf62" }, + { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a97939d6ea44763c456bd8a617ceada2c9b96bb5b8ab3dfa0d0827df7619014" }, + { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2ae423c65c556f09569524b80ffd11babff61f33055ef9773d7c9fabc11ed8d" }, + { file = "pydantic_core-2.41.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:4dc703015fbf8764d6a8001c327a87f1823b7328d40b47ce6000c65918ad2b4f" }, + { file = "pydantic_core-2.41.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:968e4ffdfd35698a5fe659e5e44c508b53664870a8e61c8f9d24d3d145d30257" }, + { file = "pydantic_core-2.41.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:fff2b76c8e172d34771cd4d4f0ade08072385310f214f823b5a6ad4006890d32" }, + { file = "pydantic_core-2.41.1-cp313-cp313-win32.whl", hash = "sha256:a38a5263185407ceb599f2f035faf4589d57e73c7146d64f10577f6449e8171d" }, + { file = "pydantic_core-2.41.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42ae7fd6760782c975897e1fdc810f483b021b32245b0105d40f6e7a3803e4b" }, + { file = "pydantic_core-2.41.1-cp313-cp313-win_arm64.whl", hash = "sha256:ad4111acc63b7384e205c27a2f15e23ac0ee21a9d77ad6f2e9cb516ec90965fb" }, + { file = "pydantic_core-2.41.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:440d0df7415b50084a4ba9d870480c16c5f67c0d1d4d5119e3f70925533a0edc" }, + { file = "pydantic_core-2.41.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71eaa38d342099405dae6484216dcf1e8e4b0bebd9b44a4e08c9b43db6a2ab67" }, + { file = "pydantic_core-2.41.1-cp313-cp313t-win_amd64.whl", hash = "sha256:555ecf7e50f1161d3f693bc49f23c82cf6cdeafc71fa37a06120772a09a38795" }, + { file = "pydantic_core-2.41.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:05226894a26f6f27e1deb735d7308f74ef5fa3a6de3e0135bb66cdcaee88f64b" }, + { file = "pydantic_core-2.41.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:85ff7911c6c3e2fd8d3779c50925f6406d770ea58ea6dde9c230d35b52b16b4a" }, + { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47f1f642a205687d59b52dc1a9a607f45e588f5a2e9eeae05edd80c7a8c47674" }, + { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df11c24e138876ace5ec6043e5cae925e34cf38af1a1b3d63589e8f7b5f5cdc4" }, + { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7f0bf7f5c8f7bf345c527e8a0d72d6b26eda99c1227b0c34e7e59e181260de31" }, + { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:82b887a711d341c2c47352375d73b029418f55b20bd7815446d175a70effa706" }, + { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5f1d5d6bbba484bdf220c72d8ecd0be460f4bd4c5e534a541bb2cd57589fb8b" }, + { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2bf1917385ebe0f968dc5c6ab1375886d56992b93ddfe6bf52bff575d03662be" }, + { file = "pydantic_core-2.41.1-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:4f94f3ab188f44b9a73f7295663f3ecb8f2e2dd03a69c8f2ead50d37785ecb04" }, + { file = "pydantic_core-2.41.1-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:3925446673641d37c30bd84a9d597e49f72eacee8b43322c8999fa17d5ae5bc4" }, + { file = "pydantic_core-2.41.1-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:49bd51cc27adb980c7b97357ae036ce9b3c4d0bb406e84fbe16fb2d368b602a8" }, + { file = "pydantic_core-2.41.1-cp314-cp314-win32.whl", hash = "sha256:a31ca0cd0e4d12ea0df0077df2d487fc3eb9d7f96bbb13c3c5b88dcc21d05159" }, + { file = "pydantic_core-2.41.1-cp314-cp314-win_amd64.whl", hash = "sha256:1b5c4374a152e10a22175d7790e644fbd8ff58418890e07e2073ff9d4414efae" }, + { file = "pydantic_core-2.41.1-cp314-cp314-win_arm64.whl", hash = "sha256:4fee76d757639b493eb600fba668f1e17475af34c17dd61db7a47e824d464ca9" }, + { file = "pydantic_core-2.41.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f9b9c968cfe5cd576fdd7361f47f27adeb120517e637d1b189eea1c3ece573f4" }, + { file = "pydantic_core-2.41.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1ebc7ab67b856384aba09ed74e3e977dded40e693de18a4f197c67d0d4e6d8e" }, + { file = "pydantic_core-2.41.1-cp314-cp314t-win_amd64.whl", hash = "sha256:8ae0dc57b62a762985bc7fbf636be3412394acc0ddb4ade07fe104230f1b9762" }, + { file = "pydantic_core-2.41.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:10ce489cf09a4956a1549af839b983edc59b0f60e1b068c21b10154e58f54f80" }, + { file = "pydantic_core-2.41.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ff548c908caffd9455fd1342366bcf8a1ec8a3fca42f35c7fc60883d6a901074" }, + { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d43bf082025082bda13be89a5f876cc2386b7727c7b322be2d2b706a45cea8e" }, + { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:666aee751faf1c6864b2db795775dd67b61fdcf646abefa309ed1da039a97209" }, + { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b83aaeff0d7bde852c32e856f3ee410842ebc08bc55c510771d87dcd1c01e1ed" }, + { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:055c7931b0329cb8acde20cdde6d9c2cbc2a02a0a8e54a792cddd91e2ea92c65" }, + { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:530bbb1347e3e5ca13a91ac087c4971d7da09630ef8febd27a20a10800c2d06d" }, + { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:65a0ea16cfea7bfa9e43604c8bd726e63a3788b61c384c37664b55209fcb1d74" }, + { file = "pydantic_core-2.41.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8fa93fadff794c6d15c345c560513b160197342275c6d104cc879f932b978afc" }, + { file = "pydantic_core-2.41.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:c8a1af9ac51969a494c6a82b563abae6859dc082d3b999e8fa7ba5ee1b05e8e8" }, + { file = "pydantic_core-2.41.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:30edab28829703f876897c9471a857e43d847b8799c3c9e2fbce644724b50aa4" }, + { file = "pydantic_core-2.41.1-cp39-cp39-win32.whl", hash = "sha256:84d0ff869f98be2e93efdf1ae31e5a15f0926d22af8677d51676e373abbfe57a" }, + { file = "pydantic_core-2.41.1-cp39-cp39-win_amd64.whl", hash = "sha256:b5674314987cdde5a5511b029fa5fb1556b3d147a367e01dd583b19cfa8e35df" }, + { file = "pydantic_core-2.41.1-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:68f2251559b8efa99041bb63571ec7cdd2d715ba74cc82b3bc9eff824ebc8bf0" }, + { file = "pydantic_core-2.41.1-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:c7bc140c596097cb53b30546ca257dbe3f19282283190b1b5142928e5d5d3a20" }, + { file = "pydantic_core-2.41.1-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2896510fce8f4725ec518f8b9d7f015a00db249d2fd40788f442af303480063d" }, + { file = "pydantic_core-2.41.1-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ced20e62cfa0f496ba68fa5d6c7ee71114ea67e2a5da3114d6450d7f4683572a" }, + { file = "pydantic_core-2.41.1-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:b04fa9ed049461a7398138c604b00550bc89e3e1151d84b81ad6dc93e39c4c06" }, + { file = "pydantic_core-2.41.1-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:b3b7d9cfbfdc43c80a16638c6dc2768e3956e73031fca64e8e1a3ae744d1faeb" }, + { file = "pydantic_core-2.41.1-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eec83fc6abef04c7f9bec616e2d76ee9a6a4ae2a359b10c21d0f680e24a247ca" }, + { file = "pydantic_core-2.41.1-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6771a2d9f83c4038dfad5970a3eef215940682b2175e32bcc817bdc639019b28" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fabcbdb12de6eada8d6e9a759097adb3c15440fafc675b3e94ae5c9cb8d678a0" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:80e97ccfaf0aaf67d55de5085b0ed0d994f57747d9d03f2de5cc9847ca737b08" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34df1fe8fea5d332484a763702e8b6a54048a9d4fe6ccf41e34a128238e01f52" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:421b5595f845842fc093f7250e24ee395f54ca62d494fdde96f43ecf9228ae01" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:dce8b22663c134583aaad24827863306a933f576c79da450be3984924e2031d1" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:300a9c162fea9906cc5c103893ca2602afd84f0ec90d3be36f4cc360125d22e1" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e019167628f6e6161ae7ab9fb70f6d076a0bf0d55aa9b20833f86a320c70dd65" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:13ab9cc2de6f9d4ab645a050ae5aee61a2424ac4d3a16ba23d4c2027705e0301" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:af2385d3f98243fb733862f806c5bb9122e5fba05b373e3af40e3c82d711cef1" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:6550617a0c2115be56f90c31a5370261d8ce9dbf051c3ed53b51172dd34da696" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc17b6ecf4983d298686014c92ebc955a9f9baf9f57dad4065e7906e7bee6222" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:42ae9352cf211f08b04ea110563d6b1e415878eea5b4c70f6bdb17dca3b932d2" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e82947de92068b0a21681a13dd2102387197092fbe7defcfb8453e0913866506" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e244c37d5471c9acdcd282890c6c4c83747b77238bfa19429b8473586c907656" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1e798b4b304a995110d41ec93653e57975620ccb2842ba9420037985e7d7284e" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f1fc716c0eb1663c59699b024428ad5ec2bcc6b928527b8fe28de6cb89f47efb" }, + { file = "pydantic_core-2.41.1.tar.gz", hash = "sha256:1ad375859a6d8c356b7704ec0f547a58e82ee80bb41baa811ad710e124bc8f2f" }, ] [package.dependencies] @@ -1022,8 +2901,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"}, - {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, + { file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b" }, + { file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887" }, ] [package.extras] @@ -1031,14 +2910,14 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pymdown-extensions" -version = "10.16.1" +version = "10.16" description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pymdown_extensions-10.16.1-py3-none-any.whl", hash = "sha256:d6ba157a6c03146a7fb122b2b9a121300056384eafeec9c9f9e584adfdb2a32d"}, - {file = "pymdown_extensions-10.16.1.tar.gz", hash = "sha256:aace82bcccba3efc03e25d584e6a22d27a8e17caa3f4dd9f207e49b787aa9a91"}, + { file = "pymdown_extensions-10.16-py3-none-any.whl", hash = "sha256:f5dd064a4db588cb2d95229fc4ee63a1b16cc8b4d0e6145c0899ed8723da1df2" }, + { file = "pymdown_extensions-10.16.tar.gz", hash = "sha256:71dac4fca63fabeffd3eb9038b756161a33ec6e8d230853d3cecf562155ab3de" }, ] [package.dependencies] @@ -1048,6 +2927,89 @@ pyyaml = "*" [package.extras] extra = ["pygments (>=2.19.1)"] +[[package]] +name = "pyparsing" +version = "3.2.5" +description = "pyparsing - Classes and methods to define and execute parsing grammars" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e" }, + { file = "pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6" }, +] + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + +[[package]] +name = "pyproj" +version = "3.7.2" +description = "Python interface to PROJ (cartographic projections and coordinate transformations library)" +optional = false +python-versions = ">=3.11" +groups = ["main"] +files = [ + { file = "pyproj-3.7.2-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:2514d61f24c4e0bb9913e2c51487ecdaeca5f8748d8313c933693416ca41d4d5" }, + { file = "pyproj-3.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:8693ca3892d82e70de077701ee76dd13d7bca4ae1c9d1e739d72004df015923a" }, + { file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5e26484d80fea56273ed1555abaea161e9661d81a6c07815d54b8e883d4ceb25" }, + { file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:281cb92847814e8018010c48b4069ff858a30236638631c1a91dd7bfa68f8a8a" }, + { file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9c8577f0b7bb09118ec2e57e3babdc977127dd66326d6c5d755c76b063e6d9dc" }, + { file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a23f59904fac3a5e7364b3aa44d288234af267ca041adb2c2b14a903cd5d3ac5" }, + { file = "pyproj-3.7.2-cp311-cp311-win32.whl", hash = "sha256:f2af4ed34b2cf3e031a2d85b067a3ecbd38df073c567e04b52fa7a0202afde8a" }, + { file = "pyproj-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:0b7cb633565129677b2a183c4d807c727d1c736fcb0568a12299383056e67433" }, + { file = "pyproj-3.7.2-cp311-cp311-win_arm64.whl", hash = "sha256:38b08d85e3a38e455625b80e9eb9f78027c8e2649a21dec4df1f9c3525460c71" }, + { file = "pyproj-3.7.2-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:0a9bb26a6356fb5b033433a6d1b4542158fb71e3c51de49b4c318a1dff3aeaab" }, + { file = "pyproj-3.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:567caa03021178861fad27fabde87500ec6d2ee173dd32f3e2d9871e40eebd68" }, + { file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:c203101d1dc3c038a56cff0447acc515dd29d6e14811406ac539c21eed422b2a" }, + { file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1edc34266c0c23ced85f95a1ee8b47c9035eae6aca5b6b340327250e8e281630" }, + { file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aa9f26c21bc0e2dc3d224cb1eb4020cf23e76af179a7c66fea49b828611e4260" }, + { file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9428b318530625cb389b9ddc9c51251e172808a4af79b82809376daaeabe5e9" }, + { file = "pyproj-3.7.2-cp312-cp312-win32.whl", hash = "sha256:b3d99ed57d319da042f175f4554fc7038aa4bcecc4ac89e217e350346b742c9d" }, + { file = "pyproj-3.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:11614a054cd86a2ed968a657d00987a86eeb91fdcbd9ad3310478685dc14a128" }, + { file = "pyproj-3.7.2-cp312-cp312-win_arm64.whl", hash = "sha256:509a146d1398bafe4f53273398c3bb0b4732535065fa995270e52a9d3676bca3" }, + { file = "pyproj-3.7.2-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:19466e529b1b15eeefdf8ff26b06fa745856c044f2f77bf0edbae94078c1dfa1" }, + { file = "pyproj-3.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:c79b9b84c4a626c5dc324c0d666be0bfcebd99f7538d66e8898c2444221b3da7" }, + { file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ceecf374cacca317bc09e165db38ac548ee3cad07c3609442bd70311c59c21aa" }, + { file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5141a538ffdbe4bfd157421828bb2e07123a90a7a2d6f30fa1462abcfb5ce681" }, + { file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f000841e98ea99acbb7b8ca168d67773b0191de95187228a16110245c5d954d5" }, + { file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8115faf2597f281a42ab608ceac346b4eb1383d3b45ab474fd37341c4bf82a67" }, + { file = "pyproj-3.7.2-cp313-cp313-win32.whl", hash = "sha256:f18c0579dd6be00b970cb1a6719197fceecc407515bab37da0066f0184aafdf3" }, + { file = "pyproj-3.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:bb41c29d5f60854b1075853fe80c58950b398d4ebb404eb532536ac8d2834ed7" }, + { file = "pyproj-3.7.2-cp313-cp313-win_arm64.whl", hash = "sha256:2b617d573be4118c11cd96b8891a0b7f65778fa7733ed8ecdb297a447d439100" }, + { file = "pyproj-3.7.2-cp313-cp313t-macosx_13_0_x86_64.whl", hash = "sha256:d27b48f0e81beeaa2b4d60c516c3a1cfbb0c7ff6ef71256d8e9c07792f735279" }, + { file = "pyproj-3.7.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:55a3610d75023c7b1c6e583e48ef8f62918e85a2ae81300569d9f104d6684bb6" }, + { file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8d7349182fa622696787cc9e195508d2a41a64765da9b8a6bee846702b9e6220" }, + { file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:d230b186eb876ed4f29a7c5ee310144c3a0e44e89e55f65fb3607e13f6db337c" }, + { file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:237499c7862c578d0369e2b8ac56eec550e391a025ff70e2af8417139dabb41c" }, + { file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8c225f5978abd506fd9a78eaaf794435e823c9156091cabaab5374efb29d7f69" }, + { file = "pyproj-3.7.2-cp313-cp313t-win32.whl", hash = "sha256:2da731876d27639ff9d2d81c151f6ab90a1546455fabd93368e753047be344a2" }, + { file = "pyproj-3.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f54d91ae18dd23b6c0ab48126d446820e725419da10617d86a1b69ada6d881d3" }, + { file = "pyproj-3.7.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fc52ba896cfc3214dc9f9ca3c0677a623e8fdd096b257c14a31e719d21ff3fdd" }, + { file = "pyproj-3.7.2-cp314-cp314-macosx_13_0_x86_64.whl", hash = "sha256:2aaa328605ace41db050d06bac1adc11f01b71fe95c18661497763116c3a0f02" }, + { file = "pyproj-3.7.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:35dccbce8201313c596a970fde90e33605248b66272595c061b511c8100ccc08" }, + { file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:25b0b7cb0042444c29a164b993c45c1b8013d6c48baa61dc1160d834a277e83b" }, + { file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:85def3a6388e9ba51f964619aa002a9d2098e77c6454ff47773bb68871024281" }, + { file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b1bccefec3875ab81eabf49059e2b2ea77362c178b66fd3528c3e4df242f1516" }, + { file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d5371ca114d6990b675247355a801925814eca53e6c4b2f1b5c0a956336ee36e" }, + { file = "pyproj-3.7.2-cp314-cp314-win32.whl", hash = "sha256:77f066626030f41be543274f5ac79f2a511fe89860ecd0914f22131b40a0ec25" }, + { file = "pyproj-3.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:5a964da1696b8522806f4276ab04ccfff8f9eb95133a92a25900697609d40112" }, + { file = "pyproj-3.7.2-cp314-cp314-win_arm64.whl", hash = "sha256:e258ab4dbd3cf627809067c0ba8f9884ea76c8e5999d039fb37a1619c6c3e1f6" }, + { file = "pyproj-3.7.2-cp314-cp314t-macosx_13_0_x86_64.whl", hash = "sha256:bbbac2f930c6d266f70ec75df35ef851d96fdb3701c674f42fd23a9314573b37" }, + { file = "pyproj-3.7.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:b7544e0a3d6339dc9151e9c8f3ea62a936ab7cc446a806ec448bbe86aebb979b" }, + { file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:f7f5133dca4c703e8acadf6f30bc567d39a42c6af321e7f81975c2518f3ed357" }, + { file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:5aff3343038d7426aa5076f07feb88065f50e0502d1b0d7c22ddfdd2c75a3f81" }, + { file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:b0552178c61f2ac1c820d087e8ba6e62b29442debddbb09d51c4bf8acc84d888" }, + { file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:47d87db2d2c436c5fd0409b34d70bb6cdb875cca2ebe7a9d1c442367b0ab8d59" }, + { file = "pyproj-3.7.2-cp314-cp314t-win32.whl", hash = "sha256:c9b6f1d8ad3e80a0ee0903a778b6ece7dca1d1d40f6d114ae01bc8ddbad971aa" }, + { file = "pyproj-3.7.2-cp314-cp314t-win_amd64.whl", hash = "sha256:1914e29e27933ba6f9822663ee0600f169014a2859f851c054c88cf5ea8a333c" }, + { file = "pyproj-3.7.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d9d25bae416a24397e0d85739f84d323b55f6511e45a522dd7d7eae70d10c7e4" }, + { file = "pyproj-3.7.2.tar.gz", hash = "sha256:39a0cf1ecc7e282d1d30f36594ebd55c9fae1fda8a2622cee5d100430628f88c" }, +] + +[package.dependencies] +certifi = "*" + [[package]] name = "pytest" version = "8.4.1" @@ -1056,54 +3018,110 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7"}, - {file = "pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c"}, + { file = "pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7" }, + { file = "pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c" }, ] [package.dependencies] -colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} +colorama = { version = ">=0.4", markers = "sys_platform == \"win32\"" } iniconfig = ">=1" packaging = ">=20" pluggy = ">=1.5,<2" pygments = ">=2.7.2" [package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main", "dev"] +files = [ + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "python-json-logger" +version = "3.3.0" +description = "JSON Log Formatter for the Python Logging Package" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7" }, + { file = "python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84" }, +] + +[package.extras] +dev = ["backports.zoneinfo ; python_version < \"3.9\"", "black", "build", "freezegun", "mdx_truly_sane_lists", "mike", "mkdocs", "mkdocs-awesome-pages-plugin", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-material (>=8.5)", "mkdocstrings[python]", "msgspec ; implementation_name != \"pypy\"", "mypy", "orjson ; implementation_name != \"pypy\"", "pylint", "pytest", "tzdata", "validate-pyproject[all]"] [[package]] -name = "pytest-cov" -version = "6.2.1" -description = "Pytest plugin for measuring coverage." +name = "pytz" +version = "2025.2" +description = "World timezone definitions, modern and historical" optional = false -python-versions = ">=3.9" -groups = ["dev"] +python-versions = "*" +groups = ["main"] files = [ - {file = "pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5"}, - {file = "pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2"}, + { file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00" }, + { file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3" }, ] -[package.dependencies] -coverage = {version = ">=7.5", extras = ["toml"]} -pluggy = ">=1.2" -pytest = ">=6.2.5" - -[package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] - [[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" +name = "pywin32" +version = "311" +description = "Python for Window Extensions" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +python-versions = "*" groups = ["dev"] +markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"" files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, + { file = "pywin32-311-cp310-cp310-win32.whl", hash = "sha256:d03ff496d2a0cd4a5893504789d4a15399133fe82517455e78bad62efbb7f0a3" }, + { file = "pywin32-311-cp310-cp310-win_amd64.whl", hash = "sha256:797c2772017851984b97180b0bebe4b620bb86328e8a884bb626156295a63b3b" }, + { file = "pywin32-311-cp310-cp310-win_arm64.whl", hash = "sha256:0502d1facf1fed4839a9a51ccbcc63d952cf318f78ffc00a7e78528ac27d7a2b" }, + { file = "pywin32-311-cp311-cp311-win32.whl", hash = "sha256:184eb5e436dea364dcd3d2316d577d625c0351bf237c4e9a5fabbcfa5a58b151" }, + { file = "pywin32-311-cp311-cp311-win_amd64.whl", hash = "sha256:3ce80b34b22b17ccbd937a6e78e7225d80c52f5ab9940fe0506a1a16f3dab503" }, + { file = "pywin32-311-cp311-cp311-win_arm64.whl", hash = "sha256:a733f1388e1a842abb67ffa8e7aad0e70ac519e09b0f6a784e65a136ec7cefd2" }, + { file = "pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31" }, + { file = "pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067" }, + { file = "pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852" }, + { file = "pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d" }, + { file = "pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d" }, + { file = "pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a" }, + { file = "pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee" }, + { file = "pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87" }, + { file = "pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42" }, + { file = "pywin32-311-cp38-cp38-win32.whl", hash = "sha256:6c6f2969607b5023b0d9ce2541f8d2cbb01c4f46bc87456017cf63b73f1e2d8c" }, + { file = "pywin32-311-cp38-cp38-win_amd64.whl", hash = "sha256:c8015b09fb9a5e188f83b7b04de91ddca4658cee2ae6f3bc483f0b21a77ef6cd" }, + { file = "pywin32-311-cp39-cp39-win32.whl", hash = "sha256:aba8f82d551a942cb20d4a83413ccbac30790b50efb89a75e4f586ac0bb8056b" }, + { file = "pywin32-311-cp39-cp39-win_amd64.whl", hash = "sha256:e0c4cfb0621281fe40387df582097fd796e80430597cb9944f0ae70447bacd91" }, + { file = "pywin32-311-cp39-cp39-win_arm64.whl", hash = "sha256:62ea666235135fee79bb154e695f3ff67370afefd71bd7fea7512fc70ef31e3d" }, ] -[package.dependencies] -six = ">=1.5" +[[package]] +name = "pywinpty" +version = "2.0.15" +description = "Pseudo terminal support for Windows from Python." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +markers = "os_name == \"nt\"" +files = [ + { file = "pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e" }, + { file = "pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca" }, + { file = "pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc" }, + { file = "pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408" }, + { file = "pywinpty-2.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:a4560ad8c01e537708d2790dbe7da7d986791de805d89dd0d3697ca59e9e4901" }, + { file = "pywinpty-2.0.15-cp39-cp39-win_amd64.whl", hash = "sha256:d261cd88fcd358cfb48a7ca0700db3e1c088c9c10403c9ebc0d8a8b57aa6a117" }, + { file = "pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2" }, +] [[package]] name = "pyyaml" @@ -1111,7 +3129,7 @@ version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" -groups = ["dev"] +groups = ["main", "dev"] files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -1176,13 +3194,121 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04"}, - {file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff"}, + { file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04" }, + { file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff" }, ] [package.dependencies] pyyaml = "*" +[[package]] +name = "pyzmq" +version = "27.0.0" +description = "Python bindings for 0MQ" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "pyzmq-27.0.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:b973ee650e8f442ce482c1d99ca7ab537c69098d53a3d046676a484fd710c87a" }, + { file = "pyzmq-27.0.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:661942bc7cd0223d569d808f2e5696d9cc120acc73bf3e88a1f1be7ab648a7e4" }, + { file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50360fb2a056ffd16e5f4177eee67f1dd1017332ea53fb095fe7b5bf29c70246" }, + { file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf209a6dc4b420ed32a7093642843cbf8703ed0a7d86c16c0b98af46762ebefb" }, + { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c2dace4a7041cca2fba5357a2d7c97c5effdf52f63a1ef252cfa496875a3762d" }, + { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:63af72b2955fc77caf0a77444baa2431fcabb4370219da38e1a9f8d12aaebe28" }, + { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e8c4adce8e37e75c4215297d7745551b8dcfa5f728f23ce09bf4e678a9399413" }, + { file = "pyzmq-27.0.0-cp310-cp310-win32.whl", hash = "sha256:5d5ef4718ecab24f785794e0e7536436698b459bfbc19a1650ef55280119d93b" }, + { file = "pyzmq-27.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:e40609380480b3d12c30f841323f42451c755b8fece84235236f5fe5ffca8c1c" }, + { file = "pyzmq-27.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:6b0397b0be277b46762956f576e04dc06ced265759e8c2ff41a0ee1aa0064198" }, + { file = "pyzmq-27.0.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:21457825249b2a53834fa969c69713f8b5a79583689387a5e7aed880963ac564" }, + { file = "pyzmq-27.0.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1958947983fef513e6e98eff9cb487b60bf14f588dc0e6bf35fa13751d2c8251" }, + { file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0dc628b5493f9a8cd9844b8bee9732ef587ab00002157c9329e4fc0ef4d3afa" }, + { file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7bbe9e1ed2c8d3da736a15694d87c12493e54cc9dc9790796f0321794bbc91f" }, + { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dc1091f59143b471d19eb64f54bae4f54bcf2a466ffb66fe45d94d8d734eb495" }, + { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7011ade88c8e535cf140f8d1a59428676fbbce7c6e54fefce58bf117aefb6667" }, + { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2c386339d7e3f064213aede5d03d054b237937fbca6dd2197ac8cf3b25a6b14e" }, + { file = "pyzmq-27.0.0-cp311-cp311-win32.whl", hash = "sha256:0546a720c1f407b2172cb04b6b094a78773491497e3644863cf5c96c42df8cff" }, + { file = "pyzmq-27.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:15f39d50bd6c9091c67315ceb878a4f531957b121d2a05ebd077eb35ddc5efed" }, + { file = "pyzmq-27.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c5817641eebb391a2268c27fecd4162448e03538387093cdbd8bf3510c316b38" }, + { file = "pyzmq-27.0.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:cbabc59dcfaac66655c040dfcb8118f133fb5dde185e5fc152628354c1598e52" }, + { file = "pyzmq-27.0.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0ac5179cba4b2f94f1aa208fbb77b62c4c9bf24dd446278b8b602cf85fcda3" }, + { file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53a48f0228eab6cbf69fde3aa3c03cbe04e50e623ef92ae395fce47ef8a76152" }, + { file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:111db5f395e09f7e775f759d598f43cb815fc58e0147623c4816486e1a39dc22" }, + { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c8878011653dcdc27cc2c57e04ff96f0471e797f5c19ac3d7813a245bcb24371" }, + { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:c0ed2c1f335ba55b5fdc964622254917d6b782311c50e138863eda409fbb3b6d" }, + { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e918d70862d4cfd4b1c187310015646a14e1f5917922ab45b29f28f345eeb6be" }, + { file = "pyzmq-27.0.0-cp312-abi3-win32.whl", hash = "sha256:88b4e43cab04c3c0f0d55df3b1eef62df2b629a1a369b5289a58f6fa8b07c4f4" }, + { file = "pyzmq-27.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:dce4199bf5f648a902ce37e7b3afa286f305cd2ef7a8b6ec907470ccb6c8b371" }, + { file = "pyzmq-27.0.0-cp312-abi3-win_arm64.whl", hash = "sha256:56e46bbb85d52c1072b3f809cc1ce77251d560bc036d3a312b96db1afe76db2e" }, + { file = "pyzmq-27.0.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c36ad534c0c29b4afa088dc53543c525b23c0797e01b69fef59b1a9c0e38b688" }, + { file = "pyzmq-27.0.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:67855c14173aec36395d7777aaba3cc527b393821f30143fd20b98e1ff31fd38" }, + { file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8617c7d43cd8ccdb62aebe984bfed77ca8f036e6c3e46dd3dddda64b10f0ab7a" }, + { file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67bfbcbd0a04c575e8103a6061d03e393d9f80ffdb9beb3189261e9e9bc5d5e9" }, + { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5cd11d46d7b7e5958121b3eaf4cd8638eff3a720ec527692132f05a57f14341d" }, + { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b801c2e40c5aa6072c2f4876de8dccd100af6d9918d4d0d7aa54a1d982fd4f44" }, + { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20d5cb29e8c5f76a127c75b6e7a77e846bc4b655c373baa098c26a61b7ecd0ef" }, + { file = "pyzmq-27.0.0-cp313-cp313t-win32.whl", hash = "sha256:a20528da85c7ac7a19b7384e8c3f8fa707841fd85afc4ed56eda59d93e3d98ad" }, + { file = "pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f" }, + { file = "pyzmq-27.0.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:f4162dbbd9c5c84fb930a36f290b08c93e35fce020d768a16fc8891a2f72bab8" }, + { file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:4e7d0a8d460fba526cc047333bdcbf172a159b8bd6be8c3eb63a416ff9ba1477" }, + { file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:29f44e3c26b9783816ba9ce274110435d8f5b19bbd82f7a6c7612bb1452a3597" }, + { file = "pyzmq-27.0.0-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e435540fa1da54667f0026cf1e8407fe6d8a11f1010b7f06b0b17214ebfcf5e" }, + { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:51f5726de3532b8222e569990c8aa34664faa97038304644679a51d906e60c6e" }, + { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:42c7555123679637c99205b1aa9e8f7d90fe29d4c243c719e347d4852545216c" }, + { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a979b7cf9e33d86c4949df527a3018767e5f53bc3b02adf14d4d8db1db63ccc0" }, + { file = "pyzmq-27.0.0-cp38-cp38-win32.whl", hash = "sha256:26b72c5ae20bf59061c3570db835edb81d1e0706ff141747055591c4b41193f8" }, + { file = "pyzmq-27.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:55a0155b148fe0428285a30922f7213539aa84329a5ad828bca4bbbc665c70a4" }, + { file = "pyzmq-27.0.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:100f6e5052ba42b2533011d34a018a5ace34f8cac67cb03cfa37c8bdae0ca617" }, + { file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:bf6c6b061efd00404b9750e2cfbd9507492c8d4b3721ded76cb03786131be2ed" }, + { file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ee05728c0b0b2484a9fc20466fa776fffb65d95f7317a3419985b8c908563861" }, + { file = "pyzmq-27.0.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7cdf07fe0a557b131366f80727ec8ccc4b70d89f1e3f920d94a594d598d754f0" }, + { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:90252fa2ff3a104219db1f5ced7032a7b5fc82d7c8d2fec2b9a3e6fd4e25576b" }, + { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ea6d441c513bf18c578c73c323acf7b4184507fc244762193aa3a871333c9045" }, + { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ae2b34bcfaae20c064948a4113bf8709eee89fd08317eb293ae4ebd69b4d9740" }, + { file = "pyzmq-27.0.0-cp39-cp39-win32.whl", hash = "sha256:5b10bd6f008937705cf6e7bf8b6ece5ca055991e3eb130bca8023e20b86aa9a3" }, + { file = "pyzmq-27.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:00387d12a8af4b24883895f7e6b9495dc20a66027b696536edac35cb988c38f3" }, + { file = "pyzmq-27.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:4c19d39c04c29a6619adfeb19e3735c421b3bfee082f320662f52e59c47202ba" }, + { file = "pyzmq-27.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:656c1866505a5735d0660b7da6d7147174bbf59d4975fc2b7f09f43c9bc25745" }, + { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:74175b9e12779382432dd1d1f5960ebe7465d36649b98a06c6b26be24d173fab" }, + { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8c6de908465697a8708e4d6843a1e884f567962fc61eb1706856545141d0cbb" }, + { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c644aaacc01d0df5c7072826df45e67301f191c55f68d7b2916d83a9ddc1b551" }, + { file = "pyzmq-27.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:10f70c1d9a446a85013a36871a296007f6fe4232b530aa254baf9da3f8328bc0" }, + { file = "pyzmq-27.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd1dc59763effd1576f8368047c9c31468fce0af89d76b5067641137506792ae" }, + { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:60e8cc82d968174650c1860d7b716366caab9973787a1c060cf8043130f7d0f7" }, + { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:14fe7aaac86e4e93ea779a821967360c781d7ac5115b3f1a171ced77065a0174" }, + { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6ad0562d4e6abb785be3e4dd68599c41be821b521da38c402bc9ab2a8e7ebc7e" }, + { file = "pyzmq-27.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:9df43a2459cd3a3563404c1456b2c4c69564daa7dbaf15724c09821a3329ce46" }, + { file = "pyzmq-27.0.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8c86ea8fe85e2eb0ffa00b53192c401477d5252f6dd1db2e2ed21c1c30d17e5e" }, + { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:c45fee3968834cd291a13da5fac128b696c9592a9493a0f7ce0b47fa03cc574d" }, + { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cae73bb6898c4e045fbed5024cb587e4110fddb66f6163bcab5f81f9d4b9c496" }, + { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:26d542258c7a1f35a9cff3d887687d3235006134b0ac1c62a6fe1ad3ac10440e" }, + { file = "pyzmq-27.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:04cd50ef3b28e35ced65740fb9956a5b3f77a6ff32fcd887e3210433f437dd0f" }, + { file = "pyzmq-27.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:39ddd3ba0a641f01d8f13a3cfd4c4924eb58e660d8afe87e9061d6e8ca6f7ac3" }, + { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:8ca7e6a0388dd9e1180b14728051068f4efe83e0d2de058b5ff92c63f399a73f" }, + { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2524c40891be6a3106885a3935d58452dd83eb7a5742a33cc780a1ad4c49dec0" }, + { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a56e3e5bd2d62a01744fd2f1ce21d760c7c65f030e9522738d75932a14ab62a" }, + { file = "pyzmq-27.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:096af9e133fec3a72108ddefba1e42985cb3639e9de52cfd336b6fc23aa083e9" }, + { file = "pyzmq-27.0.0.tar.gz", hash = "sha256:b1f08eeb9ce1510e6939b6e5dcd46a17765e2333daae78ecf4606808442e52cf" }, +] + +[package.dependencies] +cffi = {version = "*", markers = "implementation_name == \"pypy\""} + +[[package]] +name = "referencing" +version = "0.36.2" +description = "JSON Referencing + Python" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0" }, + { file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa" }, +] + +[package.dependencies] +attrs = ">=22.2.0" +rpds-py = ">=0.7.0" + [[package]] name = "requests" version = "2.32.4" @@ -1191,8 +3317,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c"}, - {file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"}, + { file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c" }, + { file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422" }, ] [package.dependencies] @@ -1205,57 +3331,440 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] +[[package]] +name = "rfc3339-validator" +version = "0.1.4" +description = "A pure python RFC3339 validator" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] +files = [ + {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, + {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, +] + +[package.dependencies] +six = "*" + +[[package]] +name = "rfc3986-validator" +version = "0.1.1" +description = "Pure python rfc3986 validator" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] +files = [ + {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, + {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, +] + +[[package]] +name = "rfc3987-syntax" +version = "1.1.0" +description = "Helper functions to syntactically validate strings according to RFC 3987." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "rfc3987_syntax-1.1.0-py3-none-any.whl", hash = "sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f" }, + { file = "rfc3987_syntax-1.1.0.tar.gz", hash = "sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d" }, +] + +[package.dependencies] +lark = ">=1.2.2" + +[package.extras] +testing = ["pytest (>=8.3.5)"] + +[[package]] +name = "rpds-py" +version = "0.26.0" +description = "Python bindings to Rust's persistent data structures (rpds)" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "rpds_py-0.26.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4c70c70f9169692b36307a95f3d8c0a9fcd79f7b4a383aad5eaa0e9718b79b37" }, + { file = "rpds_py-0.26.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:777c62479d12395bfb932944e61e915741e364c843afc3196b694db3d669fcd0" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec671691e72dff75817386aa02d81e708b5a7ec0dec6669ec05213ff6b77e1bd" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a1cb5d6ce81379401bbb7f6dbe3d56de537fb8235979843f0d53bc2e9815a79" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f789e32fa1fb6a7bf890e0124e7b42d1e60d28ebff57fe806719abb75f0e9a3" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c55b0a669976cf258afd718de3d9ad1b7d1fe0a91cd1ab36f38b03d4d4aeaaf" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c70d9ec912802ecfd6cd390dadb34a9578b04f9bcb8e863d0a7598ba5e9e7ccc" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3021933c2cb7def39d927b9862292e0f4c75a13d7de70eb0ab06efed4c508c19" }, + { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8a7898b6ca3b7d6659e55cdac825a2e58c638cbf335cde41f4619e290dd0ad11" }, + { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:12bff2ad9447188377f1b2794772f91fe68bb4bbfa5a39d7941fbebdbf8c500f" }, + { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:191aa858f7d4902e975d4cf2f2d9243816c91e9605070aeb09c0a800d187e323" }, + { file = "rpds_py-0.26.0-cp310-cp310-win32.whl", hash = "sha256:b37a04d9f52cb76b6b78f35109b513f6519efb481d8ca4c321f6a3b9580b3f45" }, + { file = "rpds_py-0.26.0-cp310-cp310-win_amd64.whl", hash = "sha256:38721d4c9edd3eb6670437d8d5e2070063f305bfa2d5aa4278c51cedcd508a84" }, + { file = "rpds_py-0.26.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9e8cb77286025bdb21be2941d64ac6ca016130bfdcd228739e8ab137eb4406ed" }, + { file = "rpds_py-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e09330b21d98adc8ccb2dbb9fc6cb434e8908d4c119aeaa772cb1caab5440a0" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9c1b92b774b2e68d11193dc39620d62fd8ab33f0a3c77ecdabe19c179cdbc1" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:824e6d3503ab990d7090768e4dfd9e840837bae057f212ff9f4f05ec6d1975e7" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ad7fd2258228bf288f2331f0a6148ad0186b2e3643055ed0db30990e59817a6" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dc23bbb3e06ec1ea72d515fb572c1fea59695aefbffb106501138762e1e915e" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d80bf832ac7b1920ee29a426cdca335f96a2b5caa839811803e999b41ba9030d" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0919f38f5542c0a87e7b4afcafab6fd2c15386632d249e9a087498571250abe3" }, + { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d422b945683e409000c888e384546dbab9009bb92f7c0b456e217988cf316107" }, + { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a7711fa562ba2da1aa757e11024ad6d93bad6ad7ede5afb9af144623e5f76a" }, + { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238e8c8610cb7c29460e37184f6799547f7e09e6a9bdbdab4e8edb90986a2318" }, + { file = "rpds_py-0.26.0-cp311-cp311-win32.whl", hash = "sha256:893b022bfbdf26d7bedb083efeea624e8550ca6eb98bf7fea30211ce95b9201a" }, + { file = "rpds_py-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:87a5531de9f71aceb8af041d72fc4cab4943648d91875ed56d2e629bef6d4c03" }, + { file = "rpds_py-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:de2713f48c1ad57f89ac25b3cb7daed2156d8e822cf0eca9b96a6f990718cc41" }, + { file = "rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d" }, + { file = "rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323" }, + { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158" }, + { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3" }, + { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2" }, + { file = "rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44" }, + { file = "rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c" }, + { file = "rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8" }, + { file = "rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d" }, + { file = "rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1" }, + { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9" }, + { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9" }, + { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba" }, + { file = "rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b" }, + { file = "rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5" }, + { file = "rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256" }, + { file = "rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618" }, + { file = "rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed" }, + { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632" }, + { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c" }, + { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0" }, + { file = "rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9" }, + { file = "rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9" }, + { file = "rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a" }, + { file = "rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387" }, + { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af" }, + { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33" }, + { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953" }, + { file = "rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9" }, + { file = "rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37" }, + { file = "rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867" }, + { file = "rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da" }, + { file = "rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b" }, + { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a" }, + { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170" }, + { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e" }, + { file = "rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f" }, + { file = "rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7" }, + { file = "rpds_py-0.26.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:7a48af25d9b3c15684059d0d1fc0bc30e8eee5ca521030e2bffddcab5be40226" }, + { file = "rpds_py-0.26.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0c71c2f6bf36e61ee5c47b2b9b5d47e4d1baad6426bfed9eea3e858fc6ee8806" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d815d48b1804ed7867b539236b6dd62997850ca1c91cad187f2ddb1b7bbef19" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84cfbd4d4d2cdeb2be61a057a258d26b22877266dd905809e94172dff01a42ae" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fbaa70553ca116c77717f513e08815aec458e6b69a028d4028d403b3bc84ff37" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39bfea47c375f379d8e87ab4bb9eb2c836e4f2069f0f65731d85e55d74666387" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1533b7eb683fb5f38c1d68a3c78f5fdd8f1412fa6b9bf03b40f450785a0ab915" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c5ab0ee51f560d179b057555b4f601b7df909ed31312d301b99f8b9fc6028284" }, + { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e5162afc9e0d1f9cae3b577d9c29ddbab3505ab39012cb794d94a005825bde21" }, + { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:43f10b007033f359bc3fa9cd5e6c1e76723f056ffa9a6b5c117cc35720a80292" }, + { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e3730a48e5622e598293eee0762b09cff34dd3f271530f47b0894891281f051d" }, + { file = "rpds_py-0.26.0-cp39-cp39-win32.whl", hash = "sha256:4b1f66eb81eab2e0ff5775a3a312e5e2e16bf758f7b06be82fb0d04078c7ac51" }, + { file = "rpds_py-0.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:519067e29f67b5c90e64fb1a6b6e9d2ec0ba28705c51956637bac23a2f4ddae1" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3c0909c5234543ada2515c05dc08595b08d621ba919629e94427e8e03539c958" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c1fb0cda2abcc0ac62f64e2ea4b4e64c57dfd6b885e693095460c61bde7bb18e" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84d142d2d6cf9b31c12aa4878d82ed3b2324226270b89b676ac62ccd7df52d08" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a547e21c5610b7e9093d870be50682a6a6cf180d6da0f42c47c306073bfdbbf6" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:35e9a70a0f335371275cdcd08bc5b8051ac494dd58bff3bbfb421038220dc871" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dfa6115c6def37905344d56fb54c03afc49104e2ca473d5dedec0f6606913b4" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:313cfcd6af1a55a286a3c9a25f64af6d0e46cf60bc5798f1db152d97a216ff6f" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f7bf2496fa563c046d05e4d232d7b7fd61346e2402052064b773e5c378bf6f73" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:aa81873e2c8c5aa616ab8e017a481a96742fdf9313c40f14338ca7dbf50cb55f" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:68ffcf982715f5b5b7686bdd349ff75d422e8f22551000c24b30eaa1b7f7ae84" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6188de70e190847bb6db3dc3981cbadff87d27d6fe9b4f0e18726d55795cee9b" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1c962145c7473723df9722ba4c058de12eb5ebedcb4e27e7d902920aa3831ee8" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f61a9326f80ca59214d1cceb0a09bb2ece5b2563d4e0cd37bfd5515c28510674" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:183f857a53bcf4b1b42ef0f57ca553ab56bdd170e49d8091e96c51c3d69ca696" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:941c1cfdf4799d623cf3aa1d326a6b4fdb7a5799ee2687f3516738216d2262fb" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72a8d9564a717ee291f554eeb4bfeafe2309d5ec0aa6c475170bdab0f9ee8e88" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:511d15193cbe013619dd05414c35a7dedf2088fcee93c6bbb7c77859765bd4e8" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aea1f9741b603a8d8fedb0ed5502c2bc0accbc51f43e2ad1337fe7259c2b77a5" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4019a9d473c708cf2f16415688ef0b4639e07abaa569d72f74745bbeffafa2c7" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:093d63b4b0f52d98ebae33b8c50900d3d67e0666094b1be7a12fffd7f65de74b" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2abe21d8ba64cded53a2a677e149ceb76dcf44284202d737178afe7ba540c1eb" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:4feb7511c29f8442cbbc28149a92093d32e815a28aa2c50d333826ad2a20fdf0" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e99685fc95d386da368013e7fb4269dd39c30d99f812a8372d62f244f662709c" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a90a13408a7a856b87be8a9f008fff53c5080eea4e4180f6c2e546e4a972fb5d" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ac51b65e8dc76cf4949419c54c5528adb24fc721df722fd452e5fbc236f5c40" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59b2093224a18c6508d95cfdeba8db9cbfd6f3494e94793b58972933fcee4c6d" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f01a5d6444a3258b00dc07b6ea4733e26f8072b788bef750baa37b370266137" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6e2c12160c72aeda9d1283e612f68804621f448145a210f1bf1d79151c47090" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb28c1f569f8d33b2b5dcd05d0e6ef7005d8639c54c2f0be824f05aedf715255" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1766b5724c3f779317d5321664a343c07773c8c5fd1532e4039e6cc7d1a815be" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b6d9e5a2ed9c4988c8f9b28b3bc0e3e5b1aaa10c28d210a594ff3a8c02742daf" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b5f7a446ddaf6ca0fad9a5535b56fbfc29998bf0e0b450d174bbec0d600e1d72" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:eed5ac260dd545fbc20da5f4f15e7efe36a55e0e7cf706e4ec005b491a9546a0" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:582462833ba7cee52e968b0341b85e392ae53d44c0f9af6a5927c80e539a8b67" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:69a607203441e07e9a8a529cff1d5b73f6a160f22db1097211e6212a68567d11" }, + { file = "rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0" }, +] + [[package]] name = "ruff" -version = "0.12.9" +version = "0.12.4" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "ruff-0.12.9-py3-none-linux_armv6l.whl", hash = "sha256:fcebc6c79fcae3f220d05585229463621f5dbf24d79fdc4936d9302e177cfa3e"}, - {file = "ruff-0.12.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:aed9d15f8c5755c0e74467731a007fcad41f19bcce41cd75f768bbd687f8535f"}, - {file = "ruff-0.12.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5b15ea354c6ff0d7423814ba6d44be2807644d0c05e9ed60caca87e963e93f70"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d596c2d0393c2502eaabfef723bd74ca35348a8dac4267d18a94910087807c53"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b15599931a1a7a03c388b9c5df1bfa62be7ede6eb7ef753b272381f39c3d0ff"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3d02faa2977fb6f3f32ddb7828e212b7dd499c59eb896ae6c03ea5c303575756"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:17d5b6b0b3a25259b69ebcba87908496e6830e03acfb929ef9fd4c58675fa2ea"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:72db7521860e246adbb43f6ef464dd2a532ef2ef1f5dd0d470455b8d9f1773e0"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a03242c1522b4e0885af63320ad754d53983c9599157ee33e77d748363c561ce"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fc83e4e9751e6c13b5046d7162f205d0a7bac5840183c5beebf824b08a27340"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:881465ed56ba4dd26a691954650de6ad389a2d1fdb130fe51ff18a25639fe4bb"}, - {file = "ruff-0.12.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:43f07a3ccfc62cdb4d3a3348bf0588358a66da756aa113e071b8ca8c3b9826af"}, - {file = "ruff-0.12.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:07adb221c54b6bba24387911e5734357f042e5669fa5718920ee728aba3cbadc"}, - {file = "ruff-0.12.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f5cd34fabfdea3933ab85d72359f118035882a01bff15bd1d2b15261d85d5f66"}, - {file = "ruff-0.12.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:f6be1d2ca0686c54564da8e7ee9e25f93bdd6868263805f8c0b8fc6a449db6d7"}, - {file = "ruff-0.12.9-py3-none-win32.whl", hash = "sha256:cc7a37bd2509974379d0115cc5608a1a4a6c4bff1b452ea69db83c8855d53f93"}, - {file = "ruff-0.12.9-py3-none-win_amd64.whl", hash = "sha256:6fb15b1977309741d7d098c8a3cb7a30bc112760a00fb6efb7abc85f00ba5908"}, - {file = "ruff-0.12.9-py3-none-win_arm64.whl", hash = "sha256:63c8c819739d86b96d500cce885956a1a48ab056bbcbc61b747ad494b2485089"}, - {file = "ruff-0.12.9.tar.gz", hash = "sha256:fbd94b2e3c623f659962934e52c2bea6fc6da11f667a427a368adaf3af2c866a"}, + { file = "ruff-0.12.4-py3-none-linux_armv6l.whl", hash = "sha256:cb0d261dac457ab939aeb247e804125a5d521b21adf27e721895b0d3f83a0d0a" }, + { file = "ruff-0.12.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:55c0f4ca9769408d9b9bac530c30d3e66490bd2beb2d3dae3e4128a1f05c7442" }, + { file = "ruff-0.12.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a8224cc3722c9ad9044da7f89c4c1ec452aef2cfe3904365025dd2f51daeae0e" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9949d01d64fa3672449a51ddb5d7548b33e130240ad418884ee6efa7a229586" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:be0593c69df9ad1465e8a2d10e3defd111fdb62dcd5be23ae2c06da77e8fcffb" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7dea966bcb55d4ecc4cc3270bccb6f87a337326c9dcd3c07d5b97000dbff41c" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:afcfa3ab5ab5dd0e1c39bf286d829e042a15e966b3726eea79528e2e24d8371a" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c057ce464b1413c926cdb203a0f858cd52f3e73dcb3270a3318d1630f6395bb3" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e64b90d1122dc2713330350626b10d60818930819623abbb56535c6466cce045" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2abc48f3d9667fdc74022380b5c745873499ff827393a636f7a59da1515e7c57" }, + { file = "ruff-0.12.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2b2449dc0c138d877d629bea151bee8c0ae3b8e9c43f5fcaafcd0c0d0726b184" }, + { file = "ruff-0.12.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:56e45bb11f625db55f9b70477062e6a1a04d53628eda7784dce6e0f55fd549eb" }, + { file = "ruff-0.12.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:478fccdb82ca148a98a9ff43658944f7ab5ec41c3c49d77cd99d44da019371a1" }, + { file = "ruff-0.12.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0fc426bec2e4e5f4c4f182b9d2ce6a75c85ba9bcdbe5c6f2a74fcb8df437df4b" }, + { file = "ruff-0.12.4-py3-none-win32.whl", hash = "sha256:4de27977827893cdfb1211d42d84bc180fceb7b72471104671c59be37041cf93" }, + { file = "ruff-0.12.4-py3-none-win_amd64.whl", hash = "sha256:fe0b9e9eb23736b453143d72d2ceca5db323963330d5b7859d60d101147d461a" }, + { file = "ruff-0.12.4-py3-none-win_arm64.whl", hash = "sha256:0618ec4442a83ab545e5b71202a5c0ed7791e8471435b94e655b570a5031a98e" }, + { file = "ruff-0.12.4.tar.gz", hash = "sha256:13efa16df6c6eeb7d0f091abae50f58e9522f3843edb40d56ad52a5a4a4b6873" }, +] + +[[package]] +name = "send2trash" +version = "1.8.3" +description = "Send file to trash natively under Mac OS X, Windows and Linux" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +groups = ["dev"] +files = [ + {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, + {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, +] + +[package.extras] +nativelib = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\"", "pywin32 ; sys_platform == \"win32\""] +objc = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\""] +win32 = ["pywin32 ; sys_platform == \"win32\""] + +[[package]] +name = "setuptools" +version = "80.9.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922" }, + { file = "setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c" }, ] +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.8.0) ; sys_platform != \"cygwin\""] +core = ["importlib_metadata (>=6) ; python_version < \"3.10\"", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.14.*)", "pytest-mypy"] + [[package]] name = "six" version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main", "dev"] +files = [ + { file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274" }, + { file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + +[[package]] +name = "soupsieve" +version = "2.7" +description = "A modern CSS selector implementation for Beautiful Soup." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4" }, + { file = "soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a" }, +] + +[[package]] +name = "stack-data" +version = "0.6.3" +description = "Extract data from python stack frames and tracebacks for informative displays" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, + {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, +] + +[package.dependencies] +asttokens = ">=2.1.0" +executing = ">=1.2.0" +pure-eval = "*" + +[package.extras] +tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] + +[[package]] +name = "terminado" +version = "0.18.1" +description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." +optional = false +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, - {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, + {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, + {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, +] + +[package.dependencies] +ptyprocess = {version = "*", markers = "os_name != \"nt\""} +pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""} +tornado = ">=6.1.0" + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] +test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"] +typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"] + +[[package]] +name = "tinycss2" +version = "1.4.0" +description = "A tiny CSS parser" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, + {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, +] + +[package.dependencies] +webencodings = ">=0.4" + +[package.extras] +doc = ["sphinx", "sphinx_rtd_theme"] +test = ["pytest", "ruff"] + +[[package]] +name = "toolz" +version = "1.0.0" +description = "List processing tools and functional utilities" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236"}, + {file = "toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02"}, +] + +[[package]] +name = "tornado" +version = "6.5.1" +description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7" }, + { file = "tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6" }, + { file = "tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888" }, + { file = "tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331" }, + { file = "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" }, + { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401" }, + { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692" }, + { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a" }, + { file = "tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365" }, + { file = "tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b" }, + { file = "tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7" }, + { file = "tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c" }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +description = "Traitlets Python configuration system" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, + {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, +] + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] +test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] + +[[package]] +name = "types-python-dateutil" +version = "2.9.0.20250708" +description = "Typing stubs for python-dateutil" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "types_python_dateutil-2.9.0.20250708-py3-none-any.whl", hash = "sha256:4d6d0cc1cc4d24a2dc3816024e502564094497b713f7befda4d5bc7a8e3fd21f" }, + { file = "types_python_dateutil-2.9.0.20250708.tar.gz", hash = "sha256:ccdbd75dab2d6c9696c350579f34cffe2c281e4c5f27a585b2a2438dd1d5c8ab" }, ] [[package]] name = "types-pyyaml" -version = "6.0.12.20250809" +version = "6.0.12.20250516" description = "Typing stubs for PyYAML" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "types_pyyaml-6.0.12.20250809-py3-none-any.whl", hash = "sha256:032b6003b798e7de1a1ddfeefee32fac6486bdfe4845e0ae0e7fb3ee4512b52f"}, - {file = "types_pyyaml-6.0.12.20250809.tar.gz", hash = "sha256:af4a1aca028f18e75297da2ee0da465f799627370d74073e96fee876524f61b5"}, + { file = "types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530" }, + { file = "types_pyyaml-6.0.12.20250516.tar.gz", hash = "sha256:9f21a70216fc0fa1b216a8176db5f9e0af6eb35d2f2932acb87689d03a5bf6ba" }, ] [[package]] @@ -1266,8 +3775,8 @@ optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - {file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76"}, - {file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36"}, + { file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76" }, + { file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36" }, ] [[package]] @@ -1276,15 +3785,42 @@ version = "0.4.2" description = "Runtime typing introspection tools" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["main", "dev"] files = [ - {file = "typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7"}, - {file = "typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464"}, + { file = "typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7" }, + { file = "typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464" }, ] [package.dependencies] typing-extensions = ">=4.12.0" +[[package]] +name = "tzdata" +version = "2025.2" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +groups = ["main"] +files = [ + { file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8" }, + { file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9" }, +] + +[[package]] +name = "uri-template" +version = "1.3.0" +description = "RFC 6570 URI Template Processor" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, + {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, +] + +[package.extras] +dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"] + [[package]] name = "urllib3" version = "2.5.0" @@ -1293,8 +3829,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"}, - {file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760"}, + { file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc" }, + { file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760" }, ] [package.extras] @@ -1305,14 +3841,14 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.34.0" +version = "20.31.2" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "virtualenv-20.34.0-py3-none-any.whl", hash = "sha256:341f5afa7eee943e4984a9207c025feedd768baff6753cd660c857ceb3e36026"}, - {file = "virtualenv-20.34.0.tar.gz", hash = "sha256:44815b2c9dee7ed86e387b842a84f20b93f7f417f95886ca1996a72a4138eb1a"}, + { file = "virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11" }, + { file = "virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af" }, ] [package.dependencies] @@ -1332,42 +3868,181 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26"}, - {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112"}, - {file = "watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3"}, - {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c"}, - {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2"}, - {file = "watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c"}, - {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948"}, - {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860"}, - {file = "watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0"}, - {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c"}, - {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134"}, - {file = "watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b"}, - {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8"}, - {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a"}, - {file = "watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c"}, - {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881"}, - {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11"}, - {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa"}, - {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2"}, - {file = "watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a"}, - {file = "watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680"}, - {file = "watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f"}, - {file = "watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282"}, + { file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26" }, + { file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112" }, + { file = "watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3" }, + { file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c" }, + { file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2" }, + { file = "watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c" }, + { file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948" }, + { file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860" }, + { file = "watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0" }, + { file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c" }, + { file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134" }, + { file = "watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b" }, + { file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8" }, + { file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a" }, + { file = "watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c" }, + { file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881" }, + { file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11" }, + { file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa" }, + { file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2" }, + { file = "watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a" }, + { file = "watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680" }, + { file = "watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f" }, + { file = "watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282" }, ] [package.extras] watchmedo = ["PyYAML (>=3.10)"] +[[package]] +name = "wcwidth" +version = "0.2.13" +description = "Measures the displayed width of unicode strings in a terminal" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, +] + +[[package]] +name = "webcolors" +version = "24.11.1" +description = "A library for working with the color formats defined by HTML and CSS." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9" }, + { file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6" }, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] + +[[package]] +name = "websocket-client" +version = "1.8.0" +description = "WebSocket client for Python with low level API options" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, + {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, +] + +[package.extras] +docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"] +optional = ["python-socks", "wsaccel"] +test = ["websockets"] + +[[package]] +name = "widgetsnbextension" +version = "4.0.14" +description = "Jupyter interactive widgets for Jupyter Notebook" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + { file = "widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575" }, + { file = "widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af" }, +] + +[[package]] +name = "xarray" +version = "2025.10.1" +description = "N-D labeled arrays and datasets in Python" +optional = false +python-versions = ">=3.11" +groups = ["main"] +files = [ + { file = "xarray-2025.10.1-py3-none-any.whl", hash = "sha256:a4e699433b87a7fac340951bc36648645eeef72bdd915ff055ac2fd99865a73d" }, + { file = "xarray-2025.10.1.tar.gz", hash = "sha256:3c2b5ad7389825bd624ada5ff26b01ac54b1aae72e2fe0d724d81d40a2bf5785" }, +] + +[package.dependencies] +numpy = ">=1.26" +packaging = ">=24.1" +pandas = ">=2.2" + +[package.extras] +accel = ["bottleneck", "flox (>=0.9)", "numba (>=0.62)", "numbagg (>=0.8)", "opt_einsum", "scipy (>=1.13)"] +complete = ["xarray[accel,etc,io,parallel,viz]"] +etc = ["sparse (>=0.15)"] +io = ["cftime", "fsspec", "h5netcdf", "netCDF4 (>=1.6.0)", "pooch", "pydap", "scipy (>=1.13)", "zarr (>=2.18)"] +parallel = ["dask[complete]"] +types = ["pandas-stubs", "scipy-stubs", "types-PyYAML", "types-Pygments", "types-colorama", "types-decorator", "types-defusedxml", "types-docutils", "types-networkx", "types-openpyxl", "types-pexpect", "types-psutil", "types-pycurl", "types-python-dateutil", "types-pytz", "types-requests", "types-setuptools"] +viz = ["cartopy (>=0.23)", "matplotlib", "nc-time-axis", "seaborn"] + +[[package]] +name = "zarr" +version = "3.1.3" +description = "An implementation of chunked, compressed, N-dimensional arrays for Python" +optional = false +python-versions = ">=3.11" +groups = ["main"] +files = [ + { file = "zarr-3.1.3-py3-none-any.whl", hash = "sha256:45f67f87f65f14fa453f99dd8110a5936b7ac69f3a21981d33e90407c80c302a" }, + { file = "zarr-3.1.3.tar.gz", hash = "sha256:01342f3e26a02ed5670db608a5576fbdb8d76acb5c280bd2d0082454b1ba6f79" }, +] + +[package.dependencies] +donfig = ">=0.8" +numcodecs = { version = ">=0.14", extras = ["crc32c"] } +numpy = ">=1.26" +packaging = ">=22.0" +typing-extensions = ">=4.9" + +[package.extras] +cli = ["typer"] +docs = ["astroid (<4)", "numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "pytest", "rich", "s3fs (>=2023.10.0)", "sphinx (==8.1.3)", "sphinx-autoapi (==3.4.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx-copybutton", "sphinx-design", "sphinx-issues", "sphinx-reredirects", "towncrier"] +gpu = ["cupy-cuda12x"] +optional = ["rich", "universal-pathlib"] +remote = ["fsspec (>=2023.10.0)", "obstore (>=0.5.1)"] +remote-tests = ["botocore", "fsspec (>=2023.10.0)", "moto[s3,server]", "obstore (>=0.5.1)", "requests", "s3fs (>=2023.10.0)"] +test = ["coverage (>=7.10)", "hypothesis", "mypy", "numpydoc", "packaging", "pytest (<8.4)", "pytest-accept", "pytest-asyncio", "pytest-cov", "pytest-xdist", "rich", "tomlkit", "uv"] + +[[package]] +name = "zipp" +version = "3.23.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e" }, + { file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166" }, +] + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more_itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] + [metadata] lock-version = "2.1" -python-versions = ">=3.13,<3.15.0" -content-hash = "1db325c51badf87c9a1b8435aa6a233e47204df736d2ed3256a3799ba819ed50" +python-versions = ">=3.13" +content-hash = "3a6cd56008c43cebabb3ffdbf2d79955b7d239934c00123eb283588d71e66b6a" diff --git a/pyproject.toml b/pyproject.toml index a11dd15..6277846 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ authors = [ ] license = { text = "MPL2.0" } readme = "README.md" -requires-python = ">=3.13,<3.15.0" +requires-python = ">=3.13" dynamic = ["dependencies"] [tool.poetry.urls] @@ -16,10 +16,18 @@ repository = "https://github.com/alliander-opensource/meteoforge" documentation = "https://github.com/alliander-opensource/meteoforge" [tool.poetry.dependencies] -pydantic = "^2.12.3" -colorlog = "^6.10.1" +dask = "^2025.9.1" +netcdf4 = "^1.7.2" +numpy = "^2.3.3" +pydantic = "^2.12.0" +pyproj = "^3.7.2" +xarray = "^2025.10.1" +zarr = "^3.1.3" +colorlog = "^6.9.0" # For colored logging output [tool.poetry.group.dev.dependencies] +coverage = "^7.9.2" +jupyter = "^1.1.1" mkdocs = "^1.6.1" mkdocs-material = "^9.6.15" mkdocstrings = { extras = ["python"], version = "^0.29.1" } @@ -28,8 +36,7 @@ pre-commit = "^4.2.0" pytest = "^8.4.1" ruff = "^0.12.4" types-pyyaml = "^6.0.12.20250516" -poetry-core = "^2.1.3" -pytest-cov = "^6.2.1" +fawltydeps = "^0.20.0" [build-system] requires = ["poetry-core"] @@ -99,7 +106,7 @@ addopts = [ "--cov-report=xml", "--cov-report=term-missing" ] -minversion = "8.4.1" +minversion = "8.3.2" testpaths = ["tests"] [tool.coverage.run] diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/__init__.py b/src/meteoforge/core/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/core/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/logging/__init__.py b/src/meteoforge/logging/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/logging/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/parameters/__init__.py b/src/meteoforge/parameters/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/parameters/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/__init__.py b/src/meteoforge/spatial_temporal/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/spatial_temporal/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/locations.py b/src/meteoforge/spatial_temporal/locations.py index ed13f74..efb3b36 100644 --- a/src/meteoforge/spatial_temporal/locations.py +++ b/src/meteoforge/spatial_temporal/locations.py @@ -29,9 +29,9 @@ class MFLocation: """ def __init__(self, *, x: int | float, y: int | float, epsg_code: int = 4326): - """Initializes the MFLocation with x, y coordinates and an optional EPSG code.""" + """Initialize the MFLocation class.""" # Validate the input parameters - if self.valid_location(x, y, epsg_code): + if self.validate_location(x, y, epsg_code): # Set the instance variables self.x = float(x) self.y = float(y) @@ -40,14 +40,14 @@ def __init__(self, *, x: int | float, y: int | float, epsg_code: int = 4326): raise ValueError("Invalid location parameters") @staticmethod - def valid_location(x: float, y: float, epsg_code: int = 4326) -> bool: - """Validates the location parameters for type and existence.""" + def validate_location(x: float, y: float, epsg_code: int = 4326) -> bool: + """Validate a given x,y location with an EPSG code as an existing coordinate.""" logger.debug(f"Validating location: x={x}, y={y}, epgs_code={epsg_code}") # Validate the types of x, y, and epgs_code - if not isinstance(x, (int, float)): + if not isinstance(x, int | float): raise ValueError("x must be a number") - if not isinstance(y, (int, float)): + if not isinstance(y, int | float): raise ValueError("y must be a number") if not isinstance(epsg_code, int): raise ValueError("epgs_code must be an integer") @@ -63,27 +63,44 @@ def valid_location(x: float, y: float, epsg_code: int = 4326) -> bool: ... logger.debug(f"Location validation passed and valid: x={x}, y={y}, epsg_code={epsg_code}") + return True @staticmethod - def valid_crs(epsg_code: int) -> bool: - """Validates the EPSG code for known coordinate reference systems.""" + def validate_crs(epsg_code: int) -> bool: + """Validate a given EPSG code for valid and known coordinate reference systems. + + A valid CRS is one that exists, is not deprecated, and is either geographic or geocentric. This helps exclude + CRS values that are unsuitable for representing x,y coordinates in a geographic context. + """ logger.debug(f"Validating CRS with EPSG code: {epsg_code}") try: crs = CRS.from_epsg(epsg_code) except CRSError as e: - raise ValueError(f"invalid EPSG code '{crs}': --<<-- {e} -->>--") from e + raise ValueError(f"invalid EPSG code '{epsg_code}': --<<-- {e} -->>--") from e - # Check that the CRS is not deprecated + # Check that the CRS is not deprecated if crs.is_deprecated: raise ValueError( f"The CRS with EPSG code {epsg_code} is deprecated. Please use a different (non-deprecated) CRS." ) - # Check that the CRS is for an x,y based geographic coordinate system + # Check that the CRS is for an x,y based geographic coordinate system if not crs.is_geographic and not crs.is_geocentric: raise ValueError( "The MFLocation class type only supports Geographic (CRS.is_geographic=True) and Geocentric Coordinate " "Systems (CRS.is_geocentric=True)." ) return True + + +class MFLocationList: + """A list of MFLocation objects representing multiple geographic locations.""" + + ... + + +class MFLocationVector: + """A vector of MFLocation objects representing a sequence of geographic locations.""" + + ... From 3f94d67a66c4ccc7bfd8b9338ef5c6110867c6bc Mon Sep 17 00:00:00 2001 From: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Mon, 23 Mar 2026 16:50:08 +0100 Subject: [PATCH 14/50] feature : First version --- .pre-commit-config.yaml | 20 +- .vscode/settings.json | 32 + README.md | 5 +- poetry.lock | 4528 ++++++----------- pyproject.toml | 57 +- src/__init__.py | 4 +- src/meteoforge/__init__.py | 4 +- src/meteoforge/core/controller.py | 4 +- src/meteoforge/core/manager.py | 4 +- src/meteoforge/core/model.py | 4 +- src/meteoforge/core/source.py | 4 +- src/meteoforge/logging/__init__.py | 4 +- src/meteoforge/logging/logging.py | 6 +- src/meteoforge/parameters/__init__.py | 4 +- src/meteoforge/parameters/parameters.py | 4 +- src/meteoforge/spatial_temporal/__init__.py | 4 +- src/meteoforge/spatial_temporal/locations.py | 276 +- src/meteoforge/spatial_temporal/periods.py | 4 +- src/meteoforge/spatial_temporal/validators.py | 138 + src/meteoforge_tools/README.md | 3 + src/meteoforge_tools/__init__.py | 4 +- .../netfcd_to_zarr_conversion.py | 4 +- tests/conftest.py | 4 +- tests/test_example_test.py | 7 - tests/test_locations.py | 118 + typings/meteoforge/__init__.pyi | 0 typings/meteoforge/core/__init__.pyi | 0 typings/meteoforge/core/controller.pyi | 0 typings/meteoforge/core/manager.pyi | 0 typings/meteoforge/core/model.pyi | 0 typings/meteoforge/core/source.pyi | 0 typings/meteoforge/logging/__init__.pyi | 0 typings/meteoforge/logging/logging.pyi | 5 + typings/meteoforge/parameters/__init__.pyi | 0 typings/meteoforge/parameters/parameters.pyi | 0 .../meteoforge/spatial_temporal/__init__.pyi | 0 .../meteoforge/spatial_temporal/locations.pyi | 43 + .../meteoforge/spatial_temporal/periods.pyi | 0 .../spatial_temporal/validators.pyi | 10 + 39 files changed, 2107 insertions(+), 3197 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 src/meteoforge/spatial_temporal/validators.py delete mode 100644 tests/test_example_test.py create mode 100644 tests/test_locations.py create mode 100644 typings/meteoforge/__init__.pyi create mode 100644 typings/meteoforge/core/__init__.pyi create mode 100644 typings/meteoforge/core/controller.pyi create mode 100644 typings/meteoforge/core/manager.pyi create mode 100644 typings/meteoforge/core/model.pyi create mode 100644 typings/meteoforge/core/source.pyi create mode 100644 typings/meteoforge/logging/__init__.pyi create mode 100644 typings/meteoforge/logging/logging.pyi create mode 100644 typings/meteoforge/parameters/__init__.pyi create mode 100644 typings/meteoforge/parameters/parameters.pyi create mode 100644 typings/meteoforge/spatial_temporal/__init__.pyi create mode 100644 typings/meteoforge/spatial_temporal/locations.pyi create mode 100644 typings/meteoforge/spatial_temporal/periods.pyi create mode 100644 typings/meteoforge/spatial_temporal/validators.pyi diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 98bf8b7..965bd5b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,8 +3,12 @@ # Hooks repos: + - repo: https://github.com/fsfe/reuse-tool + rev: v6.2.0 + hooks: + - id: reuse - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.6.0 + rev: v6.0.0 hooks: - id: check-yaml - id: end-of-file-fixer @@ -14,7 +18,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.5.7 + rev: v0.15.7 hooks: # Run the linter. - id: ruff @@ -23,24 +27,26 @@ repos: - id: ruff-format - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.11.1 + rev: v1.19.1 hooks: - id: mypy + additional_dependencies: ["types-shapely"] - repo: https://github.com/compilerla/conventional-pre-commit - rev: v3.2.0 + rev: v4.4.0 hooks: - id: conventional-pre-commit stages: [commit-msg] args: [] - repo: https://github.com/codespell-project/codespell - rev: v2.3.0 + rev: v2.4.2 hooks: - id: codespell exclude: > (?x)^( - .*\.svg + LICENSES/.* + | .*\.svg | .*\.lock )$ @@ -51,7 +57,7 @@ repos: args: ['--lock'] - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.41.0 + rev: v0.48.0 hooks: - id: markdownlint args: [ "--config", ".markdownlint.yaml" ] diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..10af52f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,32 @@ +{ + "sonarlint.connectedMode.project": { + "connectionId": "alliander-opensource", + "projectKey": "alliander-opensource_meteoforge" + }, + "python.defaultInterpreterPath": "/home/linnr02/.cache/pypoetry/virtualenvs/meteoforge-Xj3O_PoL-py3.14/bin/python", + "psi-header.lang-config": [ + { + "language": "python", + "begin": "", + "prefix": "# ", + "end": "", + "blankLinesAfter": 1 + } + ], + "psi-header.templates": [ + { + "language": "*", + "template": [ + "SPDX-FileCopyrightText: 2025-<> Contributors to the MeteoForge project", + "SPDX-License-Identifier: MPL-2.0" + ] + } + ], + "psi-header.config.forceToTop": true, + "psi-header.changes-tracking.enforceHeader": true, + "python.testing.pytestArgs": [ + "tests" + ], + "python.testing.unittestEnabled": false, + "python.testing.pytestEnabled": true +} diff --git a/README.md b/README.md index 1166b54..981628e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ [//]: # (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) - [//]: # (SPDX-License-Identifier: MPL-2.0) # MeteoForge - Core System @@ -12,9 +11,7 @@ [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=bugs)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=coverage)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) -
- MeteoForge -
+![MeteoForge logo](/docs/images/meteoforge_logo.png) ## Index diff --git a/poetry.lock b/poetry.lock index 3b274e4..1ab1edc 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.4 and should not be changed by hand. [[package]] name = "annotated-types" @@ -12,171 +12,28 @@ files = [ {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] -[[package]] -name = "anyio" -version = "4.9.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c" }, - { file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028" }, -] - -[package.dependencies] -idna = ">=2.8" -sniffio = ">=1.1" - -[package.extras] -doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] -test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] -trio = ["trio (>=0.26.1)"] - -[[package]] -name = "appnope" -version = "0.1.4" -description = "Disable App Nap on macOS >= 10.9" -optional = false -python-versions = ">=3.6" -groups = ["dev"] -markers = "platform_system == \"Darwin\"" -files = [ - {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, - {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, -] - -[[package]] -name = "argon2-cffi" -version = "25.1.0" -description = "Argon2 for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741" }, - { file = "argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1" }, -] - -[package.dependencies] -argon2-cffi-bindings = "*" - -[[package]] -name = "argon2-cffi-bindings" -version = "21.2.0" -description = "Low-level CFFI bindings for Argon2" -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"}, - {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, -] - -[package.dependencies] -cffi = ">=1.0.1" - -[package.extras] -dev = ["cogapp", "pre-commit", "pytest", "wheel"] -tests = ["pytest"] - -[[package]] -name = "arrow" -version = "1.3.0" -description = "Better dates & times for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, - {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, -] - -[package.dependencies] -python-dateutil = ">=2.7.0" -types-python-dateutil = ">=2.8.10" - -[package.extras] -doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] -test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"] - -[[package]] -name = "asttokens" -version = "3.0.0" -description = "Annotate AST trees with source code positions" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2" }, - { file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7" }, -] - -[package.extras] -astroid = ["astroid (>=2,<4)"] -test = ["astroid (>=2,<4)", "pytest", "pytest-cov", "pytest-xdist"] - -[[package]] -name = "async-lru" -version = "2.0.5" -description = "Simple LRU cache for asyncio" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943" }, - { file = "async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb" }, -] - [[package]] name = "attrs" -version = "25.3.0" +version = "26.1.0" description = "Classes Without Boilerplate" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3" }, - { file = "attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b" }, + {file = "attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309"}, + {file = "attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32"}, ] -[package.extras] -benchmark = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -cov = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier"] -tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\""] - [[package]] name = "babel" -version = "2.17.0" +version = "2.18.0" description = "Internationalization utilities" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2" }, - { file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d" }, + {file = "babel-2.18.0-py3-none-any.whl", hash = "sha256:e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35"}, + {file = "babel-2.18.0.tar.gz", hash = "sha256:b80b99a14bd085fcacfa15c9165f651fbb3406e66cc603abf11c5750937c992d"}, ] [package.extras] @@ -184,331 +41,253 @@ dev = ["backports.zoneinfo ; python_version < \"3.9\"", "freezegun (>=1.0,<2.0)" [[package]] name = "backrefs" -version = "5.9" +version = "6.2" description = "A wrapper around re and regex that adds additional back references." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f" }, - { file = "backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf" }, - { file = "backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa" }, - { file = "backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b" }, - { file = "backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9" }, - { file = "backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60" }, - { file = "backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59" }, + {file = "backrefs-6.2-py310-none-any.whl", hash = "sha256:0fdc7b012420b6b144410342caeb8adc54c6866cf12064abc9bb211302e496f8"}, + {file = "backrefs-6.2-py311-none-any.whl", hash = "sha256:08aa7fae530c6b2361d7bdcbda1a7c454e330cc9dbcd03f5c23205e430e5c3be"}, + {file = "backrefs-6.2-py312-none-any.whl", hash = "sha256:c3f4b9cb2af8cda0d87ab4f57800b57b95428488477be164dd2b47be54db0c90"}, + {file = "backrefs-6.2-py313-none-any.whl", hash = "sha256:12df81596ab511f783b7d87c043ce26bc5b0288cf3bb03610fe76b8189282b2b"}, + {file = "backrefs-6.2-py314-none-any.whl", hash = "sha256:e5f805ae09819caa1aa0623b4a83790e7028604aa2b8c73ba602c4454e665de7"}, + {file = "backrefs-6.2-py39-none-any.whl", hash = "sha256:664e33cd88c6840b7625b826ecf2555f32d491800900f5a541f772c485f7cda7"}, + {file = "backrefs-6.2.tar.gz", hash = "sha256:f44ff4d48808b243b6c0cdc6231e22195c32f77046018141556c66f8bab72a49"}, ] [package.extras] extras = ["regex"] [[package]] -name = "beautifulsoup4" -version = "4.13.4" -description = "Screen-scraping library" -optional = false -python-versions = ">=3.7.0" -groups = ["dev"] -files = [ - { file = "beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b" }, - { file = "beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195" }, -] - -[package.dependencies] -soupsieve = ">1.2" -typing-extensions = ">=4.0.0" - -[package.extras] -cchardet = ["cchardet"] -chardet = ["chardet"] -charset-normalizer = ["charset-normalizer"] -html5lib = ["html5lib"] -lxml = ["lxml"] - -[[package]] -name = "bleach" -version = "6.2.0" -description = "An easy safelist-based HTML-sanitizing tool." +name = "boolean-py" +version = "5.0" +description = "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL." optional = false -python-versions = ">=3.9" +python-versions = "*" groups = ["dev"] files = [ - { file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e" }, - { file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f" }, + {file = "boolean_py-5.0-py3-none-any.whl", hash = "sha256:ef28a70bd43115208441b53a045d1549e2f0ec6e3d08a9d142cbc41c1938e8d9"}, + {file = "boolean_py-5.0.tar.gz", hash = "sha256:60cbc4bad079753721d32649545505362c754e121570ada4658b852a3a318d95"}, ] -[package.dependencies] -tinycss2 = { version = ">=1.1.0,<1.5", optional = true, markers = "extra == \"css\"" } -webencodings = "*" - [package.extras] -css = ["tinycss2 (>=1.1.0,<1.5)"] +dev = ["build", "twine"] +docs = ["Sphinx (>=3.3.1)", "doc8 (>=0.8.1)", "sphinx-rtd-theme (>=0.5.0)", "sphinxcontrib-apidoc (>=0.3.0)"] +linting = ["black", "isort", "pycodestyle"] +testing = ["pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"] [[package]] name = "certifi" -version = "2025.7.14" +version = "2026.1.4" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.7" groups = ["main", "dev"] files = [ - { file = "certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2" }, - { file = "certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995" }, -] - -[[package]] -name = "cffi" -version = "1.17.1" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, - {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, - {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, - {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, - {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, - {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, - {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, - {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, - {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, - {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, - {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, - {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, - {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, - {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, - {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, - {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, + {file = "certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c"}, + {file = "certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120"}, ] -[package.dependencies] -pycparser = "*" - [[package]] name = "cfgv" -version = "3.4.0" +version = "3.5.0" description = "Validate configuration and produce human readable error messages." optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, - {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, + {file = "cfgv-3.5.0-py2.py3-none-any.whl", hash = "sha256:a8dc6b26ad22ff227d2634a65cb388215ce6cc96bbcc5cfde7641ae87e8dacc0"}, + {file = "cfgv-3.5.0.tar.gz", hash = "sha256:d5b1034354820651caa73ede66a6294d6e95c1b00acc5e9b098e917404669132"}, ] [[package]] name = "cftime" -version = "1.6.4.post1" +version = "1.6.5" description = "Time-handling functionality from netcdf4-python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" groups = ["main"] files = [ - {file = "cftime-1.6.4.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0baa9bc4850929da9f92c25329aa1f651e2d6f23e237504f337ee9e12a769f5d"}, - {file = "cftime-1.6.4.post1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6bb6b087f4b2513c37670bccd457e2a666ca489c5f2aad6e2c0e94604dc1b5b9"}, - {file = "cftime-1.6.4.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d9bdeb9174962c9ca00015190bfd693de6b0ec3ec0b3dbc35c693a4f48efdcc"}, - {file = "cftime-1.6.4.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e735cfd544878eb94d0108ff5a093bd1a332dba90f979a31a357756d609a90d5"}, - {file = "cftime-1.6.4.post1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1dcd1b140bf50da6775c56bd7ca179e84bd258b2f159b53eefd5c514b341f2bf"}, - {file = "cftime-1.6.4.post1-cp310-cp310-win_amd64.whl", hash = "sha256:e60b8f24b20753f7548f410f7510e28b941f336f84bd34e3cfd7874af6e70281"}, - {file = "cftime-1.6.4.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1bf7be0a0afc87628cb8c8483412aac6e48e83877004faa0936afb5bf8a877ba"}, - {file = "cftime-1.6.4.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f64ca83acc4e3029f737bf3a32530ffa1fbf53124f5bee70b47548bc58671a7"}, - {file = "cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ebdfd81726b0cfb8b524309224fa952898dfa177c13d5f6af5b18cefbf497d"}, - {file = "cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ea0965a4c87739aebd84fe8eed966e5809d10065eeffd35c99c274b6f8da15"}, - {file = "cftime-1.6.4.post1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:800a18aea4e8cb2b206450397cb8a53b154798738af3cdd3c922ce1ca198b0e6"}, - {file = "cftime-1.6.4.post1-cp311-cp311-win_amd64.whl", hash = "sha256:5dcfc872f455db1f12eabe3c3ba98e93757cd60ed3526a53246e966ccde46c8a"}, - {file = "cftime-1.6.4.post1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a590f73506f4704ba5e154ef55bfbaed5e1b4ac170f3caeb8c58e4f2c619ee4e"}, - {file = "cftime-1.6.4.post1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:933cb10e1af4e362e77f513e3eb92b34a688729ddbf938bbdfa5ac20a7f44ba0"}, - {file = "cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf17a1b36f62e9e73c4c9363dd811e1bbf1170f5ac26d343fb26012ccf482908"}, - {file = "cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e18021f421aa26527bad8688c1acf0c85fa72730beb6efce969c316743294f2"}, - {file = "cftime-1.6.4.post1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5835b9d622f9304d1c23a35603a0f068739f428d902860f25e6e7e5a1b7cd8ea"}, - {file = "cftime-1.6.4.post1-cp312-cp312-win_amd64.whl", hash = "sha256:7f50bf0d1b664924aaee636eb2933746b942417d1f8b82ab6c1f6e8ba0da6885"}, - {file = "cftime-1.6.4.post1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5c89766ebf088c097832ea618c24ed5075331f0b7bf8e9c2d4144aefbf2f1850"}, - {file = "cftime-1.6.4.post1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7f27113f7ccd1ca32881fdcb9a4bec806a5f54ae621fc1c374f1171f3ed98ef2"}, - {file = "cftime-1.6.4.post1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da367b23eea7cf4df071c88e014a1600d6c5bbf22e3393a4af409903fa397e28"}, - {file = "cftime-1.6.4.post1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6579c5c83cdf09d73aa94c7bc34925edd93c5f2c7dd28e074f568f7e376271a0"}, - {file = "cftime-1.6.4.post1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6b731c7133d17b479ca0c3c46a7a04f96197f0a4d753f4c2284c3ff0447279b4"}, - {file = "cftime-1.6.4.post1-cp313-cp313-win_amd64.whl", hash = "sha256:d2a8c223faea7f1248ab469cc0d7795dd46f2a423789038f439fee7190bae259"}, - {file = "cftime-1.6.4.post1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9df3e2d49e548c62d1939e923800b08d2ab732d3ac8d75b857edd7982c878552"}, - {file = "cftime-1.6.4.post1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2892b7e7654142d825655f60eb66c3e1af745901890316907071d44cf9a18d8a"}, - {file = "cftime-1.6.4.post1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4ab54e6c04e68395d454cd4001188fc4ade2fe48035589ed65af80c4527ef08"}, - {file = "cftime-1.6.4.post1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:568b69fc52f406e361db62a4d7a219c6fb0ced138937144c3b3a511648dd6c50"}, - {file = "cftime-1.6.4.post1-cp38-cp38-win_amd64.whl", hash = "sha256:640911d2629f4a8f81f6bc0163a983b6b94f86d1007449b8cbfd926136cda253"}, - {file = "cftime-1.6.4.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:44e9f8052600803b55f8cb6bcac2be49405c21efa900ec77a9fb7f692db2f7a6"}, - {file = "cftime-1.6.4.post1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a90b6ef4a3fc65322c212a2c99cec75d1886f1ebaf0ff6189f7b327566762222"}, - {file = "cftime-1.6.4.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:652700130dbcca3ae36dbb5b61ff360e62aa09fabcabc42ec521091a14389901"}, - {file = "cftime-1.6.4.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a7fb6cc541a027dab37fdeb695f8a2b21cd7d200be606f81b5abc38f2391e2"}, - {file = "cftime-1.6.4.post1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:fc2c0abe2dbd147e1b1e6d0f3de19a5ea8b04956acc204830fd8418066090989"}, - {file = "cftime-1.6.4.post1-cp39-cp39-win_amd64.whl", hash = "sha256:0ee2f5af8643aa1b47b7e388763a1a6e0dc05558cd2902cffb9cbcf954397648"}, - {file = "cftime-1.6.4.post1.tar.gz", hash = "sha256:50ac76cc9f10ab7bd46e44a71c51a6927051b499b4407df4f29ab13d741b942f"}, -] - -[package.dependencies] -numpy = {version = ">=1.26.0b1", markers = "python_version >= \"3.12.0.rc1\""} + {file = "cftime-1.6.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8ad81e8cb0eb873b33c3d1e22c6168163fdc64daa8f7aeb4da8092f272575f4d"}, + {file = "cftime-1.6.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:12d95c6af852114a13301c5a61e41afdbd1542e72939c1083796f8418b9b8b0e"}, + {file = "cftime-1.6.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2659b7df700e27d9e3671f686ce474dfb5fc274966961edf996acc148dfa094a"}, + {file = "cftime-1.6.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:94cebdfcda6a985b8e69aed22d00d6b8aa1f421495adbdcff1d59b3e896d81e2"}, + {file = "cftime-1.6.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:179681b023349a2fe277ceccc89d4fc52c0dd105cb59b7187b5bc5d442875133"}, + {file = "cftime-1.6.5-cp310-cp310-win_amd64.whl", hash = "sha256:d8b9fdecb466879cfe8ca4472b229b6f8d0bb65e4ffd44266ae17484bac2cf38"}, + {file = "cftime-1.6.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:474e728f5a387299418f8d7cb9c52248dcd5d977b2a01de7ec06bba572e26b02"}, + {file = "cftime-1.6.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ab9e80d4de815cac2e2d88a2335231254980e545d0196eb34ee8f7ed612645f1"}, + {file = "cftime-1.6.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ad24a563784e4795cb3d04bd985895b5db49ace2cbb71fcf1321fd80141f9a52"}, + {file = "cftime-1.6.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a3cda6fd12c7fb25eff40a6a857a2bf4d03e8cc71f80485d8ddc65ccbd80f16a"}, + {file = "cftime-1.6.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:28cda78d685397ba23d06273b9c916c3938d8d9e6872a537e76b8408a321369b"}, + {file = "cftime-1.6.5-cp311-cp311-win_amd64.whl", hash = "sha256:93ead088e3a216bdeb9368733a0ef89a7451dfc1d2de310c1c0366a56ad60dc8"}, + {file = "cftime-1.6.5-cp311-cp311-win_arm64.whl", hash = "sha256:3384d69a0a7f3d45bded21a8cbcce66c8ba06c13498eac26c2de41b1b9b6e890"}, + {file = "cftime-1.6.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:eef25caed5ebd003a38719bd3ff8847cd52ef2ea56c3ebdb2c9345ba131fc7c5"}, + {file = "cftime-1.6.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c87d2f3b949e45463e559233c69e6a9cf691b2b378c1f7556166adfabbd1c6b0"}, + {file = "cftime-1.6.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:82cb413973cc51b55642b3a1ca5b28db5b93a294edbef7dc049c074b478b4647"}, + {file = "cftime-1.6.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:85ba8e7356d239cfe56ef7707ac30feaf67964642ac760a82e507ee3c5db4ac4"}, + {file = "cftime-1.6.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:456039af7907a3146689bb80bfd8edabd074c7f3b4eca61f91b9c2670addd7ad"}, + {file = "cftime-1.6.5-cp312-cp312-win_amd64.whl", hash = "sha256:da84534c43699960dc980a9a765c33433c5de1a719a4916748c2d0e97a071e44"}, + {file = "cftime-1.6.5-cp312-cp312-win_arm64.whl", hash = "sha256:c62cd8db9ea40131eea7d4523691c5d806d3265d31279e4a58574a42c28acd77"}, + {file = "cftime-1.6.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4aba66fd6497711a47c656f3a732c2d1755ad15f80e323c44a8716ebde39ddd5"}, + {file = "cftime-1.6.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:89e7cba699242366e67d6fb5aee579440e791063f92a93853610c91647167c0d"}, + {file = "cftime-1.6.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2f1eb43d7a7b919ec99aee709fb62ef87ef1cf0679829ef93d37cc1c725781e9"}, + {file = "cftime-1.6.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e02a1d80ffc33fe469c7db68aa24c4a87f01da0c0c621373e5edadc92964900b"}, + {file = "cftime-1.6.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18ab754805233cdd889614b2b3b86a642f6d51a57a1ec327c48053f3414f87d8"}, + {file = "cftime-1.6.5-cp313-cp313-win_amd64.whl", hash = "sha256:6c27add8f907f4a4cd400e89438f2ea33e2eb5072541a157a4d013b7dbe93f9c"}, + {file = "cftime-1.6.5-cp313-cp313-win_arm64.whl", hash = "sha256:31d1ff8f6bbd4ca209099d24459ec16dea4fb4c9ab740fbb66dd057ccbd9b1b9"}, + {file = "cftime-1.6.5-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:c69ce3bdae6a322cbb44e9ebc20770d47748002fb9d68846a1e934f1bd5daf0b"}, + {file = "cftime-1.6.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e62e9f2943e014c5ef583245bf2e878398af131c97e64f8cd47c1d7baef5c4e2"}, + {file = "cftime-1.6.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7da5fdaa4360d8cb89b71b8ded9314f2246aa34581e8105c94ad58d6102d9e4f"}, + {file = "cftime-1.6.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bff865b4ea4304f2744a1ad2b8149b8328b321dd7a2b9746ef926d229bd7cd49"}, + {file = "cftime-1.6.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e552c5d1c8a58f25af7521e49237db7ca52ed2953e974fe9f7c4491e95fdd36c"}, + {file = "cftime-1.6.5-cp314-cp314-win_amd64.whl", hash = "sha256:e645b095dc50a38ac454b7e7f0742f639e7d7f6b108ad329358544a6ff8c9ba2"}, + {file = "cftime-1.6.5-cp314-cp314-win_arm64.whl", hash = "sha256:b9044d7ac82d3d8af189df1032fdc871bbd3f3dd41a6ec79edceb5029b71e6e0"}, + {file = "cftime-1.6.5-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:9ef56460cb0576e1a9161e1428c9e1a633f809a23fa9d598f313748c1ae5064e"}, + {file = "cftime-1.6.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:4f4873d38b10032f9f3111c547a1d485519ae64eee6a7a2d091f1f8b08e1ba50"}, + {file = "cftime-1.6.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ccce0f4c9d3f38dd948a117e578b50d0e0db11e2ca9435fb358fd524813e4b61"}, + {file = "cftime-1.6.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:19cbfc5152fb0b34ce03acf9668229af388d7baa63a78f936239cb011ccbe6b1"}, + {file = "cftime-1.6.5-cp314-cp314t-win_amd64.whl", hash = "sha256:4470cd5ef3c2514566f53efbcbb64dd924fa0584637d90285b2f983bd4ee7d97"}, + {file = "cftime-1.6.5-cp314-cp314t-win_arm64.whl", hash = "sha256:034c15a67144a0a5590ef150c99f844897618b148b87131ed34fda7072614662"}, + {file = "cftime-1.6.5.tar.gz", hash = "sha256:8225fed6b9b43fb87683ebab52130450fc1730011150d3092096a90e54d1e81e"}, +] + +[package.dependencies] +numpy = ">=1.21.2" [[package]] name = "charset-normalizer" -version = "3.4.2" +version = "3.4.4" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - { file = "charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-win32.whl", hash = "sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cad5f45b3146325bb38d6855642f6fd609c3f7cad4dbaf75549bf3b904d3184" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2680962a4848b3c4f155dc2ee64505a9c57186d0d56b43123b17ca3de18f0fa" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:36b31da18b8890a76ec181c3cf44326bf2c48e36d393ca1b72b3f484113ea344" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4074c5a429281bf056ddd4c5d3b740ebca4d43ffffe2ef4bf4d2d05114299da" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9e36a97bee9b86ef9a1cf7bb96747eb7a15c2f22bdb5b516434b00f2a599f02" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:1b1bde144d98e446b056ef98e59c256e9294f6b74d7af6846bf5ffdafd687a7d" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:915f3849a011c1f593ab99092f3cecfcb4d65d8feb4a64cf1bf2d22074dc0ec4" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:fb707f3e15060adf5b7ada797624a6c6e0138e2a26baa089df64c68ee98e040f" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:25a23ea5c7edc53e0f29bae2c44fcb5a1aa10591aae107f2a2b2583a9c5cbc64" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:770cab594ecf99ae64c236bc9ee3439c3f46be49796e265ce0cc8bc17b10294f" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-win32.whl", hash = "sha256:6a0289e4589e8bdfef02a80478f1dfcb14f0ab696b5a00e1f4b8a14a307a3c58" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6fc1f5b51fa4cecaa18f2bd7a003f3dd039dd615cd69a2afd6d3b19aed6775f2" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76af085e67e56c8816c3ccf256ebd136def2ed9654525348cfa744b6802b69eb" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45ba65510e2647721e35323d6ef54c7974959f6081b58d4ef5d87c60c84919a" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:046595208aae0120559a67693ecc65dd75d46f7bf687f159127046628178dc45" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75d10d37a47afee94919c4fab4c22b9bc2a8bf7d4f46f87363bcf0573f3ff4f5" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6333b3aa5a12c26b2a4d4e7335a28f1475e0e5e17d69d55141ee3cab736f66d1" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8323a9b031aa0393768b87f04b4164a40037fb2a3c11ac06a03ffecd3618027" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:24498ba8ed6c2e0b56d4acbf83f2d989720a93b41d712ebd4f4979660db4417b" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:844da2b5728b5ce0e32d863af26f32b5ce61bc4273a9c720a9f3aa9df73b1455" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:65c981bdbd3f57670af8b59777cbfae75364b483fa8a9f420f08094531d54a01" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3c21d4fca343c805a52c0c78edc01e3477f6dd1ad7c47653241cf2a206d4fc58" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dc7039885fa1baf9be153a0626e337aa7ec8bf96b0128605fb0d77788ddc1681" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-win32.whl", hash = "sha256:8272b73e1c5603666618805fe821edba66892e2870058c94c53147602eab29c7" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:70f7172939fdf8790425ba31915bfbe8335030f05b9913d7ae00a87d4395620a" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:005fa3432484527f9732ebd315da8da8001593e2cf46a3d817669f062c3d9ed4" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e92fca20c46e9f5e1bb485887d074918b13543b1c2a1185e69bb8d17ab6236a7" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50bf98d5e563b83cc29471fa114366e6806bc06bc7a25fd59641e41445327836" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:721c76e84fe669be19c5791da68232ca2e05ba5185575086e384352e2c309597" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82d8fd25b7f4675d0c47cf95b594d4e7b158aca33b76aa63d07186e13c0e0ab7" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3daeac64d5b371dea99714f08ffc2c208522ec6b06fbc7866a450dd446f5c0f" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dccab8d5fa1ef9bfba0590ecf4d46df048d18ffe3eec01eeb73a42e0d9e7a8ba" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:aaf27faa992bfee0264dc1f03f4c75e9fcdda66a519db6b957a3f826e285cf12" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:eb30abc20df9ab0814b5a2524f23d75dcf83cde762c161917a2b4b7b55b1e518" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:c72fbbe68c6f32f251bdc08b8611c7b3060612236e960ef848e0a517ddbe76c5" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:982bb1e8b4ffda883b3d0a521e23abcd6fd17418f6d2c4118d257a10199c0ce3" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-win32.whl", hash = "sha256:43e0933a0eff183ee85833f341ec567c0980dae57c464d8a508e1b2ceb336471" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:d11b54acf878eef558599658b0ffca78138c8c3655cf4f3a4a673c437e67732e" }, - { file = "charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0" }, - { file = "charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63" }, + {file = "charset_normalizer-3.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-win32.whl", hash = "sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-win_arm64.whl", hash = "sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-win32.whl", hash = "sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ce8a0633f41a967713a59c4139d29110c07e826d131a316b50ce11b1d79b4f84"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaabd426fe94daf8fd157c32e571c85cb12e66692f15516a83a03264b08d06c3"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c4ef880e27901b6cc782f1b95f82da9313c0eb95c3af699103088fa0ac3ce9ac"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2aaba3b0819274cc41757a1da876f810a3e4d7b6eb25699253a4effef9e8e4af"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:778d2e08eda00f4256d7f672ca9fef386071c9202f5e4607920b86d7803387f2"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f155a433c2ec037d4e8df17d18922c3a0d9b3232a396690f17175d2946f0218d"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a8bf8d0f749c5757af2142fe7903a9df1d2e8aa3841559b2bad34b08d0e2bcf3"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:194f08cbb32dc406d6e1aea671a68be0823673db2832b38405deba2fb0d88f63"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:6aee717dcfead04c6eb1ce3bd29ac1e22663cdea57f943c87d1eab9a025438d7"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:cd4b7ca9984e5e7985c12bc60a6f173f3c958eae74f3ef6624bb6b26e2abbae4"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_riscv64.whl", hash = "sha256:b7cf1017d601aa35e6bb650b6ad28652c9cd78ee6caff19f3c28d03e1c80acbf"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e912091979546adf63357d7e2ccff9b44f026c075aeaf25a52d0e95ad2281074"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5cb4d72eea50c8868f5288b7f7f33ed276118325c1dfd3957089f6b519e1382a"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-win32.whl", hash = "sha256:837c2ce8c5a65a2035be9b3569c684358dfbf109fd3b6969630a87535495ceaa"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:44c2a8734b333e0578090c4cd6b16f275e07aa6614ca8715e6c038e865e70576"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a9768c477b9d7bd54bc0c86dbaebdec6f03306675526c9927c0e8a04e8f94af9"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1bee1e43c28aa63cb16e5c14e582580546b08e535299b8b6158a7c9c768a1f3d"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fd44c878ea55ba351104cb93cc85e74916eb8fa440ca7903e57575e97394f608"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f04b14ffe5fdc8c4933862d8306109a2c51e0704acfa35d51598eb45a1e89fc"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:cd09d08005f958f370f539f186d10aec3377d55b9eeb0d796025d4886119d76e"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4fe7859a4e3e8457458e2ff592f15ccb02f3da787fcd31e0183879c3ad4692a1"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fa09f53c465e532f4d3db095e0c55b615f010ad81803d383195b6b5ca6cbf5f3"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7fa17817dc5625de8a027cb8b26d9fefa3ea28c8253929b8d6649e705d2835b6"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:5947809c8a2417be3267efc979c47d76a079758166f7d43ef5ae8e9f92751f88"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:4902828217069c3c5c71094537a8e623f5d097858ac6ca8252f7b4d10b7560f1"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:7c308f7e26e4363d79df40ca5b2be1c6ba9f02bdbccfed5abddb7859a6ce72cf"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2c9d3c380143a1fedbff95a312aa798578371eb29da42106a29019368a475318"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cb01158d8b88ee68f15949894ccc6712278243d95f344770fa7593fa2d94410c"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-win32.whl", hash = "sha256:2677acec1a2f8ef614c6888b5b4ae4060cc184174a938ed4e8ef690e15d3e505"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:f8e160feb2aed042cd657a72acc0b481212ed28b1b9a95c0cee1621b524e1966"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-win_arm64.whl", hash = "sha256:b5d84d37db046c5ca74ee7bb47dd6cbc13f80665fdde3e8040bdd3fb015ecb50"}, + {file = "charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f"}, + {file = "charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a"}, ] [[package]] name = "click" -version = "8.2.1" +version = "8.3.1" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.10" groups = ["main", "dev"] files = [ - { file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b" }, - { file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202" }, + {file = "click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6"}, + {file = "click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a"}, ] [package.dependencies] @@ -516,14 +295,14 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "cloudpickle" -version = "3.1.1" +version = "3.1.2" description = "Pickler class to extend the standard pickle.Pickler functionality" optional = false python-versions = ">=3.8" groups = ["main"] files = [ - { file = "cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e" }, - { file = "cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64" }, + {file = "cloudpickle-3.1.2-py3-none-any.whl", hash = "sha256:9acb47f6afd73f60dc1df93bb801b472f05ff42fa6c84167d25cb206be1fbf4a"}, + {file = "cloudpickle-3.1.2.tar.gz", hash = "sha256:7fda9eb655c9c230dab534f1983763de5835249750e85fbcef43aaa30a9a2414"}, ] [[package]] @@ -537,251 +316,155 @@ files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -markers = { main = "platform_system == \"Windows\" or sys_platform == \"win32\"" } +markers = {main = "platform_system == \"Windows\" or sys_platform == \"win32\""} [[package]] name = "colorlog" -version = "6.9.0" +version = "6.10.1" description = "Add colours to the output of Python's logging module." optional = false python-versions = ">=3.6" groups = ["main"] files = [ - { file = "colorlog-6.9.0-py3-none-any.whl", hash = "sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff" }, - { file = "colorlog-6.9.0.tar.gz", hash = "sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2" }, + {file = "colorlog-6.10.1-py3-none-any.whl", hash = "sha256:2d7e8348291948af66122cff006c9f8da6255d224e7cf8e37d8de2df3bad8c9c"}, + {file = "colorlog-6.10.1.tar.gz", hash = "sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321"}, ] [package.dependencies] -colorama = { version = "*", markers = "sys_platform == \"win32\"" } +colorama = {version = "*", markers = "sys_platform == \"win32\""} [package.extras] development = ["black", "flake8", "mypy", "pytest", "types-colorama"] -[[package]] -name = "comm" -version = "0.2.2" -description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, - {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, -] - -[package.dependencies] -traitlets = ">=4" - -[package.extras] -test = ["pytest"] - [[package]] name = "coverage" -version = "7.9.2" +version = "7.13.4" description = "Code coverage measurement for Python" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ - { file = "coverage-7.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:66283a192a14a3854b2e7f3418d7db05cdf411012ab7ff5db98ff3b181e1f912" }, - { file = "coverage-7.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4e01d138540ef34fcf35c1aa24d06c3de2a4cffa349e29a10056544f35cca15f" }, - { file = "coverage-7.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f22627c1fe2745ee98d3ab87679ca73a97e75ca75eb5faee48660d060875465f" }, - { file = "coverage-7.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b1c2d8363247b46bd51f393f86c94096e64a1cf6906803fa8d5a9d03784bdbf" }, - { file = "coverage-7.9.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c10c882b114faf82dbd33e876d0cbd5e1d1ebc0d2a74ceef642c6152f3f4d547" }, - { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:de3c0378bdf7066c3988d66cd5232d161e933b87103b014ab1b0b4676098fa45" }, - { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1e2f097eae0e5991e7623958a24ced3282676c93c013dde41399ff63e230fcf2" }, - { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:28dc1f67e83a14e7079b6cea4d314bc8b24d1aed42d3582ff89c0295f09b181e" }, - { file = "coverage-7.9.2-cp310-cp310-win32.whl", hash = "sha256:bf7d773da6af9e10dbddacbf4e5cab13d06d0ed93561d44dae0188a42c65be7e" }, - { file = "coverage-7.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:0c0378ba787681ab1897f7c89b415bd56b0b2d9a47e5a3d8dc0ea55aac118d6c" }, - { file = "coverage-7.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a7a56a2964a9687b6aba5b5ced6971af308ef6f79a91043c05dd4ee3ebc3e9ba" }, - { file = "coverage-7.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:123d589f32c11d9be7fe2e66d823a236fe759b0096f5db3fb1b75b2fa414a4fa" }, - { file = "coverage-7.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:333b2e0ca576a7dbd66e85ab402e35c03b0b22f525eed82681c4b866e2e2653a" }, - { file = "coverage-7.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:326802760da234baf9f2f85a39e4a4b5861b94f6c8d95251f699e4f73b1835dc" }, - { file = "coverage-7.9.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19e7be4cfec248df38ce40968c95d3952fbffd57b400d4b9bb580f28179556d2" }, - { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0b4a4cb73b9f2b891c1788711408ef9707666501ba23684387277ededab1097c" }, - { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:2c8937fa16c8c9fbbd9f118588756e7bcdc7e16a470766a9aef912dd3f117dbd" }, - { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:42da2280c4d30c57a9b578bafd1d4494fa6c056d4c419d9689e66d775539be74" }, - { file = "coverage-7.9.2-cp311-cp311-win32.whl", hash = "sha256:14fa8d3da147f5fdf9d298cacc18791818f3f1a9f542c8958b80c228320e90c6" }, - { file = "coverage-7.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:549cab4892fc82004f9739963163fd3aac7a7b0df430669b75b86d293d2df2a7" }, - { file = "coverage-7.9.2-cp311-cp311-win_arm64.whl", hash = "sha256:c2667a2b913e307f06aa4e5677f01a9746cd08e4b35e14ebcde6420a9ebb4c62" }, - { file = "coverage-7.9.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ae9eb07f1cfacd9cfe8eaee6f4ff4b8a289a668c39c165cd0c8548484920ffc0" }, - { file = "coverage-7.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9ce85551f9a1119f02adc46d3014b5ee3f765deac166acf20dbb851ceb79b6f3" }, - { file = "coverage-7.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8f6389ac977c5fb322e0e38885fbbf901743f79d47f50db706e7644dcdcb6e1" }, - { file = "coverage-7.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff0d9eae8cdfcd58fe7893b88993723583a6ce4dfbfd9f29e001922544f95615" }, - { file = "coverage-7.9.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fae939811e14e53ed8a9818dad51d434a41ee09df9305663735f2e2d2d7d959b" }, - { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:31991156251ec202c798501e0a42bbdf2169dcb0f137b1f5c0f4267f3fc68ef9" }, - { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d0d67963f9cbfc7c7f96d4ac74ed60ecbebd2ea6eeb51887af0f8dce205e545f" }, - { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:49b752a2858b10580969ec6af6f090a9a440a64a301ac1528d7ca5f7ed497f4d" }, - { file = "coverage-7.9.2-cp312-cp312-win32.whl", hash = "sha256:88d7598b8ee130f32f8a43198ee02edd16d7f77692fa056cb779616bbea1b355" }, - { file = "coverage-7.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:9dfb070f830739ee49d7c83e4941cc767e503e4394fdecb3b54bfdac1d7662c0" }, - { file = "coverage-7.9.2-cp312-cp312-win_arm64.whl", hash = "sha256:4e2c058aef613e79df00e86b6d42a641c877211384ce5bd07585ed7ba71ab31b" }, - { file = "coverage-7.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:985abe7f242e0d7bba228ab01070fde1d6c8fa12f142e43debe9ed1dde686038" }, - { file = "coverage-7.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82c3939264a76d44fde7f213924021ed31f55ef28111a19649fec90c0f109e6d" }, - { file = "coverage-7.9.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae5d563e970dbe04382f736ec214ef48103d1b875967c89d83c6e3f21706d5b3" }, - { file = "coverage-7.9.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bdd612e59baed2a93c8843c9a7cb902260f181370f1d772f4842987535071d14" }, - { file = "coverage-7.9.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:256ea87cb2a1ed992bcdfc349d8042dcea1b80436f4ddf6e246d6bee4b5d73b6" }, - { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f44ae036b63c8ea432f610534a2668b0c3aee810e7037ab9d8ff6883de480f5b" }, - { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:82d76ad87c932935417a19b10cfe7abb15fd3f923cfe47dbdaa74ef4e503752d" }, - { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:619317bb86de4193debc712b9e59d5cffd91dc1d178627ab2a77b9870deb2868" }, - { file = "coverage-7.9.2-cp313-cp313-win32.whl", hash = "sha256:0a07757de9feb1dfafd16ab651e0f628fd7ce551604d1bf23e47e1ddca93f08a" }, - { file = "coverage-7.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:115db3d1f4d3f35f5bb021e270edd85011934ff97c8797216b62f461dd69374b" }, - { file = "coverage-7.9.2-cp313-cp313-win_arm64.whl", hash = "sha256:48f82f889c80af8b2a7bb6e158d95a3fbec6a3453a1004d04e4f3b5945a02694" }, - { file = "coverage-7.9.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:55a28954545f9d2f96870b40f6c3386a59ba8ed50caf2d949676dac3ecab99f5" }, - { file = "coverage-7.9.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cdef6504637731a63c133bb2e6f0f0214e2748495ec15fe42d1e219d1b133f0b" }, - { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcd5ebe66c7a97273d5d2ddd4ad0ed2e706b39630ed4b53e713d360626c3dbb3" }, - { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9303aed20872d7a3c9cb39c5d2b9bdbe44e3a9a1aecb52920f7e7495410dfab8" }, - { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc18ea9e417a04d1920a9a76fe9ebd2f43ca505b81994598482f938d5c315f46" }, - { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6406cff19880aaaadc932152242523e892faff224da29e241ce2fca329866584" }, - { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2d0d4f6ecdf37fcc19c88fec3e2277d5dee740fb51ffdd69b9579b8c31e4232e" }, - { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c33624f50cf8de418ab2b4d6ca9eda96dc45b2c4231336bac91454520e8d1fac" }, - { file = "coverage-7.9.2-cp313-cp313t-win32.whl", hash = "sha256:1df6b76e737c6a92210eebcb2390af59a141f9e9430210595251fbaf02d46926" }, - { file = "coverage-7.9.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f5fd54310b92741ebe00d9c0d1d7b2b27463952c022da6d47c175d246a98d1bd" }, - { file = "coverage-7.9.2-cp313-cp313t-win_arm64.whl", hash = "sha256:c48c2375287108c887ee87d13b4070a381c6537d30e8487b24ec721bf2a781cb" }, - { file = "coverage-7.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ddc39510ac922a5c4c27849b739f875d3e1d9e590d1e7b64c98dadf037a16cce" }, - { file = "coverage-7.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a535c0c7364acd55229749c2b3e5eebf141865de3a8f697076a3291985f02d30" }, - { file = "coverage-7.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df0f9ef28e0f20c767ccdccfc5ae5f83a6f4a2fbdfbcbcc8487a8a78771168c8" }, - { file = "coverage-7.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f3da12e0ccbcb348969221d29441ac714bbddc4d74e13923d3d5a7a0bebef7a" }, - { file = "coverage-7.9.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a17eaf46f56ae0f870f14a3cbc2e4632fe3771eab7f687eda1ee59b73d09fe4" }, - { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:669135a9d25df55d1ed56a11bf555f37c922cf08d80799d4f65d77d7d6123fcf" }, - { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:9d3a700304d01a627df9db4322dc082a0ce1e8fc74ac238e2af39ced4c083193" }, - { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:71ae8b53855644a0b1579d4041304ddc9995c7b21c8a1f16753c4d8903b4dfed" }, - { file = "coverage-7.9.2-cp39-cp39-win32.whl", hash = "sha256:dd7a57b33b5cf27acb491e890720af45db05589a80c1ffc798462a765be6d4d7" }, - { file = "coverage-7.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:f65bb452e579d5540c8b37ec105dd54d8b9307b07bcaa186818c104ffda22441" }, - { file = "coverage-7.9.2-pp39.pp310.pp311-none-any.whl", hash = "sha256:8a1166db2fb62473285bcb092f586e081e92656c7dfa8e9f62b4d39d7e6b5050" }, - { file = "coverage-7.9.2-py3-none-any.whl", hash = "sha256:e425cd5b00f6fc0ed7cdbd766c70be8baab4b7839e4d4fe5fac48581dd968ea4" }, - { file = "coverage-7.9.2.tar.gz", hash = "sha256:997024fa51e3290264ffd7492ec97d0690293ccd2b45a6cd7d82d945a4a80c8b" }, + {file = "coverage-7.13.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0fc31c787a84f8cd6027eba44010517020e0d18487064cd3d8968941856d1415"}, + {file = "coverage-7.13.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a32ebc02a1805adf637fc8dec324b5cdacd2e493515424f70ee33799573d661b"}, + {file = "coverage-7.13.4-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e24f9156097ff9dc286f2f913df3a7f63c0e333dcafa3c196f2c18b4175ca09a"}, + {file = "coverage-7.13.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8041b6c5bfdc03257666e9881d33b1abc88daccaf73f7b6340fb7946655cd10f"}, + {file = "coverage-7.13.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2a09cfa6a5862bc2fc6ca7c3def5b2926194a56b8ab78ffcf617d28911123012"}, + {file = "coverage-7.13.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:296f8b0af861d3970c2a4d8c91d48eb4dd4771bcef9baedec6a9b515d7de3def"}, + {file = "coverage-7.13.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e101609bcbbfb04605ea1027b10dc3735c094d12d40826a60f897b98b1c30256"}, + {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:aa3feb8db2e87ff5e6d00d7e1480ae241876286691265657b500886c98f38bda"}, + {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4fc7fa81bbaf5a02801b65346c8b3e657f1d93763e58c0abdf7c992addd81a92"}, + {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:33901f604424145c6e9c2398684b92e176c0b12df77d52db81c20abd48c3794c"}, + {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:bb28c0f2cf2782508a40cec377935829d5fcc3ad9a3681375af4e84eb34b6b58"}, + {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9d107aff57a83222ddbd8d9ee705ede2af2cc926608b57abed8ef96b50b7e8f9"}, + {file = "coverage-7.13.4-cp310-cp310-win32.whl", hash = "sha256:a6f94a7d00eb18f1b6d403c91a88fd58cfc92d4b16080dfdb774afc8294469bf"}, + {file = "coverage-7.13.4-cp310-cp310-win_amd64.whl", hash = "sha256:2cb0f1e000ebc419632bbe04366a8990b6e32c4e0b51543a6484ffe15eaeda95"}, + {file = "coverage-7.13.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d490ba50c3f35dd7c17953c68f3270e7ccd1c6642e2d2afe2d8e720b98f5a053"}, + {file = "coverage-7.13.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:19bc3c88078789f8ef36acb014d7241961dbf883fd2533d18cb1e7a5b4e28b11"}, + {file = "coverage-7.13.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3998e5a32e62fdf410c0dbd3115df86297995d6e3429af80b8798aad894ca7aa"}, + {file = "coverage-7.13.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8e264226ec98e01a8e1054314af91ee6cde0eacac4f465cc93b03dbe0bce2fd7"}, + {file = "coverage-7.13.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a3aa4e7b9e416774b21797365b358a6e827ffadaaca81b69ee02946852449f00"}, + {file = "coverage-7.13.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:71ca20079dd8f27fcf808817e281e90220475cd75115162218d0e27549f95fef"}, + {file = "coverage-7.13.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e2f25215f1a359ab17320b47bcdaca3e6e6356652e8256f2441e4ef972052903"}, + {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d65b2d373032411e86960604dc4edac91fdfb5dca539461cf2cbe78327d1e64f"}, + {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94eb63f9b363180aff17de3e7c8760c3ba94664ea2695c52f10111244d16a299"}, + {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e856bf6616714c3a9fbc270ab54103f4e685ba236fa98c054e8f87f266c93505"}, + {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:65dfcbe305c3dfe658492df2d85259e0d79ead4177f9ae724b6fb245198f55d6"}, + {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b507778ae8a4c915436ed5c2e05b4a6cecfa70f734e19c22a005152a11c7b6a9"}, + {file = "coverage-7.13.4-cp311-cp311-win32.whl", hash = "sha256:784fc3cf8be001197b652d51d3fd259b1e2262888693a4636e18879f613a62a9"}, + {file = "coverage-7.13.4-cp311-cp311-win_amd64.whl", hash = "sha256:2421d591f8ca05b308cf0092807308b2facbefe54af7c02ac22548b88b95c98f"}, + {file = "coverage-7.13.4-cp311-cp311-win_arm64.whl", hash = "sha256:79e73a76b854d9c6088fe5d8b2ebe745f8681c55f7397c3c0a016192d681045f"}, + {file = "coverage-7.13.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:02231499b08dabbe2b96612993e5fc34217cdae907a51b906ac7fca8027a4459"}, + {file = "coverage-7.13.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40aa8808140e55dc022b15d8aa7f651b6b3d68b365ea0398f1441e0b04d859c3"}, + {file = "coverage-7.13.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5b856a8ccf749480024ff3bd7310adaef57bf31fd17e1bfc404b7940b6986634"}, + {file = "coverage-7.13.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2c048ea43875fbf8b45d476ad79f179809c590ec7b79e2035c662e7afa3192e3"}, + {file = "coverage-7.13.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b7b38448866e83176e28086674fe7368ab8590e4610fb662b44e345b86d63ffa"}, + {file = "coverage-7.13.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:de6defc1c9badbf8b9e67ae90fd00519186d6ab64e5cc5f3d21359c2a9b2c1d3"}, + {file = "coverage-7.13.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7eda778067ad7ffccd23ecffce537dface96212576a07924cbf0d8799d2ded5a"}, + {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e87f6c587c3f34356c3759f0420693e35e7eb0e2e41e4c011cb6ec6ecbbf1db7"}, + {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8248977c2e33aecb2ced42fef99f2d319e9904a36e55a8a68b69207fb7e43edc"}, + {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:25381386e80ae727608e662474db537d4df1ecd42379b5ba33c84633a2b36d47"}, + {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:ee756f00726693e5ba94d6df2bdfd64d4852d23b09bb0bc700e3b30e6f333985"}, + {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fdfc1e28e7c7cdce44985b3043bc13bbd9c747520f94a4d7164af8260b3d91f0"}, + {file = "coverage-7.13.4-cp312-cp312-win32.whl", hash = "sha256:01d4cbc3c283a17fc1e42d614a119f7f438eabb593391283adca8dc86eff1246"}, + {file = "coverage-7.13.4-cp312-cp312-win_amd64.whl", hash = "sha256:9401ebc7ef522f01d01d45532c68c5ac40fb27113019b6b7d8b208f6e9baa126"}, + {file = "coverage-7.13.4-cp312-cp312-win_arm64.whl", hash = "sha256:b1ec7b6b6e93255f952e27ab58fbc68dcc468844b16ecbee881aeb29b6ab4d8d"}, + {file = "coverage-7.13.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b66a2da594b6068b48b2692f043f35d4d3693fb639d5ea8b39533c2ad9ac3ab9"}, + {file = "coverage-7.13.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3599eb3992d814d23b35c536c28df1a882caa950f8f507cef23d1cbf334995ac"}, + {file = "coverage-7.13.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:93550784d9281e374fb5a12bf1324cc8a963fd63b2d2f223503ef0fd4aa339ea"}, + {file = "coverage-7.13.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b720ce6a88a2755f7c697c23268ddc47a571b88052e6b155224347389fdf6a3b"}, + {file = "coverage-7.13.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7b322db1284a2ed3aa28ffd8ebe3db91c929b7a333c0820abec3d838ef5b3525"}, + {file = "coverage-7.13.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f4594c67d8a7c89cf922d9df0438c7c7bb022ad506eddb0fdb2863359ff78242"}, + {file = "coverage-7.13.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:53d133df809c743eb8bce33b24bcababb371f4441340578cd406e084d94a6148"}, + {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:76451d1978b95ba6507a039090ba076105c87cc76fc3efd5d35d72093964d49a"}, + {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7f57b33491e281e962021de110b451ab8a24182589be17e12a22c79047935e23"}, + {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1731dc33dc276dafc410a885cbf5992f1ff171393e48a21453b78727d090de80"}, + {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:bd60d4fe2f6fa7dff9223ca1bbc9f05d2b6697bc5961072e5d3b952d46e1b1ea"}, + {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9181a3ccead280b828fae232df12b16652702b49d41e99d657f46cc7b1f6ec7a"}, + {file = "coverage-7.13.4-cp313-cp313-win32.whl", hash = "sha256:f53d492307962561ac7de4cd1de3e363589b000ab69617c6156a16ba7237998d"}, + {file = "coverage-7.13.4-cp313-cp313-win_amd64.whl", hash = "sha256:e6f70dec1cc557e52df5306d051ef56003f74d56e9c4dd7ddb07e07ef32a84dd"}, + {file = "coverage-7.13.4-cp313-cp313-win_arm64.whl", hash = "sha256:fb07dc5da7e849e2ad31a5d74e9bece81f30ecf5a42909d0a695f8bd1874d6af"}, + {file = "coverage-7.13.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:40d74da8e6c4b9ac18b15331c4b5ebc35a17069410cad462ad4f40dcd2d50c0d"}, + {file = "coverage-7.13.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4223b4230a376138939a9173f1bdd6521994f2aff8047fae100d6d94d50c5a12"}, + {file = "coverage-7.13.4-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1d4be36a5114c499f9f1f9195e95ebf979460dbe2d88e6816ea202010ba1c34b"}, + {file = "coverage-7.13.4-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:200dea7d1e8095cc6e98cdabe3fd1d21ab17d3cee6dab00cadbb2fe35d9c15b9"}, + {file = "coverage-7.13.4-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8eb931ee8e6d8243e253e5ed7336deea6904369d2fd8ae6e43f68abbf167092"}, + {file = "coverage-7.13.4-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:75eab1ebe4f2f64d9509b984f9314d4aa788540368218b858dad56dc8f3e5eb9"}, + {file = "coverage-7.13.4-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c35eb28c1d085eb7d8c9b3296567a1bebe03ce72962e932431b9a61f28facf26"}, + {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:eb88b316ec33760714a4720feb2816a3a59180fd58c1985012054fa7aebee4c2"}, + {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7d41eead3cc673cbd38a4417deb7fd0b4ca26954ff7dc6078e33f6ff97bed940"}, + {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:fb26a934946a6afe0e326aebe0730cdff393a8bc0bbb65a2f41e30feddca399c"}, + {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:dae88bc0fc77edaa65c14be099bd57ee140cf507e6bfdeea7938457ab387efb0"}, + {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:845f352911777a8e722bfce168958214951e07e47e5d5d9744109fa5fe77f79b"}, + {file = "coverage-7.13.4-cp313-cp313t-win32.whl", hash = "sha256:2fa8d5f8de70688a28240de9e139fa16b153cc3cbb01c5f16d88d6505ebdadf9"}, + {file = "coverage-7.13.4-cp313-cp313t-win_amd64.whl", hash = "sha256:9351229c8c8407645840edcc277f4a2d44814d1bc34a2128c11c2a031d45a5dd"}, + {file = "coverage-7.13.4-cp313-cp313t-win_arm64.whl", hash = "sha256:30b8d0512f2dc8c8747557e8fb459d6176a2c9e5731e2b74d311c03b78451997"}, + {file = "coverage-7.13.4-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:300deaee342f90696ed186e3a00c71b5b3d27bffe9e827677954f4ee56969601"}, + {file = "coverage-7.13.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:29e3220258d682b6226a9b0925bc563ed9a1ebcff3cad30f043eceea7eaf2689"}, + {file = "coverage-7.13.4-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:391ee8f19bef69210978363ca930f7328081c6a0152f1166c91f0b5fdd2a773c"}, + {file = "coverage-7.13.4-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0dd7ab8278f0d58a0128ba2fca25824321f05d059c1441800e934ff2efa52129"}, + {file = "coverage-7.13.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:78cdf0d578b15148b009ccf18c686aa4f719d887e76e6b40c38ffb61d264a552"}, + {file = "coverage-7.13.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:48685fee12c2eb3b27c62f2658e7ea21e9c3239cba5a8a242801a0a3f6a8c62a"}, + {file = "coverage-7.13.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4e83efc079eb39480e6346a15a1bcb3e9b04759c5202d157e1dd4303cd619356"}, + {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ecae9737b72408d6a950f7e525f30aca12d4bd8dd95e37342e5beb3a2a8c4f71"}, + {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ae4578f8528569d3cf303fef2ea569c7f4c4059a38c8667ccef15c6e1f118aa5"}, + {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:6fdef321fdfbb30a197efa02d48fcd9981f0d8ad2ae8903ac318adc653f5df98"}, + {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b0f6ccf3dbe577170bebfce1318707d0e8c3650003cb4b3a9dd744575daa8b5"}, + {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:75fcd519f2a5765db3f0e391eb3b7d150cce1a771bf4c9f861aeab86c767a3c0"}, + {file = "coverage-7.13.4-cp314-cp314-win32.whl", hash = "sha256:8e798c266c378da2bd819b0677df41ab46d78065fb2a399558f3f6cae78b2fbb"}, + {file = "coverage-7.13.4-cp314-cp314-win_amd64.whl", hash = "sha256:245e37f664d89861cf2329c9afa2c1fe9e6d4e1a09d872c947e70718aeeac505"}, + {file = "coverage-7.13.4-cp314-cp314-win_arm64.whl", hash = "sha256:ad27098a189e5838900ce4c2a99f2fe42a0bf0c2093c17c69b45a71579e8d4a2"}, + {file = "coverage-7.13.4-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:85480adfb35ffc32d40918aad81b89c69c9cc5661a9b8a81476d3e645321a056"}, + {file = "coverage-7.13.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:79be69cf7f3bf9b0deeeb062eab7ac7f36cd4cc4c4dd694bd28921ba4d8596cc"}, + {file = "coverage-7.13.4-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:caa421e2684e382c5d8973ac55e4f36bed6821a9bad5c953494de960c74595c9"}, + {file = "coverage-7.13.4-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:14375934243ee05f56c45393fe2ce81fe5cc503c07cee2bdf1725fb8bef3ffaf"}, + {file = "coverage-7.13.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:25a41c3104d08edb094d9db0d905ca54d0cd41c928bb6be3c4c799a54753af55"}, + {file = "coverage-7.13.4-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6f01afcff62bf9a08fb32b2c1d6e924236c0383c02c790732b6537269e466a72"}, + {file = "coverage-7.13.4-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:eb9078108fbf0bcdde37c3f4779303673c2fa1fe8f7956e68d447d0dd426d38a"}, + {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0e086334e8537ddd17e5f16a344777c1ab8194986ec533711cbe6c41cde841b6"}, + {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:725d985c5ab621268b2edb8e50dfe57633dc69bda071abc470fed55a14935fd3"}, + {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:3c06f0f1337c667b971ca2f975523347e63ec5e500b9aa5882d91931cd3ef750"}, + {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:590c0ed4bf8e85f745e6b805b2e1c457b2e33d5255dd9729743165253bc9ad39"}, + {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:eb30bf180de3f632cd043322dad5751390e5385108b2807368997d1a92a509d0"}, + {file = "coverage-7.13.4-cp314-cp314t-win32.whl", hash = "sha256:c4240e7eded42d131a2d2c4dec70374b781b043ddc79a9de4d55ca71f8e98aea"}, + {file = "coverage-7.13.4-cp314-cp314t-win_amd64.whl", hash = "sha256:4c7d3cc01e7350f2f0f6f7036caaf5673fb56b6998889ccfe9e1c1fe75a9c932"}, + {file = "coverage-7.13.4-cp314-cp314t-win_arm64.whl", hash = "sha256:23e3f687cf945070d1c90f85db66d11e3025665d8dafa831301a0e0038f3db9b"}, + {file = "coverage-7.13.4-py3-none-any.whl", hash = "sha256:1af1641e57cf7ba1bd67d677c9abdbcd6cc2ab7da3bca7fa1e2b7e50e65f2ad0"}, + {file = "coverage-7.13.4.tar.gz", hash = "sha256:e5c8f6ed1e61a8b2dcdf31eb0b9bbf0130750ca79c1c49eb898e2ad86f5ccc91"}, ] [package.extras] toml = ["tomli ; python_full_version <= \"3.11.0a6\""] -[[package]] -name = "crc32c" -version = "2.7.1" -description = "A python package implementing the crc32c algorithm in hardware and software" -optional = false -python-versions = ">=3.7" -groups = ["main"] -files = [ - { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1fd1f9c6b50d7357736676278a1b8c8986737b8a1c76d7eab4baa71d0b6af67f" }, - { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:805c2be1bc0e251c48439a62b0422385899c15289483692bc70e78473c1039f1" }, - { file = "crc32c-2.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f4333e62b7844dfde112dbb8489fd2970358eddc3310db21e943a9f6994df749" }, - { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f0fadc741e79dc705e2d9ee967473e8a061d26b04310ed739f1ee292f33674f" }, - { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91ced31055d26d59385d708bbd36689e1a1d604d4b0ceb26767eb5a83156f85d" }, - { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36ffa999b72e3c17f6a066ae9e970b40f8c65f38716e436c39a33b809bc6ed9f" }, - { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e80114dd7f462297e54d5da1b9ff472e5249c5a2b406aa51c371bb0edcbf76bd" }, - { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:676f5b46da268b5190f9fb91b3f037a00d114b411313664438525db876adc71f" }, - { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8d0e660c9ed269e90692993a4457a932fc22c9cc96caf79dd1f1a84da85bb312" }, - { file = "crc32c-2.7.1-cp310-cp310-win32.whl", hash = "sha256:17a2c3f8c6d85b04b5511af827b5dbbda4e672d188c0b9f20a8156e93a1aa7b6" }, - { file = "crc32c-2.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3208764c29688f91a35392073229975dd7687b6cb9f76b919dae442cabcd5126" }, - { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:19e03a50545a3ef400bd41667d5525f71030488629c57d819e2dd45064f16192" }, - { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c03286b1e5ce9bed7090084f206aacd87c5146b4b10de56fe9e86cbbbf851cf" }, - { file = "crc32c-2.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:80ebbf144a1a56a532b353e81fa0f3edca4f4baa1bf92b1dde2c663a32bb6a15" }, - { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96b794fd11945298fdd5eb1290a812efb497c14bc42592c5c992ca077458eeba" }, - { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9df7194dd3c0efb5a21f5d70595b7a8b4fd9921fbbd597d6d8e7a11eca3e2d27" }, - { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d698eec444b18e296a104d0b9bb6c596c38bdcb79d24eba49604636e9d747305" }, - { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e07cf10ef852d219d179333fd706d1c415626f1f05e60bd75acf0143a4d8b225" }, - { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d2a051f296e6e92e13efee3b41db388931cdb4a2800656cd1ed1d9fe4f13a086" }, - { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1738259802978cdf428f74156175da6a5fdfb7256f647fdc0c9de1bc6cd7173" }, - { file = "crc32c-2.7.1-cp311-cp311-win32.whl", hash = "sha256:f7786d219a1a1bf27d0aa1869821d11a6f8e90415cfffc1e37791690d4a848a1" }, - { file = "crc32c-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:887f6844bb3ad35f0778cd10793ad217f7123a5422e40041231b8c4c7329649d" }, - { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f7d1c4e761fe42bf856130daf8b2658df33fe0ced3c43dadafdfeaa42b57b950" }, - { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:73361c79a6e4605204457f19fda18b042a94508a52e53d10a4239da5fb0f6a34" }, - { file = "crc32c-2.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:afd778fc8ac0ed2ffbfb122a9aa6a0e409a8019b894a1799cda12c01534493e0" }, - { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56ef661b34e9f25991fface7f9ad85e81bbc1b3fe3b916fd58c893eabe2fa0b8" }, - { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:571aa4429444b5d7f588e4377663592145d2d25eb1635abb530f1281794fc7c9" }, - { file = "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" }, - { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:99d17637c4867672cb8adeea007294e3c3df9d43964369516cfe2c1f47ce500a" }, - { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f4a400ac3c69a32e180d8753fd7ec7bccb80ade7ab0812855dce8a208e72495f" }, - { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:588587772e55624dd9c7a906ec9e8773ae0b6ac5e270fc0bc84ee2758eba90d5" }, - { file = "crc32c-2.7.1-cp312-cp312-win32.whl", hash = "sha256:9f14b60e5a14206e8173dd617fa0c4df35e098a305594082f930dae5488da428" }, - { file = "crc32c-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:7c810a246660a24dc818047dc5f89c7ce7b2814e1e08a8e99993f4103f7219e8" }, - { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:24949bffb06fc411cc18188d33357923cb935273642164d0bb37a5f375654169" }, - { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2d5d326e7e118d4fa60187770d86b66af2fdfc63ce9eeb265f0d3e7d49bebe0b" }, - { file = "crc32c-2.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba110df60c64c8e2d77a9425b982a520ccdb7abe42f06604f4d98a45bb1fff62" }, - { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c277f9d16a3283e064d54854af0976b72abaa89824955579b2b3f37444f89aae" }, - { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:881af0478a01331244e27197356929edbdeaef6a9f81b5c6bacfea18d2139289" }, - { file = "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" }, - { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2416c4d88696ac322632555c0f81ab35e15f154bc96055da6cf110d642dbc10" }, - { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:60254251b88ec9b9795215f0f9ec015a6b5eef8b2c5fba1267c672d83c78fc02" }, - { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:edefc0e46f3c37372183f70338e5bdee42f6789b62fcd36ec53aa933e9dfbeaf" }, - { file = "crc32c-2.7.1-cp313-cp313-win32.whl", hash = "sha256:813af8111218970fe2adb833c5e5239f091b9c9e76f03b4dd91aaba86e99b499" }, - { file = "crc32c-2.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:7d9ede7be8e4ec1c9e90aaf6884decbeef10e3473e6ddac032706d710cab5888" }, - { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:db9ac92294284b22521356715784b91cc9094eee42a5282ab281b872510d1831" }, - { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8fcd7f2f29a30dc92af64a9ee3d38bde0c82bd20ad939999427aac94bbd87373" }, - { file = "crc32c-2.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5c056ef043393085523e149276a7ce0cb534b872e04f3e20d74d9a94a75c0ad7" }, - { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03a92551a343702629af91f78d205801219692b6909f8fa126b830e332bfb0e0" }, - { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb9424ec1a8ca54763155a703e763bcede82e6569fe94762614bb2de1412d4e1" }, - { file = "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" }, - { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:57a20dfc27995f568f64775eea2bbb58ae269f1a1144561df5e4a4955f79db32" }, - { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:f7186d098bfd2cff25eac6880b7c7ad80431b90610036131c1c7dd0eab42a332" }, - { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:55a77e29a265418fa34bef15bd0f2c60afae5348988aaf35ed163b4bbf93cf37" }, - { file = "crc32c-2.7.1-cp313-cp313t-win32.whl", hash = "sha256:ae38a4b6aa361595d81cab441405fbee905c72273e80a1c010fb878ae77ac769" }, - { file = "crc32c-2.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:eee2a43b663feb6c79a6c1c6e5eae339c2b72cfac31ee54ec0209fa736cf7ee5" }, - { file = "crc32c-2.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:04a56e9f4995559fa86bcf5d0ed5c48505a36e2be1c41d70cae5c080d9a00b74" }, - { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88c5c9c21cd9fff593bb7dfe97d3287438c8aecbcc73d227f2366860a0663521" }, - { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:595146cb94ba0055301d273113add2af5859b467db41b50367f47870c2d0a81c" }, - { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9f3792872f1320961f33aaf0198edea371aee393bcc221fab66d10ecffd77d" }, - { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:999a40d75cd1696e779f6f99c29fa52be777197d1d9e3ae69cb919a05a369c1e" }, - { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:eff485526172cee7e6d1fa9c23913f92c7d38ab05674b0b578767c7b693faf5d" }, - { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:541dac90c64ed9ce05f85a71066567e854c1b40743a01d83fa2c66419a2e97b6" }, - { file = "crc32c-2.7.1-cp37-cp37m-win32.whl", hash = "sha256:7138ec26e79100c4cf4294ef40027a1cff26a1e23b7e5eb70efe5d7ff37cbc66" }, - { file = "crc32c-2.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:35a3ed12ac2e2551a07d246b7e6512ac39db021e006205a40c1cfd32ea73fcc3" }, - { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af062f11aea283b7e9c95f3a97fb6bb96ac08a9063f71621c2140237df141ada" }, - { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8f25ca521ecf7cccfff0ecae4d0538b5c0c7235d27bf098241f3e2bf86aed713" }, - { file = "crc32c-2.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1410bcd909be36ccbf8a52c45e4bddca77adfd4e80789ac3cd575c024086516d" }, - { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33fc8cb32f82685ebefd078e740925ea9da37a008ed5f43b68fc8324f8ca4a37" }, - { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad3dc6283ce53ad7d1dc5775003460110ab7eebf348efebe0486a531b28f8184" }, - { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:758ead20e122496764ae50db26bb90fb47fc4b6d242c8e99e87c3f1dae1f1dce" }, - { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e436d9044bbd51936f7aeb8b322543c516bf22371a17970a370a10af1661fa54" }, - { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:47e5be99057264b603e3cd88cf091985f33c16d3c8609f1c83ed6e72ec4179b4" }, - { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:280509210e622a236f16f031856847fd0d6704df662d7209da819ccfb40c6167" }, - { file = "crc32c-2.7.1-cp38-cp38-win32.whl", hash = "sha256:4ab48e048cfa123a9f9bdc5d4d687a3461723132c749c721a6d358605e6d470d" }, - { file = "crc32c-2.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:65471d1b1b6e10a404ca8200a4271d5bc0a552c3f5dcd943c1c7835f766ea02d" }, - { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:39ca842586084bca24f9c4ab43e2d99191b1186b2f89b2122b470d0730254d1b" }, - { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a911abc33d453b3f171a3200b1e18b3fc39c204670b5b0a353cca99e4c664332" }, - { file = "crc32c-2.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:22a72e81ec08a7ece6a35ac68d1ed32dd4a8be7949b164db88d4b4a4bade5c5a" }, - { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54d6f8c5be6815eabd6e3e90fa0bc13045183a6aa33a30dd684eb0f062b92213" }, - { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c855726d71dee7ae25f81c6b54293455fc66802f34d334d22bea1f6ce8bc21c" }, - { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98d5f7fc364bb9c4c4123d149406fbee063f2e8c2cff19a12f13e50faa146237" }, - { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:51ffba582c95a281e5a3f71eacdafc96b9a1835ddae245385639458fff197034" }, - { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3950d3c340c9d70889630ef81fba8666abfd0cf0aa19fd9c3a55634e0b383b0f" }, - { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:522fba1770aad8f7eb189f21fca591a51d96dcc749859088f462281324aec30b" }, - { file = "crc32c-2.7.1-cp39-cp39-win32.whl", hash = "sha256:812723e222b6a9fe0562554d72f4f072c3a95720c60ee500984e7d0e568caac3" }, - { file = "crc32c-2.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:6793fcfe9d4130230d196abbe4021c01ffe8e85c92633bf3c8559f9836c227f5" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:2e83fedebcdeb80c19e76b7a0e5103528bb062521c40702bf34516a429e81df3" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30004a7383538ef93bda9b22f7b3805bc0aa5625ab2675690e1b676b19417d4b" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a01b0983aa87f517c12418f9898ecf2083bf86f4ea04122e053357c3edb0d73f" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb2b963c42128b38872e9ed63f04a73ce1ff89a1dfad7ea38add6fe6296497b8" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cdd5e576fee5d255c1e68a4dae4420f21e57e6f05900b38d5ae47c713fc3330d" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:79f0ff50863aeb441fbfa87e9db6542ddfe3e941189dece832b0af2e454dbab0" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cd27a1e400d77e9872fa1303e8f9d30bd050df35ee4858354ce0b59f8227d32" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:274739b3e1591bd4b7ec98764f2f79c6fbcc0f7d7676d5f17369832fe14ee4f0" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:050f52045b4a033a245e0ee4357e1a793de5af6496c82250ef13d8cb90a21e20" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ceb4ca126f75694bda020a307221563d3c522719c0acedcc81ffb985b4867c94" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:eabefe7a6fb5dfc6318fb35f4d98893baef17ebda9b311498e870526d32168e7" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:217edd9ba8c5f0c3ad60c82a11fa78f01162fa106fd7f5d17175dac6bf1eedf9" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15d640d9d4aa213aec6c837f602081a17d1522f8cd78b52334b62ee27b083410" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:519878822bf9bdead63c25a5e4bdc26d2eae9da6056f92b9b5f3023c08f1d016" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:2bf69cfa4c3ea9f060fe06db00b7e34f771c83f73dd2c3568c2c9019479e34c2" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e89d51c90f6730b67b12c97d49099ba18d0fdce18541fab94d2be95d1c939adb" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:488a0feba1bb005d0dd2f702c1da4849d083e88d82cd27b83ac2d2d93af80755" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:919262b7a12ef63f222ec19c0e092f39268802652e11669315257ae6249ec79f" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4181240f6080c38eec9dd1539cd23a304a12100d3f4ffe43234f32064fae5ef0" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fedde1e53507d0ede1980e8109442edd108c04ab100abcd5145c274820dacd4f" }, - { file = "crc32c-2.7.1.tar.gz", hash = "sha256:f91b144a21eef834d64178e01982bb9179c354b3e9e5f4c803b0e5096384968c" }, -] - [[package]] name = "dask" -version = "2025.9.1" +version = "2026.1.2" description = "Parallel PyData with Task Scheduling" optional = false python-versions = ">=3.10" groups = ["main"] files = [ - { file = "dask-2025.9.1-py3-none-any.whl", hash = "sha256:2a8a7dc933caaea2f47745a65a6ec93d9e616e12aab53b4f03ee161d31939110" }, - { file = "dask-2025.9.1.tar.gz", hash = "sha256:718df73e1fd3d7e2b8546e0f04ce08e1ed7f9aa3da1eecd0c1f44c8b6d52f7e0" }, + {file = "dask-2026.1.2-py3-none-any.whl", hash = "sha256:46a0cf3b8d87f78a3d2e6b145aea4418a6d6d606fe6a16c79bd8ca2bb862bc91"}, + {file = "dask-2026.1.2.tar.gz", hash = "sha256:1136683de2750d98ea792670f7434e6c1cfce90cab2cc2f2495a9e60fd25a4fc"}, ] [package.dependencies] @@ -791,76 +474,16 @@ fsspec = ">=2021.09.0" packaging = ">=20.0" partd = ">=1.4.0" pyyaml = ">=5.3.1" -toolz = ">=0.10.0" +toolz = ">=0.12.0" [package.extras] array = ["numpy (>=1.24)"] -complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=14.0.1)"] -dataframe = ["dask[array]", "pandas (>=2.0)", "pyarrow (>=14.0.1)"] +complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=16.0)"] +dataframe = ["dask[array]", "pandas (>=2.0)", "pyarrow (>=16.0)"] diagnostics = ["bokeh (>=3.1.0)", "jinja2 (>=2.10.3)"] -distributed = ["distributed (==2025.9.1)"] +distributed = ["distributed (>=2026.1.2,<2026.1.3)"] test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] -[[package]] -name = "debugpy" -version = "1.8.15" -description = "An implementation of the Debug Adapter Protocol for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "debugpy-1.8.15-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e9a8125c85172e3ec30985012e7a81ea5e70bbb836637f8a4104f454f9b06c97" }, - { file = "debugpy-1.8.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fd0b6b5eccaa745c214fd240ea82f46049d99ef74b185a3517dad3ea1ec55d9" }, - { file = "debugpy-1.8.15-cp310-cp310-win32.whl", hash = "sha256:8181cce4d344010f6bfe94a531c351a46a96b0f7987750932b2908e7a1e14a55" }, - { file = "debugpy-1.8.15-cp310-cp310-win_amd64.whl", hash = "sha256:af2dcae4e4cd6e8b35f982ccab29fe65f7e8766e10720a717bc80c464584ee21" }, - { file = "debugpy-1.8.15-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:babc4fb1962dd6a37e94d611280e3d0d11a1f5e6c72ac9b3d87a08212c4b6dd3" }, - { file = "debugpy-1.8.15-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f778e68f2986a58479d0ac4f643e0b8c82fdd97c2e200d4d61e7c2d13838eb53" }, - { file = "debugpy-1.8.15-cp311-cp311-win32.whl", hash = "sha256:f9d1b5abd75cd965e2deabb1a06b0e93a1546f31f9f621d2705e78104377c702" }, - { file = "debugpy-1.8.15-cp311-cp311-win_amd64.whl", hash = "sha256:62954fb904bec463e2b5a415777f6d1926c97febb08ef1694da0e5d1463c5c3b" }, - { file = "debugpy-1.8.15-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:3dcc7225cb317469721ab5136cda9ff9c8b6e6fb43e87c9e15d5b108b99d01ba" }, - { file = "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" }, - { file = "debugpy-1.8.15-cp312-cp312-win32.whl", hash = "sha256:b08e9b0bc260cf324c890626961dad4ffd973f7568fbf57feb3c3a65ab6b6327" }, - { file = "debugpy-1.8.15-cp312-cp312-win_amd64.whl", hash = "sha256:e2a4fe357c92334272eb2845fcfcdbec3ef9f22c16cf613c388ac0887aed15fa" }, - { file = "debugpy-1.8.15-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:f5e01291ad7d6649aed5773256c5bba7a1a556196300232de1474c3c372592bf" }, - { file = "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" }, - { file = "debugpy-1.8.15-cp313-cp313-win32.whl", hash = "sha256:fcf0748d4f6e25f89dc5e013d1129ca6f26ad4da405e0723a4f704583896a709" }, - { file = "debugpy-1.8.15-cp313-cp313-win_amd64.whl", hash = "sha256:73c943776cb83e36baf95e8f7f8da765896fd94b05991e7bc162456d25500683" }, - { file = "debugpy-1.8.15-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:054cd4935bd2e4964dfe1aeee4d6bca89d0c833366776fc35387f8a2f517dd00" }, - { file = "debugpy-1.8.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21c4288e662997df3176c4b9d93ee1393913fbaf320732be332d538000c53208" }, - { file = "debugpy-1.8.15-cp38-cp38-win32.whl", hash = "sha256:aaa8ce6a37d764f93fe583d7c6ca58eb7550b36941387483db113125f122bb0d" }, - { file = "debugpy-1.8.15-cp38-cp38-win_amd64.whl", hash = "sha256:71cdf7f676af78e70f005c7fad2ef9da0edc2a24befbf3ab146a51f0d58048c2" }, - { file = "debugpy-1.8.15-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:085b6d0adb3eb457c2823ac497a0690b10a99eff8b01c01a041e84579f114b56" }, - { file = "debugpy-1.8.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd546a405381d17527814852642df0a74b7da8acc20ae5f3cfad0b7c86419511" }, - { file = "debugpy-1.8.15-cp39-cp39-win32.whl", hash = "sha256:ae0d445fe11ff4351428e6c2389e904e1cdcb4a47785da5a5ec4af6c5b95fce5" }, - { file = "debugpy-1.8.15-cp39-cp39-win_amd64.whl", hash = "sha256:de7db80189ca97ab4b10a87e4039cfe4dd7ddfccc8f33b5ae40fcd33792fc67a" }, - { file = "debugpy-1.8.15-py2.py3-none-any.whl", hash = "sha256:bce2e6c5ff4f2e00b98d45e7e01a49c7b489ff6df5f12d881c67d2f1ac635f3d" }, - { file = "debugpy-1.8.15.tar.gz", hash = "sha256:58d7a20b7773ab5ee6bdfb2e6cf622fdf1e40c9d5aef2857d85391526719ac00" }, -] - -[[package]] -name = "decorator" -version = "5.2.1" -description = "Decorators for Humans" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a" }, - { file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360" }, -] - -[[package]] -name = "defusedxml" -version = "0.7.1" -description = "XML bomb protection for Python stdlib modules" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["dev"] -files = [ - {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, - {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, -] - [[package]] name = "distlib" version = "0.4.0" @@ -869,8 +492,8 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - { file = "distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16" }, - { file = "distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d" }, + {file = "distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16"}, + {file = "distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d"}, ] [[package]] @@ -881,8 +504,8 @@ optional = false python-versions = ">=3.8" groups = ["main"] files = [ - { file = "donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d" }, - { file = "donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52" }, + {file = "donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d"}, + {file = "donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52"}, ] [package.dependencies] @@ -892,36 +515,6 @@ pyyaml = "*" docs = ["cloudpickle", "numpydoc", "pytest", "sphinx (>=4.0.0)"] test = ["cloudpickle", "pytest"] -[[package]] -name = "executing" -version = "2.2.0" -description = "Get the currently executing AST node of a frame, and other information" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa" }, - { file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755" }, -] - -[package.extras] -tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich ; python_version >= \"3.11\""] - -[[package]] -name = "fastjsonschema" -version = "2.21.1" -description = "Fastest Python implementation of JSON schema" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - { file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667" }, - { file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4" }, -] - -[package.extras] -devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] - [[package]] name = "fawltydeps" version = "0.20.0" @@ -930,8 +523,8 @@ optional = false python-versions = ">=3.9.2" groups = ["dev"] files = [ - { file = "fawltydeps-0.20.0-py3-none-any.whl", hash = "sha256:d3bfb260c54135ec5dfa2583a7381c45d2759deb23f6de6f4905da9adac67512" }, - { file = "fawltydeps-0.20.0.tar.gz", hash = "sha256:ad080b284a2278c9940540b643483aff8b57794a1362735d3024c270810c0182" }, + {file = "fawltydeps-0.20.0-py3-none-any.whl", hash = "sha256:d3bfb260c54135ec5dfa2583a7381c45d2759deb23f6de6f4905da9adac67512"}, + {file = "fawltydeps-0.20.0.tar.gz", hash = "sha256:ad080b284a2278c9940540b643483aff8b57794a1362735d3024c270810c0182"}, ] [package.dependencies] @@ -947,43 +540,26 @@ uv = ["uv (>=0.1.6)"] [[package]] name = "filelock" -version = "3.18.0" +version = "3.24.3" description = "A platform independent file lock." optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de" }, - { file = "filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2" }, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] -typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] - -[[package]] -name = "fqdn" -version = "1.4.0" -description = "Validate fully-qualified domain names compliant to RFC 1035 and the preferred form in RFC 3686 s. 2." -optional = false -python-versions = "*" +python-versions = ">=3.10" groups = ["dev"] files = [ - { file = "fqdn-1.4.0-py3-none-any.whl", hash = "sha256:e935616ae81c9c60a22267593fe8e6af68cecc68549cc71bb9bfbcbbcb383386" }, - { file = "fqdn-1.4.0.tar.gz", hash = "sha256:30e8f2e685ce87cdace4712fd97c5d09f5e6fa519bbb66e8f188f6a7cb3a5c4e" }, + {file = "filelock-3.24.3-py3-none-any.whl", hash = "sha256:426e9a4660391f7f8a810d71b0555bce9008b0a1cc342ab1f6947d37639e002d"}, + {file = "filelock-3.24.3.tar.gz", hash = "sha256:011a5644dc937c22699943ebbfc46e969cdde3e171470a6e40b9533e5a72affa"}, ] [[package]] name = "fsspec" -version = "2025.7.0" +version = "2026.2.0" description = "File-system specification" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["main"] files = [ - { file = "fsspec-2025.7.0-py3-none-any.whl", hash = "sha256:8b012e39f63c7d5f10474de957f3ab793b47b45ae7d39f2fb735f8bbe25c0e21" }, - { file = "fsspec-2025.7.0.tar.gz", hash = "sha256:786120687ffa54b8283d942929540d8bc5ccfa820deb555a2b5d0ed2b737bf58" }, + {file = "fsspec-2026.2.0-py3-none-any.whl", hash = "sha256:98de475b5cb3bd66bedd5c4679e87b4fdfe1a3bf4d707b151b3c07e58c9a2437"}, + {file = "fsspec-2026.2.0.tar.gz", hash = "sha256:6544e34b16869f5aacd5b90bdf1a71acb37792ea3ddf6125ee69a22a53fb8bff"}, ] [package.extras] @@ -994,9 +570,9 @@ dask = ["dask", "distributed"] dev = ["pre-commit", "ruff (>=0.5)"] doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"] dropbox = ["dropbox", "dropboxdrivefs", "requests"] -full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] +full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs (>2024.2.0)", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs (>2024.2.0)", "smbprotocol", "tqdm"] fuse = ["fusepy"] -gcs = ["gcsfs"] +gcs = ["gcsfs (>2024.2.0)"] git = ["pygit2"] github = ["requests"] gs = ["gcsfs"] @@ -1005,13 +581,13 @@ hdfs = ["pyarrow (>=1)"] http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] libarchive = ["libarchive-c"] oci = ["ocifs"] -s3 = ["s3fs"] +s3 = ["s3fs (>2024.2.0)"] sftp = ["paramiko"] smb = ["smbprotocol"] ssh = ["paramiko"] test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"] test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] -test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard ; python_version < \"3.14\""] +test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "backports-zstd ; python_version < \"3.14\"", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas (<3.0.0)", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard ; python_version < \"3.14\""] tqdm = ["tqdm"] [[package]] @@ -1022,8 +598,8 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - { file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343" }, - { file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619" }, + {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, + {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, ] [package.dependencies] @@ -1033,89 +609,58 @@ python-dateutil = ">=2.8.1" dev = ["flake8", "markdown", "twine", "wheel"] [[package]] -name = "griffe" -version = "1.7.3" -description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." +name = "google-crc32c" +version = "1.8.0" +description = "A python wrapper of the C library 'Google CRC32C'" optional = false python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "griffe-1.7.3-py3-none-any.whl", hash = "sha256:c6b3ee30c2f0f17f30bcdef5068d6ab7a2a4f1b8bf1a3e74b56fffd21e1c5f75" }, - { file = "griffe-1.7.3.tar.gz", hash = "sha256:52ee893c6a3a968b639ace8015bec9d36594961e156e23315c8e8e51401fa50b" }, -] - -[package.dependencies] -colorama = ">=0.4" - -[[package]] -name = "h11" -version = "0.16.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86" }, - { file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1" }, -] - -[[package]] -name = "httpcore" -version = "1.0.9" -description = "A minimal low-level HTTP client." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55" }, - { file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8" }, -] - -[package.dependencies] -certifi = "*" -h11 = ">=0.16" - -[package.extras] -asyncio = ["anyio (>=4.0,<5.0)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<1.0)"] - -[[package]] -name = "httpx" -version = "0.28.1" -description = "The next generation HTTP client." -optional = false -python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] files = [ - { file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad" }, - { file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc" }, + {file = "google_crc32c-1.8.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0470b8c3d73b5f4e3300165498e4cf25221c7eb37f1159e221d1825b6df8a7ff"}, + {file = "google_crc32c-1.8.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:119fcd90c57c89f30040b47c211acee231b25a45d225e3225294386f5d258288"}, + {file = "google_crc32c-1.8.0-cp310-cp310-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6f35aaffc8ccd81ba3162443fabb920e65b1f20ab1952a31b13173a67811467d"}, + {file = "google_crc32c-1.8.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:864abafe7d6e2c4c66395c1eb0fe12dc891879769b52a3d56499612ca93b6092"}, + {file = "google_crc32c-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:db3fe8eaf0612fc8b20fa21a5f25bd785bc3cd5be69f8f3412b0ac2ffd49e733"}, + {file = "google_crc32c-1.8.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:014a7e68d623e9a4222d663931febc3033c5c7c9730785727de2a81f87d5bab8"}, + {file = "google_crc32c-1.8.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:86cfc00fe45a0ac7359e5214a1704e51a99e757d0272554874f419f79838c5f7"}, + {file = "google_crc32c-1.8.0-cp311-cp311-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:19b40d637a54cb71e0829179f6cb41835f0fbd9e8eb60552152a8b52c36cbe15"}, + {file = "google_crc32c-1.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:17446feb05abddc187e5441a45971b8394ea4c1b6efd88ab0af393fd9e0a156a"}, + {file = "google_crc32c-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:71734788a88f551fbd6a97be9668a0020698e07b2bf5b3aa26a36c10cdfb27b2"}, + {file = "google_crc32c-1.8.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:4b8286b659c1335172e39563ab0a768b8015e88e08329fa5321f774275fc3113"}, + {file = "google_crc32c-1.8.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:2a3dc3318507de089c5384cc74d54318401410f82aa65b2d9cdde9d297aca7cb"}, + {file = "google_crc32c-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:14f87e04d613dfa218d6135e81b78272c3b904e2a7053b841481b38a7d901411"}, + {file = "google_crc32c-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cb5c869c2923d56cb0c8e6bcdd73c009c36ae39b652dbe46a05eb4ef0ad01454"}, + {file = "google_crc32c-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:3cc0c8912038065eafa603b238abf252e204accab2a704c63b9e14837a854962"}, + {file = "google_crc32c-1.8.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:3ebb04528e83b2634857f43f9bb8ef5b2bbe7f10f140daeb01b58f972d04736b"}, + {file = "google_crc32c-1.8.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:450dc98429d3e33ed2926fc99ee81001928d63460f8538f21a5d6060912a8e27"}, + {file = "google_crc32c-1.8.0-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3b9776774b24ba76831609ffbabce8cdf6fa2bd5e9df37b594221c7e333a81fa"}, + {file = "google_crc32c-1.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:89c17d53d75562edfff86679244830599ee0a48efc216200691de8b02ab6b2b8"}, + {file = "google_crc32c-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:57a50a9035b75643996fbf224d6661e386c7162d1dfdab9bc4ca790947d1007f"}, + {file = "google_crc32c-1.8.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:e6584b12cb06796d285d09e33f63309a09368b9d806a551d8036a4207ea43697"}, + {file = "google_crc32c-1.8.0-cp314-cp314-macosx_12_0_x86_64.whl", hash = "sha256:f4b51844ef67d6cf2e9425983274da75f18b1597bb2c998e1c0a0e8d46f8f651"}, + {file = "google_crc32c-1.8.0-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b0d1a7afc6e8e4635564ba8aa5c0548e3173e41b6384d7711a9123165f582de2"}, + {file = "google_crc32c-1.8.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8b3f68782f3cbd1bce027e48768293072813469af6a61a86f6bb4977a4380f21"}, + {file = "google_crc32c-1.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:d511b3153e7011a27ab6ee6bb3a5404a55b994dc1a7322c0b87b29606d9790e2"}, + {file = "google_crc32c-1.8.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:ba6aba18daf4d36ad4412feede6221414692f44d17e5428bdd81ad3fc1eee5dc"}, + {file = "google_crc32c-1.8.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:87b0072c4ecc9505cfa16ee734b00cd7721d20a0f595be4d40d3d21b41f65ae2"}, + {file = "google_crc32c-1.8.0-cp39-cp39-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3d488e98b18809f5e322978d4506373599c0c13e6c5ad13e53bb44758e18d215"}, + {file = "google_crc32c-1.8.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:01f126a5cfddc378290de52095e2c7052be2ba7656a9f0caf4bcd1bfb1833f8a"}, + {file = "google_crc32c-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:61f58b28e0b21fcb249a8247ad0db2e64114e201e2e9b4200af020f3b6242c9f"}, + {file = "google_crc32c-1.8.0-pp311-pypy311_pp73-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:87fa445064e7db928226b2e6f0d5304ab4cd0339e664a4e9a25029f384d9bb93"}, + {file = "google_crc32c-1.8.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f639065ea2042d5c034bf258a9f085eaa7af0cd250667c0635a3118e8f92c69c"}, + {file = "google_crc32c-1.8.0.tar.gz", hash = "sha256:a428e25fb7691024de47fecfbff7ff957214da51eddded0da0ae0e0f03a2cf79"}, ] -[package.dependencies] -anyio = "*" -certifi = "*" -httpcore = "==1.*" -idna = "*" - -[package.extras] -brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -zstd = ["zstandard (>=0.18.0)"] - [[package]] name = "identify" -version = "2.6.12" +version = "2.6.16" description = "File identification library for Python" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ - { file = "identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2" }, - { file = "identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6" }, + {file = "identify-2.6.16-py2.py3-none-any.whl", hash = "sha256:391ee4d77741d994189522896270b787aed8670389bfd60f326d677d64a6dfb0"}, + {file = "identify-2.6.16.tar.gz", hash = "sha256:846857203b5511bbe94d5a352a48ef2359532bc8f6727b5544077a0dcfb24980"}, ] [package.extras] @@ -1123,14 +668,14 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "3.10" +version = "3.11" description = "Internationalized Domain Names in Applications (IDNA)" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, + {file = "idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea"}, + {file = "idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902"}, ] [package.extras] @@ -1138,14 +683,14 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 [[package]] name = "importlib-metadata" -version = "8.7.0" +version = "8.7.1" description = "Read metadata from Python packages" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd" }, - { file = "importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000" }, + {file = "importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151"}, + {file = "importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb"}, ] [package.dependencies] @@ -1155,672 +700,302 @@ zipp = ">=3.20" check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -enabler = ["pytest-enabler (>=2.2)"] +enabler = ["pytest-enabler (>=3.4)"] perf = ["ipython"] -test = ["flufl.flake8", "importlib_resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] -type = ["pytest-mypy"] +test = ["flufl.flake8", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +type = ["mypy (<1.19) ; platform_python_implementation == \"PyPy\"", "pytest-mypy (>=1.0.1)"] [[package]] name = "iniconfig" -version = "2.1.0" +version = "2.3.0" description = "brain-dead simple config-ini parsing" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" groups = ["dev"] files = [ - { file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760" }, - { file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7" }, + {file = "iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12"}, + {file = "iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730"}, ] [[package]] -name = "ipykernel" -version = "6.29.5" -description = "IPython Kernel for Jupyter" +name = "isort" +version = "8.0.0" +description = "A Python utility / library to sort Python imports." optional = false -python-versions = ">=3.8" +python-versions = ">=3.10.0" groups = ["dev"] files = [ - {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, - {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, + {file = "isort-8.0.0-py3-none-any.whl", hash = "sha256:184916a933041c7cf718787f7e52064f3c06272aff69a5cb4dc46497bd8911d9"}, + {file = "isort-8.0.0.tar.gz", hash = "sha256:fddea59202f231e170e52e71e3510b99c373b6e571b55d9c7b31b679c0fed47c"}, ] -[package.dependencies] -appnope = {version = "*", markers = "platform_system == \"Darwin\""} -comm = ">=0.1.1" -debugpy = ">=1.6.5" -ipython = ">=7.23.1" -jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -matplotlib-inline = ">=0.1" -nest-asyncio = "*" -packaging = "*" -psutil = "*" -pyzmq = ">=24" -tornado = ">=6.1" -traitlets = ">=5.4.0" - [package.extras] -cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] -pyqt5 = ["pyqt5"] -pyside6 = ["pyside6"] -test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] +colors = ["colorama"] [[package]] -name = "ipython" -version = "9.4.0" -description = "IPython: Productive Interactive Computing" +name = "jinja2" +version = "3.1.6" +description = "A very fast and expressive template engine." optional = false -python-versions = ">=3.11" +python-versions = ">=3.7" groups = ["dev"] files = [ - { file = "ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066" }, - { file = "ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270" }, + {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, + {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, ] [package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -decorator = "*" -ipython-pygments-lexers = "*" -jedi = ">=0.16" -matplotlib-inline = "*" -pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} -prompt_toolkit = ">=3.0.41,<3.1.0" -pygments = ">=2.4.0" -stack_data = "*" -traitlets = ">=5.13.0" +MarkupSafe = ">=2.0" [package.extras] -all = ["ipython[doc,matplotlib,test,test-extra]"] -black = ["black"] -doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinx_toml (==0.0.4)", "typing_extensions"] -matplotlib = ["matplotlib"] -test = ["packaging", "pytest", "pytest-asyncio (<0.22)", "testpath"] -test-extra = ["curio", "ipykernel", "ipython[test]", "jupyter_ai", "matplotlib (!=3.2.0)", "nbclient", "nbformat", "numpy (>=1.23)", "pandas", "trio"] +i18n = ["Babel (>=2.7)"] [[package]] -name = "ipython-pygments-lexers" -version = "1.1.1" -description = "Defines a variety of Pygments lexers for highlighting IPython code." +name = "librt" +version = "0.8.1" +description = "Mypyc runtime library" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] +markers = "platform_python_implementation != \"PyPy\"" +files = [ + {file = "librt-0.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:81fd938344fecb9373ba1b155968c8a329491d2ce38e7ddb76f30ffb938f12dc"}, + {file = "librt-0.8.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5db05697c82b3a2ec53f6e72b2ed373132b0c2e05135f0696784e97d7f5d48e7"}, + {file = "librt-0.8.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d56bc4011975f7460bea7b33e1ff425d2f1adf419935ff6707273c77f8a4ada6"}, + {file = "librt-0.8.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5cdc0f588ff4b663ea96c26d2a230c525c6fc62b28314edaaaca8ed5af931ad0"}, + {file = "librt-0.8.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:97c2b54ff6717a7a563b72627990bec60d8029df17df423f0ed37d56a17a176b"}, + {file = "librt-0.8.1-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8f1125e6bbf2f1657d9a2f3ccc4a2c9b0c8b176965bb565dd4d86be67eddb4b6"}, + {file = "librt-0.8.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8f4bb453f408137d7581be309b2fbc6868a80e7ef60c88e689078ee3a296ae71"}, + {file = "librt-0.8.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c336d61d2fe74a3195edc1646d53ff1cddd3a9600b09fa6ab75e5514ba4862a7"}, + {file = "librt-0.8.1-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:eb5656019db7c4deacf0c1a55a898c5bb8f989be904597fcb5232a2f4828fa05"}, + {file = "librt-0.8.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c25d9e338d5bed46c1632f851babf3d13c78f49a225462017cf5e11e845c5891"}, + {file = "librt-0.8.1-cp310-cp310-win32.whl", hash = "sha256:aaab0e307e344cb28d800957ef3ec16605146ef0e59e059a60a176d19543d1b7"}, + {file = "librt-0.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:56e04c14b696300d47b3bc5f1d10a00e86ae978886d0cee14e5714fafb5df5d2"}, + {file = "librt-0.8.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:681dc2451d6d846794a828c16c22dc452d924e9f700a485b7ecb887a30aad1fd"}, + {file = "librt-0.8.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3b4350b13cc0e6f5bec8fa7caf29a8fb8cdc051a3bae45cfbfd7ce64f009965"}, + {file = "librt-0.8.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ac1e7817fd0ed3d14fd7c5df91daed84c48e4c2a11ee99c0547f9f62fdae13da"}, + {file = "librt-0.8.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:747328be0c5b7075cde86a0e09d7a9196029800ba75a1689332348e998fb85c0"}, + {file = "librt-0.8.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0af2bd2bc204fa27f3d6711d0f360e6b8c684a035206257a81673ab924aa11e"}, + {file = "librt-0.8.1-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d480de377f5b687b6b1bc0c0407426da556e2a757633cc7e4d2e1a057aa688f3"}, + {file = "librt-0.8.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d0ee06b5b5291f609ddb37b9750985b27bc567791bc87c76a569b3feed8481ac"}, + {file = "librt-0.8.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e2c6f77b9ad48ce5603b83b7da9ee3e36b3ab425353f695cba13200c5d96596"}, + {file = "librt-0.8.1-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:439352ba9373f11cb8e1933da194dcc6206daf779ff8df0ed69c5e39113e6a99"}, + {file = "librt-0.8.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:82210adabbc331dbb65d7868b105185464ef13f56f7f76688565ad79f648b0fe"}, + {file = "librt-0.8.1-cp311-cp311-win32.whl", hash = "sha256:52c224e14614b750c0a6d97368e16804a98c684657c7518752c356834fff83bb"}, + {file = "librt-0.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:c00e5c884f528c9932d278d5c9cbbea38a6b81eb62c02e06ae53751a83a4d52b"}, + {file = "librt-0.8.1-cp311-cp311-win_arm64.whl", hash = "sha256:f7cdf7f26c2286ffb02e46d7bac56c94655540b26347673bea15fa52a6af17e9"}, + {file = "librt-0.8.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a28f2612ab566b17f3698b0da021ff9960610301607c9a5e8eaca62f5e1c350a"}, + {file = "librt-0.8.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:60a78b694c9aee2a0f1aaeaa7d101cf713e92e8423a941d2897f4fa37908dab9"}, + {file = "librt-0.8.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:758509ea3f1eba2a57558e7e98f4659d0ea7670bff49673b0dde18a3c7e6c0eb"}, + {file = "librt-0.8.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:039b9f2c506bd0ab0f8725aa5ba339c6f0cd19d3b514b50d134789809c24285d"}, + {file = "librt-0.8.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bb54f1205a3a6ab41a6fd71dfcdcbd278670d3a90ca502a30d9da583105b6f7"}, + {file = "librt-0.8.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:05bd41cdee35b0c59c259f870f6da532a2c5ca57db95b5f23689fcb5c9e42440"}, + {file = "librt-0.8.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adfab487facf03f0d0857b8710cf82d0704a309d8ffc33b03d9302b4c64e91a9"}, + {file = "librt-0.8.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:153188fe98a72f206042be10a2c6026139852805215ed9539186312d50a8e972"}, + {file = "librt-0.8.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:dd3c41254ee98604b08bd5b3af5bf0a89740d4ee0711de95b65166bf44091921"}, + {file = "librt-0.8.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e0d138c7ae532908cbb342162b2611dbd4d90c941cd25ab82084aaf71d2c0bd0"}, + {file = "librt-0.8.1-cp312-cp312-win32.whl", hash = "sha256:43353b943613c5d9c49a25aaffdba46f888ec354e71e3529a00cca3f04d66a7a"}, + {file = "librt-0.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:ff8baf1f8d3f4b6b7257fcb75a501f2a5499d0dda57645baa09d4d0d34b19444"}, + {file = "librt-0.8.1-cp312-cp312-win_arm64.whl", hash = "sha256:0f2ae3725904f7377e11cc37722d5d401e8b3d5851fb9273d7f4fe04f6b3d37d"}, + {file = "librt-0.8.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7e6bad1cd94f6764e1e21950542f818a09316645337fd5ab9a7acc45d99a8f35"}, + {file = "librt-0.8.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cf450f498c30af55551ba4f66b9123b7185362ec8b625a773b3d39aa1a717583"}, + {file = "librt-0.8.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:eca45e982fa074090057132e30585a7e8674e9e885d402eae85633e9f449ce6c"}, + {file = "librt-0.8.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c3811485fccfda840861905b8c70bba5ec094e02825598bb9d4ca3936857a04"}, + {file = "librt-0.8.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e4af413908f77294605e28cfd98063f54b2c790561383971d2f52d113d9c363"}, + {file = "librt-0.8.1-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:5212a5bd7fae98dae95710032902edcd2ec4dc994e883294f75c857b83f9aba0"}, + {file = "librt-0.8.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e692aa2d1d604e6ca12d35e51fdc36f4cda6345e28e36374579f7ef3611b3012"}, + {file = "librt-0.8.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4be2a5c926b9770c9e08e717f05737a269b9d0ebc5d2f0060f0fe3fe9ce47acb"}, + {file = "librt-0.8.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:fd1a720332ea335ceb544cf0a03f81df92abd4bb887679fd1e460976b0e6214b"}, + {file = "librt-0.8.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:93c2af9e01e0ef80d95ae3c720be101227edae5f2fe7e3dc63d8857fadfc5a1d"}, + {file = "librt-0.8.1-cp313-cp313-win32.whl", hash = "sha256:086a32dbb71336627e78cc1d6ee305a68d038ef7d4c39aaff41ae8c9aa46e91a"}, + {file = "librt-0.8.1-cp313-cp313-win_amd64.whl", hash = "sha256:e11769a1dbda4da7b00a76cfffa67aa47cfa66921d2724539eee4b9ede780b79"}, + {file = "librt-0.8.1-cp313-cp313-win_arm64.whl", hash = "sha256:924817ab3141aca17893386ee13261f1d100d1ef410d70afe4389f2359fea4f0"}, + {file = "librt-0.8.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:6cfa7fe54fd4d1f47130017351a959fe5804bda7a0bc7e07a2cdbc3fdd28d34f"}, + {file = "librt-0.8.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:228c2409c079f8c11fb2e5d7b277077f694cb93443eb760e00b3b83cb8b3176c"}, + {file = "librt-0.8.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:7aae78ab5e3206181780e56912d1b9bb9f90a7249ce12f0e8bf531d0462dd0fc"}, + {file = "librt-0.8.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:172d57ec04346b047ca6af181e1ea4858086c80bdf455f61994c4aa6fc3f866c"}, + {file = "librt-0.8.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6b1977c4ea97ce5eb7755a78fae68d87e4102e4aaf54985e8b56806849cc06a3"}, + {file = "librt-0.8.1-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:10c42e1f6fd06733ef65ae7bebce2872bcafd8d6e6b0a08fe0a05a23b044fb14"}, + {file = "librt-0.8.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4c8dfa264b9193c4ee19113c985c95f876fae5e51f731494fc4e0cf594990ba7"}, + {file = "librt-0.8.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:01170b6729a438f0dedc4a26ed342e3dc4f02d1000b4b19f980e1877f0c297e6"}, + {file = "librt-0.8.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:7b02679a0d783bdae30d443025b94465d8c3dc512f32f5b5031f93f57ac32071"}, + {file = "librt-0.8.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:190b109bb69592a3401fe1ffdea41a2e73370ace2ffdc4a0e8e2b39cdea81b78"}, + {file = "librt-0.8.1-cp314-cp314-win32.whl", hash = "sha256:e70a57ecf89a0f64c24e37f38d3fe217a58169d2fe6ed6d70554964042474023"}, + {file = "librt-0.8.1-cp314-cp314-win_amd64.whl", hash = "sha256:7e2f3edca35664499fbb36e4770650c4bd4a08abc1f4458eab9df4ec56389730"}, + {file = "librt-0.8.1-cp314-cp314-win_arm64.whl", hash = "sha256:0d2f82168e55ddefd27c01c654ce52379c0750ddc31ee86b4b266bcf4d65f2a3"}, + {file = "librt-0.8.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2c74a2da57a094bd48d03fa5d196da83d2815678385d2978657499063709abe1"}, + {file = "librt-0.8.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a355d99c4c0d8e5b770313b8b247411ed40949ca44e33e46a4789b9293a907ee"}, + {file = "librt-0.8.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:2eb345e8b33fb748227409c9f1233d4df354d6e54091f0e8fc53acdb2ffedeb7"}, + {file = "librt-0.8.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9be2f15e53ce4e83cc08adc29b26fb5978db62ef2a366fbdf716c8a6c8901040"}, + {file = "librt-0.8.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:785ae29c1f5c6e7c2cde2c7c0e148147f4503da3abc5d44d482068da5322fd9e"}, + {file = "librt-0.8.1-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1d3a7da44baf692f0c6aeb5b2a09c5e6fc7a703bca9ffa337ddd2e2da53f7732"}, + {file = "librt-0.8.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5fc48998000cbc39ec0d5311312dda93ecf92b39aaf184c5e817d5d440b29624"}, + {file = "librt-0.8.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e96baa6820280077a78244b2e06e416480ed859bbd8e5d641cf5742919d8beb4"}, + {file = "librt-0.8.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:31362dbfe297b23590530007062c32c6f6176f6099646bb2c95ab1b00a57c382"}, + {file = "librt-0.8.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cc3656283d11540ab0ea01978378e73e10002145117055e03722417aeab30994"}, + {file = "librt-0.8.1-cp314-cp314t-win32.whl", hash = "sha256:738f08021b3142c2918c03692608baed43bc51144c29e35807682f8070ee2a3a"}, + {file = "librt-0.8.1-cp314-cp314t-win_amd64.whl", hash = "sha256:89815a22daf9c51884fb5dbe4f1ef65ee6a146e0b6a8df05f753e2e4a9359bf4"}, + {file = "librt-0.8.1-cp314-cp314t-win_arm64.whl", hash = "sha256:bf512a71a23504ed08103a13c941f763db13fb11177beb3d9244c98c29fb4a61"}, + {file = "librt-0.8.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3dff3d3ca8db20e783b1bc7de49c0a2ab0b8387f31236d6a026597d07fcd68ac"}, + {file = "librt-0.8.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:08eec3a1fc435f0d09c87b6bf1ec798986a3544f446b864e4099633a56fcd9ed"}, + {file = "librt-0.8.1-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e3f0a41487fd5fad7e760b9e8a90e251e27c2816fbc2cff36a22a0e6bcbbd9dd"}, + {file = "librt-0.8.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bacdb58d9939d95cc557b4dbaa86527c9db2ac1ed76a18bc8d26f6dc8647d851"}, + {file = "librt-0.8.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b6d7ab1f01aa753188605b09a51faa44a3327400b00b8cce424c71910fc0a128"}, + {file = "librt-0.8.1-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4998009e7cb9e896569f4be7004f09d0ed70d386fa99d42b6d363f6d200501ac"}, + {file = "librt-0.8.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2cc68eeeef5e906839c7bb0815748b5b0a974ec27125beefc0f942715785b551"}, + {file = "librt-0.8.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0bf69d79a23f4f40b8673a947a234baeeb133b5078b483b7297c5916539cf5d5"}, + {file = "librt-0.8.1-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:22b46eabd76c1986ee7d231b0765ad387d7673bbd996aa0d0d054b38ac65d8f6"}, + {file = "librt-0.8.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:237796479f4d0637d6b9cbcb926ff424a97735e68ade6facf402df4ec93375ed"}, + {file = "librt-0.8.1-cp39-cp39-win32.whl", hash = "sha256:4beb04b8c66c6ae62f8c1e0b2f097c1ebad9295c929a8d5286c05eae7c2fc7dc"}, + {file = "librt-0.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:64548cde61b692dc0dc379f4b5f59a2f582c2ebe7890d09c1ae3b9e66fa015b7"}, + {file = "librt-0.8.1.tar.gz", hash = "sha256:be46a14693955b3bd96014ccbdb8339ee8c9346fbe11c1b78901b55125f14c73"}, +] + +[[package]] +name = "license-expression" +version = "30.4.4" +description = "license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic." +optional = false +python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c" }, - { file = "ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81" }, + {file = "license_expression-30.4.4-py3-none-any.whl", hash = "sha256:421788fdcadb41f049d2dc934ce666626265aeccefddd25e162a26f23bcbf8a4"}, + {file = "license_expression-30.4.4.tar.gz", hash = "sha256:73448f0aacd8d0808895bdc4b2c8e01a8d67646e4188f887375398c761f340fd"}, ] [package.dependencies] -pygments = "*" +"boolean.py" = ">=4.0" + +[package.extras] +dev = ["Sphinx (>=5.0.2)", "doc8 (>=0.11.2)", "pytest (>=7.0.1)", "pytest-xdist (>=2)", "ruff", "sphinx-autobuild", "sphinx-copybutton", "sphinx-reredirects (>=0.1.2)", "sphinx-rtd-dark-mode (>=1.3.0)", "sphinx-rtd-theme (>=1.0.0)", "sphinxcontrib-apidoc (>=0.4.0)", "twine"] [[package]] -name = "ipywidgets" -version = "8.1.7" -description = "Jupyter interactive widgets" +name = "locket" +version = "1.0.0" +description = "File-based locks for Python on Linux and Windows" optional = false -python-versions = ">=3.7" -groups = ["dev"] +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["main"] files = [ - { file = "ipywidgets-8.1.7-py3-none-any.whl", hash = "sha256:764f2602d25471c213919b8a1997df04bef869251db4ca8efba1b76b1bd9f7bb" }, - { file = "ipywidgets-8.1.7.tar.gz", hash = "sha256:15f1ac050b9ccbefd45dccfbb2ef6bed0029d8278682d569d71b8dd96bee0376" }, + {file = "locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3"}, + {file = "locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632"}, ] -[package.dependencies] -comm = ">=0.1.3" -ipython = ">=6.1.0" -jupyterlab_widgets = ">=3.0.15,<3.1.0" -traitlets = ">=4.3.1" -widgetsnbextension = ">=4.0.14,<4.1.0" - -[package.extras] -test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] - [[package]] -name = "isoduration" -version = "20.11.0" -description = "Operations with ISO 8601 durations" +name = "markdown" +version = "3.10.2" +description = "Python implementation of John Gruber's Markdown." optional = false -python-versions = ">=3.7" +python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, - {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, -] - -[package.dependencies] -arrow = ">=0.15.0" - -[[package]] -name = "isort" -version = "7.0.0" -description = "A Python utility / library to sort Python imports." -optional = false -python-versions = ">=3.10.0" -groups = ["dev"] -files = [ - { file = "isort-7.0.0-py3-none-any.whl", hash = "sha256:1bcabac8bc3c36c7fb7b98a76c8abb18e0f841a3ba81decac7691008592499c1" }, - { file = "isort-7.0.0.tar.gz", hash = "sha256:5513527951aadb3ac4292a41a16cbc50dd1642432f5e8c20057d414bdafb4187" }, + {file = "markdown-3.10.2-py3-none-any.whl", hash = "sha256:e91464b71ae3ee7afd3017d9f358ef0baf158fd9a298db92f1d4761133824c36"}, + {file = "markdown-3.10.2.tar.gz", hash = "sha256:994d51325d25ad8aa7ce4ebaec003febcce822c3f8c911e3b17c52f7f589f950"}, ] [package.extras] -colors = ["colorama"] -plugins = ["setuptools"] - -[[package]] -name = "jedi" -version = "0.19.2" -description = "An autocompletion tool for Python that can be used for text editors." -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - { file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9" }, - { file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0" }, -] - -[package.dependencies] -parso = ">=0.8.4,<0.9.0" - -[package.extras] -docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] -qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["Django", "attrs", "colorama", "docopt", "pytest (<9.0.0)"] - -[[package]] -name = "jinja2" -version = "3.1.6" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - { file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67" }, - { file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d" }, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "json5" -version = "0.12.0" -description = "A Python implementation of the JSON5 data format." -optional = false -python-versions = ">=3.8.0" -groups = ["dev"] -files = [ - { file = "json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db" }, - { file = "json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a" }, -] - -[package.extras] -dev = ["build (==1.2.2.post1)", "coverage (==7.5.4) ; python_version < \"3.9\"", "coverage (==7.8.0) ; python_version >= \"3.9\"", "mypy (==1.14.1) ; python_version < \"3.9\"", "mypy (==1.15.0) ; python_version >= \"3.9\"", "pip (==25.0.1)", "pylint (==3.2.7) ; python_version < \"3.9\"", "pylint (==3.3.6) ; python_version >= \"3.9\"", "ruff (==0.11.2)", "twine (==6.1.0)", "uv (==0.6.11)"] - -[[package]] -name = "jsonpointer" -version = "3.0.0" -description = "Identify specific nodes in a JSON document (RFC 6901)" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, - {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, -] - -[[package]] -name = "jsonschema" -version = "4.25.0" -description = "An implementation of JSON Schema validation for Python" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "jsonschema-4.25.0-py3-none-any.whl", hash = "sha256:24c2e8da302de79c8b9382fee3e76b355e44d2a4364bb207159ce10b517bd716" }, - { file = "jsonschema-4.25.0.tar.gz", hash = "sha256:e63acf5c11762c0e6672ffb61482bdf57f0876684d8d249c0fe2d730d48bc55f" }, -] - -[package.dependencies] -attrs = ">=22.2.0" -fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""} -jsonschema-specifications = ">=2023.03.6" -referencing = ">=0.28.4" -rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} -rfc3987-syntax = { version = ">=1.1.0", optional = true, markers = "extra == \"format-nongpl\"" } -rpds-py = ">=0.7.1" -uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -webcolors = {version = ">=24.6.0", optional = true, markers = "extra == \"format-nongpl\""} - -[package.extras] -format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] -format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "rfc3987-syntax (>=1.1.0)", "uri-template", "webcolors (>=24.6.0)"] - -[[package]] -name = "jsonschema-specifications" -version = "2025.4.1" -description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af" }, - { file = "jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608" }, -] - -[package.dependencies] -referencing = ">=0.31.0" - -[[package]] -name = "jupyter" -version = "1.1.1" -description = "Jupyter metapackage. Install all the Jupyter components in one go." -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83"}, - {file = "jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a"}, -] - -[package.dependencies] -ipykernel = "*" -ipywidgets = "*" -jupyter-console = "*" -jupyterlab = "*" -nbconvert = "*" -notebook = "*" - -[[package]] -name = "jupyter-client" -version = "8.6.3" -description = "Jupyter protocol implementation and client libraries" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, - {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, -] - -[package.dependencies] -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -python-dateutil = ">=2.8.2" -pyzmq = ">=23.0" -tornado = ">=6.2" -traitlets = ">=5.3" - -[package.extras] -docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko ; sys_platform == \"win32\"", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] - -[[package]] -name = "jupyter-console" -version = "6.6.3" -description = "Jupyter terminal console" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"}, - {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"}, -] - -[package.dependencies] -ipykernel = ">=6.14" -ipython = "*" -jupyter-client = ">=7.0.0" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -prompt-toolkit = ">=3.0.30" -pygments = "*" -pyzmq = ">=17" -traitlets = ">=5.4" - -[package.extras] -test = ["flaky", "pexpect", "pytest"] - -[[package]] -name = "jupyter-core" -version = "5.8.1" -description = "Jupyter core package. A base package on which Jupyter projects rely." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0" }, - { file = "jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941" }, -] - -[package.dependencies] -platformdirs = ">=2.5" -pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} -traitlets = ">=5.3" - -[package.extras] -docs = ["intersphinx-registry", "myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-spelling", "traitlets"] -test = ["ipykernel", "pre-commit", "pytest (<9)", "pytest-cov", "pytest-timeout"] - -[[package]] -name = "jupyter-events" -version = "0.12.0" -description = "Jupyter Event System library" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb" }, - { file = "jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b" }, -] - -[package.dependencies] -jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]} -packaging = "*" -python-json-logger = ">=2.0.4" -pyyaml = ">=5.3" -referencing = "*" -rfc3339-validator = "*" -rfc3986-validator = ">=0.1.1" -traitlets = ">=5.3" - -[package.extras] -cli = ["click", "rich"] -docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme (>=0.16)", "sphinx (>=8)", "sphinxcontrib-spelling"] -test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"] - -[[package]] -name = "jupyter-lsp" -version = "2.2.6" -description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "jupyter_lsp-2.2.6-py3-none-any.whl", hash = "sha256:283783752bf0b459ee7fa88effa72104d87dd343b82d5c06cf113ef755b15b6d" }, - { file = "jupyter_lsp-2.2.6.tar.gz", hash = "sha256:0566bd9bb04fd9e6774a937ed01522b555ba78be37bebef787c8ab22de4c0361" }, -] - -[package.dependencies] -jupyter_server = ">=1.1.2" - -[[package]] -name = "jupyter-server" -version = "2.16.0" -description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e" }, - { file = "jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6" }, -] - -[package.dependencies] -anyio = ">=3.1.0" -argon2-cffi = ">=21.1" -jinja2 = ">=3.0.3" -jupyter-client = ">=7.4.4" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -jupyter-events = ">=0.11.0" -jupyter-server-terminals = ">=0.4.4" -nbconvert = ">=6.4.4" -nbformat = ">=5.3.0" -overrides = ">=5.0" -packaging = ">=22.0" -prometheus-client = ">=0.9" -pywinpty = {version = ">=2.0.1", markers = "os_name == \"nt\""} -pyzmq = ">=24" -send2trash = ">=1.8.2" -terminado = ">=0.8.3" -tornado = ">=6.2.0" -traitlets = ">=5.6.0" -websocket-client = ">=1.7" - -[package.extras] -docs = ["ipykernel", "jinja2", "jupyter-client", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"] -test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0,<9)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.7)", "pytest-timeout", "requests"] - -[[package]] -name = "jupyter-server-terminals" -version = "0.5.3" -description = "A Jupyter Server Extension Providing Terminals." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, - {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, -] - -[package.dependencies] -pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""} -terminado = ">=0.8.3" - -[package.extras] -docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"] -test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"] - -[[package]] -name = "jupyterlab" -version = "4.4.4" -description = "JupyterLab computational environment" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "jupyterlab-4.4.4-py3-none-any.whl", hash = "sha256:711611e4f59851152eb93316c3547c3ec6291f16bb455f1f4fa380d25637e0dd" }, - { file = "jupyterlab-4.4.4.tar.gz", hash = "sha256:163fee1ef702e0a057f75d2eed3ed1da8a986d59eb002cbeb6f0c2779e6cd153" }, -] - -[package.dependencies] -async-lru = ">=1.0.0" -httpx = ">=0.25.0" -ipykernel = ">=6.5.0" -jinja2 = ">=3.0.3" -jupyter-core = "*" -jupyter-lsp = ">=2.0.0" -jupyter-server = ">=2.4.0,<3" -jupyterlab-server = ">=2.27.1,<3" -notebook-shim = ">=0.2" -packaging = "*" -setuptools = ">=41.1.0" -tornado = ">=6.2.0" -traitlets = "*" - -[package.extras] -dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.11.4)"] -docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<8.2.0)", "sphinx-copybutton"] -docs-screenshots = ["altair (==5.5.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.5)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.3.post1)", "matplotlib (==3.10.0)", "nbconvert (>=7.0.0)", "pandas (==2.2.3)", "scipy (==1.15.1)", "vega-datasets (==0.9.0)"] -test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] -upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)", "pyyaml-include (<3.0)", "tomli-w (<2.0)"] - -[[package]] -name = "jupyterlab-pygments" -version = "0.3.0" -description = "Pygments theme using JupyterLab CSS variables" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, - {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, -] - -[[package]] -name = "jupyterlab-server" -version = "2.27.3" -description = "A set of server components for JupyterLab and JupyterLab like applications." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4"}, - {file = "jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4"}, -] - -[package.dependencies] -babel = ">=2.10" -jinja2 = ">=3.0.3" -json5 = ">=0.9.0" -jsonschema = ">=4.18.0" -jupyter-server = ">=1.21,<3" -packaging = ">=21.3" -requests = ">=2.31" - -[package.extras] -docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"] -openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"] -test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0,<8)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] - -[[package]] -name = "jupyterlab-widgets" -version = "3.0.15" -description = "Jupyter interactive widgets for JupyterLab" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - { file = "jupyterlab_widgets-3.0.15-py3-none-any.whl", hash = "sha256:d59023d7d7ef71400d51e6fee9a88867f6e65e10a4201605d2d7f3e8f012a31c" }, - { file = "jupyterlab_widgets-3.0.15.tar.gz", hash = "sha256:2920888a0c2922351a9202817957a68c07d99673504d6cd37345299e971bb08b" }, -] - -[[package]] -name = "lark" -version = "1.2.2" -description = "a modern parsing library" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "lark-1.2.2-py3-none-any.whl", hash = "sha256:c2276486b02f0f1b90be155f2c8ba4a8e194d42775786db622faccd652d8e80c" }, - { file = "lark-1.2.2.tar.gz", hash = "sha256:ca807d0162cd16cef15a8feecb862d7319e7a09bdb13aef927968e45040fed80" }, -] - -[package.extras] -atomic-cache = ["atomicwrites"] -interegular = ["interegular (>=0.3.1,<0.4.0)"] -nearley = ["js2py"] -regex = ["regex"] - -[[package]] -name = "locket" -version = "1.0.0" -description = "File-based locks for Python on Linux and Windows" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -groups = ["main"] -files = [ - {file = "locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3"}, - {file = "locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632"}, -] - -[[package]] -name = "markdown" -version = "3.8.2" -description = "Python implementation of John Gruber's Markdown." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24" }, - { file = "markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45" }, -] - -[package.extras] -docs = ["mdx_gh_links (>=0.2)", "mkdocs (>=1.6)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] +docs = ["mdx_gh_links (>=0.2)", "mkdocs (>=1.6)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python] (>=0.28.3)"] testing = ["coverage", "pyyaml"] [[package]] name = "markupsafe" -version = "3.0.2" +version = "3.0.3" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, - {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, -] - -[[package]] -name = "matplotlib-inline" -version = "0.1.7" -description = "Inline Matplotlib backend for Jupyter" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, - {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, + {file = "markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559"}, + {file = "markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419"}, + {file = "markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695"}, + {file = "markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591"}, + {file = "markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c"}, + {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f"}, + {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6"}, + {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1"}, + {file = "markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa"}, + {file = "markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8"}, + {file = "markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1"}, + {file = "markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad"}, + {file = "markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a"}, + {file = "markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50"}, + {file = "markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf"}, + {file = "markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f"}, + {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a"}, + {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115"}, + {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a"}, + {file = "markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19"}, + {file = "markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01"}, + {file = "markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c"}, + {file = "markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e"}, + {file = "markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce"}, + {file = "markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d"}, + {file = "markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d"}, + {file = "markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a"}, + {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b"}, + {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f"}, + {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b"}, + {file = "markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d"}, + {file = "markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c"}, + {file = "markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f"}, + {file = "markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795"}, + {file = "markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219"}, + {file = "markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6"}, + {file = "markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676"}, + {file = "markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9"}, + {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1"}, + {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc"}, + {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12"}, + {file = "markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed"}, + {file = "markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5"}, + {file = "markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485"}, + {file = "markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73"}, + {file = "markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37"}, + {file = "markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19"}, + {file = "markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025"}, + {file = "markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6"}, + {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f"}, + {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb"}, + {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009"}, + {file = "markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354"}, + {file = "markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218"}, + {file = "markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287"}, + {file = "markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe"}, + {file = "markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026"}, + {file = "markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737"}, + {file = "markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97"}, + {file = "markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d"}, + {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda"}, + {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf"}, + {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe"}, + {file = "markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9"}, + {file = "markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581"}, + {file = "markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4"}, + {file = "markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab"}, + {file = "markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175"}, + {file = "markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634"}, + {file = "markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50"}, + {file = "markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e"}, + {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5"}, + {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523"}, + {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc"}, + {file = "markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d"}, + {file = "markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9"}, + {file = "markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa"}, + {file = "markupsafe-3.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15d939a21d546304880945ca1ecb8a039db6b4dc49b2c5a400387cdae6a62e26"}, + {file = "markupsafe-3.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f71a396b3bf33ecaa1626c255855702aca4d3d9fea5e051b41ac59a9c1c41edc"}, + {file = "markupsafe-3.0.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f4b68347f8c5eab4a13419215bdfd7f8c9b19f2b25520968adfad23eb0ce60c"}, + {file = "markupsafe-3.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8fc20152abba6b83724d7ff268c249fa196d8259ff481f3b1476383f8f24e42"}, + {file = "markupsafe-3.0.3-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:949b8d66bc381ee8b007cd945914c721d9aba8e27f71959d750a46f7c282b20b"}, + {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:3537e01efc9d4dccdf77221fb1cb3b8e1a38d5428920e0657ce299b20324d758"}, + {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:591ae9f2a647529ca990bc681daebdd52c8791ff06c2bfa05b65163e28102ef2"}, + {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a320721ab5a1aba0a233739394eb907f8c8da5c98c9181d1161e77a0c8e36f2d"}, + {file = "markupsafe-3.0.3-cp39-cp39-win32.whl", hash = "sha256:df2449253ef108a379b8b5d6b43f4b1a8e81a061d6537becd5582fba5f9196d7"}, + {file = "markupsafe-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:7c3fb7d25180895632e5d3148dbdc29ea38ccb7fd210aa27acbd1201a1902c6e"}, + {file = "markupsafe-3.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:38664109c14ffc9e7437e86b4dceb442b0096dfe3541d7864d9cbe1da4cf36c8"}, + {file = "markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698"}, ] -[package.dependencies] -traitlets = "*" - [[package]] name = "mergedeep" version = "1.3.4" @@ -1829,20 +1004,8 @@ optional = false python-versions = ">=3.6" groups = ["dev"] files = [ - { file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307" }, - { file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8" }, -] - -[[package]] -name = "mistune" -version = "3.1.3" -description = "A sane and fast Markdown parser with useful plugins and renderers" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9" }, - { file = "mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0" }, + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, ] [[package]] @@ -1853,13 +1016,13 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e" }, - { file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2" }, + {file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e"}, + {file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2"}, ] [package.dependencies] click = ">=7.0" -colorama = { version = ">=0.4", markers = "platform_system == \"Windows\"" } +colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} ghp-import = ">=1.0" jinja2 = ">=2.11.1" markdown = ">=3.3.6" @@ -1878,14 +1041,14 @@ min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4) ; platform [[package]] name = "mkdocs-autorefs" -version = "1.4.2" +version = "1.4.4" description = "Automatically link across pages in MkDocs." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13" }, - { file = "mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749" }, + {file = "mkdocs_autorefs-1.4.4-py3-none-any.whl", hash = "sha256:834ef5408d827071ad1bc69e0f39704fa34c7fc05bc8e1c72b227dfdc5c76089"}, + {file = "mkdocs_autorefs-1.4.4.tar.gz", hash = "sha256:d54a284f27a7346b9c38f1f852177940c222da508e66edc816a0fa55fc6da197"}, ] [package.dependencies] @@ -1901,8 +1064,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134" }, - { file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c" }, + {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, + {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, ] [package.dependencies] @@ -1912,33 +1075,33 @@ pyyaml = ">=5.1" [[package]] name = "mkdocs-material" -version = "9.6.15" +version = "9.7.2" description = "Documentation that simply works" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "mkdocs_material-9.6.15-py3-none-any.whl", hash = "sha256:ac969c94d4fe5eb7c924b6d2f43d7db41159ea91553d18a9afc4780c34f2717a" }, - { file = "mkdocs_material-9.6.15.tar.gz", hash = "sha256:64adf8fa8dba1a17905b6aee1894a5aafd966d4aeb44a11088519b0f5ca4f1b5" }, + {file = "mkdocs_material-9.7.2-py3-none-any.whl", hash = "sha256:9bf6f53452d4a4d527eac3cef3f92b7b6fc4931c55d57766a7d87890d47e1b92"}, + {file = "mkdocs_material-9.7.2.tar.gz", hash = "sha256:6776256552290b9b7a7aa002780e25b1e04bc9c3a8516b6b153e82e16b8384bd"}, ] [package.dependencies] -babel = ">=2.10,<3.0" -backrefs = ">=5.7.post1,<6.0" -colorama = ">=0.4,<1.0" -jinja2 = ">=3.1,<4.0" -markdown = ">=3.2,<4.0" -mkdocs = ">=1.6,<2.0" -mkdocs-material-extensions = ">=1.3,<2.0" -paginate = ">=0.5,<1.0" -pygments = ">=2.16,<3.0" -pymdown-extensions = ">=10.2,<11.0" -requests = ">=2.26,<3.0" +babel = ">=2.10" +backrefs = ">=5.7.post1" +colorama = ">=0.4" +jinja2 = ">=3.1" +markdown = ">=3.2" +mkdocs = ">=1.6" +mkdocs-material-extensions = ">=1.3" +paginate = ">=0.5" +pygments = ">=2.16" +pymdown-extensions = ">=10.2" +requests = ">=2.30" [package.extras] -git = ["mkdocs-git-committers-plugin-2 (>=1.1,<3)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] -imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] -recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] +git = ["mkdocs-git-committers-plugin-2 (>=1.1)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4)"] +imaging = ["cairosvg (>=2.6)", "pillow (>=10.2)"] +recommended = ["mkdocs-minify-plugin (>=0.7)", "mkdocs-redirects (>=1.2)", "mkdocs-rss-plugin (>=1.6)"] [[package]] name = "mkdocs-material-extensions" @@ -1948,29 +1111,28 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31" }, - { file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443" }, + {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, + {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, ] [[package]] name = "mkdocstrings" -version = "0.29.1" +version = "1.0.3" description = "Automatic documentation from sources, for MkDocs." optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ - { file = "mkdocstrings-0.29.1-py3-none-any.whl", hash = "sha256:37a9736134934eea89cbd055a513d40a020d87dfcae9e3052c2a6b8cd4af09b6" }, - { file = "mkdocstrings-0.29.1.tar.gz", hash = "sha256:8722f8f8c5cd75da56671e0a0c1bbed1df9946c0cef74794d6141b34011abd42" }, + {file = "mkdocstrings-1.0.3-py3-none-any.whl", hash = "sha256:0d66d18430c2201dc7fe85134277382baaa15e6b30979f3f3bdbabd6dbdb6046"}, + {file = "mkdocstrings-1.0.3.tar.gz", hash = "sha256:ab670f55040722b49bb45865b2e93b824450fb4aef638b00d7acb493a9020434"}, ] [package.dependencies] -Jinja2 = ">=2.11.1" +Jinja2 = ">=3.1" Markdown = ">=3.6" MarkupSafe = ">=1.1" mkdocs = ">=1.6" mkdocs-autorefs = ">=1.4" -mkdocstrings-python = { version = ">=1.16.2", optional = true, markers = "extra == \"python\"" } pymdown-extensions = ">=6.3" [package.extras] @@ -1978,66 +1140,56 @@ crystal = ["mkdocstrings-crystal (>=0.3.4)"] python = ["mkdocstrings-python (>=1.16.2)"] python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] -[[package]] -name = "mkdocstrings-python" -version = "1.16.12" -description = "A Python handler for mkdocstrings." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "mkdocstrings_python-1.16.12-py3-none-any.whl", hash = "sha256:22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374" }, - { file = "mkdocstrings_python-1.16.12.tar.gz", hash = "sha256:9b9eaa066e0024342d433e332a41095c4e429937024945fea511afe58f63175d" }, -] - -[package.dependencies] -griffe = ">=1.6.2" -mkdocs-autorefs = ">=1.4" -mkdocstrings = ">=0.28.3" - [[package]] name = "mypy" -version = "1.17.0" +version = "1.19.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "mypy-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8e08de6138043108b3b18f09d3f817a4783912e48828ab397ecf183135d84d6" }, - { file = "mypy-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce4a17920ec144647d448fc43725b5873548b1aae6c603225626747ededf582d" }, - { file = "mypy-1.17.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ff25d151cc057fdddb1cb1881ef36e9c41fa2a5e78d8dd71bee6e4dcd2bc05b" }, - { file = "mypy-1.17.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93468cf29aa9a132bceb103bd8475f78cacde2b1b9a94fd978d50d4bdf616c9a" }, - { file = "mypy-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:98189382b310f16343151f65dd7e6867386d3e35f7878c45cfa11383d175d91f" }, - { file = "mypy-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:c004135a300ab06a045c1c0d8e3f10215e71d7b4f5bb9a42ab80236364429937" }, - { file = "mypy-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9d4fe5c72fd262d9c2c91c1117d16aac555e05f5beb2bae6a755274c6eec42be" }, - { file = "mypy-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96b196e5c16f41b4f7736840e8455958e832871990c7ba26bf58175e357ed61" }, - { file = "mypy-1.17.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:73a0ff2dd10337ceb521c080d4147755ee302dcde6e1a913babd59473904615f" }, - { file = "mypy-1.17.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:24cfcc1179c4447854e9e406d3af0f77736d631ec87d31c6281ecd5025df625d" }, - { file = "mypy-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3c56f180ff6430e6373db7a1d569317675b0a451caf5fef6ce4ab365f5f2f6c3" }, - { file = "mypy-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:eafaf8b9252734400f9b77df98b4eee3d2eecab16104680d51341c75702cad70" }, - { file = "mypy-1.17.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f986f1cab8dbec39ba6e0eaa42d4d3ac6686516a5d3dccd64be095db05ebc6bb" }, - { file = "mypy-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:51e455a54d199dd6e931cd7ea987d061c2afbaf0960f7f66deef47c90d1b304d" }, - { file = "mypy-1.17.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3204d773bab5ff4ebbd1f8efa11b498027cd57017c003ae970f310e5b96be8d8" }, - { file = "mypy-1.17.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1051df7ec0886fa246a530ae917c473491e9a0ba6938cfd0ec2abc1076495c3e" }, - { file = "mypy-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f773c6d14dcc108a5b141b4456b0871df638eb411a89cd1c0c001fc4a9d08fc8" }, - { file = "mypy-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:1619a485fd0e9c959b943c7b519ed26b712de3002d7de43154a489a2d0fd817d" }, - { file = "mypy-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c41aa59211e49d717d92b3bb1238c06d387c9325d3122085113c79118bebb06" }, - { file = "mypy-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e69db1fb65b3114f98c753e3930a00514f5b68794ba80590eb02090d54a5d4a" }, - { file = "mypy-1.17.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:03ba330b76710f83d6ac500053f7727270b6b8553b0423348ffb3af6f2f7b889" }, - { file = "mypy-1.17.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:037bc0f0b124ce46bfde955c647f3e395c6174476a968c0f22c95a8d2f589bba" }, - { file = "mypy-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c38876106cb6132259683632b287238858bd58de267d80defb6f418e9ee50658" }, - { file = "mypy-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:d30ba01c0f151998f367506fab31c2ac4527e6a7b2690107c7a7f9e3cb419a9c" }, - { file = "mypy-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:63e751f1b5ab51d6f3d219fe3a2fe4523eaa387d854ad06906c63883fde5b1ab" }, - { file = "mypy-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7fb09d05e0f1c329a36dcd30e27564a3555717cde87301fae4fb542402ddfad" }, - { file = "mypy-1.17.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b72c34ce05ac3a1361ae2ebb50757fb6e3624032d91488d93544e9f82db0ed6c" }, - { file = "mypy-1.17.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:434ad499ad8dde8b2f6391ddfa982f41cb07ccda8e3c67781b1bfd4e5f9450a8" }, - { file = "mypy-1.17.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f105f61a5eff52e137fd73bee32958b2add9d9f0a856f17314018646af838e97" }, - { file = "mypy-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:ba06254a5a22729853209550d80f94e28690d5530c661f9416a68ac097b13fc4" }, - { file = "mypy-1.17.0-py3-none-any.whl", hash = "sha256:15d9d0018237ab058e5de3d8fce61b6fa72cc59cc78fd91f1b474bce12abf496" }, - { file = "mypy-1.17.0.tar.gz", hash = "sha256:e5d7ccc08ba089c06e2f5629c660388ef1fee708444f1dee0b9203fa031dee03" }, -] - -[package.dependencies] + {file = "mypy-1.19.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f05aa3d375b385734388e844bc01733bd33c644ab48e9684faa54e5389775ec"}, + {file = "mypy-1.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:022ea7279374af1a5d78dfcab853fe6a536eebfda4b59deab53cd21f6cd9f00b"}, + {file = "mypy-1.19.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee4c11e460685c3e0c64a4c5de82ae143622410950d6be863303a1c4ba0e36d6"}, + {file = "mypy-1.19.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de759aafbae8763283b2ee5869c7255391fbc4de3ff171f8f030b5ec48381b74"}, + {file = "mypy-1.19.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ab43590f9cd5108f41aacf9fca31841142c786827a74ab7cc8a2eacb634e09a1"}, + {file = "mypy-1.19.1-cp310-cp310-win_amd64.whl", hash = "sha256:2899753e2f61e571b3971747e302d5f420c3fd09650e1951e99f823bc3089dac"}, + {file = "mypy-1.19.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d8dfc6ab58ca7dda47d9237349157500468e404b17213d44fc1cb77bce532288"}, + {file = "mypy-1.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e3f276d8493c3c97930e354b2595a44a21348b320d859fb4a2b9f66da9ed27ab"}, + {file = "mypy-1.19.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2abb24cf3f17864770d18d673c85235ba52456b36a06b6afc1e07c1fdcd3d0e6"}, + {file = "mypy-1.19.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a009ffa5a621762d0c926a078c2d639104becab69e79538a494bcccb62cc0331"}, + {file = "mypy-1.19.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f7cee03c9a2e2ee26ec07479f38ea9c884e301d42c6d43a19d20fb014e3ba925"}, + {file = "mypy-1.19.1-cp311-cp311-win_amd64.whl", hash = "sha256:4b84a7a18f41e167f7995200a1d07a4a6810e89d29859df936f1c3923d263042"}, + {file = "mypy-1.19.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a8174a03289288c1f6c46d55cef02379b478bfbc8e358e02047487cad44c6ca1"}, + {file = "mypy-1.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffcebe56eb09ff0c0885e750036a095e23793ba6c2e894e7e63f6d89ad51f22e"}, + {file = "mypy-1.19.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b64d987153888790bcdb03a6473d321820597ab8dd9243b27a92153c4fa50fd2"}, + {file = "mypy-1.19.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c35d298c2c4bba75feb2195655dfea8124d855dfd7343bf8b8c055421eaf0cf8"}, + {file = "mypy-1.19.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:34c81968774648ab5ac09c29a375fdede03ba253f8f8287847bd480782f73a6a"}, + {file = "mypy-1.19.1-cp312-cp312-win_amd64.whl", hash = "sha256:b10e7c2cd7870ba4ad9b2d8a6102eb5ffc1f16ca35e3de6bfa390c1113029d13"}, + {file = "mypy-1.19.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e3157c7594ff2ef1634ee058aafc56a82db665c9438fd41b390f3bde1ab12250"}, + {file = "mypy-1.19.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdb12f69bcc02700c2b47e070238f42cb87f18c0bc1fc4cdb4fb2bc5fd7a3b8b"}, + {file = "mypy-1.19.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f859fb09d9583a985be9a493d5cfc5515b56b08f7447759a0c5deaf68d80506e"}, + {file = "mypy-1.19.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c9a6538e0415310aad77cb94004ca6482330fece18036b5f360b62c45814c4ef"}, + {file = "mypy-1.19.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:da4869fc5e7f62a88f3fe0b5c919d1d9f7ea3cef92d3689de2823fd27e40aa75"}, + {file = "mypy-1.19.1-cp313-cp313-win_amd64.whl", hash = "sha256:016f2246209095e8eda7538944daa1d60e1e8134d98983b9fc1e92c1fc0cb8dd"}, + {file = "mypy-1.19.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:06e6170bd5836770e8104c8fdd58e5e725cfeb309f0a6c681a811f557e97eac1"}, + {file = "mypy-1.19.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:804bd67b8054a85447c8954215a906d6eff9cabeabe493fb6334b24f4bfff718"}, + {file = "mypy-1.19.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:21761006a7f497cb0d4de3d8ef4ca70532256688b0523eee02baf9eec895e27b"}, + {file = "mypy-1.19.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:28902ee51f12e0f19e1e16fbe2f8f06b6637f482c459dd393efddd0ec7f82045"}, + {file = "mypy-1.19.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:481daf36a4c443332e2ae9c137dfee878fcea781a2e3f895d54bd3002a900957"}, + {file = "mypy-1.19.1-cp314-cp314-win_amd64.whl", hash = "sha256:8bb5c6f6d043655e055be9b542aa5f3bdd30e4f3589163e85f93f3640060509f"}, + {file = "mypy-1.19.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7bcfc336a03a1aaa26dfce9fff3e287a3ba99872a157561cbfcebe67c13308e3"}, + {file = "mypy-1.19.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b7951a701c07ea584c4fe327834b92a30825514c868b1f69c30445093fdd9d5a"}, + {file = "mypy-1.19.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b13cfdd6c87fc3efb69ea4ec18ef79c74c3f98b4e5498ca9b85ab3b2c2329a67"}, + {file = "mypy-1.19.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f28f99c824ecebcdaa2e55d82953e38ff60ee5ec938476796636b86afa3956e"}, + {file = "mypy-1.19.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c608937067d2fc5a4dd1a5ce92fd9e1398691b8c5d012d66e1ddd430e9244376"}, + {file = "mypy-1.19.1-cp39-cp39-win_amd64.whl", hash = "sha256:409088884802d511ee52ca067707b90c883426bd95514e8cfda8281dc2effe24"}, + {file = "mypy-1.19.1-py3-none-any.whl", hash = "sha256:f1235f5ea01b7db5468d53ece6aaddf1ad0b88d9e7462b86ef96fe04995d7247"}, + {file = "mypy-1.19.1.tar.gz", hash = "sha256:19d88bb05303fe63f71dd2c6270daca27cb9401c4ca8255fe50d1d920e0eb9ba"}, +] + +[package.dependencies] +librt = {version = ">=0.6.2", markers = "platform_python_implementation != \"PyPy\""} mypy_extensions = ">=1.0.0" pathspec = ">=0.9.0" typing_extensions = ">=4.6.0" @@ -2057,352 +1209,203 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505" }, - { file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558" }, -] - -[[package]] -name = "nbclient" -version = "0.10.2" -description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." -optional = false -python-versions = ">=3.9.0" -groups = ["dev"] -files = [ - { file = "nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d" }, - { file = "nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193" }, -] - -[package.dependencies] -jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -nbformat = ">=5.1" -traitlets = ">=5.4" - -[package.extras] -dev = ["pre-commit"] -docs = ["autodoc-traits", "flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "mock", "moto", "myst-parser", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling", "testpath", "xmltodict"] -test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] - -[[package]] -name = "nbconvert" -version = "7.16.6" -description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b" }, - { file = "nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582" }, -] - -[package.dependencies] -beautifulsoup4 = "*" -bleach = { version = "!=5.0.0", extras = ["css"] } -defusedxml = "*" -jinja2 = ">=3.0" -jupyter-core = ">=4.7" -jupyterlab-pygments = "*" -markupsafe = ">=2.0" -mistune = ">=2.0.3,<4" -nbclient = ">=0.5.0" -nbformat = ">=5.7" -packaging = "*" -pandocfilters = ">=1.4.1" -pygments = ">=2.4.1" -traitlets = ">=5.1" - -[package.extras] -all = ["flaky", "ipykernel", "ipython", "ipywidgets (>=7.5)", "myst-parser", "nbsphinx (>=0.2.12)", "playwright", "pydata-sphinx-theme", "pyqtwebengine (>=5.15)", "pytest (>=7)", "sphinx (==5.0.2)", "sphinxcontrib-spelling", "tornado (>=6.1)"] -docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"] -qtpdf = ["pyqtwebengine (>=5.15)"] -qtpng = ["pyqtwebengine (>=5.15)"] -serve = ["tornado (>=6.1)"] -test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest (>=7)"] -webpdf = ["playwright"] - -[[package]] -name = "nbformat" -version = "5.10.4" -description = "The Jupyter Notebook format" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, - {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, -] - -[package.dependencies] -fastjsonschema = ">=2.15" -jsonschema = ">=2.6" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -traitlets = ">=5.1" - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["pep440", "pre-commit", "pytest", "testpath"] - -[[package]] -name = "nest-asyncio" -version = "1.6.0" -description = "Patch asyncio to allow nested event loops" -optional = false -python-versions = ">=3.5" -groups = ["dev"] -files = [ - {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, - {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, + {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, + {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, ] [[package]] name = "netcdf4" -version = "1.7.2" +version = "1.7.4" description = "Provides an object-oriented python interface to the netCDF version 4 library" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" groups = ["main"] files = [ - {file = "netCDF4-1.7.2-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:5e9b485e3bd9294d25ff7dc9addefce42b3d23c1ee7e3627605277d159819392"}, - {file = "netCDF4-1.7.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:118b476fd00d7e3ab9aa7771186d547da645ae3b49c0c7bdab866793ebf22f07"}, - {file = "netCDF4-1.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abe5b1837ff209185ecfe50bd71884c866b3ee69691051833e410e57f177e059"}, - {file = "netCDF4-1.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28021c7e886e5bccf9a8ce504c032d1d7f98d86f67495fb7cf2c9564eba04510"}, - {file = "netCDF4-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:7460b638e41c8ce4179d082a81cb6456f0ce083d4d959f4d9e87a95cd86f64cb"}, - {file = "netCDF4-1.7.2-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:09d61c2ddb6011afb51e77ea0f25cd0bdc28887fb426ffbbc661d920f20c9749"}, - {file = "netCDF4-1.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:fd2a16dbddeb8fa7cf48c37bfc1967290332f2862bb82f984eec2007bb120aeb"}, - {file = "netCDF4-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f54f5d39ffbcf1726a1e6fd90cb5fa74277ecea739a5fa0f424636d71beafe24"}, - {file = "netCDF4-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:902aa50d70f49d002d896212a171d344c38f7b8ca520837c56c922ac1535c4a3"}, - {file = "netCDF4-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3291f9ad0c98c49a4dd16aefad1a9abd3a1b884171db6c81bdcee94671cfabe3"}, - {file = "netCDF4-1.7.2-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e73e3baa0b74afc414e53ff5095748fdbec7fb346eda351e567c23f2f0d247f1"}, - {file = "netCDF4-1.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a51da09258b31776f474c1d47e484fc7214914cdc59edf4cee789ba632184591"}, - {file = "netCDF4-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb95b11804fe051897d1f2044b05d82a1847bc2549631cdd2f655dde7de77a9c"}, - {file = "netCDF4-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d8a848373723f41ef662590b4f5e1832227501c9fd4513e8ad8da58c269977"}, - {file = "netCDF4-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:568ea369e00b581302d77fc5fd0b8f78e520c7e08d0b5af5219ba51f3f1cd694"}, - {file = "netCDF4-1.7.2-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:205a5f1de3ddb993c7c97fb204a923a22408cc2e5facf08d75a8eb89b3e7e1a8"}, - {file = "netCDF4-1.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:96653fc75057df196010818367c63ba6d7e9af603df0a7fe43fcdad3fe0e9e56"}, - {file = "netCDF4-1.7.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30d20e56b9ba2c48884eb89c91b63e6c0612b4927881707e34402719153ef17f"}, - {file = "netCDF4-1.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d6bfd38ba0bde04d56f06c1554714a2ea9dab75811c89450dc3ec57a9d36b80"}, - {file = "netCDF4-1.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:5c5fbee6134ee1246c397e1508e5297d825aa19221fdf3fa8dc9727ad824d7a5"}, - {file = "netCDF4-1.7.2-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:6bf402c2c7c063474576e5cf89af877d0b0cd097d9316d5bc4fcb22b62f12567"}, - {file = "netCDF4-1.7.2-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:5bdf3b34e6fd4210e34fdc5d1a669a22c4863d96f8a20a3928366acae7b3cbbb"}, - {file = "netCDF4-1.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:657774404b9f78a5e4d26506ac9bfe106e4a37238282a70803cc7ce679c5a6cc"}, - {file = "netCDF4-1.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e896d92f01fbf365e33e2513d5a8c4cfe16ff406aae9b6034e5ba1538c8c7a8"}, - {file = "netCDF4-1.7.2-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:eb87c08d1700fe67c301898cf5ba3a3e1f8f2fbb417fcd0e2ac784846b60b058"}, - {file = "netCDF4-1.7.2-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:59b403032774c723ee749d7f2135be311bad7d00d1db284bebfab58b9d5cdb92"}, - {file = "netCDF4-1.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:572f71459ef4b30e8554dcc4e1e6f55de515acc82a50968b48fe622244a64548"}, - {file = "netCDF4-1.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f77e72281acc5f331f82271e5f7f014d46f5ca9bcaa5aafe3e46d66cee21320"}, - {file = "netCDF4-1.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:d0fa7a9674fae8ae4877e813173c3ff7a6beee166b8730bdc847f517b282ed31"}, - {file = "netcdf4-1.7.2.tar.gz", hash = "sha256:a4c6375540b19989896136943abb6d44850ff6f1fa7d3f063253b1ad3f8b7fce"}, + {file = "netcdf4-1.7.4-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:b1c1a7ea3678db76bf33d14f7e202385d634db38c5e70d8cf4895971023eebb9"}, + {file = "netcdf4-1.7.4-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:d3f9497873454207f9480847d02b1b19a4bc81ad6e9166e1c17d4e2f8f3555d1"}, + {file = "netcdf4-1.7.4-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c8e18294af803e80f8c0339f791901942e268c334c099bbd5f7ea8325a49801a"}, + {file = "netcdf4-1.7.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0b06c0b93fd0ecc1ec67a582f3ba98b7db9da1fa843c8f83fd75990e3701771e"}, + {file = "netcdf4-1.7.4-cp310-cp310-win_amd64.whl", hash = "sha256:889ba77f084504aebaba9c6f9a88ac213431fef0e897f887cd35aef351ff7740"}, + {file = "netcdf4-1.7.4-cp311-abi3-macosx_13_0_x86_64.whl", hash = "sha256:dec70e809cc65b04ebe95113ee9c85ba46a51c3a37c058d2b2b0cadc4d3052d8"}, + {file = "netcdf4-1.7.4-cp311-abi3-macosx_14_0_arm64.whl", hash = "sha256:75cf59100f0775bc4d6b9d4aca7cbabd12e2b8cf3b9a4fb16d810b92743a315a"}, + {file = "netcdf4-1.7.4-cp311-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ddfc7e9d261125c74708119440c85ea288b5fee41db676d2ba1ce9be11f96932"}, + {file = "netcdf4-1.7.4-cp311-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a72c9f58767779ec14cb7451c3b56bdd8fdc027a792fac2062b14e090c5617f3"}, + {file = "netcdf4-1.7.4-cp311-abi3-win_amd64.whl", hash = "sha256:9476e1f23161ae5159cd1548c50c8a37922e77d76583e247133f256ef7b825fc"}, + {file = "netcdf4-1.7.4-cp311-abi3-win_arm64.whl", hash = "sha256:876ad9d58f09c98741c066c726164c45a098a58fb90e5fac9e74de4bb8a793fd"}, + {file = "netcdf4-1.7.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56688c03444fffe0d0c7512cb45245e650389cd841c955b30e4552fa681c4cd9"}, + {file = "netcdf4-1.7.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7ecf471ba8a6ddb2200121949bedfa0095db228822f38227d5da680694a38358"}, + {file = "netcdf4-1.7.4-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a5841de0735e8e4875b367c668e81d334287858d64dd9f3e3e2261e808c84922"}, + {file = "netcdf4-1.7.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:86fac03a8c5b250d57866e7d98918a64742e4b0de1681c5c86bac5726bab8aee"}, + {file = "netcdf4-1.7.4-cp314-cp314t-macosx_13_0_x86_64.whl", hash = "sha256:ad083d260301b5add74b1669c75ab0df03bdf986decfcc092cb45eec2615b5f1"}, + {file = "netcdf4-1.7.4-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:7f22014092cc9da3f056b0368e2e38c42afd5725c87ad4843eb2f467e16dd4f6"}, + {file = "netcdf4-1.7.4-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:224a15434c165a5e0225e5831f591edf62533044b1ce62fdfee815195bbd077d"}, + {file = "netcdf4-1.7.4-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:31a2318305de6831a18df25ad0df9f03b6d68666af0356d4f6057d66c02ffeb6"}, + {file = "netcdf4-1.7.4-cp314-cp314t-win_amd64.whl", hash = "sha256:6c4a0aa9446c3a616ef3be015b629dc6173643f8b09546de26a4e40e272cd1ed"}, + {file = "netcdf4-1.7.4-cp314-cp314t-win_arm64.whl", hash = "sha256:034220887d48da032cb2db5958f69759dbb04eb33e279ec6390571d4aea734fe"}, + {file = "netcdf4-1.7.4.tar.gz", hash = "sha256:cdbfdc92d6f4d7192ca8506c9b3d4c1d9892969ff28d8e8e1fc97ca08bf12164"}, ] [package.dependencies] certifi = "*" cftime = "*" -numpy = "*" +numpy = [ + {version = ">=2.3.0", markers = "platform_system == \"Windows\" and platform_machine == \"ARM64\""}, + {version = ">=1.21.2", markers = "platform_system != \"Windows\" or platform_machine != \"ARM64\""}, +] [package.extras] -tests = ["Cython", "packaging", "pytest"] +parallel = ["mpi4py"] +tests = ["Cython", "packaging", "pytest", "typing-extensions (>=4.15.0)"] [[package]] name = "nodeenv" -version = "1.9.1" +version = "1.10.0" description = "Node.js virtual environment builder" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" groups = ["dev"] files = [ - {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, - {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, -] - -[[package]] -name = "notebook" -version = "7.4.4" -description = "Jupyter Notebook - A web-based notebook environment for interactive computing" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "notebook-7.4.4-py3-none-any.whl", hash = "sha256:32840f7f777b6bff79bb101159336e9b332bdbfba1495b8739e34d1d65cbc1c0" }, - { file = "notebook-7.4.4.tar.gz", hash = "sha256:392fd501e266f2fb3466c6fcd3331163a2184968cb5c5accf90292e01dfe528c" }, -] - -[package.dependencies] -jupyter-server = ">=2.4.0,<3" -jupyterlab = ">=4.4.4,<4.5" -jupyterlab-server = ">=2.27.1,<3" -notebook-shim = ">=0.2,<0.3" -tornado = ">=6.2.0" - -[package.extras] -dev = ["hatch", "pre-commit"] -docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["importlib-resources (>=5.0) ; python_version < \"3.10\"", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] - -[[package]] -name = "notebook-shim" -version = "0.2.4" -description = "A shim layer for notebook traits and config" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, - {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, + {file = "nodeenv-1.10.0-py2.py3-none-any.whl", hash = "sha256:5bb13e3eed2923615535339b3c620e76779af4cb4c6a90deccc9e36b274d3827"}, + {file = "nodeenv-1.10.0.tar.gz", hash = "sha256:996c191ad80897d076bdfba80a41994c2b47c68e224c542b48feba42ba00f8bb"}, ] -[package.dependencies] -jupyter-server = ">=1.8,<3" - -[package.extras] -test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"] - [[package]] name = "numcodecs" -version = "0.16.1" +version = "0.16.5" description = "A Python package providing buffer compression and transformation codecs for use in data storage and communication applications." optional = false python-versions = ">=3.11" groups = ["main"] files = [ - { file = "numcodecs-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5348a25aefbce37ea7c00c3363d36176155233c95597e5905a932e9620df960d" }, - { file = "numcodecs-0.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2058b0a985470809c720d2457758b61e6c9495a49d5f20dfac9b5ebabd8848eb" }, - { file = "numcodecs-0.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b216b6d7bc207b85d41fddbc25b09fd00d76e265454db6e3fb09d5da0216397" }, - { file = "numcodecs-0.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2308d56c4f84a5b942f8668b4adedd3d9cdd6a22e6e6e20768ec356c77050f38" }, - { file = "numcodecs-0.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:acd8d68b4b815e62cb91e6064a53dac51ee99849350784ee16dd52cdbb4bc70f" }, - { file = "numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122" }, - { file = "numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458" }, - { file = "numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40" }, - { file = "numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609" }, - { file = "numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df" }, - { file = "numcodecs-0.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2ad8ee940315f59188accfc3f2d39726a4ca0d76b49bf8d0018e121f01c49028" }, - { file = "numcodecs-0.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:179ca7bf3525a0f7379df7767d87dd495253de44597cb7e511198b28b09da633" }, - { file = "numcodecs-0.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e2babbb50bf348ae982818d5560af330eab0dcd925fb0e49509785ad57d11db" }, - { file = "numcodecs-0.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4b29d8d3284b72bfad4fb83d672a17f497ae86ee1ef8087bac7222b620d3d91" }, - { file = "numcodecs-0.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:06489635f43e1a959aea73cb830d78cf3adb07ac5f34daccb92091e4d9ac6b07" }, - { file = "numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1" }, + {file = "numcodecs-0.16.5-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:78382dcea50622f2ef1e6e7a71dbe7f861d8fe376b27b7c297c26907304fef1e"}, + {file = "numcodecs-0.16.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2d04a19cb57a3c519b4127ac377cca6471aee1990d7c18f5b1e3a4fe1306689"}, + {file = "numcodecs-0.16.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c043af648eb280cd61785c99c22ff5c3c3460f906eb51a8511327c4f5111b283"}, + {file = "numcodecs-0.16.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c398919ef2eb0e56b8e97456f622640bfd3deed06de3acc976989cbcb22628a3"}, + {file = "numcodecs-0.16.5-cp311-cp311-win_amd64.whl", hash = "sha256:3820860ed302d4d84a1c66e70981ff959d5eb712555be4e7d8ced49888594773"}, + {file = "numcodecs-0.16.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:24e675dc8d1550cd976a99479b87d872cb142632c75cc402fea04c08c4898523"}, + {file = "numcodecs-0.16.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:94ddfa4341d1a3ab99989d13b01b5134abb687d3dab2ead54b450aefe4ad5bd6"}, + {file = "numcodecs-0.16.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b554ab9ecf69de7ca2b6b5e8bc696bd9747559cb4dd5127bd08d7a28bec59c3a"}, + {file = "numcodecs-0.16.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ad1a379a45bd3491deab8ae6548313946744f868c21d5340116977ea3be5b1d6"}, + {file = "numcodecs-0.16.5-cp312-cp312-win_amd64.whl", hash = "sha256:845a9857886ffe4a3172ba1c537ae5bcc01e65068c31cf1fce1a844bd1da050f"}, + {file = "numcodecs-0.16.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25be3a516ab677dad890760d357cfe081a371d9c0a2e9a204562318ac5969de3"}, + {file = "numcodecs-0.16.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0107e839ef75b854e969cb577e140b1aadb9847893937636582d23a2a4c6ce50"}, + {file = "numcodecs-0.16.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:015a7c859ecc2a06e2a548f64008c0ec3aaecabc26456c2c62f4278d8fc20597"}, + {file = "numcodecs-0.16.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:84230b4b9dad2392f2a84242bd6e3e659ac137b5a1ce3571d6965fca673e0903"}, + {file = "numcodecs-0.16.5-cp313-cp313-win_amd64.whl", hash = "sha256:5088145502ad1ebf677ec47d00eb6f0fd600658217db3e0c070c321c85d6cf3d"}, + {file = "numcodecs-0.16.5-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b05647b8b769e6bc8016e9fd4843c823ce5c9f2337c089fb5c9c4da05e5275de"}, + {file = "numcodecs-0.16.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3832bd1b5af8bb3e413076b7d93318c8e7d7b68935006b9fa36ca057d1725a8f"}, + {file = "numcodecs-0.16.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49f7b7d24f103187f53135bed28bb9f0ed6b2e14c604664726487bb6d7c882e1"}, + {file = "numcodecs-0.16.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aec9736d81b70f337d89c4070ee3ffeff113f386fd789492fa152d26a15043e4"}, + {file = "numcodecs-0.16.5-cp314-cp314-win_amd64.whl", hash = "sha256:b16a14303800e9fb88abc39463ab4706c037647ac17e49e297faa5f7d7dbbf1d"}, + {file = "numcodecs-0.16.5.tar.gz", hash = "sha256:0d0fb60852f84c0bd9543cc4d2ab9eefd37fc8efcc410acd4777e62a1d300318"}, ] [package.dependencies] -crc32c = { version = ">=2.7", optional = true, markers = "extra == \"crc32c\"" } numpy = ">=1.24" typing_extensions = "*" [package.extras] crc32c = ["crc32c (>=2.7)"] docs = ["numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-issues"] +google-crc32c = ["google-crc32c (>=1.5)"] msgpack = ["msgpack"] pcodec = ["pcodec (>=0.3,<0.4)"] -test = ["coverage", "pytest", "pytest-cov"] -test-extras = ["importlib_metadata"] +test = ["coverage", "pytest", "pytest-cov", "pyzstd"] +test-extras = ["crc32c", "importlib_metadata"] zfpy = ["zfpy (>=1.0.0)"] [[package]] name = "numpy" -version = "2.3.3" +version = "2.4.2" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.11" -groups = ["main"] -files = [ - { file = "numpy-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ffc4f5caba7dfcbe944ed674b7eef683c7e94874046454bb79ed7ee0236f59d" }, - { file = "numpy-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7e946c7170858a0295f79a60214424caac2ffdb0063d4d79cb681f9aa0aa569" }, - { file = "numpy-2.3.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:cd4260f64bc794c3390a63bf0728220dd1a68170c169088a1e0dfa2fde1be12f" }, - { file = "numpy-2.3.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:f0ddb4b96a87b6728df9362135e764eac3cfa674499943ebc44ce96c478ab125" }, - { file = "numpy-2.3.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:afd07d377f478344ec6ca2b8d4ca08ae8bd44706763d1efb56397de606393f48" }, - { file = "numpy-2.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc92a5dedcc53857249ca51ef29f5e5f2f8c513e22cfb90faeb20343b8c6f7a6" }, - { file = "numpy-2.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7af05ed4dc19f308e1d9fc759f36f21921eb7bbfc82843eeec6b2a2863a0aefa" }, - { file = "numpy-2.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:433bf137e338677cebdd5beac0199ac84712ad9d630b74eceeb759eaa45ddf30" }, - { file = "numpy-2.3.3-cp311-cp311-win32.whl", hash = "sha256:eb63d443d7b4ffd1e873f8155260d7f58e7e4b095961b01c91062935c2491e57" }, - { file = "numpy-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:ec9d249840f6a565f58d8f913bccac2444235025bbb13e9a4681783572ee3caa" }, - { file = "numpy-2.3.3-cp311-cp311-win_arm64.whl", hash = "sha256:74c2a948d02f88c11a3c075d9733f1ae67d97c6bdb97f2bb542f980458b257e7" }, - { file = "numpy-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cfdd09f9c84a1a934cde1eec2267f0a43a7cd44b2cca4ff95b7c0d14d144b0bf" }, - { file = "numpy-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb32e3cf0f762aee47ad1ddc6672988f7f27045b0783c887190545baba73aa25" }, - { file = "numpy-2.3.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396b254daeb0a57b1fe0ecb5e3cff6fa79a380fa97c8f7781a6d08cd429418fe" }, - { file = "numpy-2.3.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:067e3d7159a5d8f8a0b46ee11148fc35ca9b21f61e3c49fbd0a027450e65a33b" }, - { file = "numpy-2.3.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c02d0629d25d426585fb2e45a66154081b9fa677bc92a881ff1d216bc9919a8" }, - { file = "numpy-2.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9192da52b9745f7f0766531dcfa978b7763916f158bb63bdb8a1eca0068ab20" }, - { file = "numpy-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cd7de500a5b66319db419dc3c345244404a164beae0d0937283b907d8152e6ea" }, - { file = "numpy-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:93d4962d8f82af58f0b2eb85daaf1b3ca23fe0a85d0be8f1f2b7bb46034e56d7" }, - { file = "numpy-2.3.3-cp312-cp312-win32.whl", hash = "sha256:5534ed6b92f9b7dca6c0a19d6df12d41c68b991cef051d108f6dbff3babc4ebf" }, - { file = "numpy-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:497d7cad08e7092dba36e3d296fe4c97708c93daf26643a1ae4b03f6294d30eb" }, - { file = "numpy-2.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:ca0309a18d4dfea6fc6262a66d06c26cfe4640c3926ceec90e57791a82b6eee5" }, - { file = "numpy-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f5415fb78995644253370985342cd03572ef8620b934da27d77377a2285955bf" }, - { file = "numpy-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d00de139a3324e26ed5b95870ce63be7ec7352171bc69a4cf1f157a48e3eb6b7" }, - { file = "numpy-2.3.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9dc13c6a5829610cc07422bc74d3ac083bd8323f14e2827d992f9e52e22cd6a6" }, - { file = "numpy-2.3.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:d79715d95f1894771eb4e60fb23f065663b2298f7d22945d66877aadf33d00c7" }, - { file = "numpy-2.3.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:952cfd0748514ea7c3afc729a0fc639e61655ce4c55ab9acfab14bda4f402b4c" }, - { file = "numpy-2.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5b83648633d46f77039c29078751f80da65aa64d5622a3cd62aaef9d835b6c93" }, - { file = "numpy-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b001bae8cea1c7dfdb2ae2b017ed0a6f2102d7a70059df1e338e307a4c78a8ae" }, - { file = "numpy-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8e9aced64054739037d42fb84c54dd38b81ee238816c948c8f3ed134665dcd86" }, - { file = "numpy-2.3.3-cp313-cp313-win32.whl", hash = "sha256:9591e1221db3f37751e6442850429b3aabf7026d3b05542d102944ca7f00c8a8" }, - { file = "numpy-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f0dadeb302887f07431910f67a14d57209ed91130be0adea2f9793f1a4f817cf" }, - { file = "numpy-2.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:3c7cf302ac6e0b76a64c4aecf1a09e51abd9b01fc7feee80f6c43e3ab1b1dbc5" }, - { file = "numpy-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:eda59e44957d272846bb407aad19f89dc6f58fecf3504bd144f4c5cf81a7eacc" }, - { file = "numpy-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:823d04112bc85ef5c4fda73ba24e6096c8f869931405a80aa8b0e604510a26bc" }, - { file = "numpy-2.3.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:40051003e03db4041aa325da2a0971ba41cf65714e65d296397cc0e32de6018b" }, - { file = "numpy-2.3.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ee9086235dd6ab7ae75aba5662f582a81ced49f0f1c6de4260a78d8f2d91a19" }, - { file = "numpy-2.3.3-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94fcaa68757c3e2e668ddadeaa86ab05499a70725811e582b6a9858dd472fb30" }, - { file = "numpy-2.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da1a74b90e7483d6ce5244053399a614b1d6b7bc30a60d2f570e5071f8959d3e" }, - { file = "numpy-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2990adf06d1ecee3b3dcbb4977dfab6e9f09807598d647f04d385d29e7a3c3d3" }, - { file = "numpy-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ed635ff692483b8e3f0fcaa8e7eb8a75ee71aa6d975388224f70821421800cea" }, - { file = "numpy-2.3.3-cp313-cp313t-win32.whl", hash = "sha256:a333b4ed33d8dc2b373cc955ca57babc00cd6f9009991d9edc5ddbc1bac36bcd" }, - { file = "numpy-2.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4384a169c4d8f97195980815d6fcad04933a7e1ab3b530921c3fef7a1c63426d" }, - { file = "numpy-2.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:75370986cc0bc66f4ce5110ad35aae6d182cc4ce6433c40ad151f53690130bf1" }, - { file = "numpy-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cd052f1fa6a78dee696b58a914b7229ecfa41f0a6d96dc663c1220a55e137593" }, - { file = "numpy-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:414a97499480067d305fcac9716c29cf4d0d76db6ebf0bf3cbce666677f12652" }, - { file = "numpy-2.3.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:50a5fe69f135f88a2be9b6ca0481a68a136f6febe1916e4920e12f1a34e708a7" }, - { file = "numpy-2.3.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:b912f2ed2b67a129e6a601e9d93d4fa37bef67e54cac442a2f588a54afe5c67a" }, - { file = "numpy-2.3.3-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9e318ee0596d76d4cb3d78535dc005fa60e5ea348cd131a51e99d0bdbe0b54fe" }, - { file = "numpy-2.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce020080e4a52426202bdb6f7691c65bb55e49f261f31a8f506c9f6bc7450421" }, - { file = "numpy-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e6687dc183aa55dae4a705b35f9c0f8cb178bcaa2f029b241ac5356221d5c021" }, - { file = "numpy-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d8f3b1080782469fdc1718c4ed1d22549b5fb12af0d57d35e992158a772a37cf" }, - { file = "numpy-2.3.3-cp314-cp314-win32.whl", hash = "sha256:cb248499b0bc3be66ebd6578b83e5acacf1d6cb2a77f2248ce0e40fbec5a76d0" }, - { file = "numpy-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:691808c2b26b0f002a032c73255d0bd89751425f379f7bcd22d140db593a96e8" }, - { file = "numpy-2.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:9ad12e976ca7b10f1774b03615a2a4bab8addce37ecc77394d8e986927dc0dfe" }, - { file = "numpy-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9cc48e09feb11e1db00b320e9d30a4151f7369afb96bd0e48d942d09da3a0d00" }, - { file = "numpy-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:901bf6123879b7f251d3631967fd574690734236075082078e0571977c6a8e6a" }, - { file = "numpy-2.3.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:7f025652034199c301049296b59fa7d52c7e625017cae4c75d8662e377bf487d" }, - { file = "numpy-2.3.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:533ca5f6d325c80b6007d4d7fb1984c303553534191024ec6a524a4c92a5935a" }, - { file = "numpy-2.3.3-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0edd58682a399824633b66885d699d7de982800053acf20be1eaa46d92009c54" }, - { file = "numpy-2.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:367ad5d8fbec5d9296d18478804a530f1191e24ab4d75ab408346ae88045d25e" }, - { file = "numpy-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8f6ac61a217437946a1fa48d24c47c91a0c4f725237871117dea264982128097" }, - { file = "numpy-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:179a42101b845a816d464b6fe9a845dfaf308fdfc7925387195570789bb2c970" }, - { file = "numpy-2.3.3-cp314-cp314t-win32.whl", hash = "sha256:1250c5d3d2562ec4174bce2e3a1523041595f9b651065e4a4473f5f48a6bc8a5" }, - { file = "numpy-2.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:b37a0b2e5935409daebe82c1e42274d30d9dd355852529eab91dab8dcca7419f" }, - { file = "numpy-2.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:78c9f6560dc7e6b3990e32df7ea1a50bbd0e2a111e05209963f5ddcab7073b0b" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1e02c7159791cd481e1e6d5ddd766b62a4d5acf8df4d4d1afe35ee9c5c33a41e" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:dca2d0fc80b3893ae72197b39f69d55a3cd8b17ea1b50aa4c62de82419936150" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:99683cbe0658f8271b333a1b1b4bb3173750ad59c0c61f5bbdc5b318918fffe3" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:d9d537a39cc9de668e5cd0e25affb17aec17b577c6b3ae8a3d866b479fbe88d0" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8596ba2f8af5f93b01d97563832686d20206d303024777f6dfc2e7c7c3f1850e" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1ec5615b05369925bd1125f27df33f3b6c8bc10d788d5999ecd8769a1fa04db" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:2e267c7da5bf7309670523896df97f93f6e469fb931161f483cd6882b3b1a5dc" }, - { file = "numpy-2.3.3.tar.gz", hash = "sha256:ddc7c39727ba62b80dfdbedf400d1c10ddfa8eefbd7ec8dcb118be8b56d31029" }, -] - -[[package]] -name = "overrides" -version = "7.7.0" -description = "A decorator to automatically detect mismatch when overriding a method." -optional = false -python-versions = ">=3.6" -groups = ["dev"] +groups = ["main", "dev"] files = [ - {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, - {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, + {file = "numpy-2.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e7e88598032542bd49af7c4747541422884219056c268823ef6e5e89851c8825"}, + {file = "numpy-2.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7edc794af8b36ca37ef5fcb5e0d128c7e0595c7b96a2318d1badb6fcd8ee86b1"}, + {file = "numpy-2.4.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:6e9f61981ace1360e42737e2bae58b27bf28a1b27e781721047d84bd754d32e7"}, + {file = "numpy-2.4.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:cb7bbb88aa74908950d979eeaa24dbdf1a865e3c7e45ff0121d8f70387b55f73"}, + {file = "numpy-2.4.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4f069069931240b3fc703f1e23df63443dbd6390614c8c44a87d96cd0ec81eb1"}, + {file = "numpy-2.4.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c02ef4401a506fb60b411467ad501e1429a3487abca4664871d9ae0b46c8ba32"}, + {file = "numpy-2.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2653de5c24910e49c2b106499803124dde62a5a1fe0eedeaecf4309a5f639390"}, + {file = "numpy-2.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1ae241bbfc6ae276f94a170b14785e561cb5e7f626b6688cf076af4110887413"}, + {file = "numpy-2.4.2-cp311-cp311-win32.whl", hash = "sha256:df1b10187212b198dd45fa943d8985a3c8cf854aed4923796e0e019e113a1bda"}, + {file = "numpy-2.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:b9c618d56a29c9cb1c4da979e9899be7578d2e0b3c24d52079c166324c9e8695"}, + {file = "numpy-2.4.2-cp311-cp311-win_arm64.whl", hash = "sha256:47c5a6ed21d9452b10227e5e8a0e1c22979811cad7dcc19d8e3e2fb8fa03f1a3"}, + {file = "numpy-2.4.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:21982668592194c609de53ba4933a7471880ccbaadcc52352694a59ecc860b3a"}, + {file = "numpy-2.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40397bda92382fcec844066efb11f13e1c9a3e2a8e8f318fb72ed8b6db9f60f1"}, + {file = "numpy-2.4.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:b3a24467af63c67829bfaa61eecf18d5432d4f11992688537be59ecd6ad32f5e"}, + {file = "numpy-2.4.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:805cc8de9fd6e7a22da5aed858e0ab16be5a4db6c873dde1d7451c541553aa27"}, + {file = "numpy-2.4.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d82351358ffbcdcd7b686b90742a9b86632d6c1c051016484fa0b326a0a1548"}, + {file = "numpy-2.4.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e35d3e0144137d9fdae62912e869136164534d64a169f86438bc9561b6ad49f"}, + {file = "numpy-2.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adb6ed2ad29b9e15321d167d152ee909ec73395901b70936f029c3bc6d7f4460"}, + {file = "numpy-2.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8906e71fd8afcb76580404e2a950caef2685df3d2a57fe82a86ac8d33cc007ba"}, + {file = "numpy-2.4.2-cp312-cp312-win32.whl", hash = "sha256:ec055f6dae239a6299cace477b479cca2fc125c5675482daf1dd886933a1076f"}, + {file = "numpy-2.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:209fae046e62d0ce6435fcfe3b1a10537e858249b3d9b05829e2a05218296a85"}, + {file = "numpy-2.4.2-cp312-cp312-win_arm64.whl", hash = "sha256:fbde1b0c6e81d56f5dccd95dd4a711d9b95df1ae4009a60887e56b27e8d903fa"}, + {file = "numpy-2.4.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25f2059807faea4b077a2b6837391b5d830864b3543627f381821c646f31a63c"}, + {file = "numpy-2.4.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bd3a7a9f5847d2fb8c2c6d1c862fa109c31a9abeca1a3c2bd5a64572955b2979"}, + {file = "numpy-2.4.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8e4549f8a3c6d13d55041925e912bfd834285ef1dd64d6bc7d542583355e2e98"}, + {file = "numpy-2.4.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:aea4f66ff44dfddf8c2cffd66ba6538c5ec67d389285292fe428cb2c738c8aef"}, + {file = "numpy-2.4.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3cd545784805de05aafe1dde61752ea49a359ccba9760c1e5d1c88a93bbf2b7"}, + {file = "numpy-2.4.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0d9b7c93578baafcbc5f0b83eaf17b79d345c6f36917ba0c67f45226911d499"}, + {file = "numpy-2.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f74f0f7779cc7ae07d1810aab8ac6b1464c3eafb9e283a40da7309d5e6e48fbb"}, + {file = "numpy-2.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c7ac672d699bf36275c035e16b65539931347d68b70667d28984c9fb34e07fa7"}, + {file = "numpy-2.4.2-cp313-cp313-win32.whl", hash = "sha256:8e9afaeb0beff068b4d9cd20d322ba0ee1cecfb0b08db145e4ab4dd44a6b5110"}, + {file = "numpy-2.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:7df2de1e4fba69a51c06c28f5a3de36731eb9639feb8e1cf7e4a7b0daf4cf622"}, + {file = "numpy-2.4.2-cp313-cp313-win_arm64.whl", hash = "sha256:0fece1d1f0a89c16b03442eae5c56dc0be0c7883b5d388e0c03f53019a4bfd71"}, + {file = "numpy-2.4.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5633c0da313330fd20c484c78cdd3f9b175b55e1a766c4a174230c6b70ad8262"}, + {file = "numpy-2.4.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d9f64d786b3b1dd742c946c42d15b07497ed14af1a1f3ce840cce27daa0ce913"}, + {file = "numpy-2.4.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:b21041e8cb6a1eb5312dd1d2f80a94d91efffb7a06b70597d44f1bd2dfc315ab"}, + {file = "numpy-2.4.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:00ab83c56211a1d7c07c25e3217ea6695e50a3e2f255053686b081dc0b091a82"}, + {file = "numpy-2.4.2-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fb882da679409066b4603579619341c6d6898fc83a8995199d5249f986e8e8f"}, + {file = "numpy-2.4.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:66cb9422236317f9d44b67b4d18f44efe6e9c7f8794ac0462978513359461554"}, + {file = "numpy-2.4.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:0f01dcf33e73d80bd8dc0f20a71303abbafa26a19e23f6b68d1aa9990af90257"}, + {file = "numpy-2.4.2-cp313-cp313t-win32.whl", hash = "sha256:52b913ec40ff7ae845687b0b34d8d93b60cb66dcee06996dd5c99f2fc9328657"}, + {file = "numpy-2.4.2-cp313-cp313t-win_amd64.whl", hash = "sha256:5eea80d908b2c1f91486eb95b3fb6fab187e569ec9752ab7d9333d2e66bf2d6b"}, + {file = "numpy-2.4.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fd49860271d52127d61197bb50b64f58454e9f578cb4b2c001a6de8b1f50b0b1"}, + {file = "numpy-2.4.2-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:444be170853f1f9d528428eceb55f12918e4fda5d8805480f36a002f1415e09b"}, + {file = "numpy-2.4.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d1240d50adff70c2a88217698ca844723068533f3f5c5fa6ee2e3220e3bdb000"}, + {file = "numpy-2.4.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:7cdde6de52fb6664b00b056341265441192d1291c130e99183ec0d4b110ff8b1"}, + {file = "numpy-2.4.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:cda077c2e5b780200b6b3e09d0b42205a3d1c68f30c6dceb90401c13bff8fe74"}, + {file = "numpy-2.4.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d30291931c915b2ab5717c2974bb95ee891a1cf22ebc16a8006bd59cd210d40a"}, + {file = "numpy-2.4.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bba37bc29d4d85761deed3954a1bc62be7cf462b9510b51d367b769a8c8df325"}, + {file = "numpy-2.4.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b2f0073ed0868db1dcd86e052d37279eef185b9c8db5bf61f30f46adac63c909"}, + {file = "numpy-2.4.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7f54844851cdb630ceb623dcec4db3240d1ac13d4990532446761baede94996a"}, + {file = "numpy-2.4.2-cp314-cp314-win32.whl", hash = "sha256:12e26134a0331d8dbd9351620f037ec470b7c75929cb8a1537f6bfe411152a1a"}, + {file = "numpy-2.4.2-cp314-cp314-win_amd64.whl", hash = "sha256:068cdb2d0d644cdb45670810894f6a0600797a69c05f1ac478e8d31670b8ee75"}, + {file = "numpy-2.4.2-cp314-cp314-win_arm64.whl", hash = "sha256:6ed0be1ee58eef41231a5c943d7d1375f093142702d5723ca2eb07db9b934b05"}, + {file = "numpy-2.4.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:98f16a80e917003a12c0580f97b5f875853ebc33e2eaa4bccfc8201ac6869308"}, + {file = "numpy-2.4.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:20abd069b9cda45874498b245c8015b18ace6de8546bf50dfa8cea1696ed06ef"}, + {file = "numpy-2.4.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:e98c97502435b53741540a5717a6749ac2ada901056c7db951d33e11c885cc7d"}, + {file = "numpy-2.4.2-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:da6cad4e82cb893db4b69105c604d805e0c3ce11501a55b5e9f9083b47d2ffe8"}, + {file = "numpy-2.4.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e4424677ce4b47fe73c8b5556d876571f7c6945d264201180db2dc34f676ab5"}, + {file = "numpy-2.4.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2b8f157c8a6f20eb657e240f8985cc135598b2b46985c5bccbde7616dc9c6b1e"}, + {file = "numpy-2.4.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5daf6f3914a733336dab21a05cdec343144600e964d2fcdabaac0c0269874b2a"}, + {file = "numpy-2.4.2-cp314-cp314t-win32.whl", hash = "sha256:8c50dd1fc8826f5b26a5ee4d77ca55d88a895f4e4819c7ecc2a9f5905047a443"}, + {file = "numpy-2.4.2-cp314-cp314t-win_amd64.whl", hash = "sha256:fcf92bee92742edd401ba41135185866f7026c502617f422eb432cfeca4fe236"}, + {file = "numpy-2.4.2-cp314-cp314t-win_arm64.whl", hash = "sha256:1f92f53998a17265194018d1cc321b2e96e900ca52d54c7c77837b71b9465181"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:89f7268c009bc492f506abd6f5265defa7cb3f7487dc21d357c3d290add45082"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6dee3bb76aa4009d5a912180bf5b2de012532998d094acee25d9cb8dee3e44a"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:cd2bd2bbed13e213d6b55dc1d035a4f91748a7d3edc9480c13898b0353708920"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:cf28c0c1d4c4bf00f509fa7eb02c58d7caf221b50b467bcb0d9bbf1584d5c821"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e04ae107ac591763a47398bb45b568fc38f02dbc4aa44c063f67a131f99346cb"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:602f65afdef699cda27ec0b9224ae5dc43e328f4c24c689deaf77133dbee74d0"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:be71bf1edb48ebbbf7f6337b5bfd2f895d1902f6335a5830b20141fc126ffba0"}, + {file = "numpy-2.4.2.tar.gz", hash = "sha256:659a6107e31a83c4e33f763942275fd278b21d095094044eb35569e86a21ddae"}, ] [[package]] name = "packaging" -version = "25.0" +version = "26.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ - { file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484" }, - { file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f" }, + {file = "packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529"}, + {file = "packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4"}, ] [[package]] @@ -2413,8 +1416,8 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - { file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591" }, - { file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945" }, + {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, + {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, ] [package.extras] @@ -2423,114 +1426,95 @@ lint = ["black"] [[package]] name = "pandas" -version = "2.3.1" +version = "3.0.1" description = "Powerful data structures for data analysis, time series, and statistics" optional = false -python-versions = ">=3.9" +python-versions = ">=3.11" groups = ["main"] files = [ - { file = "pandas-2.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:22c2e866f7209ebc3a8f08d75766566aae02bcc91d196935a1d9e59c7b990ac9" }, - { file = "pandas-2.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3583d348546201aff730c8c47e49bc159833f971c2899d6097bce68b9112a4f1" }, - { file = "pandas-2.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f951fbb702dacd390561e0ea45cdd8ecfa7fb56935eb3dd78e306c19104b9b0" }, - { file = "pandas-2.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd05b72ec02ebfb993569b4931b2e16fbb4d6ad6ce80224a3ee838387d83a191" }, - { file = "pandas-2.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1b916a627919a247d865aed068eb65eb91a344b13f5b57ab9f610b7716c92de1" }, - { file = "pandas-2.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fe67dc676818c186d5a3d5425250e40f179c2a89145df477dd82945eaea89e97" }, - { file = "pandas-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:2eb789ae0274672acbd3c575b0598d213345660120a257b47b5dafdc618aec83" }, - { file = "pandas-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2b0540963d83431f5ce8870ea02a7430adca100cec8a050f0811f8e31035541b" }, - { file = "pandas-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fe7317f578c6a153912bd2292f02e40c1d8f253e93c599e82620c7f69755c74f" }, - { file = "pandas-2.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6723a27ad7b244c0c79d8e7007092d7c8f0f11305770e2f4cd778b3ad5f9f85" }, - { file = "pandas-2.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3462c3735fe19f2638f2c3a40bd94ec2dc5ba13abbb032dd2fa1f540a075509d" }, - { file = "pandas-2.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:98bcc8b5bf7afed22cc753a28bc4d9e26e078e777066bc53fac7904ddef9a678" }, - { file = "pandas-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4d544806b485ddf29e52d75b1f559142514e60ef58a832f74fb38e48d757b299" }, - { file = "pandas-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:b3cd4273d3cb3707b6fffd217204c52ed92859533e31dc03b7c5008aa933aaab" }, - { file = "pandas-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:689968e841136f9e542020698ee1c4fbe9caa2ed2213ae2388dc7b81721510d3" }, - { file = "pandas-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:025e92411c16cbe5bb2a4abc99732a6b132f439b8aab23a59fa593eb00704232" }, - { file = "pandas-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b7ff55f31c4fcb3e316e8f7fa194566b286d6ac430afec0d461163312c5841e" }, - { file = "pandas-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dcb79bf373a47d2a40cf7232928eb7540155abbc460925c2c96d2d30b006eb4" }, - { file = "pandas-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:56a342b231e8862c96bdb6ab97170e203ce511f4d0429589c8ede1ee8ece48b8" }, - { file = "pandas-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ca7ed14832bce68baef331f4d7f294411bed8efd032f8109d690df45e00c4679" }, - { file = "pandas-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:ac942bfd0aca577bef61f2bc8da8147c4ef6879965ef883d8e8d5d2dc3e744b8" }, - { file = "pandas-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9026bd4a80108fac2239294a15ef9003c4ee191a0f64b90f170b40cfb7cf2d22" }, - { file = "pandas-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6de8547d4fdb12421e2d047a2c446c623ff4c11f47fddb6b9169eb98ffba485a" }, - { file = "pandas-2.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:782647ddc63c83133b2506912cc6b108140a38a37292102aaa19c81c83db2928" }, - { file = "pandas-2.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba6aff74075311fc88504b1db890187a3cd0f887a5b10f5525f8e2ef55bfdb9" }, - { file = "pandas-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e5635178b387bd2ba4ac040f82bc2ef6e6b500483975c4ebacd34bec945fda12" }, - { file = "pandas-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6f3bf5ec947526106399a9e1d26d40ee2b259c66422efdf4de63c848492d91bb" }, - { file = "pandas-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:1c78cf43c8fde236342a1cb2c34bcff89564a7bfed7e474ed2fffa6aed03a956" }, - { file = "pandas-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8dfc17328e8da77be3cf9f47509e5637ba8f137148ed0e9b5241e1baf526e20a" }, - { file = "pandas-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ec6c851509364c59a5344458ab935e6451b31b818be467eb24b0fe89bd05b6b9" }, - { file = "pandas-2.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:911580460fc4884d9b05254b38a6bfadddfcc6aaef856fb5859e7ca202e45275" }, - { file = "pandas-2.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f4d6feeba91744872a600e6edbbd5b033005b431d5ae8379abee5bcfa479fab" }, - { file = "pandas-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fe37e757f462d31a9cd7580236a82f353f5713a80e059a29753cf938c6775d96" }, - { file = "pandas-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5db9637dbc24b631ff3707269ae4559bce4b7fd75c1c4d7e13f40edc42df4444" }, - { file = "pandas-2.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4645f770f98d656f11c69e81aeb21c6fca076a44bed3dcbb9396a4311bc7f6d8" }, - { file = "pandas-2.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:342e59589cc454aaff7484d75b816a433350b3d7964d7847327edda4d532a2e3" }, - { file = "pandas-2.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d12f618d80379fde6af007f65f0c25bd3e40251dbd1636480dfffce2cf1e6da" }, - { file = "pandas-2.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd71c47a911da120d72ef173aeac0bf5241423f9bfea57320110a978457e069e" }, - { file = "pandas-2.3.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:09e3b1587f0f3b0913e21e8b32c3119174551deb4a4eba4a89bc7377947977e7" }, - { file = "pandas-2.3.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2323294c73ed50f612f67e2bf3ae45aea04dce5690778e08a09391897f35ff88" }, - { file = "pandas-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:b4b0de34dc8499c2db34000ef8baad684cfa4cbd836ecee05f323ebfba348c7d" }, - { file = "pandas-2.3.1.tar.gz", hash = "sha256:0a95b9ac964fe83ce317827f80304d37388ea77616b1425f0ae41c9d2d0d7bb2" }, + {file = "pandas-3.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:de09668c1bf3b925c07e5762291602f0d789eca1b3a781f99c1c78f6cac0e7ea"}, + {file = "pandas-3.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:24ba315ba3d6e5806063ac6eb717504e499ce30bd8c236d8693a5fd3f084c796"}, + {file = "pandas-3.0.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:406ce835c55bac912f2a0dcfaf27c06d73c6b04a5dde45f1fd3169ce31337389"}, + {file = "pandas-3.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:830994d7e1f31dd7e790045235605ab61cff6c94defc774547e8b7fdfbff3dc7"}, + {file = "pandas-3.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a64ce8b0f2de1d2efd2ae40b0abe7f8ae6b29fbfb3812098ed5a6f8e235ad9bf"}, + {file = "pandas-3.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9832c2c69da24b602c32e0c7b1b508a03949c18ba08d4d9f1c1033426685b447"}, + {file = "pandas-3.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:84f0904a69e7365f79a0c77d3cdfccbfb05bf87847e3a51a41e1426b0edb9c79"}, + {file = "pandas-3.0.1-cp311-cp311-win_arm64.whl", hash = "sha256:4a68773d5a778afb31d12e34f7dd4612ab90de8c6fb1d8ffe5d4a03b955082a1"}, + {file = "pandas-3.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:476f84f8c20c9f5bc47252b66b4bb25e1a9fc2fa98cead96744d8116cb85771d"}, + {file = "pandas-3.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0ab749dfba921edf641d4036c4c21c0b3ea70fea478165cb98a998fb2a261955"}, + {file = "pandas-3.0.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8e36891080b87823aff3640c78649b91b8ff6eea3c0d70aeabd72ea43ab069b"}, + {file = "pandas-3.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:532527a701281b9dd371e2f582ed9094f4c12dd9ffb82c0c54ee28d8ac9520c4"}, + {file = "pandas-3.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:356e5c055ed9b0da1580d465657bc7d00635af4fd47f30afb23025352ba764d1"}, + {file = "pandas-3.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9d810036895f9ad6345b8f2a338dd6998a74e8483847403582cab67745bff821"}, + {file = "pandas-3.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:536232a5fe26dd989bd633e7a0c450705fdc86a207fec7254a55e9a22950fe43"}, + {file = "pandas-3.0.1-cp312-cp312-win_arm64.whl", hash = "sha256:0f463ebfd8de7f326d38037c7363c6dacb857c5881ab8961fb387804d6daf2f7"}, + {file = "pandas-3.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5272627187b5d9c20e55d27caf5f2cd23e286aba25cadf73c8590e432e2b7262"}, + {file = "pandas-3.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:661e0f665932af88c7877f31da0dc743fe9c8f2524bdffe23d24fdcb67ef9d56"}, + {file = "pandas-3.0.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:75e6e292ff898679e47a2199172593d9f6107fd2dd3617c22c2946e97d5df46e"}, + {file = "pandas-3.0.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1ff8cf1d2896e34343197685f432450ec99a85ba8d90cce2030c5eee2ef98791"}, + {file = "pandas-3.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eca8b4510f6763f3d37359c2105df03a7a221a508f30e396a51d0713d462e68a"}, + {file = "pandas-3.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:06aff2ad6f0b94a17822cf8b83bbb563b090ed82ff4fe7712db2ce57cd50d9b8"}, + {file = "pandas-3.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:9fea306c783e28884c29057a1d9baa11a349bbf99538ec1da44c8476563d1b25"}, + {file = "pandas-3.0.1-cp313-cp313-win_arm64.whl", hash = "sha256:a8d37a43c52917427e897cb2e429f67a449327394396a81034a4449b99afda59"}, + {file = "pandas-3.0.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:d54855f04f8246ed7b6fc96b05d4871591143c46c0b6f4af874764ed0d2d6f06"}, + {file = "pandas-3.0.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4e1b677accee34a09e0dc2ce5624e4a58a1870ffe56fc021e9caf7f23cd7668f"}, + {file = "pandas-3.0.1-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a9cabbdcd03f1b6cd254d6dda8ae09b0252524be1592594c00b7895916cb1324"}, + {file = "pandas-3.0.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ae2ab1f166668b41e770650101e7090824fd34d17915dd9cd479f5c5e0065e9"}, + {file = "pandas-3.0.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6bf0603c2e30e2cafac32807b06435f28741135cb8697eae8b28c7d492fc7d76"}, + {file = "pandas-3.0.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6c426422973973cae1f4a23e51d4ae85974f44871b24844e4f7de752dd877098"}, + {file = "pandas-3.0.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b03f91ae8c10a85c1613102c7bef5229b5379f343030a3ccefeca8a33414cf35"}, + {file = "pandas-3.0.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:99d0f92ed92d3083d140bf6b97774f9f13863924cf3f52a70711f4e7588f9d0a"}, + {file = "pandas-3.0.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3b66857e983208654294bb6477b8a63dee26b37bdd0eb34d010556e91261784f"}, + {file = "pandas-3.0.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56cf59638bf24dc9bdf2154c81e248b3289f9a09a6d04e63608c159022352749"}, + {file = "pandas-3.0.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c1a9f55e0f46951874b863d1f3906dcb57df2d9be5c5847ba4dfb55b2c815249"}, + {file = "pandas-3.0.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1849f0bba9c8a2fb0f691d492b834cc8dadf617e29015c66e989448d58d011ee"}, + {file = "pandas-3.0.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c3d288439e11b5325b02ae6e9cc83e6805a62c40c5a6220bea9beb899c073b1c"}, + {file = "pandas-3.0.1-cp314-cp314-win_amd64.whl", hash = "sha256:93325b0fe372d192965f4cca88d97667f49557398bbf94abdda3bf1b591dbe66"}, + {file = "pandas-3.0.1-cp314-cp314-win_arm64.whl", hash = "sha256:97ca08674e3287c7148f4858b01136f8bdfe7202ad25ad04fec602dd1d29d132"}, + {file = "pandas-3.0.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:58eeb1b2e0fb322befcf2bbc9ba0af41e616abadb3d3414a6bc7167f6cbfce32"}, + {file = "pandas-3.0.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:cd9af1276b5ca9e298bd79a26bda32fa9cc87ed095b2a9a60978d2ca058eaf87"}, + {file = "pandas-3.0.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94f87a04984d6b63788327cd9f79dda62b7f9043909d2440ceccf709249ca988"}, + {file = "pandas-3.0.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85fe4c4df62e1e20f9db6ebfb88c844b092c22cd5324bdcf94bfa2fc1b391221"}, + {file = "pandas-3.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:331ca75a2f8672c365ae25c0b29e46f5ac0c6551fdace8eec4cd65e4fac271ff"}, + {file = "pandas-3.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:15860b1fdb1973fffade772fdb931ccf9b2f400a3f5665aef94a00445d7d8dd5"}, + {file = "pandas-3.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:44f1364411d5670efa692b146c748f4ed013df91ee91e9bec5677fb1fd58b937"}, + {file = "pandas-3.0.1-cp314-cp314t-win_arm64.whl", hash = "sha256:108dd1790337a494aa80e38def654ca3f0968cf4f362c85f44c15e471667102d"}, + {file = "pandas-3.0.1.tar.gz", hash = "sha256:4186a699674af418f655dbd420ed87f50d56b4cd6603784279d9eef6627823c8"}, +] + +[package.dependencies] +numpy = [ + {version = ">=1.26.0", markers = "python_version < \"3.14\""}, + {version = ">=2.3.3", markers = "python_version >= \"3.14\""}, ] - -[package.dependencies] -numpy = {version = ">=1.26.0", markers = "python_version >= \"3.12\""} python-dateutil = ">=2.8.2" -pytz = ">=2020.1" -tzdata = ">=2022.7" - -[package.extras] -all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] -aws = ["s3fs (>=2022.11.0)"] -clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] -compression = ["zstandard (>=0.19.0)"] -computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] -consortium-standard = ["dataframe-api-compat (>=0.1.7)"] -excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] -feather = ["pyarrow (>=10.0.1)"] -fss = ["fsspec (>=2022.11.0)"] -gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] -hdf5 = ["tables (>=3.8.0)"] -html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] -mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] -output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] -parquet = ["pyarrow (>=10.0.1)"] -performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] -plot = ["matplotlib (>=3.6.3)"] -postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] -pyarrow = ["pyarrow (>=10.0.1)"] -spss = ["pyreadstat (>=1.2.0)"] -sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] -test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] -xml = ["lxml (>=4.9.2)"] - -[[package]] -name = "pandocfilters" -version = "1.5.1" -description = "Utilities for writing pandoc filters in python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -groups = ["dev"] -files = [ - {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, - {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, -] - -[[package]] -name = "parso" -version = "0.8.4" -description = "A Python Parser" -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, - {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, -] - -[package.extras] -qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["docopt", "pytest"] +tzdata = {version = "*", markers = "sys_platform == \"win32\" or sys_platform == \"emscripten\""} + +[package.extras] +all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.36)", "adbc-driver-postgresql (>=1.2.0)", "adbc-driver-sqlite (>=1.2.0)", "beautifulsoup4 (>=4.12.3)", "bottleneck (>=1.4.2)", "fastparquet (>=2024.11.0)", "fsspec (>=2024.10.0)", "gcsfs (>=2024.10.0)", "html5lib (>=1.1)", "hypothesis (>=6.116.0)", "jinja2 (>=3.1.5)", "lxml (>=5.3.0)", "matplotlib (>=3.9.3)", "numba (>=0.60.0)", "numexpr (>=2.10.2)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.5)", "psycopg2 (>=2.9.10)", "pyarrow (>=13.0.0)", "pyiceberg (>=0.8.1)", "pymysql (>=1.1.1)", "pyreadstat (>=1.2.8)", "pytest (>=8.3.4)", "pytest-xdist (>=3.6.1)", "python-calamine (>=0.3.0)", "pytz (>=2024.2)", "pyxlsb (>=1.0.10)", "qtpy (>=2.4.2)", "s3fs (>=2024.10.0)", "scipy (>=1.14.1)", "tables (>=3.10.1)", "tabulate (>=0.9.0)", "xarray (>=2024.10.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.2.0)", "zstandard (>=0.23.0)"] +aws = ["s3fs (>=2024.10.0)"] +clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.4.2)"] +compression = ["zstandard (>=0.23.0)"] +computation = ["scipy (>=1.14.1)", "xarray (>=2024.10.0)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.5)", "python-calamine (>=0.3.0)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.2.0)"] +feather = ["pyarrow (>=13.0.0)"] +fss = ["fsspec (>=2024.10.0)"] +gcp = ["gcsfs (>=2024.10.0)"] +hdf5 = ["tables (>=3.10.1)"] +html = ["beautifulsoup4 (>=4.12.3)", "html5lib (>=1.1)", "lxml (>=5.3.0)"] +iceberg = ["pyiceberg (>=0.8.1)"] +mysql = ["SQLAlchemy (>=2.0.36)", "pymysql (>=1.1.1)"] +output-formatting = ["jinja2 (>=3.1.5)", "tabulate (>=0.9.0)"] +parquet = ["pyarrow (>=13.0.0)"] +performance = ["bottleneck (>=1.4.2)", "numba (>=0.60.0)", "numexpr (>=2.10.2)"] +plot = ["matplotlib (>=3.9.3)"] +postgresql = ["SQLAlchemy (>=2.0.36)", "adbc-driver-postgresql (>=1.2.0)", "psycopg2 (>=2.9.10)"] +pyarrow = ["pyarrow (>=13.0.0)"] +spss = ["pyreadstat (>=1.2.8)"] +sql-other = ["SQLAlchemy (>=2.0.36)", "adbc-driver-postgresql (>=1.2.0)", "adbc-driver-sqlite (>=1.2.0)"] +test = ["hypothesis (>=6.116.0)", "pytest (>=8.3.4)", "pytest-xdist (>=3.6.1)"] +timezone = ["pytz (>=2024.2)"] +xml = ["lxml (>=5.3.0)"] [[package]] name = "partd" @@ -2538,228 +1522,119 @@ version = "1.4.2" description = "Appendable key-value storage" optional = false python-versions = ">=3.9" -groups = ["main"] -files = [ - {file = "partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f"}, - {file = "partd-1.4.2.tar.gz", hash = "sha256:d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c"}, -] - -[package.dependencies] -locket = "*" -toolz = "*" - -[package.extras] -complete = ["blosc", "numpy (>=1.20.0)", "pandas (>=1.3)", "pyzmq"] - -[[package]] -name = "pathspec" -version = "0.12.1" -description = "Utility library for gitignore style pattern matching of file paths." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, - {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, -] - -[[package]] -name = "pexpect" -version = "4.9.0" -description = "Pexpect allows easy control of interactive console applications." -optional = false -python-versions = "*" -groups = ["dev"] -markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" -files = [ - {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, - {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, -] - -[package.dependencies] -ptyprocess = ">=0.5" - -[[package]] -name = "pip-requirements-parser" -version = "32.0.1" -description = "pip requirements parser - a mostly correct pip requirements parsing library because it uses pip's own code." -optional = false -python-versions = ">=3.6.0" -groups = ["dev"] -files = [ - { file = "pip-requirements-parser-32.0.1.tar.gz", hash = "sha256:b4fa3a7a0be38243123cf9d1f3518da10c51bdb165a2b2985566247f9155a7d3" }, - { file = "pip_requirements_parser-32.0.1-py3-none-any.whl", hash = "sha256:4659bc2a667783e7a15d190f6fccf8b2486685b6dba4c19c3876314769c57526" }, -] - -[package.dependencies] -packaging = "*" -pyparsing = "*" - -[package.extras] -docs = ["Sphinx (>=3.3.1)", "doc8 (>=0.8.1)", "sphinx-rtd-theme (>=0.5.0)"] -testing = ["aboutcode-toolkit (>=6.0.0)", "black", "pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"] - -[[package]] -name = "platformdirs" -version = "4.3.8" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4" }, - { file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc" }, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.4)", "pytest-cov (>=6)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.14.1)"] - -[[package]] -name = "pluggy" -version = "1.6.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746" }, - { file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3" }, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["coverage", "pytest", "pytest-benchmark"] - -[[package]] -name = "pre-commit" -version = "4.2.0" -description = "A framework for managing and maintaining multi-language pre-commit hooks." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd" }, - { file = "pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146" }, -] - -[package.dependencies] -cfgv = ">=2.0.0" -identify = ">=1.0.0" -nodeenv = ">=0.11.1" -pyyaml = ">=5.1" -virtualenv = ">=20.10.0" - -[[package]] -name = "prometheus-client" -version = "0.22.1" -description = "Python client for the Prometheus monitoring system." -optional = false -python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] files = [ - { file = "prometheus_client-0.22.1-py3-none-any.whl", hash = "sha256:cca895342e308174341b2cbf99a56bef291fbc0ef7b9e5412a0f26d653ba7094" }, - { file = "prometheus_client-0.22.1.tar.gz", hash = "sha256:190f1331e783cf21eb60bca559354e0a4d4378facecf78f5428c39b675d20d28" }, + {file = "partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f"}, + {file = "partd-1.4.2.tar.gz", hash = "sha256:d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c"}, ] +[package.dependencies] +locket = "*" +toolz = "*" + [package.extras] -twisted = ["twisted"] +complete = ["blosc", "numpy (>=1.20.0)", "pandas (>=1.3)", "pyzmq"] [[package]] -name = "prompt-toolkit" -version = "3.0.51" -description = "Library for building powerful interactive command lines in Python" +name = "pathspec" +version = "1.0.4" +description = "Utility library for gitignore style pattern matching of file paths." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07" }, - { file = "prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed" }, + {file = "pathspec-1.0.4-py3-none-any.whl", hash = "sha256:fb6ae2fd4e7c921a165808a552060e722767cfa526f99ca5156ed2ce45a5c723"}, + {file = "pathspec-1.0.4.tar.gz", hash = "sha256:0210e2ae8a21a9137c0d470578cb0e595af87edaa6ebf12ff176f14a02e0e645"}, ] -[package.dependencies] -wcwidth = "*" +[package.extras] +hyperscan = ["hyperscan (>=0.7)"] +optional = ["typing-extensions (>=4)"] +re2 = ["google-re2 (>=1.1)"] +tests = ["pytest (>=9)", "typing-extensions (>=4.15)"] [[package]] -name = "psutil" -version = "7.0.0" -description = "Cross-platform lib for process and system monitoring in Python. NOTE: the syntax of this script MUST be kept compatible with Python 2.7." +name = "pip-requirements-parser" +version = "32.0.1" +description = "pip requirements parser - a mostly correct pip requirements parsing library because it uses pip's own code." optional = false -python-versions = ">=3.6" +python-versions = ">=3.6.0" groups = ["dev"] files = [ - { file = "psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25" }, - { file = "psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da" }, - { file = "psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91" }, - { file = "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" }, - { file = "psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993" }, - { file = "psutil-7.0.0-cp36-cp36m-win32.whl", hash = "sha256:84df4eb63e16849689f76b1ffcb36db7b8de703d1bc1fe41773db487621b6c17" }, - { file = "psutil-7.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1e744154a6580bc968a0195fd25e80432d3afec619daf145b9e5ba16cc1d688e" }, - { file = "psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99" }, - { file = "psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553" }, - { file = "psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456" }, + {file = "pip-requirements-parser-32.0.1.tar.gz", hash = "sha256:b4fa3a7a0be38243123cf9d1f3518da10c51bdb165a2b2985566247f9155a7d3"}, + {file = "pip_requirements_parser-32.0.1-py3-none-any.whl", hash = "sha256:4659bc2a667783e7a15d190f6fccf8b2486685b6dba4c19c3876314769c57526"}, ] +[package.dependencies] +packaging = "*" +pyparsing = "*" + [package.extras] -dev = ["abi3audit", "black (==24.10.0)", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest", "pytest-cov", "pytest-xdist", "requests", "rstcheck", "ruff", "setuptools", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "vulture", "wheel"] -test = ["pytest", "pytest-xdist", "setuptools"] +docs = ["Sphinx (>=3.3.1)", "doc8 (>=0.8.1)", "sphinx-rtd-theme (>=0.5.0)"] +testing = ["aboutcode-toolkit (>=6.0.0)", "black", "pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"] [[package]] -name = "ptyprocess" -version = "0.7.0" -description = "Run a subprocess in a pseudo terminal" +name = "platformdirs" +version = "4.9.2" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false -python-versions = "*" +python-versions = ">=3.10" groups = ["dev"] -markers = "os_name != \"nt\" or sys_platform != \"win32\" and sys_platform != \"emscripten\"" files = [ - {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, - {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, + {file = "platformdirs-4.9.2-py3-none-any.whl", hash = "sha256:9170634f126f8efdae22fb58ae8a0eaa86f38365bc57897a6c4f781d1f5875bd"}, + {file = "platformdirs-4.9.2.tar.gz", hash = "sha256:9a33809944b9db043ad67ca0db94b14bf452cc6aeaac46a88ea55b26e2e9d291"}, ] [[package]] -name = "pure-eval" -version = "0.2.3" -description = "Safely evaluate AST nodes without side effects" +name = "pluggy" +version = "1.6.0" +description = "plugin and hook calling mechanisms for python" optional = false -python-versions = "*" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, - {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, + {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, + {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, ] [package.extras] -tests = ["pytest"] +dev = ["pre-commit", "tox"] +testing = ["coverage", "pytest", "pytest-benchmark"] [[package]] -name = "pycparser" -version = "2.22" -description = "C parser in Python" +name = "pre-commit" +version = "4.5.1" +description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, - {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, + {file = "pre_commit-4.5.1-py2.py3-none-any.whl", hash = "sha256:3b3afd891e97337708c1674210f8eba659b52a38ea5f822ff142d10786221f77"}, + {file = "pre_commit-4.5.1.tar.gz", hash = "sha256:eb545fcff725875197837263e977ea257a402056661f09dae08e4b149b030a61"}, ] +[package.dependencies] +cfgv = ">=2.0.0" +identify = ">=1.0.0" +nodeenv = ">=0.11.1" +pyyaml = ">=5.1" +virtualenv = ">=20.10.0" + [[package]] name = "pydantic" -version = "2.12.0" +version = "2.12.5" description = "Data validation using Python type hints" optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - { file = "pydantic-2.12.0-py3-none-any.whl", hash = "sha256:f6a1da352d42790537e95e83a8bdfb91c7efbae63ffd0b86fa823899e807116f" }, - { file = "pydantic-2.12.0.tar.gz", hash = "sha256:c1a077e6270dbfb37bfd8b498b3981e2bb18f68103720e51fa6c306a5a9af563" }, + {file = "pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d"}, + {file = "pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.41.1" +pydantic-core = "2.41.5" typing-extensions = ">=4.14.1" typing-inspection = ">=0.4.2" @@ -2769,125 +1644,133 @@ timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows [[package]] name = "pydantic-core" -version = "2.41.1" +version = "2.41.5" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - { file = "pydantic_core-2.41.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:e63036298322e9aea1c8b7c0a6c1204d615dbf6ec0668ce5b83ff27f07404a61" }, - { file = "pydantic_core-2.41.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:241299ca91fc77ef64f11ed909d2d9220a01834e8e6f8de61275c4dd16b7c936" }, - { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ab7e594a2a5c24ab8013a7dc8cfe5f2260e80e490685814122081705c2cf2b0" }, - { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b054ef1a78519cb934b58e9c90c09e93b837c935dcd907b891f2b265b129eb6e" }, - { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f2ab7d10d0ab2ed6da54c757233eb0f48ebfb4f86e9b88ccecb3f92bbd61a538" }, - { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2757606b7948bb853a27e4040820306eaa0ccb9e8f9f8a0fa40cb674e170f350" }, - { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cec0e75eb61f606bad0a32f2be87507087514e26e8c73db6cbdb8371ccd27917" }, - { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0234236514f44a5bf552105cfe2543a12f48203397d9d0f866affa569345a5b5" }, - { file = "pydantic_core-2.41.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:1b974e41adfbb4ebb0f65fc4ca951347b17463d60893ba7d5f7b9bb087c83897" }, - { file = "pydantic_core-2.41.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:248dafb3204136113c383e91a4d815269f51562b6659b756cf3df14eefc7d0bb" }, - { file = "pydantic_core-2.41.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:678f9d76a91d6bcedd7568bbf6beb77ae8447f85d1aeebaab7e2f0829cfc3a13" }, - { file = "pydantic_core-2.41.1-cp310-cp310-win32.whl", hash = "sha256:dff5bee1d21ee58277900692a641925d2dddfde65182c972569b1a276d2ac8fb" }, - { file = "pydantic_core-2.41.1-cp310-cp310-win_amd64.whl", hash = "sha256:5042da12e5d97d215f91567110fdfa2e2595a25f17c19b9ff024f31c34f9b53e" }, - { file = "pydantic_core-2.41.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4f276a6134fe1fc1daa692642a3eaa2b7b858599c49a7610816388f5e37566a1" }, - { file = "pydantic_core-2.41.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07588570a805296ece009c59d9a679dc08fab72fb337365afb4f3a14cfbfc176" }, - { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28527e4b53400cd60ffbd9812ccb2b5135d042129716d71afd7e45bf42b855c0" }, - { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:46a1c935c9228bad738c8a41de06478770927baedf581d172494ab36a6b96575" }, - { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:447ddf56e2b7d28d200d3e9eafa936fe40485744b5a824b67039937580b3cb20" }, - { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:63892ead40c1160ac860b5debcc95c95c5a0035e543a8b5a4eac70dd22e995f4" }, - { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4a9543ca355e6df8fbe9c83e9faab707701e9103ae857ecb40f1c0cf8b0e94d" }, - { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f2611bdb694116c31e551ed82e20e39a90bea9b7ad9e54aaf2d045ad621aa7a1" }, - { file = "pydantic_core-2.41.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fecc130893a9b5f7bfe230be1bb8c61fe66a19db8ab704f808cb25a82aad0bc9" }, - { file = "pydantic_core-2.41.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:1e2df5f8344c99b6ea5219f00fdc8950b8e6f2c422fbc1cc122ec8641fac85a1" }, - { file = "pydantic_core-2.41.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:35291331e9d8ed94c257bab6be1cb3a380b5eee570a2784bffc055e18040a2ea" }, - { file = "pydantic_core-2.41.1-cp311-cp311-win32.whl", hash = "sha256:2876a095292668d753f1a868c4a57c4ac9f6acbd8edda8debe4218d5848cf42f" }, - { file = "pydantic_core-2.41.1-cp311-cp311-win_amd64.whl", hash = "sha256:b92d6c628e9a338846a28dfe3fcdc1a3279388624597898b105e078cdfc59298" }, - { file = "pydantic_core-2.41.1-cp311-cp311-win_arm64.whl", hash = "sha256:7d82ae99409eb69d507a89835488fb657faa03ff9968a9379567b0d2e2e56bc5" }, - { file = "pydantic_core-2.41.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:db2f82c0ccbce8f021ad304ce35cbe02aa2f95f215cac388eed542b03b4d5eb4" }, - { file = "pydantic_core-2.41.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:47694a31c710ced9205d5f1e7e8af3ca57cbb8a503d98cb9e33e27c97a501601" }, - { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93e9decce94daf47baf9e9d392f5f2557e783085f7c5e522011545d9d6858e00" }, - { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ab0adafdf2b89c8b84f847780a119437a0931eca469f7b44d356f2b426dd9741" }, - { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5da98cc81873f39fd56882e1569c4677940fbc12bce6213fad1ead784192d7c8" }, - { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:209910e88afb01fd0fd403947b809ba8dba0e08a095e1f703294fda0a8fdca51" }, - { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:365109d1165d78d98e33c5bfd815a9b5d7d070f578caefaabcc5771825b4ecb5" }, - { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:706abf21e60a2857acdb09502bc853ee5bce732955e7b723b10311114f033115" }, - { file = "pydantic_core-2.41.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bf0bd5417acf7f6a7ec3b53f2109f587be176cb35f9cf016da87e6017437a72d" }, - { file = "pydantic_core-2.41.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:2e71b1c6ceb9c78424ae9f63a07292fb769fb890a4e7efca5554c47f33a60ea5" }, - { file = "pydantic_core-2.41.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:80745b9770b4a38c25015b517451c817799bfb9d6499b0d13d8227ec941cb513" }, - { file = "pydantic_core-2.41.1-cp312-cp312-win32.whl", hash = "sha256:83b64d70520e7890453f1aa21d66fda44e7b35f1cfea95adf7b4289a51e2b479" }, - { file = "pydantic_core-2.41.1-cp312-cp312-win_amd64.whl", hash = "sha256:377defd66ee2003748ee93c52bcef2d14fde48fe28a0b156f88c3dbf9bc49a50" }, - { file = "pydantic_core-2.41.1-cp312-cp312-win_arm64.whl", hash = "sha256:c95caff279d49c1d6cdfe2996e6c2ad712571d3b9caaa209a404426c326c4bde" }, - { file = "pydantic_core-2.41.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70e790fce5f05204ef4403159857bfcd587779da78627b0babb3654f75361ebf" }, - { file = "pydantic_core-2.41.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9cebf1ca35f10930612d60bd0f78adfacee824c30a880e3534ba02c207cceceb" }, - { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:170406a37a5bc82c22c3274616bf6f17cc7df9c4a0a0a50449e559cb755db669" }, - { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:12d4257fc9187a0ccd41b8b327d6a4e57281ab75e11dda66a9148ef2e1fb712f" }, - { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a75a33b4db105dd1c8d57839e17ee12db8d5ad18209e792fa325dbb4baeb00f4" }, - { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08a589f850803a74e0fcb16a72081cafb0d72a3cdda500106942b07e76b7bf62" }, - { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a97939d6ea44763c456bd8a617ceada2c9b96bb5b8ab3dfa0d0827df7619014" }, - { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2ae423c65c556f09569524b80ffd11babff61f33055ef9773d7c9fabc11ed8d" }, - { file = "pydantic_core-2.41.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:4dc703015fbf8764d6a8001c327a87f1823b7328d40b47ce6000c65918ad2b4f" }, - { file = "pydantic_core-2.41.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:968e4ffdfd35698a5fe659e5e44c508b53664870a8e61c8f9d24d3d145d30257" }, - { file = "pydantic_core-2.41.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:fff2b76c8e172d34771cd4d4f0ade08072385310f214f823b5a6ad4006890d32" }, - { file = "pydantic_core-2.41.1-cp313-cp313-win32.whl", hash = "sha256:a38a5263185407ceb599f2f035faf4589d57e73c7146d64f10577f6449e8171d" }, - { file = "pydantic_core-2.41.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42ae7fd6760782c975897e1fdc810f483b021b32245b0105d40f6e7a3803e4b" }, - { file = "pydantic_core-2.41.1-cp313-cp313-win_arm64.whl", hash = "sha256:ad4111acc63b7384e205c27a2f15e23ac0ee21a9d77ad6f2e9cb516ec90965fb" }, - { file = "pydantic_core-2.41.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:440d0df7415b50084a4ba9d870480c16c5f67c0d1d4d5119e3f70925533a0edc" }, - { file = "pydantic_core-2.41.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71eaa38d342099405dae6484216dcf1e8e4b0bebd9b44a4e08c9b43db6a2ab67" }, - { file = "pydantic_core-2.41.1-cp313-cp313t-win_amd64.whl", hash = "sha256:555ecf7e50f1161d3f693bc49f23c82cf6cdeafc71fa37a06120772a09a38795" }, - { file = "pydantic_core-2.41.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:05226894a26f6f27e1deb735d7308f74ef5fa3a6de3e0135bb66cdcaee88f64b" }, - { file = "pydantic_core-2.41.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:85ff7911c6c3e2fd8d3779c50925f6406d770ea58ea6dde9c230d35b52b16b4a" }, - { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47f1f642a205687d59b52dc1a9a607f45e588f5a2e9eeae05edd80c7a8c47674" }, - { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df11c24e138876ace5ec6043e5cae925e34cf38af1a1b3d63589e8f7b5f5cdc4" }, - { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7f0bf7f5c8f7bf345c527e8a0d72d6b26eda99c1227b0c34e7e59e181260de31" }, - { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:82b887a711d341c2c47352375d73b029418f55b20bd7815446d175a70effa706" }, - { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5f1d5d6bbba484bdf220c72d8ecd0be460f4bd4c5e534a541bb2cd57589fb8b" }, - { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2bf1917385ebe0f968dc5c6ab1375886d56992b93ddfe6bf52bff575d03662be" }, - { file = "pydantic_core-2.41.1-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:4f94f3ab188f44b9a73f7295663f3ecb8f2e2dd03a69c8f2ead50d37785ecb04" }, - { file = "pydantic_core-2.41.1-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:3925446673641d37c30bd84a9d597e49f72eacee8b43322c8999fa17d5ae5bc4" }, - { file = "pydantic_core-2.41.1-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:49bd51cc27adb980c7b97357ae036ce9b3c4d0bb406e84fbe16fb2d368b602a8" }, - { file = "pydantic_core-2.41.1-cp314-cp314-win32.whl", hash = "sha256:a31ca0cd0e4d12ea0df0077df2d487fc3eb9d7f96bbb13c3c5b88dcc21d05159" }, - { file = "pydantic_core-2.41.1-cp314-cp314-win_amd64.whl", hash = "sha256:1b5c4374a152e10a22175d7790e644fbd8ff58418890e07e2073ff9d4414efae" }, - { file = "pydantic_core-2.41.1-cp314-cp314-win_arm64.whl", hash = "sha256:4fee76d757639b493eb600fba668f1e17475af34c17dd61db7a47e824d464ca9" }, - { file = "pydantic_core-2.41.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f9b9c968cfe5cd576fdd7361f47f27adeb120517e637d1b189eea1c3ece573f4" }, - { file = "pydantic_core-2.41.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1ebc7ab67b856384aba09ed74e3e977dded40e693de18a4f197c67d0d4e6d8e" }, - { file = "pydantic_core-2.41.1-cp314-cp314t-win_amd64.whl", hash = "sha256:8ae0dc57b62a762985bc7fbf636be3412394acc0ddb4ade07fe104230f1b9762" }, - { file = "pydantic_core-2.41.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:10ce489cf09a4956a1549af839b983edc59b0f60e1b068c21b10154e58f54f80" }, - { file = "pydantic_core-2.41.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ff548c908caffd9455fd1342366bcf8a1ec8a3fca42f35c7fc60883d6a901074" }, - { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d43bf082025082bda13be89a5f876cc2386b7727c7b322be2d2b706a45cea8e" }, - { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:666aee751faf1c6864b2db795775dd67b61fdcf646abefa309ed1da039a97209" }, - { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b83aaeff0d7bde852c32e856f3ee410842ebc08bc55c510771d87dcd1c01e1ed" }, - { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:055c7931b0329cb8acde20cdde6d9c2cbc2a02a0a8e54a792cddd91e2ea92c65" }, - { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:530bbb1347e3e5ca13a91ac087c4971d7da09630ef8febd27a20a10800c2d06d" }, - { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:65a0ea16cfea7bfa9e43604c8bd726e63a3788b61c384c37664b55209fcb1d74" }, - { file = "pydantic_core-2.41.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8fa93fadff794c6d15c345c560513b160197342275c6d104cc879f932b978afc" }, - { file = "pydantic_core-2.41.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:c8a1af9ac51969a494c6a82b563abae6859dc082d3b999e8fa7ba5ee1b05e8e8" }, - { file = "pydantic_core-2.41.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:30edab28829703f876897c9471a857e43d847b8799c3c9e2fbce644724b50aa4" }, - { file = "pydantic_core-2.41.1-cp39-cp39-win32.whl", hash = "sha256:84d0ff869f98be2e93efdf1ae31e5a15f0926d22af8677d51676e373abbfe57a" }, - { file = "pydantic_core-2.41.1-cp39-cp39-win_amd64.whl", hash = "sha256:b5674314987cdde5a5511b029fa5fb1556b3d147a367e01dd583b19cfa8e35df" }, - { file = "pydantic_core-2.41.1-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:68f2251559b8efa99041bb63571ec7cdd2d715ba74cc82b3bc9eff824ebc8bf0" }, - { file = "pydantic_core-2.41.1-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:c7bc140c596097cb53b30546ca257dbe3f19282283190b1b5142928e5d5d3a20" }, - { file = "pydantic_core-2.41.1-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2896510fce8f4725ec518f8b9d7f015a00db249d2fd40788f442af303480063d" }, - { file = "pydantic_core-2.41.1-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ced20e62cfa0f496ba68fa5d6c7ee71114ea67e2a5da3114d6450d7f4683572a" }, - { file = "pydantic_core-2.41.1-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:b04fa9ed049461a7398138c604b00550bc89e3e1151d84b81ad6dc93e39c4c06" }, - { file = "pydantic_core-2.41.1-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:b3b7d9cfbfdc43c80a16638c6dc2768e3956e73031fca64e8e1a3ae744d1faeb" }, - { file = "pydantic_core-2.41.1-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eec83fc6abef04c7f9bec616e2d76ee9a6a4ae2a359b10c21d0f680e24a247ca" }, - { file = "pydantic_core-2.41.1-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6771a2d9f83c4038dfad5970a3eef215940682b2175e32bcc817bdc639019b28" }, - { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fabcbdb12de6eada8d6e9a759097adb3c15440fafc675b3e94ae5c9cb8d678a0" }, - { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:80e97ccfaf0aaf67d55de5085b0ed0d994f57747d9d03f2de5cc9847ca737b08" }, - { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34df1fe8fea5d332484a763702e8b6a54048a9d4fe6ccf41e34a128238e01f52" }, - { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:421b5595f845842fc093f7250e24ee395f54ca62d494fdde96f43ecf9228ae01" }, - { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:dce8b22663c134583aaad24827863306a933f576c79da450be3984924e2031d1" }, - { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:300a9c162fea9906cc5c103893ca2602afd84f0ec90d3be36f4cc360125d22e1" }, - { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e019167628f6e6161ae7ab9fb70f6d076a0bf0d55aa9b20833f86a320c70dd65" }, - { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:13ab9cc2de6f9d4ab645a050ae5aee61a2424ac4d3a16ba23d4c2027705e0301" }, - { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:af2385d3f98243fb733862f806c5bb9122e5fba05b373e3af40e3c82d711cef1" }, - { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:6550617a0c2115be56f90c31a5370261d8ce9dbf051c3ed53b51172dd34da696" }, - { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc17b6ecf4983d298686014c92ebc955a9f9baf9f57dad4065e7906e7bee6222" }, - { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:42ae9352cf211f08b04ea110563d6b1e415878eea5b4c70f6bdb17dca3b932d2" }, - { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e82947de92068b0a21681a13dd2102387197092fbe7defcfb8453e0913866506" }, - { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e244c37d5471c9acdcd282890c6c4c83747b77238bfa19429b8473586c907656" }, - { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1e798b4b304a995110d41ec93653e57975620ccb2842ba9420037985e7d7284e" }, - { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f1fc716c0eb1663c59699b024428ad5ec2bcc6b928527b8fe28de6cb89f47efb" }, - { file = "pydantic_core-2.41.1.tar.gz", hash = "sha256:1ad375859a6d8c356b7704ec0f547a58e82ee80bb41baa811ad710e124bc8f2f" }, + {file = "pydantic_core-2.41.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:77b63866ca88d804225eaa4af3e664c5faf3568cea95360d21f4725ab6e07146"}, + {file = "pydantic_core-2.41.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dfa8a0c812ac681395907e71e1274819dec685fec28273a28905df579ef137e2"}, + {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5921a4d3ca3aee735d9fd163808f5e8dd6c6972101e4adbda9a4667908849b97"}, + {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e25c479382d26a2a41b7ebea1043564a937db462816ea07afa8a44c0866d52f9"}, + {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f547144f2966e1e16ae626d8ce72b4cfa0caedc7fa28052001c94fb2fcaa1c52"}, + {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f52298fbd394f9ed112d56f3d11aabd0d5bd27beb3084cc3d8ad069483b8941"}, + {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:100baa204bb412b74fe285fb0f3a385256dad1d1879f0a5cb1499ed2e83d132a"}, + {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:05a2c8852530ad2812cb7914dc61a1125dc4e06252ee98e5638a12da6cc6fb6c"}, + {file = "pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:29452c56df2ed968d18d7e21f4ab0ac55e71dc59524872f6fc57dcf4a3249ed2"}, + {file = "pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:d5160812ea7a8a2ffbe233d8da666880cad0cbaf5d4de74ae15c313213d62556"}, + {file = "pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:df3959765b553b9440adfd3c795617c352154e497a4eaf3752555cfb5da8fc49"}, + {file = "pydantic_core-2.41.5-cp310-cp310-win32.whl", hash = "sha256:1f8d33a7f4d5a7889e60dc39856d76d09333d8a6ed0f5f1190635cbec70ec4ba"}, + {file = "pydantic_core-2.41.5-cp310-cp310-win_amd64.whl", hash = "sha256:62de39db01b8d593e45871af2af9e497295db8d73b085f6bfd0b18c83c70a8f9"}, + {file = "pydantic_core-2.41.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a3a52f6156e73e7ccb0f8cced536adccb7042be67cb45f9562e12b319c119da6"}, + {file = "pydantic_core-2.41.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7f3bf998340c6d4b0c9a2f02d6a400e51f123b59565d74dc60d252ce888c260b"}, + {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:378bec5c66998815d224c9ca994f1e14c0c21cb95d2f52b6021cc0b2a58f2a5a"}, + {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7b576130c69225432866fe2f4a469a85a54ade141d96fd396dffcf607b558f8"}, + {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6cb58b9c66f7e4179a2d5e0f849c48eff5c1fca560994d6eb6543abf955a149e"}, + {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:88942d3a3dff3afc8288c21e565e476fc278902ae4d6d134f1eeda118cc830b1"}, + {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f31d95a179f8d64d90f6831d71fa93290893a33148d890ba15de25642c5d075b"}, + {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c1df3d34aced70add6f867a8cf413e299177e0c22660cc767218373d0779487b"}, + {file = "pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4009935984bd36bd2c774e13f9a09563ce8de4abaa7226f5108262fa3e637284"}, + {file = "pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:34a64bc3441dc1213096a20fe27e8e128bd3ff89921706e83c0b1ac971276594"}, + {file = "pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c9e19dd6e28fdcaa5a1de679aec4141f691023916427ef9bae8584f9c2fb3b0e"}, + {file = "pydantic_core-2.41.5-cp311-cp311-win32.whl", hash = "sha256:2c010c6ded393148374c0f6f0bf89d206bf3217f201faa0635dcd56bd1520f6b"}, + {file = "pydantic_core-2.41.5-cp311-cp311-win_amd64.whl", hash = "sha256:76ee27c6e9c7f16f47db7a94157112a2f3a00e958bc626e2f4ee8bec5c328fbe"}, + {file = "pydantic_core-2.41.5-cp311-cp311-win_arm64.whl", hash = "sha256:4bc36bbc0b7584de96561184ad7f012478987882ebf9f9c389b23f432ea3d90f"}, + {file = "pydantic_core-2.41.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7"}, + {file = "pydantic_core-2.41.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0"}, + {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69"}, + {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75"}, + {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05"}, + {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc"}, + {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c"}, + {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5"}, + {file = "pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c"}, + {file = "pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294"}, + {file = "pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1"}, + {file = "pydantic_core-2.41.5-cp312-cp312-win32.whl", hash = "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d"}, + {file = "pydantic_core-2.41.5-cp312-cp312-win_amd64.whl", hash = "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815"}, + {file = "pydantic_core-2.41.5-cp312-cp312-win_arm64.whl", hash = "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3"}, + {file = "pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9"}, + {file = "pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34"}, + {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0"}, + {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33"}, + {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e"}, + {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2"}, + {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586"}, + {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d"}, + {file = "pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740"}, + {file = "pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e"}, + {file = "pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858"}, + {file = "pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36"}, + {file = "pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11"}, + {file = "pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd"}, + {file = "pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a"}, + {file = "pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14"}, + {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1"}, + {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66"}, + {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869"}, + {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2"}, + {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375"}, + {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553"}, + {file = "pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90"}, + {file = "pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07"}, + {file = "pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb"}, + {file = "pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23"}, + {file = "pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf"}, + {file = "pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008"}, + {file = "pydantic_core-2.41.5-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:8bfeaf8735be79f225f3fefab7f941c712aaca36f1128c9d7e2352ee1aa87bdf"}, + {file = "pydantic_core-2.41.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:346285d28e4c8017da95144c7f3acd42740d637ff41946af5ce6e5e420502dd5"}, + {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a75dafbf87d6276ddc5b2bf6fae5254e3d0876b626eb24969a574fff9149ee5d"}, + {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7b93a4d08587e2b7e7882de461e82b6ed76d9026ce91ca7915e740ecc7855f60"}, + {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e8465ab91a4bd96d36dde3263f06caa6a8a6019e4113f24dc753d79a8b3a3f82"}, + {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:299e0a22e7ae2b85c1a57f104538b2656e8ab1873511fd718a1c1c6f149b77b5"}, + {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:707625ef0983fcfb461acfaf14de2067c5942c6bb0f3b4c99158bed6fedd3cf3"}, + {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f41eb9797986d6ebac5e8edff36d5cef9de40def462311b3eb3eeded1431e425"}, + {file = "pydantic_core-2.41.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0384e2e1021894b1ff5a786dbf94771e2986ebe2869533874d7e43bc79c6f504"}, + {file = "pydantic_core-2.41.5-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:f0cd744688278965817fd0839c4a4116add48d23890d468bc436f78beb28abf5"}, + {file = "pydantic_core-2.41.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:753e230374206729bf0a807954bcc6c150d3743928a73faffee51ac6557a03c3"}, + {file = "pydantic_core-2.41.5-cp39-cp39-win32.whl", hash = "sha256:873e0d5b4fb9b89ef7c2d2a963ea7d02879d9da0da8d9d4933dee8ee86a8b460"}, + {file = "pydantic_core-2.41.5-cp39-cp39-win_amd64.whl", hash = "sha256:e4f4a984405e91527a0d62649ee21138f8e3d0ef103be488c1dc11a80d7f184b"}, + {file = "pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:b96d5f26b05d03cc60f11a7761a5ded1741da411e7fe0909e27a5e6a0cb7b034"}, + {file = "pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:634e8609e89ceecea15e2d61bc9ac3718caaaa71963717bf3c8f38bfde64242c"}, + {file = "pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93e8740d7503eb008aa2df04d3b9735f845d43ae845e6dcd2be0b55a2da43cd2"}, + {file = "pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f15489ba13d61f670dcc96772e733aad1a6f9c429cc27574c6cdaed82d0146ad"}, + {file = "pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:7da7087d756b19037bc2c06edc6c170eeef3c3bafcb8f532ff17d64dc427adfd"}, + {file = "pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:aabf5777b5c8ca26f7824cb4a120a740c9588ed58df9b2d196ce92fba42ff8dc"}, + {file = "pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c007fe8a43d43b3969e8469004e9845944f1a80e6acd47c150856bb87f230c56"}, + {file = "pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76d0819de158cd855d1cbb8fcafdf6f5cf1eb8e470abe056d5d161106e38062b"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b5819cd790dbf0c5eb9f82c73c16b39a65dd6dd4d1439dcdea7816ec9adddab8"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5a4e67afbc95fa5c34cf27d9089bca7fcab4e51e57278d710320a70b956d1b9a"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ece5c59f0ce7d001e017643d8d24da587ea1f74f6993467d85ae8a5ef9d4f42b"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:16f80f7abe3351f8ea6858914ddc8c77e02578544a0ebc15b4c2e1a0e813b0b2"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:33cb885e759a705b426baada1fe68cbb0a2e68e34c5d0d0289a364cf01709093"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:c8d8b4eb992936023be7dee581270af5c6e0697a8559895f527f5b7105ecd36a"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:242a206cd0318f95cd21bdacff3fcc3aab23e79bba5cac3db5a841c9ef9c6963"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d3a978c4f57a597908b7e697229d996d77a6d3c94901e9edee593adada95ce1a"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2379fa7ed44ddecb5bfe4e48577d752db9fc10be00a6b7446e9663ba143de26"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:266fb4cbf5e3cbd0b53669a6d1b039c45e3ce651fd5442eff4d07c2cc8d66808"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58133647260ea01e4d0500089a8c4f07bd7aa6ce109682b1426394988d8aaacc"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:287dad91cfb551c363dc62899a80e9e14da1f0e2b6ebde82c806612ca2a13ef1"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:03b77d184b9eb40240ae9fd676ca364ce1085f203e1b1256f8ab9984dca80a84"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:a668ce24de96165bb239160b3d854943128f4334822900534f2fe947930e5770"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f14f8f046c14563f8eb3f45f499cc658ab8d10072961e07225e507adb700e93f"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:56121965f7a4dc965bff783d70b907ddf3d57f6eba29b6d2e5dabfaf07799c51"}, + {file = "pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e"}, ] [package.dependencies] @@ -2901,8 +1784,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b" }, - { file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887" }, + {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"}, + {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, ] [package.extras] @@ -2910,14 +1793,14 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pymdown-extensions" -version = "10.16" +version = "10.21" description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pymdown_extensions-10.16-py3-none-any.whl", hash = "sha256:f5dd064a4db588cb2d95229fc4ee63a1b16cc8b4d0e6145c0899ed8723da1df2" }, - { file = "pymdown_extensions-10.16.tar.gz", hash = "sha256:71dac4fca63fabeffd3eb9038b756161a33ec6e8d230853d3cecf562155ab3de" }, + {file = "pymdown_extensions-10.21-py3-none-any.whl", hash = "sha256:91b879f9f864d49794c2d9534372b10150e6141096c3908a455e45ca72ad9d3f"}, + {file = "pymdown_extensions-10.21.tar.gz", hash = "sha256:39f4a020f40773f6b2ff31d2cd2546c2c04d0a6498c31d9c688d2be07e1767d5"}, ] [package.dependencies] @@ -2929,14 +1812,14 @@ extra = ["pygments (>=2.19.1)"] [[package]] name = "pyparsing" -version = "3.2.5" +version = "3.3.2" description = "pyparsing - Classes and methods to define and execute parsing grammars" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e" }, - { file = "pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6" }, + {file = "pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d"}, + {file = "pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc"}, ] [package.extras] @@ -2950,61 +1833,61 @@ optional = false python-versions = ">=3.11" groups = ["main"] files = [ - { file = "pyproj-3.7.2-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:2514d61f24c4e0bb9913e2c51487ecdaeca5f8748d8313c933693416ca41d4d5" }, - { file = "pyproj-3.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:8693ca3892d82e70de077701ee76dd13d7bca4ae1c9d1e739d72004df015923a" }, - { file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5e26484d80fea56273ed1555abaea161e9661d81a6c07815d54b8e883d4ceb25" }, - { file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:281cb92847814e8018010c48b4069ff858a30236638631c1a91dd7bfa68f8a8a" }, - { file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9c8577f0b7bb09118ec2e57e3babdc977127dd66326d6c5d755c76b063e6d9dc" }, - { file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a23f59904fac3a5e7364b3aa44d288234af267ca041adb2c2b14a903cd5d3ac5" }, - { file = "pyproj-3.7.2-cp311-cp311-win32.whl", hash = "sha256:f2af4ed34b2cf3e031a2d85b067a3ecbd38df073c567e04b52fa7a0202afde8a" }, - { file = "pyproj-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:0b7cb633565129677b2a183c4d807c727d1c736fcb0568a12299383056e67433" }, - { file = "pyproj-3.7.2-cp311-cp311-win_arm64.whl", hash = "sha256:38b08d85e3a38e455625b80e9eb9f78027c8e2649a21dec4df1f9c3525460c71" }, - { file = "pyproj-3.7.2-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:0a9bb26a6356fb5b033433a6d1b4542158fb71e3c51de49b4c318a1dff3aeaab" }, - { file = "pyproj-3.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:567caa03021178861fad27fabde87500ec6d2ee173dd32f3e2d9871e40eebd68" }, - { file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:c203101d1dc3c038a56cff0447acc515dd29d6e14811406ac539c21eed422b2a" }, - { file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1edc34266c0c23ced85f95a1ee8b47c9035eae6aca5b6b340327250e8e281630" }, - { file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aa9f26c21bc0e2dc3d224cb1eb4020cf23e76af179a7c66fea49b828611e4260" }, - { file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9428b318530625cb389b9ddc9c51251e172808a4af79b82809376daaeabe5e9" }, - { file = "pyproj-3.7.2-cp312-cp312-win32.whl", hash = "sha256:b3d99ed57d319da042f175f4554fc7038aa4bcecc4ac89e217e350346b742c9d" }, - { file = "pyproj-3.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:11614a054cd86a2ed968a657d00987a86eeb91fdcbd9ad3310478685dc14a128" }, - { file = "pyproj-3.7.2-cp312-cp312-win_arm64.whl", hash = "sha256:509a146d1398bafe4f53273398c3bb0b4732535065fa995270e52a9d3676bca3" }, - { file = "pyproj-3.7.2-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:19466e529b1b15eeefdf8ff26b06fa745856c044f2f77bf0edbae94078c1dfa1" }, - { file = "pyproj-3.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:c79b9b84c4a626c5dc324c0d666be0bfcebd99f7538d66e8898c2444221b3da7" }, - { file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ceecf374cacca317bc09e165db38ac548ee3cad07c3609442bd70311c59c21aa" }, - { file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5141a538ffdbe4bfd157421828bb2e07123a90a7a2d6f30fa1462abcfb5ce681" }, - { file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f000841e98ea99acbb7b8ca168d67773b0191de95187228a16110245c5d954d5" }, - { file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8115faf2597f281a42ab608ceac346b4eb1383d3b45ab474fd37341c4bf82a67" }, - { file = "pyproj-3.7.2-cp313-cp313-win32.whl", hash = "sha256:f18c0579dd6be00b970cb1a6719197fceecc407515bab37da0066f0184aafdf3" }, - { file = "pyproj-3.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:bb41c29d5f60854b1075853fe80c58950b398d4ebb404eb532536ac8d2834ed7" }, - { file = "pyproj-3.7.2-cp313-cp313-win_arm64.whl", hash = "sha256:2b617d573be4118c11cd96b8891a0b7f65778fa7733ed8ecdb297a447d439100" }, - { file = "pyproj-3.7.2-cp313-cp313t-macosx_13_0_x86_64.whl", hash = "sha256:d27b48f0e81beeaa2b4d60c516c3a1cfbb0c7ff6ef71256d8e9c07792f735279" }, - { file = "pyproj-3.7.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:55a3610d75023c7b1c6e583e48ef8f62918e85a2ae81300569d9f104d6684bb6" }, - { file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8d7349182fa622696787cc9e195508d2a41a64765da9b8a6bee846702b9e6220" }, - { file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:d230b186eb876ed4f29a7c5ee310144c3a0e44e89e55f65fb3607e13f6db337c" }, - { file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:237499c7862c578d0369e2b8ac56eec550e391a025ff70e2af8417139dabb41c" }, - { file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8c225f5978abd506fd9a78eaaf794435e823c9156091cabaab5374efb29d7f69" }, - { file = "pyproj-3.7.2-cp313-cp313t-win32.whl", hash = "sha256:2da731876d27639ff9d2d81c151f6ab90a1546455fabd93368e753047be344a2" }, - { file = "pyproj-3.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f54d91ae18dd23b6c0ab48126d446820e725419da10617d86a1b69ada6d881d3" }, - { file = "pyproj-3.7.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fc52ba896cfc3214dc9f9ca3c0677a623e8fdd096b257c14a31e719d21ff3fdd" }, - { file = "pyproj-3.7.2-cp314-cp314-macosx_13_0_x86_64.whl", hash = "sha256:2aaa328605ace41db050d06bac1adc11f01b71fe95c18661497763116c3a0f02" }, - { file = "pyproj-3.7.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:35dccbce8201313c596a970fde90e33605248b66272595c061b511c8100ccc08" }, - { file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:25b0b7cb0042444c29a164b993c45c1b8013d6c48baa61dc1160d834a277e83b" }, - { file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:85def3a6388e9ba51f964619aa002a9d2098e77c6454ff47773bb68871024281" }, - { file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b1bccefec3875ab81eabf49059e2b2ea77362c178b66fd3528c3e4df242f1516" }, - { file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d5371ca114d6990b675247355a801925814eca53e6c4b2f1b5c0a956336ee36e" }, - { file = "pyproj-3.7.2-cp314-cp314-win32.whl", hash = "sha256:77f066626030f41be543274f5ac79f2a511fe89860ecd0914f22131b40a0ec25" }, - { file = "pyproj-3.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:5a964da1696b8522806f4276ab04ccfff8f9eb95133a92a25900697609d40112" }, - { file = "pyproj-3.7.2-cp314-cp314-win_arm64.whl", hash = "sha256:e258ab4dbd3cf627809067c0ba8f9884ea76c8e5999d039fb37a1619c6c3e1f6" }, - { file = "pyproj-3.7.2-cp314-cp314t-macosx_13_0_x86_64.whl", hash = "sha256:bbbac2f930c6d266f70ec75df35ef851d96fdb3701c674f42fd23a9314573b37" }, - { file = "pyproj-3.7.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:b7544e0a3d6339dc9151e9c8f3ea62a936ab7cc446a806ec448bbe86aebb979b" }, - { file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:f7f5133dca4c703e8acadf6f30bc567d39a42c6af321e7f81975c2518f3ed357" }, - { file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:5aff3343038d7426aa5076f07feb88065f50e0502d1b0d7c22ddfdd2c75a3f81" }, - { file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:b0552178c61f2ac1c820d087e8ba6e62b29442debddbb09d51c4bf8acc84d888" }, - { file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:47d87db2d2c436c5fd0409b34d70bb6cdb875cca2ebe7a9d1c442367b0ab8d59" }, - { file = "pyproj-3.7.2-cp314-cp314t-win32.whl", hash = "sha256:c9b6f1d8ad3e80a0ee0903a778b6ece7dca1d1d40f6d114ae01bc8ddbad971aa" }, - { file = "pyproj-3.7.2-cp314-cp314t-win_amd64.whl", hash = "sha256:1914e29e27933ba6f9822663ee0600f169014a2859f851c054c88cf5ea8a333c" }, - { file = "pyproj-3.7.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d9d25bae416a24397e0d85739f84d323b55f6511e45a522dd7d7eae70d10c7e4" }, - { file = "pyproj-3.7.2.tar.gz", hash = "sha256:39a0cf1ecc7e282d1d30f36594ebd55c9fae1fda8a2622cee5d100430628f88c" }, + {file = "pyproj-3.7.2-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:2514d61f24c4e0bb9913e2c51487ecdaeca5f8748d8313c933693416ca41d4d5"}, + {file = "pyproj-3.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:8693ca3892d82e70de077701ee76dd13d7bca4ae1c9d1e739d72004df015923a"}, + {file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5e26484d80fea56273ed1555abaea161e9661d81a6c07815d54b8e883d4ceb25"}, + {file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:281cb92847814e8018010c48b4069ff858a30236638631c1a91dd7bfa68f8a8a"}, + {file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9c8577f0b7bb09118ec2e57e3babdc977127dd66326d6c5d755c76b063e6d9dc"}, + {file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a23f59904fac3a5e7364b3aa44d288234af267ca041adb2c2b14a903cd5d3ac5"}, + {file = "pyproj-3.7.2-cp311-cp311-win32.whl", hash = "sha256:f2af4ed34b2cf3e031a2d85b067a3ecbd38df073c567e04b52fa7a0202afde8a"}, + {file = "pyproj-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:0b7cb633565129677b2a183c4d807c727d1c736fcb0568a12299383056e67433"}, + {file = "pyproj-3.7.2-cp311-cp311-win_arm64.whl", hash = "sha256:38b08d85e3a38e455625b80e9eb9f78027c8e2649a21dec4df1f9c3525460c71"}, + {file = "pyproj-3.7.2-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:0a9bb26a6356fb5b033433a6d1b4542158fb71e3c51de49b4c318a1dff3aeaab"}, + {file = "pyproj-3.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:567caa03021178861fad27fabde87500ec6d2ee173dd32f3e2d9871e40eebd68"}, + {file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:c203101d1dc3c038a56cff0447acc515dd29d6e14811406ac539c21eed422b2a"}, + {file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1edc34266c0c23ced85f95a1ee8b47c9035eae6aca5b6b340327250e8e281630"}, + {file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aa9f26c21bc0e2dc3d224cb1eb4020cf23e76af179a7c66fea49b828611e4260"}, + {file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9428b318530625cb389b9ddc9c51251e172808a4af79b82809376daaeabe5e9"}, + {file = "pyproj-3.7.2-cp312-cp312-win32.whl", hash = "sha256:b3d99ed57d319da042f175f4554fc7038aa4bcecc4ac89e217e350346b742c9d"}, + {file = "pyproj-3.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:11614a054cd86a2ed968a657d00987a86eeb91fdcbd9ad3310478685dc14a128"}, + {file = "pyproj-3.7.2-cp312-cp312-win_arm64.whl", hash = "sha256:509a146d1398bafe4f53273398c3bb0b4732535065fa995270e52a9d3676bca3"}, + {file = "pyproj-3.7.2-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:19466e529b1b15eeefdf8ff26b06fa745856c044f2f77bf0edbae94078c1dfa1"}, + {file = "pyproj-3.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:c79b9b84c4a626c5dc324c0d666be0bfcebd99f7538d66e8898c2444221b3da7"}, + {file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ceecf374cacca317bc09e165db38ac548ee3cad07c3609442bd70311c59c21aa"}, + {file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5141a538ffdbe4bfd157421828bb2e07123a90a7a2d6f30fa1462abcfb5ce681"}, + {file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f000841e98ea99acbb7b8ca168d67773b0191de95187228a16110245c5d954d5"}, + {file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8115faf2597f281a42ab608ceac346b4eb1383d3b45ab474fd37341c4bf82a67"}, + {file = "pyproj-3.7.2-cp313-cp313-win32.whl", hash = "sha256:f18c0579dd6be00b970cb1a6719197fceecc407515bab37da0066f0184aafdf3"}, + {file = "pyproj-3.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:bb41c29d5f60854b1075853fe80c58950b398d4ebb404eb532536ac8d2834ed7"}, + {file = "pyproj-3.7.2-cp313-cp313-win_arm64.whl", hash = "sha256:2b617d573be4118c11cd96b8891a0b7f65778fa7733ed8ecdb297a447d439100"}, + {file = "pyproj-3.7.2-cp313-cp313t-macosx_13_0_x86_64.whl", hash = "sha256:d27b48f0e81beeaa2b4d60c516c3a1cfbb0c7ff6ef71256d8e9c07792f735279"}, + {file = "pyproj-3.7.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:55a3610d75023c7b1c6e583e48ef8f62918e85a2ae81300569d9f104d6684bb6"}, + {file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8d7349182fa622696787cc9e195508d2a41a64765da9b8a6bee846702b9e6220"}, + {file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:d230b186eb876ed4f29a7c5ee310144c3a0e44e89e55f65fb3607e13f6db337c"}, + {file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:237499c7862c578d0369e2b8ac56eec550e391a025ff70e2af8417139dabb41c"}, + {file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8c225f5978abd506fd9a78eaaf794435e823c9156091cabaab5374efb29d7f69"}, + {file = "pyproj-3.7.2-cp313-cp313t-win32.whl", hash = "sha256:2da731876d27639ff9d2d81c151f6ab90a1546455fabd93368e753047be344a2"}, + {file = "pyproj-3.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f54d91ae18dd23b6c0ab48126d446820e725419da10617d86a1b69ada6d881d3"}, + {file = "pyproj-3.7.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fc52ba896cfc3214dc9f9ca3c0677a623e8fdd096b257c14a31e719d21ff3fdd"}, + {file = "pyproj-3.7.2-cp314-cp314-macosx_13_0_x86_64.whl", hash = "sha256:2aaa328605ace41db050d06bac1adc11f01b71fe95c18661497763116c3a0f02"}, + {file = "pyproj-3.7.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:35dccbce8201313c596a970fde90e33605248b66272595c061b511c8100ccc08"}, + {file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:25b0b7cb0042444c29a164b993c45c1b8013d6c48baa61dc1160d834a277e83b"}, + {file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:85def3a6388e9ba51f964619aa002a9d2098e77c6454ff47773bb68871024281"}, + {file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b1bccefec3875ab81eabf49059e2b2ea77362c178b66fd3528c3e4df242f1516"}, + {file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d5371ca114d6990b675247355a801925814eca53e6c4b2f1b5c0a956336ee36e"}, + {file = "pyproj-3.7.2-cp314-cp314-win32.whl", hash = "sha256:77f066626030f41be543274f5ac79f2a511fe89860ecd0914f22131b40a0ec25"}, + {file = "pyproj-3.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:5a964da1696b8522806f4276ab04ccfff8f9eb95133a92a25900697609d40112"}, + {file = "pyproj-3.7.2-cp314-cp314-win_arm64.whl", hash = "sha256:e258ab4dbd3cf627809067c0ba8f9884ea76c8e5999d039fb37a1619c6c3e1f6"}, + {file = "pyproj-3.7.2-cp314-cp314t-macosx_13_0_x86_64.whl", hash = "sha256:bbbac2f930c6d266f70ec75df35ef851d96fdb3701c674f42fd23a9314573b37"}, + {file = "pyproj-3.7.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:b7544e0a3d6339dc9151e9c8f3ea62a936ab7cc446a806ec448bbe86aebb979b"}, + {file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:f7f5133dca4c703e8acadf6f30bc567d39a42c6af321e7f81975c2518f3ed357"}, + {file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:5aff3343038d7426aa5076f07feb88065f50e0502d1b0d7c22ddfdd2c75a3f81"}, + {file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:b0552178c61f2ac1c820d087e8ba6e62b29442debddbb09d51c4bf8acc84d888"}, + {file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:47d87db2d2c436c5fd0409b34d70bb6cdb875cca2ebe7a9d1c442367b0ab8d59"}, + {file = "pyproj-3.7.2-cp314-cp314t-win32.whl", hash = "sha256:c9b6f1d8ad3e80a0ee0903a778b6ece7dca1d1d40f6d114ae01bc8ddbad971aa"}, + {file = "pyproj-3.7.2-cp314-cp314t-win_amd64.whl", hash = "sha256:1914e29e27933ba6f9822663ee0600f169014a2859f851c054c88cf5ea8a333c"}, + {file = "pyproj-3.7.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d9d25bae416a24397e0d85739f84d323b55f6511e45a522dd7d7eae70d10c7e4"}, + {file = "pyproj-3.7.2.tar.gz", hash = "sha256:39a0cf1ecc7e282d1d30f36594ebd55c9fae1fda8a2622cee5d100430628f88c"}, ] [package.dependencies] @@ -3012,26 +1895,46 @@ certifi = "*" [[package]] name = "pytest" -version = "8.4.1" +version = "9.0.2" description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ - { file = "pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7" }, - { file = "pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c" }, + {file = "pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b"}, + {file = "pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11"}, ] [package.dependencies] -colorama = { version = ">=0.4", markers = "sys_platform == \"win32\"" } -iniconfig = ">=1" -packaging = ">=20" +colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} +iniconfig = ">=1.0.1" +packaging = ">=22" pluggy = ">=1.5,<2" pygments = ">=2.7.2" [package.extras] dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] +[[package]] +name = "pytest-cov" +version = "7.0.0" +description = "Pytest plugin for measuring coverage." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861"}, + {file = "pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1"}, +] + +[package.dependencies] +coverage = {version = ">=7.10.6", extras = ["toml"]} +pluggy = ">=1.2" +pytest = ">=7" + +[package.extras] +testing = ["process-tests", "pytest-xdist", "virtualenv"] + [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -3048,142 +1951,116 @@ files = [ six = ">=1.5" [[package]] -name = "python-json-logger" -version = "3.3.0" -description = "JSON Log Formatter for the Python Logging Package" +name = "python-debian" +version = "1.1.0" +description = "Modules to read and manipulate many file formats related to Debian packages and repositories" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" groups = ["dev"] files = [ - { file = "python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7" }, - { file = "python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84" }, + {file = "python_debian-1.1.0-py3-none-any.whl", hash = "sha256:3e553b6d0b886272a26649e13106e33c382bcd21c80b09f5c0c81fc7c8c8c743"}, + {file = "python_debian-1.1.0.tar.gz", hash = "sha256:afe3c7267d81c29c79ab44d803a0756d0796b0e41bb0a05c5cafcdd2b980d4e6"}, ] -[package.extras] -dev = ["backports.zoneinfo ; python_version < \"3.9\"", "black", "build", "freezegun", "mdx_truly_sane_lists", "mike", "mkdocs", "mkdocs-awesome-pages-plugin", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-material (>=8.5)", "mkdocstrings[python]", "msgspec ; implementation_name != \"pypy\"", "mypy", "orjson ; implementation_name != \"pypy\"", "pylint", "pytest", "tzdata", "validate-pyproject[all]"] +[package.dependencies] +charset-normalizer = "*" -[[package]] -name = "pytz" -version = "2025.2" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -groups = ["main"] -files = [ - { file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00" }, - { file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3" }, -] +[package.extras] +test = ["pytest", "pytest-cov"] [[package]] -name = "pywin32" -version = "311" -description = "Python for Window Extensions" +name = "python-magic" +version = "0.4.27" +description = "File type identification using libmagic" optional = false -python-versions = "*" -groups = ["dev"] -markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"" -files = [ - { file = "pywin32-311-cp310-cp310-win32.whl", hash = "sha256:d03ff496d2a0cd4a5893504789d4a15399133fe82517455e78bad62efbb7f0a3" }, - { file = "pywin32-311-cp310-cp310-win_amd64.whl", hash = "sha256:797c2772017851984b97180b0bebe4b620bb86328e8a884bb626156295a63b3b" }, - { file = "pywin32-311-cp310-cp310-win_arm64.whl", hash = "sha256:0502d1facf1fed4839a9a51ccbcc63d952cf318f78ffc00a7e78528ac27d7a2b" }, - { file = "pywin32-311-cp311-cp311-win32.whl", hash = "sha256:184eb5e436dea364dcd3d2316d577d625c0351bf237c4e9a5fabbcfa5a58b151" }, - { file = "pywin32-311-cp311-cp311-win_amd64.whl", hash = "sha256:3ce80b34b22b17ccbd937a6e78e7225d80c52f5ab9940fe0506a1a16f3dab503" }, - { file = "pywin32-311-cp311-cp311-win_arm64.whl", hash = "sha256:a733f1388e1a842abb67ffa8e7aad0e70ac519e09b0f6a784e65a136ec7cefd2" }, - { file = "pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31" }, - { file = "pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067" }, - { file = "pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852" }, - { file = "pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d" }, - { file = "pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d" }, - { file = "pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a" }, - { file = "pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee" }, - { file = "pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87" }, - { file = "pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42" }, - { file = "pywin32-311-cp38-cp38-win32.whl", hash = "sha256:6c6f2969607b5023b0d9ce2541f8d2cbb01c4f46bc87456017cf63b73f1e2d8c" }, - { file = "pywin32-311-cp38-cp38-win_amd64.whl", hash = "sha256:c8015b09fb9a5e188f83b7b04de91ddca4658cee2ae6f3bc483f0b21a77ef6cd" }, - { file = "pywin32-311-cp39-cp39-win32.whl", hash = "sha256:aba8f82d551a942cb20d4a83413ccbac30790b50efb89a75e4f586ac0bb8056b" }, - { file = "pywin32-311-cp39-cp39-win_amd64.whl", hash = "sha256:e0c4cfb0621281fe40387df582097fd796e80430597cb9944f0ae70447bacd91" }, - { file = "pywin32-311-cp39-cp39-win_arm64.whl", hash = "sha256:62ea666235135fee79bb154e695f3ff67370afefd71bd7fea7512fc70ef31e3d" }, -] - -[[package]] -name = "pywinpty" -version = "2.0.15" -description = "Pseudo terminal support for Windows from Python." -optional = false -python-versions = ">=3.9" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" groups = ["dev"] -markers = "os_name == \"nt\"" files = [ - { file = "pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e" }, - { file = "pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca" }, - { file = "pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc" }, - { file = "pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408" }, - { file = "pywinpty-2.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:a4560ad8c01e537708d2790dbe7da7d986791de805d89dd0d3697ca59e9e4901" }, - { file = "pywinpty-2.0.15-cp39-cp39-win_amd64.whl", hash = "sha256:d261cd88fcd358cfb48a7ca0700db3e1c088c9c10403c9ebc0d8a8b57aa6a117" }, - { file = "pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2" }, + {file = "python-magic-0.4.27.tar.gz", hash = "sha256:c1ba14b08e4a5f5c31a302b7721239695b2f0f058d125bd5ce1ee36b9d9d3c3b"}, + {file = "python_magic-0.4.27-py2.py3-none-any.whl", hash = "sha256:c212960ad306f700aa0d01e5d7a325d20548ff97eb9920dcd29513174f0294d3"}, ] [[package]] name = "pyyaml" -version = "6.0.2" +version = "6.0.3" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, + {file = "PyYAML-6.0.3-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:c2514fceb77bc5e7a2f7adfaa1feb2fb311607c9cb518dbc378688ec73d8292f"}, + {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c57bb8c96f6d1808c030b1687b9b5fb476abaa47f0db9c0101f5e9f394e97f4"}, + {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:efd7b85f94a6f21e4932043973a7ba2613b059c4a000551892ac9f1d11f5baf3"}, + {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22ba7cfcad58ef3ecddc7ed1db3409af68d023b7f940da23c6c2a1890976eda6"}, + {file = "PyYAML-6.0.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:6344df0d5755a2c9a276d4473ae6b90647e216ab4757f8426893b5dd2ac3f369"}, + {file = "PyYAML-6.0.3-cp38-cp38-win32.whl", hash = "sha256:3ff07ec89bae51176c0549bc4c63aa6202991da2d9a6129d7aef7f1407d3f295"}, + {file = "PyYAML-6.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:5cf4e27da7e3fbed4d6c3d8e797387aaad68102272f8f9752883bc32d61cb87b"}, + {file = "pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b"}, + {file = "pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956"}, + {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8"}, + {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198"}, + {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b"}, + {file = "pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0"}, + {file = "pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69"}, + {file = "pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e"}, + {file = "pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c"}, + {file = "pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e"}, + {file = "pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824"}, + {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c"}, + {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00"}, + {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d"}, + {file = "pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a"}, + {file = "pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4"}, + {file = "pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b"}, + {file = "pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf"}, + {file = "pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196"}, + {file = "pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0"}, + {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28"}, + {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c"}, + {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc"}, + {file = "pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e"}, + {file = "pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea"}, + {file = "pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5"}, + {file = "pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b"}, + {file = "pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd"}, + {file = "pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8"}, + {file = "pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1"}, + {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c"}, + {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5"}, + {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6"}, + {file = "pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6"}, + {file = "pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be"}, + {file = "pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26"}, + {file = "pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c"}, + {file = "pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb"}, + {file = "pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac"}, + {file = "pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310"}, + {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7"}, + {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788"}, + {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5"}, + {file = "pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764"}, + {file = "pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35"}, + {file = "pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac"}, + {file = "pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3"}, + {file = "pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3"}, + {file = "pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba"}, + {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c"}, + {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702"}, + {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c"}, + {file = "pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065"}, + {file = "pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65"}, + {file = "pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9"}, + {file = "pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b"}, + {file = "pyyaml-6.0.3-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:b865addae83924361678b652338317d1bd7e79b1f4596f96b96c77a5a34b34da"}, + {file = "pyyaml-6.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c3355370a2c156cffb25e876646f149d5d68f5e0a3ce86a5084dd0b64a994917"}, + {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3c5677e12444c15717b902a5798264fa7909e41153cdf9ef7ad571b704a63dd9"}, + {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5ed875a24292240029e4483f9d4a4b8a1ae08843b9c54f43fcc11e404532a8a5"}, + {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0150219816b6a1fa26fb4699fb7daa9caf09eb1999f3b70fb6e786805e80375a"}, + {file = "pyyaml-6.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926"}, + {file = "pyyaml-6.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:27c0abcb4a5dac13684a37f76e701e054692a9b2d3064b70f5e4eb54810553d7"}, + {file = "pyyaml-6.0.3-cp39-cp39-win32.whl", hash = "sha256:1ebe39cb5fc479422b83de611d14e2c0d3bb2a18bbcb01f229ab3cfbd8fee7a0"}, + {file = "pyyaml-6.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:2e71d11abed7344e42a8849600193d15b6def118602c4c176f748e4583246007"}, + {file = "pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f"}, ] [[package]] @@ -3194,131 +2071,23 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04" }, - { file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff" }, + {file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04"}, + {file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff"}, ] [package.dependencies] pyyaml = "*" -[[package]] -name = "pyzmq" -version = "27.0.0" -description = "Python bindings for 0MQ" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "pyzmq-27.0.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:b973ee650e8f442ce482c1d99ca7ab537c69098d53a3d046676a484fd710c87a" }, - { file = "pyzmq-27.0.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:661942bc7cd0223d569d808f2e5696d9cc120acc73bf3e88a1f1be7ab648a7e4" }, - { file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50360fb2a056ffd16e5f4177eee67f1dd1017332ea53fb095fe7b5bf29c70246" }, - { file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf209a6dc4b420ed32a7093642843cbf8703ed0a7d86c16c0b98af46762ebefb" }, - { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c2dace4a7041cca2fba5357a2d7c97c5effdf52f63a1ef252cfa496875a3762d" }, - { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:63af72b2955fc77caf0a77444baa2431fcabb4370219da38e1a9f8d12aaebe28" }, - { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e8c4adce8e37e75c4215297d7745551b8dcfa5f728f23ce09bf4e678a9399413" }, - { file = "pyzmq-27.0.0-cp310-cp310-win32.whl", hash = "sha256:5d5ef4718ecab24f785794e0e7536436698b459bfbc19a1650ef55280119d93b" }, - { file = "pyzmq-27.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:e40609380480b3d12c30f841323f42451c755b8fece84235236f5fe5ffca8c1c" }, - { file = "pyzmq-27.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:6b0397b0be277b46762956f576e04dc06ced265759e8c2ff41a0ee1aa0064198" }, - { file = "pyzmq-27.0.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:21457825249b2a53834fa969c69713f8b5a79583689387a5e7aed880963ac564" }, - { file = "pyzmq-27.0.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1958947983fef513e6e98eff9cb487b60bf14f588dc0e6bf35fa13751d2c8251" }, - { file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0dc628b5493f9a8cd9844b8bee9732ef587ab00002157c9329e4fc0ef4d3afa" }, - { file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7bbe9e1ed2c8d3da736a15694d87c12493e54cc9dc9790796f0321794bbc91f" }, - { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dc1091f59143b471d19eb64f54bae4f54bcf2a466ffb66fe45d94d8d734eb495" }, - { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7011ade88c8e535cf140f8d1a59428676fbbce7c6e54fefce58bf117aefb6667" }, - { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2c386339d7e3f064213aede5d03d054b237937fbca6dd2197ac8cf3b25a6b14e" }, - { file = "pyzmq-27.0.0-cp311-cp311-win32.whl", hash = "sha256:0546a720c1f407b2172cb04b6b094a78773491497e3644863cf5c96c42df8cff" }, - { file = "pyzmq-27.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:15f39d50bd6c9091c67315ceb878a4f531957b121d2a05ebd077eb35ddc5efed" }, - { file = "pyzmq-27.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c5817641eebb391a2268c27fecd4162448e03538387093cdbd8bf3510c316b38" }, - { file = "pyzmq-27.0.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:cbabc59dcfaac66655c040dfcb8118f133fb5dde185e5fc152628354c1598e52" }, - { file = "pyzmq-27.0.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0ac5179cba4b2f94f1aa208fbb77b62c4c9bf24dd446278b8b602cf85fcda3" }, - { file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53a48f0228eab6cbf69fde3aa3c03cbe04e50e623ef92ae395fce47ef8a76152" }, - { file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:111db5f395e09f7e775f759d598f43cb815fc58e0147623c4816486e1a39dc22" }, - { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c8878011653dcdc27cc2c57e04ff96f0471e797f5c19ac3d7813a245bcb24371" }, - { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:c0ed2c1f335ba55b5fdc964622254917d6b782311c50e138863eda409fbb3b6d" }, - { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e918d70862d4cfd4b1c187310015646a14e1f5917922ab45b29f28f345eeb6be" }, - { file = "pyzmq-27.0.0-cp312-abi3-win32.whl", hash = "sha256:88b4e43cab04c3c0f0d55df3b1eef62df2b629a1a369b5289a58f6fa8b07c4f4" }, - { file = "pyzmq-27.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:dce4199bf5f648a902ce37e7b3afa286f305cd2ef7a8b6ec907470ccb6c8b371" }, - { file = "pyzmq-27.0.0-cp312-abi3-win_arm64.whl", hash = "sha256:56e46bbb85d52c1072b3f809cc1ce77251d560bc036d3a312b96db1afe76db2e" }, - { file = "pyzmq-27.0.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c36ad534c0c29b4afa088dc53543c525b23c0797e01b69fef59b1a9c0e38b688" }, - { file = "pyzmq-27.0.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:67855c14173aec36395d7777aaba3cc527b393821f30143fd20b98e1ff31fd38" }, - { file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8617c7d43cd8ccdb62aebe984bfed77ca8f036e6c3e46dd3dddda64b10f0ab7a" }, - { file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67bfbcbd0a04c575e8103a6061d03e393d9f80ffdb9beb3189261e9e9bc5d5e9" }, - { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5cd11d46d7b7e5958121b3eaf4cd8638eff3a720ec527692132f05a57f14341d" }, - { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b801c2e40c5aa6072c2f4876de8dccd100af6d9918d4d0d7aa54a1d982fd4f44" }, - { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20d5cb29e8c5f76a127c75b6e7a77e846bc4b655c373baa098c26a61b7ecd0ef" }, - { file = "pyzmq-27.0.0-cp313-cp313t-win32.whl", hash = "sha256:a20528da85c7ac7a19b7384e8c3f8fa707841fd85afc4ed56eda59d93e3d98ad" }, - { file = "pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f" }, - { file = "pyzmq-27.0.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:f4162dbbd9c5c84fb930a36f290b08c93e35fce020d768a16fc8891a2f72bab8" }, - { file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:4e7d0a8d460fba526cc047333bdcbf172a159b8bd6be8c3eb63a416ff9ba1477" }, - { file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:29f44e3c26b9783816ba9ce274110435d8f5b19bbd82f7a6c7612bb1452a3597" }, - { file = "pyzmq-27.0.0-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e435540fa1da54667f0026cf1e8407fe6d8a11f1010b7f06b0b17214ebfcf5e" }, - { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:51f5726de3532b8222e569990c8aa34664faa97038304644679a51d906e60c6e" }, - { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:42c7555123679637c99205b1aa9e8f7d90fe29d4c243c719e347d4852545216c" }, - { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a979b7cf9e33d86c4949df527a3018767e5f53bc3b02adf14d4d8db1db63ccc0" }, - { file = "pyzmq-27.0.0-cp38-cp38-win32.whl", hash = "sha256:26b72c5ae20bf59061c3570db835edb81d1e0706ff141747055591c4b41193f8" }, - { file = "pyzmq-27.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:55a0155b148fe0428285a30922f7213539aa84329a5ad828bca4bbbc665c70a4" }, - { file = "pyzmq-27.0.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:100f6e5052ba42b2533011d34a018a5ace34f8cac67cb03cfa37c8bdae0ca617" }, - { file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:bf6c6b061efd00404b9750e2cfbd9507492c8d4b3721ded76cb03786131be2ed" }, - { file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ee05728c0b0b2484a9fc20466fa776fffb65d95f7317a3419985b8c908563861" }, - { file = "pyzmq-27.0.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7cdf07fe0a557b131366f80727ec8ccc4b70d89f1e3f920d94a594d598d754f0" }, - { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:90252fa2ff3a104219db1f5ced7032a7b5fc82d7c8d2fec2b9a3e6fd4e25576b" }, - { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ea6d441c513bf18c578c73c323acf7b4184507fc244762193aa3a871333c9045" }, - { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ae2b34bcfaae20c064948a4113bf8709eee89fd08317eb293ae4ebd69b4d9740" }, - { file = "pyzmq-27.0.0-cp39-cp39-win32.whl", hash = "sha256:5b10bd6f008937705cf6e7bf8b6ece5ca055991e3eb130bca8023e20b86aa9a3" }, - { file = "pyzmq-27.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:00387d12a8af4b24883895f7e6b9495dc20a66027b696536edac35cb988c38f3" }, - { file = "pyzmq-27.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:4c19d39c04c29a6619adfeb19e3735c421b3bfee082f320662f52e59c47202ba" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:656c1866505a5735d0660b7da6d7147174bbf59d4975fc2b7f09f43c9bc25745" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:74175b9e12779382432dd1d1f5960ebe7465d36649b98a06c6b26be24d173fab" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8c6de908465697a8708e4d6843a1e884f567962fc61eb1706856545141d0cbb" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c644aaacc01d0df5c7072826df45e67301f191c55f68d7b2916d83a9ddc1b551" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:10f70c1d9a446a85013a36871a296007f6fe4232b530aa254baf9da3f8328bc0" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd1dc59763effd1576f8368047c9c31468fce0af89d76b5067641137506792ae" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:60e8cc82d968174650c1860d7b716366caab9973787a1c060cf8043130f7d0f7" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:14fe7aaac86e4e93ea779a821967360c781d7ac5115b3f1a171ced77065a0174" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6ad0562d4e6abb785be3e4dd68599c41be821b521da38c402bc9ab2a8e7ebc7e" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:9df43a2459cd3a3563404c1456b2c4c69564daa7dbaf15724c09821a3329ce46" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8c86ea8fe85e2eb0ffa00b53192c401477d5252f6dd1db2e2ed21c1c30d17e5e" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:c45fee3968834cd291a13da5fac128b696c9592a9493a0f7ce0b47fa03cc574d" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cae73bb6898c4e045fbed5024cb587e4110fddb66f6163bcab5f81f9d4b9c496" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:26d542258c7a1f35a9cff3d887687d3235006134b0ac1c62a6fe1ad3ac10440e" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:04cd50ef3b28e35ced65740fb9956a5b3f77a6ff32fcd887e3210433f437dd0f" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:39ddd3ba0a641f01d8f13a3cfd4c4924eb58e660d8afe87e9061d6e8ca6f7ac3" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:8ca7e6a0388dd9e1180b14728051068f4efe83e0d2de058b5ff92c63f399a73f" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2524c40891be6a3106885a3935d58452dd83eb7a5742a33cc780a1ad4c49dec0" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a56e3e5bd2d62a01744fd2f1ce21d760c7c65f030e9522738d75932a14ab62a" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:096af9e133fec3a72108ddefba1e42985cb3639e9de52cfd336b6fc23aa083e9" }, - { file = "pyzmq-27.0.0.tar.gz", hash = "sha256:b1f08eeb9ce1510e6939b6e5dcd46a17765e2333daae78ecf4606808442e52cf" }, -] - -[package.dependencies] -cffi = {version = "*", markers = "implementation_name == \"pypy\""} - -[[package]] -name = "referencing" -version = "0.36.2" -description = "JSON Referencing + Python" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0" }, - { file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa" }, -] - -[package.dependencies] -attrs = ">=22.2.0" -rpds-py = ">=0.7.0" - [[package]] name = "requests" -version = "2.32.4" +version = "2.32.5" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c" }, - { file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422" }, + {file = "requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6"}, + {file = "requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"}, ] [package.dependencies] @@ -3332,269 +2101,132 @@ socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] -name = "rfc3339-validator" -version = "0.1.4" -description = "A pure python RFC3339 validator" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["dev"] -files = [ - {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, - {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "rfc3986-validator" -version = "0.1.1" -description = "Pure python rfc3986 validator" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["dev"] -files = [ - {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, - {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, -] - -[[package]] -name = "rfc3987-syntax" -version = "1.1.0" -description = "Helper functions to syntactically validate strings according to RFC 3987." +name = "reuse" +version = "6.2.0" +description = "reuse is a tool for compliance with the REUSE recommendations." optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ - { file = "rfc3987_syntax-1.1.0-py3-none-any.whl", hash = "sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f" }, - { file = "rfc3987_syntax-1.1.0.tar.gz", hash = "sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d" }, + {file = "reuse-6.2.0-cp310-cp310-manylinux_2_41_x86_64.whl", hash = "sha256:12b68549bb9d5f4957f06d726a83a9780628810008fb732bb0d0f21607f8c6d6"}, + {file = "reuse-6.2.0.tar.gz", hash = "sha256:4feae057a2334c9a513e6933cdb9be819d8b822f3b5b435a36138bd218897d23"}, ] [package.dependencies] -lark = ">=1.2.2" +attrs = ">=23.2" +click = ">=8.1" +Jinja2 = ">=3.0.0" +license-expression = ">=21.6.14" +python-debian = ">=0.1.48" +python-magic = ">=0.4.12" +tomlkit = ">=0.8" [package.extras] -testing = ["pytest (>=8.3.5)"] - -[[package]] -name = "rpds-py" -version = "0.26.0" -description = "Python bindings to Rust's persistent data structures (rpds)" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "rpds_py-0.26.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4c70c70f9169692b36307a95f3d8c0a9fcd79f7b4a383aad5eaa0e9718b79b37" }, - { file = "rpds_py-0.26.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:777c62479d12395bfb932944e61e915741e364c843afc3196b694db3d669fcd0" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec671691e72dff75817386aa02d81e708b5a7ec0dec6669ec05213ff6b77e1bd" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a1cb5d6ce81379401bbb7f6dbe3d56de537fb8235979843f0d53bc2e9815a79" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f789e32fa1fb6a7bf890e0124e7b42d1e60d28ebff57fe806719abb75f0e9a3" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c55b0a669976cf258afd718de3d9ad1b7d1fe0a91cd1ab36f38b03d4d4aeaaf" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c70d9ec912802ecfd6cd390dadb34a9578b04f9bcb8e863d0a7598ba5e9e7ccc" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3021933c2cb7def39d927b9862292e0f4c75a13d7de70eb0ab06efed4c508c19" }, - { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8a7898b6ca3b7d6659e55cdac825a2e58c638cbf335cde41f4619e290dd0ad11" }, - { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:12bff2ad9447188377f1b2794772f91fe68bb4bbfa5a39d7941fbebdbf8c500f" }, - { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:191aa858f7d4902e975d4cf2f2d9243816c91e9605070aeb09c0a800d187e323" }, - { file = "rpds_py-0.26.0-cp310-cp310-win32.whl", hash = "sha256:b37a04d9f52cb76b6b78f35109b513f6519efb481d8ca4c321f6a3b9580b3f45" }, - { file = "rpds_py-0.26.0-cp310-cp310-win_amd64.whl", hash = "sha256:38721d4c9edd3eb6670437d8d5e2070063f305bfa2d5aa4278c51cedcd508a84" }, - { file = "rpds_py-0.26.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9e8cb77286025bdb21be2941d64ac6ca016130bfdcd228739e8ab137eb4406ed" }, - { file = "rpds_py-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e09330b21d98adc8ccb2dbb9fc6cb434e8908d4c119aeaa772cb1caab5440a0" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9c1b92b774b2e68d11193dc39620d62fd8ab33f0a3c77ecdabe19c179cdbc1" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:824e6d3503ab990d7090768e4dfd9e840837bae057f212ff9f4f05ec6d1975e7" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ad7fd2258228bf288f2331f0a6148ad0186b2e3643055ed0db30990e59817a6" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dc23bbb3e06ec1ea72d515fb572c1fea59695aefbffb106501138762e1e915e" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d80bf832ac7b1920ee29a426cdca335f96a2b5caa839811803e999b41ba9030d" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0919f38f5542c0a87e7b4afcafab6fd2c15386632d249e9a087498571250abe3" }, - { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d422b945683e409000c888e384546dbab9009bb92f7c0b456e217988cf316107" }, - { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a7711fa562ba2da1aa757e11024ad6d93bad6ad7ede5afb9af144623e5f76a" }, - { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238e8c8610cb7c29460e37184f6799547f7e09e6a9bdbdab4e8edb90986a2318" }, - { file = "rpds_py-0.26.0-cp311-cp311-win32.whl", hash = "sha256:893b022bfbdf26d7bedb083efeea624e8550ca6eb98bf7fea30211ce95b9201a" }, - { file = "rpds_py-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:87a5531de9f71aceb8af041d72fc4cab4943648d91875ed56d2e629bef6d4c03" }, - { file = "rpds_py-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:de2713f48c1ad57f89ac25b3cb7daed2156d8e822cf0eca9b96a6f990718cc41" }, - { file = "rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d" }, - { file = "rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323" }, - { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158" }, - { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3" }, - { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2" }, - { file = "rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44" }, - { file = "rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c" }, - { file = "rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8" }, - { file = "rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d" }, - { file = "rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1" }, - { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9" }, - { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9" }, - { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba" }, - { file = "rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b" }, - { file = "rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5" }, - { file = "rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256" }, - { file = "rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618" }, - { file = "rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed" }, - { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632" }, - { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c" }, - { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0" }, - { file = "rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9" }, - { file = "rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9" }, - { file = "rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a" }, - { file = "rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387" }, - { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af" }, - { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33" }, - { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953" }, - { file = "rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9" }, - { file = "rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37" }, - { file = "rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867" }, - { file = "rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da" }, - { file = "rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b" }, - { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a" }, - { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170" }, - { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e" }, - { file = "rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f" }, - { file = "rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7" }, - { file = "rpds_py-0.26.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:7a48af25d9b3c15684059d0d1fc0bc30e8eee5ca521030e2bffddcab5be40226" }, - { file = "rpds_py-0.26.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0c71c2f6bf36e61ee5c47b2b9b5d47e4d1baad6426bfed9eea3e858fc6ee8806" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d815d48b1804ed7867b539236b6dd62997850ca1c91cad187f2ddb1b7bbef19" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84cfbd4d4d2cdeb2be61a057a258d26b22877266dd905809e94172dff01a42ae" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fbaa70553ca116c77717f513e08815aec458e6b69a028d4028d403b3bc84ff37" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39bfea47c375f379d8e87ab4bb9eb2c836e4f2069f0f65731d85e55d74666387" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1533b7eb683fb5f38c1d68a3c78f5fdd8f1412fa6b9bf03b40f450785a0ab915" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c5ab0ee51f560d179b057555b4f601b7df909ed31312d301b99f8b9fc6028284" }, - { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e5162afc9e0d1f9cae3b577d9c29ddbab3505ab39012cb794d94a005825bde21" }, - { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:43f10b007033f359bc3fa9cd5e6c1e76723f056ffa9a6b5c117cc35720a80292" }, - { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e3730a48e5622e598293eee0762b09cff34dd3f271530f47b0894891281f051d" }, - { file = "rpds_py-0.26.0-cp39-cp39-win32.whl", hash = "sha256:4b1f66eb81eab2e0ff5775a3a312e5e2e16bf758f7b06be82fb0d04078c7ac51" }, - { file = "rpds_py-0.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:519067e29f67b5c90e64fb1a6b6e9d2ec0ba28705c51956637bac23a2f4ddae1" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3c0909c5234543ada2515c05dc08595b08d621ba919629e94427e8e03539c958" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c1fb0cda2abcc0ac62f64e2ea4b4e64c57dfd6b885e693095460c61bde7bb18e" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84d142d2d6cf9b31c12aa4878d82ed3b2324226270b89b676ac62ccd7df52d08" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a547e21c5610b7e9093d870be50682a6a6cf180d6da0f42c47c306073bfdbbf6" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:35e9a70a0f335371275cdcd08bc5b8051ac494dd58bff3bbfb421038220dc871" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dfa6115c6def37905344d56fb54c03afc49104e2ca473d5dedec0f6606913b4" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:313cfcd6af1a55a286a3c9a25f64af6d0e46cf60bc5798f1db152d97a216ff6f" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f7bf2496fa563c046d05e4d232d7b7fd61346e2402052064b773e5c378bf6f73" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:aa81873e2c8c5aa616ab8e017a481a96742fdf9313c40f14338ca7dbf50cb55f" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:68ffcf982715f5b5b7686bdd349ff75d422e8f22551000c24b30eaa1b7f7ae84" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6188de70e190847bb6db3dc3981cbadff87d27d6fe9b4f0e18726d55795cee9b" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1c962145c7473723df9722ba4c058de12eb5ebedcb4e27e7d902920aa3831ee8" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f61a9326f80ca59214d1cceb0a09bb2ece5b2563d4e0cd37bfd5515c28510674" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:183f857a53bcf4b1b42ef0f57ca553ab56bdd170e49d8091e96c51c3d69ca696" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:941c1cfdf4799d623cf3aa1d326a6b4fdb7a5799ee2687f3516738216d2262fb" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72a8d9564a717ee291f554eeb4bfeafe2309d5ec0aa6c475170bdab0f9ee8e88" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:511d15193cbe013619dd05414c35a7dedf2088fcee93c6bbb7c77859765bd4e8" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aea1f9741b603a8d8fedb0ed5502c2bc0accbc51f43e2ad1337fe7259c2b77a5" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4019a9d473c708cf2f16415688ef0b4639e07abaa569d72f74745bbeffafa2c7" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:093d63b4b0f52d98ebae33b8c50900d3d67e0666094b1be7a12fffd7f65de74b" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2abe21d8ba64cded53a2a677e149ceb76dcf44284202d737178afe7ba540c1eb" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:4feb7511c29f8442cbbc28149a92093d32e815a28aa2c50d333826ad2a20fdf0" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e99685fc95d386da368013e7fb4269dd39c30d99f812a8372d62f244f662709c" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a90a13408a7a856b87be8a9f008fff53c5080eea4e4180f6c2e546e4a972fb5d" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ac51b65e8dc76cf4949419c54c5528adb24fc721df722fd452e5fbc236f5c40" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59b2093224a18c6508d95cfdeba8db9cbfd6f3494e94793b58972933fcee4c6d" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f01a5d6444a3258b00dc07b6ea4733e26f8072b788bef750baa37b370266137" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6e2c12160c72aeda9d1283e612f68804621f448145a210f1bf1d79151c47090" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb28c1f569f8d33b2b5dcd05d0e6ef7005d8639c54c2f0be824f05aedf715255" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1766b5724c3f779317d5321664a343c07773c8c5fd1532e4039e6cc7d1a815be" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b6d9e5a2ed9c4988c8f9b28b3bc0e3e5b1aaa10c28d210a594ff3a8c02742daf" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b5f7a446ddaf6ca0fad9a5535b56fbfc29998bf0e0b450d174bbec0d600e1d72" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:eed5ac260dd545fbc20da5f4f15e7efe36a55e0e7cf706e4ec005b491a9546a0" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:582462833ba7cee52e968b0341b85e392ae53d44c0f9af6a5927c80e539a8b67" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:69a607203441e07e9a8a529cff1d5b73f6a160f22db1097211e6212a68567d11" }, - { file = "rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0" }, -] +chardet = ["chardet (>=3.0.2)"] +charset-normalizer = ["charset-normalizer (>=2.0.5)"] +file-magic = ["file-magic (>=0.4.1)"] [[package]] name = "ruff" -version = "0.12.4" +version = "0.15.2" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - { file = "ruff-0.12.4-py3-none-linux_armv6l.whl", hash = "sha256:cb0d261dac457ab939aeb247e804125a5d521b21adf27e721895b0d3f83a0d0a" }, - { file = "ruff-0.12.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:55c0f4ca9769408d9b9bac530c30d3e66490bd2beb2d3dae3e4128a1f05c7442" }, - { file = "ruff-0.12.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a8224cc3722c9ad9044da7f89c4c1ec452aef2cfe3904365025dd2f51daeae0e" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9949d01d64fa3672449a51ddb5d7548b33e130240ad418884ee6efa7a229586" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:be0593c69df9ad1465e8a2d10e3defd111fdb62dcd5be23ae2c06da77e8fcffb" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7dea966bcb55d4ecc4cc3270bccb6f87a337326c9dcd3c07d5b97000dbff41c" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:afcfa3ab5ab5dd0e1c39bf286d829e042a15e966b3726eea79528e2e24d8371a" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c057ce464b1413c926cdb203a0f858cd52f3e73dcb3270a3318d1630f6395bb3" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e64b90d1122dc2713330350626b10d60818930819623abbb56535c6466cce045" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2abc48f3d9667fdc74022380b5c745873499ff827393a636f7a59da1515e7c57" }, - { file = "ruff-0.12.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2b2449dc0c138d877d629bea151bee8c0ae3b8e9c43f5fcaafcd0c0d0726b184" }, - { file = "ruff-0.12.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:56e45bb11f625db55f9b70477062e6a1a04d53628eda7784dce6e0f55fd549eb" }, - { file = "ruff-0.12.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:478fccdb82ca148a98a9ff43658944f7ab5ec41c3c49d77cd99d44da019371a1" }, - { file = "ruff-0.12.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0fc426bec2e4e5f4c4f182b9d2ce6a75c85ba9bcdbe5c6f2a74fcb8df437df4b" }, - { file = "ruff-0.12.4-py3-none-win32.whl", hash = "sha256:4de27977827893cdfb1211d42d84bc180fceb7b72471104671c59be37041cf93" }, - { file = "ruff-0.12.4-py3-none-win_amd64.whl", hash = "sha256:fe0b9e9eb23736b453143d72d2ceca5db323963330d5b7859d60d101147d461a" }, - { file = "ruff-0.12.4-py3-none-win_arm64.whl", hash = "sha256:0618ec4442a83ab545e5b71202a5c0ed7791e8471435b94e655b570a5031a98e" }, - { file = "ruff-0.12.4.tar.gz", hash = "sha256:13efa16df6c6eeb7d0f091abae50f58e9522f3843edb40d56ad52a5a4a4b6873" }, -] - -[[package]] -name = "send2trash" -version = "1.8.3" -description = "Send file to trash natively under Mac OS X, Windows and Linux" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -groups = ["dev"] -files = [ - {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, - {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, + {file = "ruff-0.15.2-py3-none-linux_armv6l.whl", hash = "sha256:120691a6fdae2f16d65435648160f5b81a9625288f75544dc40637436b5d3c0d"}, + {file = "ruff-0.15.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:a89056d831256099658b6bba4037ac6dd06f49d194199215befe2bb10457ea5e"}, + {file = "ruff-0.15.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e36dee3a64be0ebd23c86ffa3aa3fd3ac9a712ff295e192243f814a830b6bd87"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9fb47b6d9764677f8c0a193c0943ce9a05d6763523f132325af8a858eadc2b9"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f376990f9d0d6442ea9014b19621d8f2aaf2b8e39fdbfc79220b7f0c596c9b80"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2dcc987551952d73cbf5c88d9fdee815618d497e4df86cd4c4824cc59d5dd75f"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:42a47fd785cbe8c01b9ff45031af875d101b040ad8f4de7bbb716487c74c9a77"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cbe9f49354866e575b4c6943856989f966421870e85cd2ac94dccb0a9dcb2fea"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7a672c82b5f9887576087d97be5ce439f04bbaf548ee987b92d3a7dede41d3a"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:72ecc64f46f7019e2bcc3cdc05d4a7da958b629a5ab7033195e11a438403d956"}, + {file = "ruff-0.15.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:8dcf243b15b561c655c1ef2f2b0050e5d50db37fe90115507f6ff37d865dc8b4"}, + {file = "ruff-0.15.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:dab6941c862c05739774677c6273166d2510d254dac0695c0e3f5efa1b5585de"}, + {file = "ruff-0.15.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:1b9164f57fc36058e9a6806eb92af185b0697c9fe4c7c52caa431c6554521e5c"}, + {file = "ruff-0.15.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:80d24fcae24d42659db7e335b9e1531697a7102c19185b8dc4a028b952865fd8"}, + {file = "ruff-0.15.2-py3-none-win32.whl", hash = "sha256:fd5ff9e5f519a7e1bd99cbe8daa324010a74f5e2ebc97c6242c08f26f3714f6f"}, + {file = "ruff-0.15.2-py3-none-win_amd64.whl", hash = "sha256:d20014e3dfa400f3ff84830dfb5755ece2de45ab62ecea4af6b7262d0fb4f7c5"}, + {file = "ruff-0.15.2-py3-none-win_arm64.whl", hash = "sha256:cabddc5822acdc8f7b5527b36ceac55cc51eec7b1946e60181de8fe83ca8876e"}, + {file = "ruff-0.15.2.tar.gz", hash = "sha256:14b965afee0969e68bb871eba625343b8673375f457af4abe98553e8bbb98342"}, ] -[package.extras] -nativelib = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\"", "pywin32 ; sys_platform == \"win32\""] -objc = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\""] -win32 = ["pywin32 ; sys_platform == \"win32\""] - [[package]] -name = "setuptools" -version = "80.9.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" +name = "shapely" +version = "2.1.2" +description = "Manipulation and analysis of geometric objects" optional = false -python-versions = ">=3.9" -groups = ["dev"] +python-versions = ">=3.10" +groups = ["main"] files = [ - { file = "setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922" }, - { file = "setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c" }, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.8.0) ; sys_platform != \"cygwin\""] -core = ["importlib_metadata (>=6) ; python_version < \"3.10\"", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.14.*)", "pytest-mypy"] + {file = "shapely-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7ae48c236c0324b4e139bea88a306a04ca630f49be66741b340729d380d8f52f"}, + {file = "shapely-2.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eba6710407f1daa8e7602c347dfc94adc02205ec27ed956346190d66579eb9ea"}, + {file = "shapely-2.1.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ef4a456cc8b7b3d50ccec29642aa4aeda959e9da2fe9540a92754770d5f0cf1f"}, + {file = "shapely-2.1.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e38a190442aacc67ff9f75ce60aec04893041f16f97d242209106d502486a142"}, + {file = "shapely-2.1.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:40d784101f5d06a1fd30b55fc11ea58a61be23f930d934d86f19a180909908a4"}, + {file = "shapely-2.1.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f6f6cd5819c50d9bcf921882784586aab34a4bd53e7553e175dece6db513a6f0"}, + {file = "shapely-2.1.2-cp310-cp310-win32.whl", hash = "sha256:fe9627c39c59e553c90f5bc3128252cb85dc3b3be8189710666d2f8bc3a5503e"}, + {file = "shapely-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:1d0bfb4b8f661b3b4ec3565fa36c340bfb1cda82087199711f86a88647d26b2f"}, + {file = "shapely-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:91121757b0a36c9aac3427a651a7e6567110a4a67c97edf04f8d55d4765f6618"}, + {file = "shapely-2.1.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:16a9c722ba774cf50b5d4541242b4cce05aafd44a015290c82ba8a16931ff63d"}, + {file = "shapely-2.1.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cc4f7397459b12c0b196c9efe1f9d7e92463cbba142632b4cc6d8bbbbd3e2b09"}, + {file = "shapely-2.1.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:136ab87b17e733e22f0961504d05e77e7be8c9b5a8184f685b4a91a84efe3c26"}, + {file = "shapely-2.1.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:16c5d0fc45d3aa0a69074979f4f1928ca2734fb2e0dde8af9611e134e46774e7"}, + {file = "shapely-2.1.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6ddc759f72b5b2b0f54a7e7cde44acef680a55019eb52ac63a7af2cf17cb9cd2"}, + {file = "shapely-2.1.2-cp311-cp311-win32.whl", hash = "sha256:2fa78b49485391224755a856ed3b3bd91c8455f6121fee0db0e71cefb07d0ef6"}, + {file = "shapely-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:c64d5c97b2f47e3cd9b712eaced3b061f2b71234b3fc263e0fcf7d889c6559dc"}, + {file = "shapely-2.1.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fe2533caae6a91a543dec62e8360fe86ffcdc42a7c55f9dfd0128a977a896b94"}, + {file = "shapely-2.1.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ba4d1333cc0bc94381d6d4308d2e4e008e0bd128bdcff5573199742ee3634359"}, + {file = "shapely-2.1.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0bd308103340030feef6c111d3eb98d50dc13feea33affc8a6f9fa549e9458a3"}, + {file = "shapely-2.1.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1e7d4d7ad262a48bb44277ca12c7c78cb1b0f56b32c10734ec9a1d30c0b0c54b"}, + {file = "shapely-2.1.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e9eddfe513096a71896441a7c37db72da0687b34752c4e193577a145c71736fc"}, + {file = "shapely-2.1.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:980c777c612514c0cf99bc8a9de6d286f5e186dcaf9091252fcd444e5638193d"}, + {file = "shapely-2.1.2-cp312-cp312-win32.whl", hash = "sha256:9111274b88e4d7b54a95218e243282709b330ef52b7b86bc6aaf4f805306f454"}, + {file = "shapely-2.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:743044b4cfb34f9a67205cee9279feaf60ba7d02e69febc2afc609047cb49179"}, + {file = "shapely-2.1.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b510dda1a3672d6879beb319bc7c5fd302c6c354584690973c838f46ec3e0fa8"}, + {file = "shapely-2.1.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8cff473e81017594d20ec55d86b54bc635544897e13a7cfc12e36909c5309a2a"}, + {file = "shapely-2.1.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fe7b77dc63d707c09726b7908f575fc04ff1d1ad0f3fb92aec212396bc6cfe5e"}, + {file = "shapely-2.1.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7ed1a5bbfb386ee8332713bf7508bc24e32d24b74fc9a7b9f8529a55db9f4ee6"}, + {file = "shapely-2.1.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a84e0582858d841d54355246ddfcbd1fce3179f185da7470f41ce39d001ee1af"}, + {file = "shapely-2.1.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dc3487447a43d42adcdf52d7ac73804f2312cbfa5d433a7d2c506dcab0033dfd"}, + {file = "shapely-2.1.2-cp313-cp313-win32.whl", hash = "sha256:9c3a3c648aedc9f99c09263b39f2d8252f199cb3ac154fadc173283d7d111350"}, + {file = "shapely-2.1.2-cp313-cp313-win_amd64.whl", hash = "sha256:ca2591bff6645c216695bdf1614fca9c82ea1144d4a7591a466fef64f28f0715"}, + {file = "shapely-2.1.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2d93d23bdd2ed9dc157b46bc2f19b7da143ca8714464249bef6771c679d5ff40"}, + {file = "shapely-2.1.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:01d0d304b25634d60bd7cf291828119ab55a3bab87dc4af1e44b07fb225f188b"}, + {file = "shapely-2.1.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8d8382dd120d64b03698b7298b89611a6ea6f55ada9d39942838b79c9bc89801"}, + {file = "shapely-2.1.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:19efa3611eef966e776183e338b2d7ea43569ae99ab34f8d17c2c054d3205cc0"}, + {file = "shapely-2.1.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:346ec0c1a0fcd32f57f00e4134d1200e14bf3f5ae12af87ba83ca275c502498c"}, + {file = "shapely-2.1.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6305993a35989391bd3476ee538a5c9a845861462327efe00dd11a5c8c709a99"}, + {file = "shapely-2.1.2-cp313-cp313t-win32.whl", hash = "sha256:c8876673449f3401f278c86eb33224c5764582f72b653a415d0e6672fde887bf"}, + {file = "shapely-2.1.2-cp313-cp313t-win_amd64.whl", hash = "sha256:4a44bc62a10d84c11a7a3d7c1c4fe857f7477c3506e24c9062da0db0ae0c449c"}, + {file = "shapely-2.1.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:9a522f460d28e2bf4e12396240a5fc1518788b2fcd73535166d748399ef0c223"}, + {file = "shapely-2.1.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1ff629e00818033b8d71139565527ced7d776c269a49bd78c9df84e8f852190c"}, + {file = "shapely-2.1.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f67b34271dedc3c653eba4e3d7111aa421d5be9b4c4c7d38d30907f796cb30df"}, + {file = "shapely-2.1.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:21952dc00df38a2c28375659b07a3979d22641aeb104751e769c3ee825aadecf"}, + {file = "shapely-2.1.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1f2f33f486777456586948e333a56ae21f35ae273be99255a191f5c1fa302eb4"}, + {file = "shapely-2.1.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:cf831a13e0d5a7eb519e96f58ec26e049b1fad411fc6fc23b162a7ce04d9cffc"}, + {file = "shapely-2.1.2-cp314-cp314-win32.whl", hash = "sha256:61edcd8d0d17dd99075d320a1dd39c0cb9616f7572f10ef91b4b5b00c4aeb566"}, + {file = "shapely-2.1.2-cp314-cp314-win_amd64.whl", hash = "sha256:a444e7afccdb0999e203b976adb37ea633725333e5b119ad40b1ca291ecf311c"}, + {file = "shapely-2.1.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:5ebe3f84c6112ad3d4632b1fd2290665aa75d4cef5f6c5d77c4c95b324527c6a"}, + {file = "shapely-2.1.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5860eb9f00a1d49ebb14e881f5caf6c2cf472c7fd38bd7f253bbd34f934eb076"}, + {file = "shapely-2.1.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b705c99c76695702656327b819c9660768ec33f5ce01fa32b2af62b56ba400a1"}, + {file = "shapely-2.1.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a1fd0ea855b2cf7c9cddaf25543e914dd75af9de08785f20ca3085f2c9ca60b0"}, + {file = "shapely-2.1.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:df90e2db118c3671a0754f38e36802db75fe0920d211a27481daf50a711fdf26"}, + {file = "shapely-2.1.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:361b6d45030b4ac64ddd0a26046906c8202eb60d0f9f53085f5179f1d23021a0"}, + {file = "shapely-2.1.2-cp314-cp314t-win32.whl", hash = "sha256:b54df60f1fbdecc8ebc2c5b11870461a6417b3d617f555e5033f1505d36e5735"}, + {file = "shapely-2.1.2-cp314-cp314t-win_amd64.whl", hash = "sha256:0036ac886e0923417932c2e6369b6c52e38e0ff5d9120b90eef5cd9a5fc5cae9"}, + {file = "shapely-2.1.2.tar.gz", hash = "sha256:2ed4ecb28320a433db18a5bf029986aa8afcfd740745e78847e330d5d94922a9"}, +] + +[package.dependencies] +numpy = ">=1.21" + +[package.extras] +docs = ["matplotlib", "numpydoc (==1.1.*)", "sphinx", "sphinx-book-theme", "sphinx-remove-toctrees"] +test = ["pytest", "pytest-cov", "scipy-doctest"] [[package]] name = "six" @@ -3604,179 +2236,71 @@ optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" groups = ["main", "dev"] files = [ - { file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274" }, - { file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" }, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - -[[package]] -name = "soupsieve" -version = "2.7" -description = "A modern CSS selector implementation for Beautiful Soup." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4" }, - { file = "soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a" }, -] - -[[package]] -name = "stack-data" -version = "0.6.3" -description = "Extract data from python stack frames and tracebacks for informative displays" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, - {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, -] - -[package.dependencies] -asttokens = ">=2.1.0" -executing = ">=1.2.0" -pure-eval = "*" - -[package.extras] -tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] - -[[package]] -name = "terminado" -version = "0.18.1" -description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, - {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] -[package.dependencies] -ptyprocess = {version = "*", markers = "os_name != \"nt\""} -pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""} -tornado = ">=6.1.0" - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"] -typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"] - [[package]] -name = "tinycss2" -version = "1.4.0" -description = "A tiny CSS parser" +name = "tomlkit" +version = "0.14.0" +description = "Style preserving TOML library" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, - {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, + {file = "tomlkit-0.14.0-py3-none-any.whl", hash = "sha256:592064ed85b40fa213469f81ac584f67a4f2992509a7c3ea2d632208623a3680"}, + {file = "tomlkit-0.14.0.tar.gz", hash = "sha256:cf00efca415dbd57575befb1f6634c4f42d2d87dbba376128adb42c121b87064"}, ] -[package.dependencies] -webencodings = ">=0.4" - -[package.extras] -doc = ["sphinx", "sphinx_rtd_theme"] -test = ["pytest", "ruff"] - [[package]] name = "toolz" -version = "1.0.0" +version = "1.1.0" description = "List processing tools and functional utilities" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["main"] files = [ - {file = "toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236"}, - {file = "toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02"}, + {file = "toolz-1.1.0-py3-none-any.whl", hash = "sha256:15ccc861ac51c53696de0a5d6d4607f99c210739caf987b5d2054f3efed429d8"}, + {file = "toolz-1.1.0.tar.gz", hash = "sha256:27a5c770d068c110d9ed9323f24f1543e83b2f300a687b7891c1a6d56b697b5b"}, ] [[package]] -name = "tornado" -version = "6.5.1" -description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +name = "types-pyyaml" +version = "6.0.12.20250915" +description = "Typing stubs for PyYAML" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7" }, - { file = "tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6" }, - { file = "tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888" }, - { file = "tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331" }, - { file = "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" }, - { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401" }, - { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692" }, - { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a" }, - { file = "tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365" }, - { file = "tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b" }, - { file = "tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7" }, - { file = "tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c" }, -] - -[[package]] -name = "traitlets" -version = "5.14.3" -description = "Traitlets Python configuration system" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, - {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, + {file = "types_pyyaml-6.0.12.20250915-py3-none-any.whl", hash = "sha256:e7d4d9e064e89a3b3cae120b4990cd370874d2bf12fa5f46c97018dd5d3c9ab6"}, + {file = "types_pyyaml-6.0.12.20250915.tar.gz", hash = "sha256:0f8b54a528c303f0e6f7165687dd33fafa81c807fcac23f632b63aa624ced1d3"}, ] -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] - [[package]] -name = "types-python-dateutil" -version = "2.9.0.20250708" -description = "Typing stubs for python-dateutil" +name = "types-shapely" +version = "2.1.0.20250917" +description = "Typing stubs for shapely" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "types_python_dateutil-2.9.0.20250708-py3-none-any.whl", hash = "sha256:4d6d0cc1cc4d24a2dc3816024e502564094497b713f7befda4d5bc7a8e3fd21f" }, - { file = "types_python_dateutil-2.9.0.20250708.tar.gz", hash = "sha256:ccdbd75dab2d6c9696c350579f34cffe2c281e4c5f27a585b2a2438dd1d5c8ab" }, + {file = "types_shapely-2.1.0.20250917-py3-none-any.whl", hash = "sha256:9334a79339504d39b040426be4938d422cec419168414dc74972aa746a8bf3a1"}, + {file = "types_shapely-2.1.0.20250917.tar.gz", hash = "sha256:5c56670742105aebe40c16414390d35fcaa55d6f774d328c1a18273ab0e2134a"}, ] -[[package]] -name = "types-pyyaml" -version = "6.0.12.20250516" -description = "Typing stubs for PyYAML" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530" }, - { file = "types_pyyaml-6.0.12.20250516.tar.gz", hash = "sha256:9f21a70216fc0fa1b216a8176db5f9e0af6eb35d2f2932acb87689d03a5bf6ba" }, -] +[package.dependencies] +numpy = ">=1.20" [[package]] name = "typing-extensions" -version = "4.14.1" +version = "4.15.0" description = "Backported and Experimental Type Hints for Python 3.9+" optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - { file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76" }, - { file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36" }, + {file = "typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"}, + {file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"}, ] [[package]] @@ -3787,8 +2311,8 @@ optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - { file = "typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7" }, - { file = "typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464" }, + {file = "typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7"}, + {file = "typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464"}, ] [package.dependencies] @@ -3796,69 +2320,55 @@ typing-extensions = ">=4.12.0" [[package]] name = "tzdata" -version = "2025.2" +version = "2025.3" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" groups = ["main"] +markers = "sys_platform == \"win32\" or sys_platform == \"emscripten\"" files = [ - { file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8" }, - { file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9" }, -] - -[[package]] -name = "uri-template" -version = "1.3.0" -description = "RFC 6570 URI Template Processor" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, - {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, + {file = "tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1"}, + {file = "tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7"}, ] -[package.extras] -dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"] - [[package]] name = "urllib3" -version = "2.5.0" +version = "2.6.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc" }, - { file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760" }, + {file = "urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4"}, + {file = "urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed"}, ] [package.extras] -brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] +brotli = ["brotli (>=1.2.0) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=1.2.0.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] +zstd = ["backports-zstd (>=1.0.0) ; python_version < \"3.14\""] [[package]] name = "virtualenv" -version = "20.31.2" +version = "20.38.0" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11" }, - { file = "virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af" }, + {file = "virtualenv-20.38.0-py3-none-any.whl", hash = "sha256:d6e78e5889de3a4742df2d3d44e779366325a90cf356f15621fddace82431794"}, + {file = "virtualenv-20.38.0.tar.gz", hash = "sha256:94f39b1abaea5185bf7ea5a46702b56f1d0c9aa2f41a6c2b8b0af4ddc74c10a7"}, ] [package.dependencies] distlib = ">=0.3.7,<1" -filelock = ">=3.12.2,<4" +filelock = {version = ">=3.24.2,<4", markers = "python_version >= \"3.10\""} platformdirs = ">=3.9.1,<5" [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"GraalVM\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""] +docs = ["furo (>=2023.7.26)", "pre-commit-uv (>=4.1.4)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinx-autodoc-typehints (>=3.6.2)", "sphinx-copybutton (>=0.5.2)", "sphinx-inline-tabs (>=2025.12.21.14)", "sphinxcontrib-mermaid (>=2)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"GraalVM\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "pytest-xdist (>=3.5)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""] [[package]] name = "watchdog" @@ -3868,116 +2378,51 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26" }, - { file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112" }, - { file = "watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3" }, - { file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c" }, - { file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2" }, - { file = "watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c" }, - { file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948" }, - { file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860" }, - { file = "watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0" }, - { file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c" }, - { file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134" }, - { file = "watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b" }, - { file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8" }, - { file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a" }, - { file = "watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c" }, - { file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881" }, - { file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11" }, - { file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa" }, - { file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2" }, - { file = "watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a" }, - { file = "watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680" }, - { file = "watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f" }, - { file = "watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282" }, + {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26"}, + {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112"}, + {file = "watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c"}, + {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881"}, + {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11"}, + {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa"}, + {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2"}, + {file = "watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a"}, + {file = "watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680"}, + {file = "watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f"}, + {file = "watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282"}, ] [package.extras] watchmedo = ["PyYAML (>=3.10)"] -[[package]] -name = "wcwidth" -version = "0.2.13" -description = "Measures the displayed width of unicode strings in a terminal" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, - {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, -] - -[[package]] -name = "webcolors" -version = "24.11.1" -description = "A library for working with the color formats defined by HTML and CSS." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9" }, - { file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6" }, -] - -[[package]] -name = "webencodings" -version = "0.5.1" -description = "Character encoding aliases for legacy web content" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, - {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, -] - -[[package]] -name = "websocket-client" -version = "1.8.0" -description = "WebSocket client for Python with low level API options" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, - {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, -] - -[package.extras] -docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"] -optional = ["python-socks", "wsaccel"] -test = ["websockets"] - -[[package]] -name = "widgetsnbextension" -version = "4.0.14" -description = "Jupyter interactive widgets for Jupyter Notebook" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - { file = "widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575" }, - { file = "widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af" }, -] - [[package]] name = "xarray" -version = "2025.10.1" +version = "2026.2.0" description = "N-D labeled arrays and datasets in Python" optional = false python-versions = ">=3.11" groups = ["main"] files = [ - { file = "xarray-2025.10.1-py3-none-any.whl", hash = "sha256:a4e699433b87a7fac340951bc36648645eeef72bdd915ff055ac2fd99865a73d" }, - { file = "xarray-2025.10.1.tar.gz", hash = "sha256:3c2b5ad7389825bd624ada5ff26b01ac54b1aae72e2fe0d724d81d40a2bf5785" }, + {file = "xarray-2026.2.0-py3-none-any.whl", hash = "sha256:e927d7d716ea71dea78a13417970850a640447d8dd2ceeb65c5687f6373837c9"}, + {file = "xarray-2026.2.0.tar.gz", hash = "sha256:978b6acb018770554f8fd964af4eb02f9bcc165d4085dbb7326190d92aa74bcf"}, ] [package.dependencies] @@ -3989,33 +2434,34 @@ pandas = ">=2.2" accel = ["bottleneck", "flox (>=0.9)", "numba (>=0.62)", "numbagg (>=0.8)", "opt_einsum", "scipy (>=1.13)"] complete = ["xarray[accel,etc,io,parallel,viz]"] etc = ["sparse (>=0.15)"] -io = ["cftime", "fsspec", "h5netcdf", "netCDF4 (>=1.6.0)", "pooch", "pydap", "scipy (>=1.13)", "zarr (>=2.18)"] +io = ["cftime", "fsspec", "h5netcdf (>=1.4.0)", "netCDF4 (>=1.6.0)", "pooch", "pydap", "scipy (>=1.13)", "zarr (>=2.18)"] parallel = ["dask[complete]"] types = ["pandas-stubs", "scipy-stubs", "types-PyYAML", "types-Pygments", "types-colorama", "types-decorator", "types-defusedxml", "types-docutils", "types-networkx", "types-openpyxl", "types-pexpect", "types-psutil", "types-pycurl", "types-python-dateutil", "types-pytz", "types-requests", "types-setuptools"] -viz = ["cartopy (>=0.23)", "matplotlib", "nc-time-axis", "seaborn"] +viz = ["cartopy (>=0.23)", "matplotlib (>=3.8)", "nc-time-axis", "seaborn"] [[package]] name = "zarr" -version = "3.1.3" +version = "3.1.5" description = "An implementation of chunked, compressed, N-dimensional arrays for Python" optional = false python-versions = ">=3.11" groups = ["main"] files = [ - { file = "zarr-3.1.3-py3-none-any.whl", hash = "sha256:45f67f87f65f14fa453f99dd8110a5936b7ac69f3a21981d33e90407c80c302a" }, - { file = "zarr-3.1.3.tar.gz", hash = "sha256:01342f3e26a02ed5670db608a5576fbdb8d76acb5c280bd2d0082454b1ba6f79" }, + {file = "zarr-3.1.5-py3-none-any.whl", hash = "sha256:29cd905afb6235b94c09decda4258c888fcb79bb6c862ef7c0b8fe009b5c8563"}, + {file = "zarr-3.1.5.tar.gz", hash = "sha256:fbe0c79675a40c996de7ca08e80a1c0a20537bd4a9f43418b6d101395c0bba2b"}, ] [package.dependencies] donfig = ">=0.8" -numcodecs = { version = ">=0.14", extras = ["crc32c"] } +google-crc32c = ">=1.5" +numcodecs = ">=0.14" numpy = ">=1.26" packaging = ">=22.0" typing-extensions = ">=4.9" [package.extras] cli = ["typer"] -docs = ["astroid (<4)", "numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "pytest", "rich", "s3fs (>=2023.10.0)", "sphinx (==8.1.3)", "sphinx-autoapi (==3.4.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx-copybutton", "sphinx-design", "sphinx-issues", "sphinx-reredirects", "towncrier"] +docs = ["astroid (<4)", "griffe-inherited-docstrings", "markdown-exec[ansi]", "mike (>=2.1.3)", "mkdocs (>=1.6.1)", "mkdocs-material[imaging] (>=9.6.14)", "mkdocs-redirects (>=1.2.0)", "mkdocstrings (>=0.29.1)", "mkdocstrings-python (>=1.16.10)", "numcodecs[msgpack]", "pytest", "rich", "ruff", "s3fs (>=2023.10.0)", "towncrier"] gpu = ["cupy-cuda12x"] optional = ["rich", "universal-pathlib"] remote = ["fsspec (>=2023.10.0)", "obstore (>=0.5.1)"] @@ -4030,8 +2476,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e" }, - { file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166" }, + {file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e"}, + {file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166"}, ] [package.extras] @@ -4045,4 +2491,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = ">=3.13" -content-hash = "3a6cd56008c43cebabb3ffdbf2d79955b7d239934c00123eb283588d71e66b6a" +content-hash = "6a90954e075ce18de2389aa5ff131fb2de945f466483cdd9c459ad039fee48b5" diff --git a/pyproject.toml b/pyproject.toml index 6277846..1a6a537 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,27 +16,30 @@ repository = "https://github.com/alliander-opensource/meteoforge" documentation = "https://github.com/alliander-opensource/meteoforge" [tool.poetry.dependencies] -dask = "^2025.9.1" -netcdf4 = "^1.7.2" -numpy = "^2.3.3" -pydantic = "^2.12.0" pyproj = "^3.7.2" -xarray = "^2025.10.1" -zarr = "^3.1.3" -colorlog = "^6.9.0" # For colored logging output +colorlog = "^6.10.1" +pydantic = "^2.12.5" +xarray = "^2026.2.0" +zarr = "^3.1.5" +numpy = "^2.4.2" +netcdf4 = "^1.7.4" +dask = "^2026.1.2" +shapely = "^2.1.2" [tool.poetry.group.dev.dependencies] -coverage = "^7.9.2" -jupyter = "^1.1.1" -mkdocs = "^1.6.1" -mkdocs-material = "^9.6.15" -mkdocstrings = { extras = ["python"], version = "^0.29.1" } -mypy = "^1.17.0" -pre-commit = "^4.2.0" -pytest = "^8.4.1" -ruff = "^0.12.4" -types-pyyaml = "^6.0.12.20250516" +coverage = "^7.13.4" +pytest = "^9.0.2" +pre-commit = "^4.5.1" +ruff = "^0.15.1" +mypy = "^1.19.1" fawltydeps = "^0.20.0" +types-pyyaml = "^6.0.12.20250915" +mkdocs = "^1.6.1" +mkdocs-material = "^9.7.1" +mkdocstrings = "^1.0.3" +pytest-cov = "^7.0.0" +reuse = "^6.2.0" +types-shapely = "^2.1.0.20250917" [build-system] requires = ["poetry-core"] @@ -98,6 +101,26 @@ ignore = [ [tool.mypy] packages = ["src.meteoforge"] +plugins = [] +python_version = "3.13" +strict = true +exclude = ["tests/*", ".venv/*"] +disable_error_code = [] +follow_imports = "normal" +ignore_missing_imports = false +show_error_codes = true +namespace_packages = true +explicit_package_bases = true +check_untyped_defs = true +allow_redefinition = true +no_implicit_optional = true +install_types = true +non_interactive = true +enable_error_code = [] +files = ["src/meteoforge/spatial_temporal/locations.py"] + +[tool.pylint.format] +max-line-length = 120 [tool.pytest.ini_options] addopts = [ diff --git a/src/__init__.py b/src/__init__.py index 0a5cd78..0253492 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/__init__.py b/src/meteoforge/__init__.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/__init__.py +++ b/src/meteoforge/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/controller.py b/src/meteoforge/core/controller.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/core/controller.py +++ b/src/meteoforge/core/controller.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/manager.py b/src/meteoforge/core/manager.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/core/manager.py +++ b/src/meteoforge/core/manager.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/model.py b/src/meteoforge/core/model.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/core/model.py +++ b/src/meteoforge/core/model.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/source.py b/src/meteoforge/core/source.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/core/source.py +++ b/src/meteoforge/core/source.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/logging/__init__.py b/src/meteoforge/logging/__init__.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/logging/__init__.py +++ b/src/meteoforge/logging/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/logging/logging.py b/src/meteoforge/logging/logging.py index 546c34a..bebd332 100644 --- a/src/meteoforge/logging/logging.py +++ b/src/meteoforge/logging/logging.py @@ -1,5 +1,5 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 import logging import logging.config @@ -8,7 +8,7 @@ import yaml -def setup_logging(config_path: str | None = None): +def setup_logging(config_path: str | None = None) -> None: """Set up project logging using the 'logging_config.yaml' config file.""" if config_path is None: config_path = os.path.join(os.path.dirname(__file__), "logging_config.yaml") diff --git a/src/meteoforge/parameters/__init__.py b/src/meteoforge/parameters/__init__.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/parameters/__init__.py +++ b/src/meteoforge/parameters/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/parameters/parameters.py b/src/meteoforge/parameters/parameters.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/parameters/parameters.py +++ b/src/meteoforge/parameters/parameters.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/__init__.py b/src/meteoforge/spatial_temporal/__init__.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/spatial_temporal/__init__.py +++ b/src/meteoforge/spatial_temporal/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/locations.py b/src/meteoforge/spatial_temporal/locations.py index efb3b36..d12e85f 100644 --- a/src/meteoforge/spatial_temporal/locations.py +++ b/src/meteoforge/spatial_temporal/locations.py @@ -1,106 +1,202 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 -from pyproj import CRS -from pyproj.exceptions import CRSError +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 -from src.meteoforge.logging.logging import logger +"""Hybrid location module: easy use, CRS-flexible, fuzzy equality, and robust containment.""" +from collections.abc import Iterable +from typing import Any -class MFLocation: - """The base class for representing geographic locations in MeteoForge. - - This class serves as a base for various location based formats, such as coordinates, bounding boxes, and polygons. - It provides a common interface for working with these different formats, allowing for the easy conversion and - manipulation of geographic data. - - Attributes - ---------- - x (float): - The x-coordinate of the location. Typically, this represents longitude, but this can vary based on the - Coordinate Reference System (CRS) used. - y (float): - The y-coordinate of the location. Typically, this represents latitude, but this can vary based on the - Coordinate Reference System (CRS) used. - crs (int): - The coordinate reference system of the location, if applicable via EPSG numerical code. This is used to - properly interpret the x and y coordinates in a geographic context. The default setting is EPSG code 4326, - which represents the WGS 84 geographic coordinate system. - - """ - - def __init__(self, *, x: int | float, y: int | float, epsg_code: int = 4326): - """Initialize the MFLocation class.""" - # Validate the input parameters - if self.validate_location(x, y, epsg_code): - # Set the instance variables - self.x = float(x) - self.y = float(y) - self.crs = epsg_code - else: - raise ValueError("Invalid location parameters") - - @staticmethod - def validate_location(x: float, y: float, epsg_code: int = 4326) -> bool: - """Validate a given x,y location with an EPSG code as an existing coordinate.""" - logger.debug(f"Validating location: x={x}, y={y}, epgs_code={epsg_code}") - - # Validate the types of x, y, and epgs_code - if not isinstance(x, int | float): - raise ValueError("x must be a number") - if not isinstance(y, int | float): - raise ValueError("y must be a number") - if not isinstance(epsg_code, int): - raise ValueError("epgs_code must be an integer") - - logger.debug(f"Type validation passed: x={type(x)}, y={type(y)}, epgs_code={type(epsg_code)}") - - # Validate the CRS type suggested by the EPSG code - MFLocation.valid_crs(epsg_code) +from pyproj import CRS, Transformer +from shapely.geometry import Point, Polygon - logger.debug(f"CRS validation passed for EPSG code: {epsg_code}") +from meteoforge.spatial_temporal.validators import validate_mf_location - # Check that x and y are within valid ranges for geographic coordinates on the given CRS - ... - logger.debug(f"Location validation passed and valid: x={x}, y={y}, epsg_code={epsg_code}") - return True +def _crs_to_obj(crs_like: int | str | CRS) -> CRS: + """Convert an int, str, or CRS to a CRS object.""" + if isinstance(crs_like, CRS): + return crs_like + return CRS.from_user_input(value=crs_like) - @staticmethod - def validate_crs(epsg_code: int) -> bool: - """Validate a given EPSG code for valid and known coordinate reference systems. - A valid CRS is one that exists, is not deprecated, and is either geographic or geocentric. This helps exclude - CRS values that are unsuitable for representing x,y coordinates in a geographic context. - """ - logger.debug(f"Validating CRS with EPSG code: {epsg_code}") +def _transform_point(x: float, y: float, from_crs: CRS, to_crs: CRS) -> tuple[float, float]: + """Transform a point (x, y) from one CRS to another.""" + if from_crs == to_crs: + return x, y + transformer = Transformer.from_crs(from_crs, to_crs, always_xy=True) + x2, y2 = transformer.transform(x, y) + return float(x2), float(y2) - try: - crs = CRS.from_epsg(epsg_code) - except CRSError as e: - raise ValueError(f"invalid EPSG code '{epsg_code}': --<<-- {e} -->>--") from e - # Check that the CRS is not deprecated - if crs.is_deprecated: - raise ValueError( - f"The CRS with EPSG code {epsg_code} is deprecated. Please use a different (non-deprecated) CRS." - ) - - # Check that the CRS is for an x,y based geographic coordinate system - if not crs.is_geographic and not crs.is_geocentric: - raise ValueError( - "The MFLocation class type only supports Geographic (CRS.is_geographic=True) and Geocentric Coordinate " - "Systems (CRS.is_geocentric=True)." - ) - return True +class MFLocation: + """A geographic location with CRS, supporting transformation and fuzzy equality.""" + + def __init__(self, x: float, y: float, crs: int | str | CRS = 4326): + """Create a location with coordinates (x, y) and a CRS.""" + self.crs = _crs_to_obj(crs) + self.x = float(x) + self.y = float(y) + self.point = Point(self.x, self.y) + validate_mf_location(self.x, self.y, self.crs) + + def to(self, target_crs: int | str | CRS) -> "MFLocation": + """Return a new MFLocation transformed to the target CRS.""" + target_crs_obj = _crs_to_obj(target_crs) + x2, y2 = _transform_point(self.x, self.y, self.crs, target_crs_obj) + return MFLocation(x2, y2, target_crs_obj) + + def equals(self, other: "MFLocation", tol: float = 1e-6, crs: int | str | CRS = 4326) -> bool: + """Check if two locations are close enough in a common CRS.""" + # Compare in a common CRS (default: WGS84) + crs_obj = _crs_to_obj(crs) + a = self.to(crs_obj) + b = other.to(crs_obj) + return abs(a.x - b.x) < tol and abs(a.y - b.y) < tol + + def __eq__(self, other: Any) -> bool: + """Check equality with another MFLocation, using fuzzy equality in a common CRS.""" + if not isinstance(other, MFLocation): + return NotImplemented + return self.equals(other) + + def __repr__(self) -> str: + """Get a string representation of the location.""" + return f"MFLocation(x={self.x}, y={self.y}, crs={self.crs.to_string()})" class MFLocationList: - """A list of MFLocation objects representing multiple geographic locations.""" - - ... + """A class representing a list of MFLocation objects, with fuzzy containment and CRS handling.""" + + def __init__(self, locations: Iterable[MFLocation] | None = None, crs: int | str | CRS = 4326): + """Create a list of locations, converting all to the given CRS.""" + self.crs = _crs_to_obj(crs) + self.locations: list[MFLocation] = [] + if locations: + for loc in locations: + self.append(loc) + + def append(self, location: Any) -> None: + """Add a location to the list, converting to the list's CRS if needed.""" + if not isinstance(location, MFLocation): + raise TypeError("Only MFLocation instances can be added.") + # Accept any CRS, but store as self.crs + loc_in_crs = location.to(self.crs) + self.locations.append(loc_in_crs) + + def __getitem__(self, idx: int) -> MFLocation: + """Get a location by index.""" + return self.locations[idx] + + def __setitem__(self, idx: int, value: MFLocation) -> None: + """Set a location by index, converting to the list's CRS if needed.""" + self.locations[idx] = value.to(self.crs) + + def __delitem__(self, idx: int) -> None: + """Delete a location by index.""" + del self.locations[idx] + + def __len__(self) -> int: + """Return the number of locations in the list.""" + return len(self.locations) + + def __contains__(self, item: MFLocation) -> bool: + """Check if a location is 'fuzzily' in the list, CRS-aware.""" + # Fuzzy containment: is any location in the list 'close enough' to item? + return any(loc.equals(item) for loc in self.locations) + + def find_nearby(self, item: MFLocation, tol: float = 1e-6) -> MFLocation | None: + """Return the first location in the list close to the given item, or None.""" + for loc in self.locations: + if loc.equals(item, tol=tol): + return loc + return None + + def __repr__(self) -> str: + """Return a string representation of the MFLocationList instance.""" + return f"MFLocationList({self.locations}, crs={self.crs.to_string()})" class MFLocationVector: - """A vector of MFLocation objects representing a sequence of geographic locations.""" - - ... + """A vector (polygon) of MFLocation objects, with fuzzy containment and CRS handling.""" + + def __init__(self, locations: Iterable[MFLocation] | None = None, crs: int | str | CRS = 4326): + """Create a vector (polygon) from locations, converting all to the given CRS.""" + self.crs = _crs_to_obj(crs) + self.locations: list[MFLocation] = [] + self.polygon: Polygon | None = None + if locations: + for loc in locations: + self.append(loc) + self._update_polygon() + + def append(self, location: Any) -> None: + """Add a location to the vector, converting to the vector's CRS if needed.""" + if not isinstance(location, MFLocation): + raise TypeError("Only MFLocation instances can be added.") + loc_in_crs = location.to(self.crs) + self.locations.append(loc_in_crs) + self._update_polygon() + + def _update_polygon(self) -> None: + """Update the internal Shapely polygon from the current locations.""" + coords = [loc.to(self.crs).point for loc in self.locations] + # Only create a polygon if there are at least 3 unique points (4 for closure) + if len(coords) >= 3: + xy = [(pt.x, pt.y) for pt in coords] + # Ensure closure: first == last + if xy[0] != xy[-1]: + xy.append(xy[0]) + if len(xy) >= 4: + self.polygon = Polygon(xy) + else: + self.polygon = None + else: + self.polygon = None + + def contains(self, location: MFLocation, tol: float = 1e-6) -> bool: + """Check if the vector contains a location (fuzzy, CRS-aware, and near boundary).""" + pt = location.to(self.crs).point + # 1. True Shapely containment + if self.polygon and self.polygon.contains(pt): + return True + # 2. Fuzzy: check if any vertex is close to the point + if any(pt.distance(vertex.point) < tol for vertex in self.locations): + return True + # 3. Fuzzy: check if point is near the polygon boundary (within tol) + return bool(self.polygon and self.polygon.boundary.distance(pt) < tol) + + def __contains__(self, item: MFLocation) -> bool: + """Check if a location is in the vector, using fuzzy containment.""" + return self.contains(item) + + def __getitem__(self, idx: int) -> MFLocation: + """Get a location by index.""" + return self.locations[idx] + + def __setitem__(self, idx: int, value: MFLocation) -> None: + """Set a location by index, converting to the vector's CRS if needed.""" + self.locations[idx] = value.to(self.crs) + self._update_polygon() + + def __delitem__(self, idx: int) -> None: + """Delete a location by index.""" + del self.locations[idx] + self._update_polygon() + + def __len__(self) -> int: + """Return the number of locations in the vector.""" + return len(self.locations) + + def __repr__(self) -> str: + """Return a string representation of the MFLocationVector instance.""" + return f"MFLocationVector({self.locations}, crs={self.crs.to_string()})" + + +# Utility: fuzzy membership for a location in a list/vector + + +def fuzzy_in(item: MFLocation, container: Iterable[MFLocation], tol: float = 1e-6, crs: int | str | CRS = 4326) -> bool: + """Check if a location is 'fuzzily' in a container (list/vector), CRS-aware.""" + crs_obj = _crs_to_obj(crs) + item_in_crs = item.to(crs_obj) + return any(loc.to(crs_obj).equals(item_in_crs, tol=tol, crs=crs_obj) for loc in container) diff --git a/src/meteoforge/spatial_temporal/periods.py b/src/meteoforge/spatial_temporal/periods.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/spatial_temporal/periods.py +++ b/src/meteoforge/spatial_temporal/periods.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/validators.py b/src/meteoforge/spatial_temporal/validators.py new file mode 100644 index 0000000..f6a389f --- /dev/null +++ b/src/meteoforge/spatial_temporal/validators.py @@ -0,0 +1,138 @@ +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 + +"""Module for validating spatial and temporal data in MeteoForge.""" + +from typing import Any + +from pyproj import CRS, Transformer +from pyproj.exceptions import CRSError + +from meteoforge.logging.logging import logger + + +class CRSValidationError(ValueError): + """Raised when a CRS validation fails in MFLocation.""" + + +def validate_mf_location(x: int | float, y: int | float, crs: CRS) -> bool: + """Validate a given x,y location with an EPSG code as a valid coordinate for MeteoForge.""" + # Perform type checks on the input parameters + _perform_mf_location_type_checks(x, y, crs) + logger.debug("Type checks passed for x=%s, y=%s, crs=%s", x, y, crs) + + # Evaluate the EPSG code as a valid CRS for MeteoForge + validate_crs(crs) + logger.debug("CRS validation passed for CRS: %s", crs) + + # Evaluate the x and y coordinates as valid for the given CRS + validate_location(x, y, crs) + logger.debug("Location validation passed for x=%s, y=%s, CRS=%s", x, y, crs) + return True + + +def validate_mf_period(start_time: object, end_time: object) -> bool: + """Validate a given start and end time as a valid period for MeteoForge.""" + # Perform type checks on the input parameters + _perform_mf_period_type_checks(start_time, end_time) + + # Evaluate the start and end times as valid for MeteoForge + ... + + return True + + +def _perform_mf_location_type_checks(x: Any, y: Any, crs: Any) -> None: + """Check the types of x, y, and CRS.""" + if not isinstance(x, int | float): + raise TypeError("x must be a number") + if not isinstance(y, int | float): + raise TypeError("y must be a number") + if not isinstance(crs, CRS): + raise TypeError("crs must be a CRS instance") + + +def validate_crs(crs: Any) -> bool: + """Validate the given CRS as a valid CRS for MeteoForge.""" + logger.debug("Validating CRS: %s", crs) + + if not isinstance(crs, CRS | int | str): + raise TypeError("crs must be a CRS instance, int, or str") + + try: + # Attempt to create a CRS object from the EPSG code to check if it is valid + if isinstance(crs, CRS): + crs_object = crs + elif isinstance(crs, int): + crs_object = CRS.from_epsg(crs) + else: # Assume it's a CRS string like "EPSG:4326" + crs_object = CRS.from_string(crs) + + except CRSError as e: + raise CRSValidationError(f"Invalid CRS type or value: {crs}") from e + + # Check that the created CRS is not deprecated + if crs_object.is_deprecated: + raise CRSValidationError( + f"The CRS built from {crs} is deprecated. Please use a different (non-deprecated) CRS." + ) + + # Check that the CRS is either geographic, geocentric, or projected, as these are the types supported by MFLocation + if not crs_object.is_geographic and not crs_object.is_geocentric and not crs_object.is_projected: + raise CRSValidationError( + "The MFLocation class type only supports Geographic (CRS.is_geographic=True), Geocentric Coordinate " + "Systems (CRS.is_geocentric=True) and Projected Coordinate Systems (CRS.is_projected=True)." + ) + return True + + +def validate_location(x: int | float, y: int | float, crs: CRS) -> bool: + """Validate the given x and y coordinates as valid for the specified CRS. + + Evaluate the x and y coordinates as valid for the given CRS, e.g., check if they fall within the valid range for + the CRS. This may involve checking if the coordinates are within the bounds of the CRS's valid area. + + Attributes + ---------- + x (int | float): + The x-coordinate of the location. Typically, this represents longitude, but this can vary based on the + Coordinate Reference System (CRS) used. + y (int | float): + The y-coordinate of the location. Typically, this represents latitude, but this can vary based on the + Coordinate Reference System (CRS) used. + crs (CRS): + The coordinate reference system of the location. This is used to properly interpret the x and y coordinates + in a geographic context. + + Returns + ------- + bool + True if the location is valid for the given CRS, False otherwise. + + """ + area_of_use = crs.area_of_use + + if area_of_use is None: + logger.warning("No area of use defined for CRS %s, skipping bounds check", crs) + return True + + # Transform area_of_use bounds (WGS84) to the native CRS units + transformer = Transformer.from_crs(CRS.from_epsg(4326), crs, always_xy=True) + min_x, min_y = transformer.transform(area_of_use.west, area_of_use.south) + max_x, max_y = transformer.transform(area_of_use.east, area_of_use.north) + + if not (min_x <= x <= max_x): + raise CRSValidationError(f"x coordinate {x} is outside valid bounds [{min_x}, {max_x}] for CRS {crs}") + + if not (min_y <= y <= max_y): + raise CRSValidationError(f"y coordinate {y} is outside valid bounds [{min_y}, {max_y}] for CRS {crs}") + + logger.debug("Location validation passed and valid: x=%s, y=%s, CRS=%s", x, y, crs) + return True + + +def _perform_mf_period_type_checks(start_time: Any, end_time: Any) -> None: + """Check the types of start_time and end_time.""" + # Implement type checks for start_time and end_time, e.g., check if they are datetime objects + _, _ = start_time, end_time + ... diff --git a/src/meteoforge_tools/README.md b/src/meteoforge_tools/README.md index c781249..22083f2 100644 --- a/src/meteoforge_tools/README.md +++ b/src/meteoforge_tools/README.md @@ -1,3 +1,6 @@ +[//]: # (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) +[//]: # (SPDX-License-Identifier: MPL-2.0) + # MeteoForge Tools ... diff --git a/src/meteoforge_tools/__init__.py b/src/meteoforge_tools/__init__.py index 0a5cd78..0253492 100644 --- a/src/meteoforge_tools/__init__.py +++ b/src/meteoforge_tools/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge_tools/netfcd_to_zarr_conversion.py b/src/meteoforge_tools/netfcd_to_zarr_conversion.py index 0a5cd78..0253492 100644 --- a/src/meteoforge_tools/netfcd_to_zarr_conversion.py +++ b/src/meteoforge_tools/netfcd_to_zarr_conversion.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/tests/conftest.py b/tests/conftest.py index 0a5cd78..0253492 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/tests/test_example_test.py b/tests/test_example_test.py deleted file mode 100644 index de3ea2a..0000000 --- a/tests/test_example_test.py +++ /dev/null @@ -1,7 +0,0 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 - - -def test_example(): - """Example test function to demonstrate pytest setup.""" - assert True # Replace with actual test logic diff --git a/tests/test_locations.py b/tests/test_locations.py new file mode 100644 index 0000000..0475945 --- /dev/null +++ b/tests/test_locations.py @@ -0,0 +1,118 @@ +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 + +"""Pytest tests for the locations module (MFLocation, MFLocationList, MFLocationVector, fuzzy_in). + +Tests only the module logic, not pyproj or Shapely internals. +""" + +from typing import Any + +from pyproj import CRS + +from meteoforge.spatial_temporal.locations import ( + MFLocation, + MFLocationList, + MFLocationVector, + _crs_to_obj, # type: ignore + _transform_point, # type: ignore + fuzzy_in, +) + + +def test_crs_to_obj_accepts_crs_types(): + """Test that _crs_to_obj correctly accepts CRS objects, ints, and strings.""" + # Accepts CRS, int, str + crs = CRS.from_epsg(4326) + assert _crs_to_obj(crs) == crs + assert _crs_to_obj(4326) == CRS.from_epsg(4326) + assert _crs_to_obj("EPSG:4326") == CRS.from_epsg(4326) + + +def test_transform_point_identity(): + """Transforming a point in the same CRS should return the same coordinates.""" + crs = CRS.from_epsg(4326) + x, y = 1.0, 2.0 + assert _transform_point(x, y, crs, crs) == (x, y) + + +def test_mflocation_repr_and_eq(): + """Test MFLocation equality and string representation.""" + a = MFLocation(1, 2, 4326) + b = MFLocation(1, 2, 4326) + c = MFLocation(1.00001, 2, 4326) # Use a value outside the default tolerance for fuzzy equality + assert a == b + assert a != c + assert "MFLocation" in repr(a) + + +def test_mflocation_to_transforms(monkeypatch: Any): + """Test that MFLocation.to correctly transforms coordinates using _transform_point.""" + # Only patch to check that _transform_point is called, not to replace its math + called = {} + + def fake_transform(x: float, y: float, from_crs: CRS, to_crs: CRS) -> tuple[float, float]: + called["args"] = (x, y, from_crs, to_crs) + return (123, 456) + + monkeypatch.setattr("meteoforge.spatial_temporal.locations._transform_point", fake_transform) + a = MFLocation(1, 2, 4326) + b = a.to(3857) + assert called["args"][0] == 1 and called["args"][1] == 2 + assert isinstance(b, MFLocation) + assert b.x == 123 and b.y == 456 + + +def test_mflocationlist_append_and_contains(): + """Test MFLocationList append, contains, get, set, and delete operations.""" + a = MFLocation(1, 2, 4326) + b = MFLocation(3, 4, 4326) + lst = MFLocationList([a]) + lst.append(b) + assert len(lst) == 2 + assert a in lst + assert b in lst + c = MFLocation(1.00001, 2, 4326) # Use a value outside the default tolerance for fuzzy equality + assert c not in lst + assert lst[0] == a + lst[1] = a + assert lst[1] == a + del lst[1] + assert len(lst) == 1 + + +def test_mflocationlist_find_nearby(): + """Test MFLocationList.find_nearby method.""" + a = MFLocation(1, 2, 4326) + b = MFLocation(1.0000001, 2, 4326) + lst = MFLocationList([a]) + found = lst.find_nearby(b, tol=1e-5) + assert found == a + not_found = lst.find_nearby(MFLocation(5, 5, 4326)) + assert not_found is None + + +def test_mflocationvector_append_and_contains(): + """Test MFLocationVector with a valid closed polygon, no mutation after creation.""" + a = MFLocation(0, 0, 4326) + b = MFLocation(1, 0, 4326) + c = MFLocation(1, 1, 4326) + d = MFLocation(0, 1, 4326) + # Only pass 4 points, do not close explicitly + vec = MFLocationVector([a, b, c, d]) + pt_inside = MFLocation(0.5, 0.5, 4326) + pt_outside = MFLocation(2, 2, 4326) + assert pt_inside in vec + assert pt_outside not in vec + pt_near = MFLocation(0, 0.00001, 4326) + assert pt_near in vec + assert vec[0] == a + assert len(vec.locations) == 4 + + +def test_fuzzy_in(): + """Test the fuzzy_in function for real MFLocation objects.""" + items = [MFLocation(1, 2, 4326), MFLocation(3, 4, 4326), MFLocation(5, 6, 4326)] + item = MFLocation(3.0000001, 4, 4326) + assert fuzzy_in(item, items, tol=1e-5) + assert not fuzzy_in(MFLocation(7, 8, 4326), items, tol=1e-5) diff --git a/typings/meteoforge/__init__.pyi b/typings/meteoforge/__init__.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/core/__init__.pyi b/typings/meteoforge/core/__init__.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/core/controller.pyi b/typings/meteoforge/core/controller.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/core/manager.pyi b/typings/meteoforge/core/manager.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/core/model.pyi b/typings/meteoforge/core/model.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/core/source.pyi b/typings/meteoforge/core/source.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/logging/__init__.pyi b/typings/meteoforge/logging/__init__.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/logging/logging.pyi b/typings/meteoforge/logging/logging.pyi new file mode 100644 index 0000000..d95d0a6 --- /dev/null +++ b/typings/meteoforge/logging/logging.pyi @@ -0,0 +1,5 @@ +from _typeshed import Incomplete + +def setup_logging(config_path: str | None = None) -> None: ... + +logger: Incomplete diff --git a/typings/meteoforge/parameters/__init__.pyi b/typings/meteoforge/parameters/__init__.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/parameters/parameters.pyi b/typings/meteoforge/parameters/parameters.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/spatial_temporal/__init__.pyi b/typings/meteoforge/spatial_temporal/__init__.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/spatial_temporal/locations.pyi b/typings/meteoforge/spatial_temporal/locations.pyi new file mode 100644 index 0000000..07b80a9 --- /dev/null +++ b/typings/meteoforge/spatial_temporal/locations.pyi @@ -0,0 +1,43 @@ +from _typeshed import Incomplete +from collections.abc import Iterable +from meteoforge.spatial_temporal.validators import validate_mf_location as validate_mf_location +from pyproj import CRS +from shapely.geometry import Polygon +from typing import Any + +class MFLocation: + crs: Incomplete + x: Incomplete + y: Incomplete + point: Incomplete + def __init__(self, x: float, y: float, crs: int | str | CRS = 4326) -> None: ... + def to(self, target_crs: int | str | CRS) -> MFLocation: ... + def equals(self, other: MFLocation, tol: float = 1e-06, crs: int | str | CRS = 4326) -> bool: ... + def __eq__(self, other: Any) -> bool: ... + +class MFLocationList: + crs: Incomplete + locations: list[MFLocation] + def __init__(self, locations: Iterable[MFLocation] | None = None, crs: int | str | CRS = 4326) -> None: ... + def append(self, location: Any) -> None: ... + def __getitem__(self, idx: int) -> MFLocation: ... + def __setitem__(self, idx: int, value: MFLocation) -> None: ... + def __delitem__(self, idx: int) -> None: ... + def __len__(self) -> int: ... + def __contains__(self, item: MFLocation) -> bool: ... + def find_nearby(self, item: MFLocation, tol: float = 1e-06) -> MFLocation | None: ... + +class MFLocationVector: + crs: Incomplete + locations: list[MFLocation] + polygon: Polygon | None + def __init__(self, locations: Iterable[MFLocation] | None = None, crs: int | str | CRS = 4326) -> None: ... + def append(self, location: Any) -> None: ... + def contains(self, location: MFLocation, tol: float = 1e-06) -> bool: ... + def __contains__(self, item: MFLocation) -> bool: ... + def __getitem__(self, idx: int) -> MFLocation: ... + def __setitem__(self, idx: int, value: MFLocation) -> None: ... + def __delitem__(self, idx: int) -> None: ... + def __len__(self) -> int: ... + +def fuzzy_in(item: MFLocation, container: Iterable[MFLocation], tol: float = 1e-06, crs: int | str | CRS = 4326) -> bool: ... diff --git a/typings/meteoforge/spatial_temporal/periods.pyi b/typings/meteoforge/spatial_temporal/periods.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/spatial_temporal/validators.pyi b/typings/meteoforge/spatial_temporal/validators.pyi new file mode 100644 index 0000000..5090f95 --- /dev/null +++ b/typings/meteoforge/spatial_temporal/validators.pyi @@ -0,0 +1,10 @@ +from meteoforge.logging.logging import logger as logger +from pyproj import CRS +from typing import Any + +class CRSValidationError(ValueError): ... + +def validate_mf_location(x: int | float, y: int | float, crs: CRS) -> bool: ... +def validate_mf_period(start_time: object, end_time: object) -> bool: ... +def validate_crs(crs: Any) -> bool: ... +def validate_location(x: int | float, y: int | float, crs: CRS) -> bool: ... From f6607dc2ba7327440accca1bf2def2e007a33dbb Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Mon, 23 Mar 2026 17:03:15 +0100 Subject: [PATCH 15/50] Potential fix for code scanning alert no. 23: Workflow does not contain permissions Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .github/workflows/allowed-pr-sources-dev-release.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/allowed-pr-sources-dev-release.yaml b/.github/workflows/allowed-pr-sources-dev-release.yaml index 5bf13d5..6e0de07 100644 --- a/.github/workflows/allowed-pr-sources-dev-release.yaml +++ b/.github/workflows/allowed-pr-sources-dev-release.yaml @@ -1,5 +1,8 @@ name: Check if PR source branch is allowed for development or release branches +permissions: + contents: read + on: pull_request: types: [ opened, reopened, synchronize, edited, ready_for_review ] From f5842ad54e6e2c23e59563a975d903cc7a88277c Mon Sep 17 00:00:00 2001 From: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Tue, 24 Mar 2026 07:18:51 +0100 Subject: [PATCH 16/50] patch : Security fixes for existing actions --- .../allowed-pr-sources-dev-release.yaml | 4 ++-- .github/workflows/openssf-scorecard.yml | 5 +++-- .github/workflows/pr-quality-gate.yaml.yml | 15 +++++++++++--- tests/test_locations.py | 20 +++++++++---------- 4 files changed, 27 insertions(+), 17 deletions(-) diff --git a/.github/workflows/allowed-pr-sources-dev-release.yaml b/.github/workflows/allowed-pr-sources-dev-release.yaml index 6e0de07..78b27c7 100644 --- a/.github/workflows/allowed-pr-sources-dev-release.yaml +++ b/.github/workflows/allowed-pr-sources-dev-release.yaml @@ -1,7 +1,5 @@ name: Check if PR source branch is allowed for development or release branches -permissions: - contents: read on: pull_request: @@ -12,6 +10,8 @@ on: jobs: enforce: + permissions: + contents: read runs-on: ubuntu-latest steps: - name: Check PR source branch diff --git a/.github/workflows/openssf-scorecard.yml b/.github/workflows/openssf-scorecard.yml index 01e17d4..276f27d 100644 --- a/.github/workflows/openssf-scorecard.yml +++ b/.github/workflows/openssf-scorecard.yml @@ -14,8 +14,9 @@ on: push: branches: [ "main" ] -# Declare default permissions as read only. -permissions: read-all +# Declare default permissions as read only (minimal for Scorecard). +permissions: + contents: read jobs: analysis: diff --git a/.github/workflows/pr-quality-gate.yaml.yml b/.github/workflows/pr-quality-gate.yaml.yml index 0f30122..d8dc4e1 100644 --- a/.github/workflows/pr-quality-gate.yaml.yml +++ b/.github/workflows/pr-quality-gate.yaml.yml @@ -5,9 +5,6 @@ on: branches: [ rc, main ] types: [ opened, synchronize, reopened, ready_for_review ] -permissions: - contents: read - pull-requests: write concurrency: group: pr-${{ github.event.pull_request.number || github.ref }} @@ -15,6 +12,9 @@ concurrency: jobs: precommit: + permissions: + contents: read + pull-requests: write name: pre-commit if: ${{ !github.event.pull_request.draft }} runs-on: ubuntu-latest @@ -28,6 +28,9 @@ jobs: python-version: ${{ env.MAIN_PYTHON_VERSION }} pytest: + permissions: + contents: read + pull-requests: write name: pytest if: ${{ !github.event.pull_request.draft }} runs-on: ubuntu-latest @@ -42,6 +45,9 @@ jobs: python-version: ${{ matrix.python-version }} pytest-windows: + permissions: + contents: read + pull-requests: write name: pytest (Windows, non-blocking) if: ${{ !github.event.pull_request.draft }} runs-on: windows-latest @@ -57,6 +63,9 @@ jobs: python-version: ${{ matrix.python-version }} sonarqube: + permissions: + contents: read + pull-requests: write name: SonarQube if: ${{ !github.event.pull_request.draft }} runs-on: ubuntu-latest diff --git a/tests/test_locations.py b/tests/test_locations.py index 0475945..8aaf25e 100644 --- a/tests/test_locations.py +++ b/tests/test_locations.py @@ -14,13 +14,13 @@ MFLocation, MFLocationList, MFLocationVector, - _crs_to_obj, # type: ignore - _transform_point, # type: ignore + _crs_to_obj, + _transform_point, fuzzy_in, ) -def test_crs_to_obj_accepts_crs_types(): +def test_crs_to_obj_accepts_crs_types() -> None: """Test that _crs_to_obj correctly accepts CRS objects, ints, and strings.""" # Accepts CRS, int, str crs = CRS.from_epsg(4326) @@ -29,14 +29,14 @@ def test_crs_to_obj_accepts_crs_types(): assert _crs_to_obj("EPSG:4326") == CRS.from_epsg(4326) -def test_transform_point_identity(): +def test_transform_point_identity() -> None: """Transforming a point in the same CRS should return the same coordinates.""" crs = CRS.from_epsg(4326) x, y = 1.0, 2.0 assert _transform_point(x, y, crs, crs) == (x, y) -def test_mflocation_repr_and_eq(): +def test_mflocation_repr_and_eq() -> None: """Test MFLocation equality and string representation.""" a = MFLocation(1, 2, 4326) b = MFLocation(1, 2, 4326) @@ -46,7 +46,7 @@ def test_mflocation_repr_and_eq(): assert "MFLocation" in repr(a) -def test_mflocation_to_transforms(monkeypatch: Any): +def test_mflocation_to_transforms(monkeypatch: Any) -> None: """Test that MFLocation.to correctly transforms coordinates using _transform_point.""" # Only patch to check that _transform_point is called, not to replace its math called = {} @@ -63,7 +63,7 @@ def fake_transform(x: float, y: float, from_crs: CRS, to_crs: CRS) -> tuple[floa assert b.x == 123 and b.y == 456 -def test_mflocationlist_append_and_contains(): +def test_mflocationlist_append_and_contains() -> None: """Test MFLocationList append, contains, get, set, and delete operations.""" a = MFLocation(1, 2, 4326) b = MFLocation(3, 4, 4326) @@ -81,7 +81,7 @@ def test_mflocationlist_append_and_contains(): assert len(lst) == 1 -def test_mflocationlist_find_nearby(): +def test_mflocationlist_find_nearby() -> None: """Test MFLocationList.find_nearby method.""" a = MFLocation(1, 2, 4326) b = MFLocation(1.0000001, 2, 4326) @@ -92,7 +92,7 @@ def test_mflocationlist_find_nearby(): assert not_found is None -def test_mflocationvector_append_and_contains(): +def test_mflocationvector_append_and_contains() -> None: """Test MFLocationVector with a valid closed polygon, no mutation after creation.""" a = MFLocation(0, 0, 4326) b = MFLocation(1, 0, 4326) @@ -110,7 +110,7 @@ def test_mflocationvector_append_and_contains(): assert len(vec.locations) == 4 -def test_fuzzy_in(): +def test_fuzzy_in() -> None: """Test the fuzzy_in function for real MFLocation objects.""" items = [MFLocation(1, 2, 4326), MFLocation(3, 4, 4326), MFLocation(5, 6, 4326)] item = MFLocation(3.0000001, 4, 4326) From c0be230004c27af6935e4f215376a3b42c0098f8 Mon Sep 17 00:00:00 2001 From: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Tue, 24 Mar 2026 07:24:52 +0100 Subject: [PATCH 17/50] Rebase commit for signage purposes Signed-off-by: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 981628e..d4c6d71 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ parameters. Unit conversion is handled with [Pint](https://pint.readthedocs.io/) > _speed" in m/s._ > _The Core System can convert Beaufort to m/s using its registry of standard parameters and Pint-based conversions._ -## How to install +## How to install MeteoForge You can install the MeteoForge Core System via pip or poetry. From b7f308b7ed353b3db168eb6becf50bc86061fe17 Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 14:16:16 +0200 Subject: [PATCH 18/50] development: Emptying the repo Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .sonarcloud.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.sonarcloud.properties b/.sonarcloud.properties index 65c2cc4..e1deb80 100644 --- a/.sonarcloud.properties +++ b/.sonarcloud.properties @@ -4,7 +4,7 @@ # -sonar.projectKey=alliander-opensource_weather-provider-libraries +sonar.projectKey=alliander-opensource_meteoforge sonar.organization=alliander-opensource sonar.python.coverage.reportPaths=coverage.xml From 40f36cbb1f429b4e6d766fbc976d2dcecb85ba1c Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 15:26:09 +0200 Subject: [PATCH 19/50] feature: Initial base documentation Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .github/CODEOWNERS | 1 - .markdownlint.yaml | 7 + .markdownlint.yml | 2 - .markdownlintignore | 1 + .pre-commit-config.yaml | 2 +- .sonarcloud.properties | 9 +- CODE_OF_CONDUCT.rst | 5 +- CONTRIBUTING.md | 80 + CONTRIBUTING.rst | 79 - PROJECT_GOVERNANCE.md | 52 + PROJECT_GOVERNANCE.rst | 55 - README.md | 92 + README.rst | 115 - SECURITY.md | 37 + SECURITY.rst | 32 - docs/demo_source/__init__.py | 1 - docs/images/gitflow.svg | 189 ++ docs/images/meteoforge_logo.png | Bin 0 -> 1518050 bytes poetry.lock | 3080 +++++++++++--------- pyproject.toml | 86 +- src/meteoforge/__init__.py | 1 + src/weather_provider_libraries/__init__.py | 1 - 22 files changed, 2214 insertions(+), 1713 deletions(-) delete mode 100644 .github/CODEOWNERS create mode 100644 .markdownlint.yaml delete mode 100644 .markdownlint.yml create mode 100644 .markdownlintignore create mode 100644 CONTRIBUTING.md delete mode 100644 CONTRIBUTING.rst create mode 100644 PROJECT_GOVERNANCE.md delete mode 100644 PROJECT_GOVERNANCE.rst create mode 100644 README.md delete mode 100644 README.rst create mode 100644 SECURITY.md delete mode 100644 SECURITY.rst delete mode 100644 docs/demo_source/__init__.py create mode 100644 docs/images/gitflow.svg create mode 100644 docs/images/meteoforge_logo.png create mode 100644 src/meteoforge/__init__.py delete mode 100644 src/weather_provider_libraries/__init__.py diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index 8fc3572..0000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1 +0,0 @@ -/weather-provider-libraries/ @rflinnenbank @wpla-alliander diff --git a/.markdownlint.yaml b/.markdownlint.yaml new file mode 100644 index 0000000..6cad451 --- /dev/null +++ b/.markdownlint.yaml @@ -0,0 +1,7 @@ +default: true +line-length: + line_length: 120 +MD013: false # Disable line length +MD033: + allowed_elements: [ img, p ] +MD041: false # Disable first line heading diff --git a/.markdownlint.yml b/.markdownlint.yml deleted file mode 100644 index 0744779..0000000 --- a/.markdownlint.yml +++ /dev/null @@ -1,2 +0,0 @@ -line-length: - line_length: 120 diff --git a/.markdownlintignore b/.markdownlintignore new file mode 100644 index 0000000..3225ea6 --- /dev/null +++ b/.markdownlintignore @@ -0,0 +1 @@ +**/LICENSE.md diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5d8e049..98bf8b7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -54,4 +54,4 @@ repos: rev: v0.41.0 hooks: - id: markdownlint - args: [--config, .markdownlint.yml] + args: [ "--config", ".markdownlint.yaml" ] diff --git a/.sonarcloud.properties b/.sonarcloud.properties index e1deb80..7c0c449 100644 --- a/.sonarcloud.properties +++ b/.sonarcloud.properties @@ -1,9 +1,8 @@ -# -# SPDX-FileCopyrightText: 2019-2024 Alliander N.V. -# SPDX-License-Identifier: MPL-2.0 -# - +# (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) +# (SPDX-License-Identifier: MPL-2.0) +# This file is used by SonarCloud to configure the analysis of the MeteoForge project. +sonar.projectName=MeteoForge sonar.projectKey=alliander-opensource_meteoforge sonar.organization=alliander-opensource diff --git a/CODE_OF_CONDUCT.rst b/CODE_OF_CONDUCT.rst index 57c8310..91f4640 100644 --- a/CODE_OF_CONDUCT.rst +++ b/CODE_OF_CONDUCT.rst @@ -1,6 +1,5 @@ -.. coding=utf-8 -.. SPDX-FileCopyrightText: 2019-2023 Alliander N.V. -.. SPDX-License-Identifier: MPL-2.0 +[//]: # (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) +[//]: # (SPDX-License-Identifier: MPL-2.0) .. _code-of-conduct: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..dde97ef --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,80 @@ +[//]: # (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) + +[//]: # (SPDX-License-Identifier: MPL-2.0) + +# How to Contribute + +We'd love to accept your patches and contributions to this project. +There are just a few small guidelines you need to follow. + +## Filing bugs, change requests and questions + +You can file bugs, change requests, and questions about the project via GitHub Issues. +Consult [GitHub Help](https://docs.github.com/en/free-pro-team@latest/github/managing-your-work-on-github/creating-an-issue) +for more information on using GitHub Issues. + +## Community Guidelines + +This project follows the following [Code of Conduct](./CODE_OF_CONDUCT.md). + +## Source Code Headers + +Every file containing source code must include copyright and license information. +This includes any JS/CSS files served to browsers. +(This is to help well-intentioned people avoid accidental copying that doesn't comply with the license.) + +**Mozilla header:** + + SPDX-FileCopyrightText: 2019-2025 Alliander N.V. + SPDX-License-Identifier: MPL-2.0 + +## Git branching + +This project uses the [Gitflow Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow) +branching model. + +- The `master` branch always contains the latest release. +- New feature branches are branched off from `develop`. +- Finished features are merged back into `develop`. +- At the end of a sprint, `develop` is merged into `master`, or optionally into a `release` branch before merging into + `master`. + +![Gitflow](docs/images/gitflow.svg) + +## Code reviews + +All patches and contributions, including those by project members, require review by a maintainer. +We use GitHub pull requests for this. +Consult [GitHub Help](https://help.github.com/articles/about-pull-requests/) for more info. + +## Pull Request Process + +Contributions should be submitted as GitHub pull requests. +See [Creating a pull request](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request) +if you're unfamiliar with the process. + +### Steps to follow + +1. Create a topic branch in your local repository named like: `feature-[description]`. + See the [Git branching guideline](#git-branching) for naming conventions. + +2. Make changes, compile, and test thoroughly. + Ensure all install/build dependencies are removed by the end of the build process. + Follow existing code style and focus on the relevant topic. + See the [style guide](#source-code-headers) for more details. + +3. Push commits to your fork. + +4. Create a GitHub pull request from your topic branch. + +5. A maintainer will review your pull request. + They may offer feedback, request changes, or approve the contribution. + See the [code review guideline](#code-reviews) for expectations. + +6. Once a maintainer signs off, you may merge your changes. + If you don't have permission, a maintainer can merge it for you. + +## Attribution + +This `CONTRIBUTING.md` is adapted +from [Google’s contributing guide](https://github.com/google/new-project/blob/master/docs/contributing.rst). diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst deleted file mode 100644 index 9bf77d5..0000000 --- a/CONTRIBUTING.rst +++ /dev/null @@ -1,79 +0,0 @@ -.. coding=utf-8 -.. SPDX-FileCopyrightText: 2019-2023 Alliander N.V. -.. SPDX-License-Identifier: MPL-2.0 - -================= -How to Contribute -================= - -We'd love to accept your patches and contributions to this project. There are -just a few small guidelines you need to follow. - ------------------------------------------- -Filing bugs, change requests and questions ------------------------------------------- - -You can file bugs against, change requests for and questions about the project via github issues. Consult `GitHub Help `__ for more -information on using github issues. - --------------------- -Community Guidelines --------------------- -This project follows the following `Code of Conduct <./CODE_OF_CONDUCT.rst>`_. - -------------------- -Source Code Headers -------------------- - -Every file containing source code must include copyright and license -information. This includes any JS/CSS files that you might be serving out to -browsers. (This is to help well-intentioned people avoid accidental copying that -doesn't comply with the license.) - -Mozilla header: - - SPDX-FileCopyrightText: 2023 Alliander N.V. - - SPDX-License-Identifier: MPL-2.0 - -------------- -Git branching -------------- - -This project uses the `Gitflow Workflow `_ and branching model. The `master` branch always contains the latest release, after a release is made new feature branches are branched of `develop`. When a feature is finished it is merged back into `develop`. At the end of a sprint `develop` is merged back into `master` or (optional) into a `release` branch first before it is merged into `master`. - -![Gitflow](img/gitflow.svg) - ------------- -Code reviews ------------- - -All patches and contributions, including patches and contributions by project members, require review by one of the maintainers of the project. We -use GitHub pull requests for this purpose. Consult -`GitHub Help `__ for more -information on using pull requests. - --------------------- -Pull Request Process --------------------- - -Contributions should be submitted as Github pull requests. See `Creating a pull request `_ if you're unfamiliar with this concept. - -The process for a code change and pull request you should follow: - -1. Create a topic branch in your local repository, following the naming format: - "feature-[description]". For more information see the `Git branching guideline <#git-branching>`_. -2. Make changes, compile, and test thoroughly. Ensure any install or build dependencies are removed before the end of the layer when doing a build. Code style should match existing style and conventions, and changes should be focused on the topic the pull request will be addressed. For more information see the `style guide <#source-code-headers>`_. -3. Push commits to your fork. -4. Create a Github pull request from your topic branch. -5. Pull requests will be reviewed by one of the maintainers who may discuss, offer constructive feedback, request changes, or approve - the work. For more information see the `Code review guideline <#code-reviews>`_. -6. Upon receiving the sign-off of one of the maintainers you may merge your changes, or if you - do not have permission to do that, you may request a maintainer to merge it for you. - ------------ -Attribution ------------ - -This Contributing.rst is adapted from Google -available at `https://github.com/google/new-project/blob/master/docs/contributing.rst `_ diff --git a/PROJECT_GOVERNANCE.md b/PROJECT_GOVERNANCE.md new file mode 100644 index 0000000..d080ef3 --- /dev/null +++ b/PROJECT_GOVERNANCE.md @@ -0,0 +1,52 @@ +[//]: # (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) + +[//]: # (SPDX-License-Identifier: MPL-2.0) + +# Project Governance + +The basic principle is that decisions are based on consensus. If this decision-making process takes too long or a +decision is required, the project committee has the authority to make a decision. + +## Technical Steering Committee + +The Technical Steering Committee (TSC) is responsible for: + +1. General ambitions, objectives and goals of this project +2. Guidelines and procedures and tool selection +3. Guidelines and procedures and tool selection +4. Architectural and (development) infrastructure choices +5. Raise subjects/issues that are important for the direction/development of this project + +The community council consists of the following members: + +- **Jesse Tjebbes** – *Product owner* +- **Raoul Linnenbank** – *Technical lead and lead designer* +- **Derk Weijers** – *Infrastructure and deployment* + +**Jesse Tjebbes** will chair the TSC. + +## Maintainers + +Maintainers are responsible for maintaining parts of the code-base. Maintainers have the following responsibilities: + +1. Coordinate development activity +2. Make sure code/documentation reviews are being done +3. Coordinate pull-requests +4. Coordinate bug follow-ups +5. Coordinate questions +6. In case of long discussions or arguments, maintainers or others can request a community council decision. + +The current maintainers of this project are: + +- **Raoul Linnenbank** – *Responsible for active development, debugging, repository management, and a backup for Joan + Ressing* +- **Derk Weijers** – *Responsible for infrastructure and deployment, and a back-up for Raoul Linnenbank* + +## Contributors + +Contributors include anyone in the technical community that contributes code, documentation, or other technical +artifacts to the project. + +Anyone can become a contributor. There is no expectation of commitment to the project, no specific skill requirements +and no selection process. To become a contributor, a community member simply has to perform one or more actions that are +beneficial to the project. diff --git a/PROJECT_GOVERNANCE.rst b/PROJECT_GOVERNANCE.rst deleted file mode 100644 index 0f84d32..0000000 --- a/PROJECT_GOVERNANCE.rst +++ /dev/null @@ -1,55 +0,0 @@ -.. coding=utf-8 -.. SPDX-FileCopyrightText: 2019-2023 Alliander N.V. -.. SPDX-License-Identifier: MPL-2.0 - -================== -Project Governance -================== - -The basic principle is that decisions are based on consensus. If this decision-making process takes too long or a decision is required, the project committee has the authority to make a decision. - ----------------------------- -Technical Steering Committee ----------------------------- - -The Technical Steering Committee (TSC) is responsible for: - - 1. General ambitions, objectives and goals of this project - 2. Guidelines and procedures and tool selection - 3. Guidelines and procedures and tool selection - 4. Architectural and (development) infrastructure choices - 5. Raise subjects/issues that are important for the direction/development of this project - -The community council consists of the following members: - - * **Jesse Tjebbes** - *Product owner* - * **Raoul Linnenbank** - *Technical lead and lead designer* - * **Joan Ressing** - *Infrastructure and deployment* - -**Jesse Tjebbes** will chair the TSC. - ------------ -Maintainers ------------ - -Maintainers are responsible for maintaining parts of the code-base. Maintainers have the following responsibilities - - 1. Coordinate development activity - 2. Make sure code/documentation reviews are being done - 3. Coordinate pull-requests - 4. Coordinate bug follow-ups - 5. Coordinate questions - 6. In case of long discussions or arguments, maintainers or other can request a community council decision. - -The current maintainers of this project are: - - * **Raoul Linnenbank** - *Responsible for active development, debugging, repository management, and a backup for Joan Ressing* - * **Joan Ressing** - *Responsible for infrastructure and deployment, and a back-up for Raoul Linnenbank* - ------------- -Contributors ------------- - -Contributors include anyone in the technical community that contributes code, documentation, or other technical artifacts to the project. - -Anyone can become a contributor. There is no expectation of commitment to the project, no specific skill requirements and no selection process. To become a contributor, a community member simply has to perform one or more actions that are beneficial to the project. diff --git a/README.md b/README.md new file mode 100644 index 0000000..fbddadf --- /dev/null +++ b/README.md @@ -0,0 +1,92 @@ +[//]: # (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) + +[//]: # (SPDX-License-Identifier: MPL-2.0) + +# MeteoForge - Core System + +[![License: MPL2.0](https://img.shields.io/badge/License-MPL2.0-informational.svg)](https://github.com/alliander-opensource/weather-provider-libraries/LICENSE.md) +[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) +[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) +[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) +[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) +[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=bugs)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) +[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=coverage)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) + +

+ MeteoForge +

+ +## Index + +- [On the MeteoForge project](#on-the-meteoforge-project) +- [A bit more information on MeteoForge: Libraries](#a-bit-more-information-on-the-core-system) +- [How to install](#how-to-install) +- [View License](./LICENSE.md) + +## On the "MeteoForge" project + +The MeteoForge project evolved from the original Weather Provider API project. It aims to provide a unified interface +for accessing and processing meteorological data from various sources. It is modular and extensible, allowing users to +easily add new sources and models. + +The project consists of three main components: + +1. **The MeteoForge API** + A RESTful API built with FastAPI. It provides a unified interface for accessing data from sources built with the + MeteoForge Libraries. It is OpenAPI-compliant and easy to deploy via Docker or custom solutions. + +2. **The MeteoForge Core System** + Core functionality for accessing and processing meteorological data, including support for file formats, data + transformation, and extensibility. Includes base classes for sources and models. + +3. **The MeteoForge Sources** + A collection of source packages based on Alliander models. Sources are installable independently and provide access + to meteorological models usable standalone or with the API. + +## A bit more information on the Core System + +### The goal of the Core System component + +The Core System provides base and interface classes as well as utilities for accessing and processing meteorological +data. They are designed for use with the API and source packages and not meant for standalone use. + +They offer tools for easily integrating new datasets and standardizing data processing workflows. + +### How it works + +#### **Sources govern models** + +Each model belongs to a source. This allows similar models from different sources to coexist and be validated +consistently. + +#### **Models are generic but unique** + +Models use a shared interface but must implement their own data retrieval and formatting logic. They’re standardized in +usage but uniquely implemented. + +#### **Equalizing the models via ECCODES** + +The Core System uses [ECCODES](https://confluence.ecmwf.int/display/ECC) to decode GRIB/BUFR data and standardize +parameters. Unit conversion is handled with [Pint](https://pint.readthedocs.io/). + +> **An example** +> +> _A model defines a "200 meter wind speed" in Beaufort. The ECCODES parameter 228241 corresponds to "200 metre wind_ +> _speed" in m/s._ +> _The Core System can convert Beaufort to m/s using its registry of standard parameters and Pint-based conversions._ + +## How to install + +You can install the MeteoForge Core System via pip or poetry. + +With pip: + +```sh +pip install meteoforge +``` + +With poetry: + +```sh +poetry add meteoforge +``` diff --git a/README.rst b/README.rst deleted file mode 100644 index 6e539ce..0000000 --- a/README.rst +++ /dev/null @@ -1,115 +0,0 @@ -.. coding=utf-8 -.. SPDX-FileCopyrightText: 2019-2023 Alliander N.V. -.. SPDX-License-Identifier: MPL-2.0 - -.. image:: https://img.shields.io/badge/License-MPL2.0-informational.svg - :target: https://github.com/alliander-opensource/weather-provider-libraries/LICENSE.md - :alt: License: MIT -.. image:: https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_weather-provider-libraries&metric=alert_status - :target: https://sonarcloud.io/summary/new_code?id=alliander-opensource_weather-provider-libraries - :alt: Quality Gate Status -.. image:: https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_weather-provider-libraries&metric=sqale_rating - :target: https://sonarcloud.io/summary/new_code?id=alliander-opensource_weather-provider-libraries - :alt: Maintainability Rating -.. image:: https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_weather-provider-libraries&metric=security_rating - :target: https://sonarcloud.io/summary/new_code?id=alliander-opensource_weather-provider-libraries - :alt: Security Rating -.. image:: https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_weather-provider-libraries&metric=vulnerabilities - :target: https://sonarcloud.io/summary/new_code?id=alliander-opensource_weather-provider-libraries - :alt: Vulnerabilities -.. image:: https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_weather-provider-libraries&metric=bugs - :target: https://sonarcloud.io/summary/new_code?id=alliander-opensource_weather-provider-libraries - :alt: Bugs -.. image:: https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_weather-provider-libraries&metric=coverage - :target: https://sonarcloud.io/summary/new_code?id=alliander-opensource_weather-provider-libraries - :alt: Coverage - -############################# -Weather Provider Access Suite -############################# - -================================================= -An introduction to the Weather Provider Libraries -================================================= -.. image:: /docs/images/wpas_logo.svg - :alt: Weather Provider Access Suite - :align: center - :width: 50% - ---------------------------------------------- -What is the Weather Provider Libraries (WPL)? ---------------------------------------------- - -^^^^^^^^^^^^ -Project Goal -^^^^^^^^^^^^ -The Weather Provider Libraries project is a project with a singular goal in mind:: - - Easily accessing any data for a multitude of meteorological datasets and meteorological site-pages - without any prior knowledge of those datasets or even their specific content. - -That is right. Without any prior knowledge of a supported dataset itself, we want you to be able to achieve the -following: - -* *Make requests for specific periods and meteorological factors.* -* *Transform the received data into one of several supported uniform formats, allowing for comparison of data between - datasets if the fields are identical in nature.* -* *Transform the output for those requests into a wide number of commonly used file formats, flattening the output from - multi-dimensional data as needed.* -* *Translate existing dataset output directly into the aforementioned supported uniform data and allow for outputting - that result in the supported output file formats as well.* - -**As a secondary goal, we also wish to achieve the following:** - -* For motivated people that have knowledge or affinity with unsupported datasets to build their own compatible model(s) - and source(s) without prior knowledge of the WPL system by being guided by the base classes themselves. - -* Allow for the easy access and plugging of sources and models as desired. You can access the data you want to use - without any need for installing more than just a singular source and calling more than just the model you need if - that is what you need, while also retaining the possibility to upscale to a multitude of sources and models and - even connect those to the `Weather Provider API`_ project for a fully functional API based on your wishes. - ---------------- -Project Origins ---------------- -The Weather Provider Libraries Project, or WPL, as it will be abbreviated a lot in the documentation of this project, -is a project based on the original "**weather_provider_api**" project found at: - - `https://github.com/alliander-opensource/weather-provider-api/ `_ - -Until version 3.0 of this project, every component thereof was considered a part of a singular whole, but to allow for -easier usage and the easier building of new models and sources, the project was split up into three components: - -**1. Weather Provider Libraries** - - This project and the part that holds all of the common components and tools responsible for formatting, processing - and transforming meteorological data, as well as all of the base classes for creating Models and Sources for the - project. Finally the project also houses the Controller which allows for easy configuration and acquisition of data - over multiple sources and models. - -**2. Weather Provider API** - - This project houses the API implementation of this project. It uses the Weather Provider Libraries project to - transform any connected source and model into appropriate endpoints. This fully functional FastAPI implementation is - fully supportive of the OpenAPI standard and can easily be scaled according to your wishes. The project repository - even comes with a number of example deployment folders. The project can be used via custom deployment through its - package or deployment using the readily available Docker images. - For more information on this project please check the Project's repository page at: `Weather Provider API`_ - -**3. Weather Provider Sources** - - This project actually consists of multiple repositories. Each repository houses one or multiple Sources that can be - installed as packages used separately or from a Weather Provider Libraries system. Each Source can house one or - multiple Models, each representing a specific meteorological dataset, site-page with meteorological data, or fusion - thereof. - For a default set of Weather Provider Sources and a list of other known popular Sources - -.. _Weather Provider API: https://github.com/alliander-opensource/weather-provider-api - ------------------ -More information? ------------------ - -for more information, please visit the GitHub Pages at: - -https://alliander-opensource.github.io/weather-provider-libraries/ \ No newline at end of file diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..4c4821f --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,37 @@ +[//]: # (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) + +[//]: # (SPDX-License-Identifier: MPL-2.0) + +# Security + +At Alliander, we consider the security of our systems and software a top priority. But no matter how much effort we put +into system security, there can still be vulnerabilities present. + +If you discover a vulnerability, we would like to know about it so we can take steps to address it as quickly as +possible. We would like to ask you to help us better protect our clients and our systems. + +## Report a security issue + +Use the contact details on +the [Alliander.com Vulnerability Reporting page](https://www.alliander.com/en/coordinated-vulnerability-disclosure/). + +Please describe clearly how the issue can be reproduced, so we can fix it quickly. Typically, the IP address or URL of +the affected system and a description of the vulnerability are sufficient. We may contact you if we need more +information about a complex vulnerability. + +## Thanks + +We don't have a bug bounty program, but we're grateful for all the reports we get. We offer an Alliander Security hoodie +as a reward for significant security problems. + +## List of Currently Supported Versions of MeteoForge + +| Version | Support status | +|--------------|-------------------------------| +| ***v3.0.x*** | ✓ *- Work in Progress* | + +***NOTE:** Versions 2.x and lower are part of the legacy code base under the name "**Weather Provider API**".* +*These versions are officially discontinued and are only maintained until the end of 2026 for the purpose of +providing a stable API for existing clients and can be found in* +*the API project's repository +under: [alliander-opensource/meteoforge-api/tree/weather-provider-api](https://github.com/alliander-opensource/meteoforge-api/tree/weather-provider-api).* diff --git a/SECURITY.rst b/SECURITY.rst deleted file mode 100644 index c970f71..0000000 --- a/SECURITY.rst +++ /dev/null @@ -1,32 +0,0 @@ -.. coding=utf-8 -.. SPDX-FileCopyrightText: 2019-2023 Alliander N.V. -.. SPDX-License-Identifier: MPL-2.0 - -=================================== -Security Policy and Version Support -=================================== - -.. role:: raw-html(raw) - :format: html - -.. list-table:: Currently Supported Versions - :widths: 100 100 - :header-rows: 1 - - * - Version - - Support status - * - 3.x and higher - - :raw-html:`✓` *(W.I.P.)* - * - 2.x - - :raw-html:`✓` - * - 1.x and lower - - :raw-html:`✗` - -------------------------- -Reporting a Vulnerability -------------------------- - -Please report (suspected) security vulnerabilities to -**[weather.provider@alliander.com](mailto:weather.provider@alliander.com)**. You will receive a response from -us within 48 hours. If the issue is confirmed, we will release a patch as soon -as possible depending on complexity. \ No newline at end of file diff --git a/docs/demo_source/__init__.py b/docs/demo_source/__init__.py deleted file mode 100644 index fef66b5..0000000 --- a/docs/demo_source/__init__.py +++ /dev/null @@ -1 +0,0 @@ -#!/usr/bin/env python \ No newline at end of file diff --git a/docs/images/gitflow.svg b/docs/images/gitflow.svg new file mode 100644 index 0000000..c1cffa2 --- /dev/null +++ b/docs/images/gitflow.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/meteoforge_logo.png b/docs/images/meteoforge_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d3d1683d853ff295689e09953c503a95075f5bc4 GIT binary patch literal 1518050 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⁣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≦̸EJ@6cO~de0g70LK;D3B z(V7a8SbAhwIRPl}+Z8^8eH!JEzWCXj;soCP-c1qG@0bE}#R&jrNtF7B%$Gyc&cg=? z0VhmGsVrEq=yFE=N9EFA(8tpiA3a3+j>Rxbp|B9ouqjdkbER4t1vQ#r8792PsKR^S zzwckku5e-*1|=q^PMQuUX+_hB~g1i5?(POAIHr+sFOK%m7ZCCcY# zN8$BxET4;2)smyRN)Clqkz}QJ_k@{k@4u;Qi zBd9UM6DOt=`g6nK#$))<2VcOgn>Ri_FCPBaU;gg*{r9LY&`zrmjEv!~jx2t-m%fX4S=Du`p-ya)LM#7_pekF%V!0hpJpuwha-bYLHrC zwDT%*XgfAIF~q9NLcLM~p%#GQ()$EY$@)LzJne^I!|tP8-L)z#EZzT$uAT=L3mHz* zU|w%X14zPLEW&R=ePDjs)2yfUO?grQg!2K9S(6LHi570bQQ{l zGltpE!0EIxAe+RU&arY)0GFN2wOIyeG#L>NZbT8R73j8x029z@N-dw#z|-w^#1LWh zB6W*GiyqLO`K!{{E3&KH3AXt&=BSGk(wcjvf%yEbB zrz<^P%P@E`b9L|pL~Bs^3}Y7%ogP)_(M?L137MyK!^Nr#x04ne<2I3KTtUzXqR7IO zt|Owmy2A0jdF29YytKVzI?1jYF+_<}<=k101F?#xwK~~haWHkKn!o|i!bGhqnaKe* z??hyxW;yJMh$MDKskSU&7s`PetfhbjnPfoK-KgOmPw04S*M&^Y<)3nNxlg`93+;1;MI+*0W?Z~`*g*6VnxdN3xiYd8Zj7_kokB^FJJ zp|;p~o$IPA8enwD1aFe=p%PyqRZ|Iv?wV5##ouyO<(qCTfLJlqdT6DkYu(iP5`hrF zGFT9^Mui&(WUlfPpm5|F0`5z%QE}?RVX%TBQXH}R0^w#DASz@B{UeS9=;>qjui4c! zF$RM2RR|H7VNICEW@AKfYT>Hwg~uXSgM$?!Z94u`z-b^L0t3M!#hI4|0N`LAF;OKJ zn&-o|^?{}-IdE|1qCpb{kTaO0TFTzPsY^o)3|4e+kSa|RW;K^j@lzC z4vaB2oL_$&M2-3AV%~fE4lmz*ea?5^2|Rf7>?}4s_1rV~ow(wXZMl6{r^GlOntUaTgG)Y8_J{(Fw8}=`=W|Gx1gKYM)3b8fsX}Vjio_$Gbr1 ziEX1ge=9Tm5Nwi=bHdKcY*X3jx4(16*?PCNp1ps#66c^R#aXupb}2aNbba5ZODeiMGj_BDziPJUB= zTPiF~s;F2z!OG~kN--)kFsSoWu6i`!rC1P%pZ&#O@&Q&AtSAIaikT-aK%+Dx(hAL2 zsL9P-+g@qB&h=;m2Coi7PaH5Cf_bOHEl|$D%(#2$2pTBvj@R4XzWR`;uCP9&j+({dUca z=!2XI)~+D(%H{QKLMK5zcT~un-(~q@3f)5kAP&^JI_*Piv3DPYSnG$C1Y?OqVVy~@ zUD&L3qS0vnf-4-P8>N-Vc2`hBZMj^rgG;?YtEuSk)5C>aU2VaZzUCCOq}a)Ri=y>o zbdcXjJi0FGrOcH8^wb~r<EJ$5`i{eIqf<~f{QyOw!4 zBshb|M?4;9a=+|`+!LWKA~i&PkgKmD+>ES$D;74*5cfK@LFhZ=0Ax8G8BmQ^4Brc- z{T&W9p+;3K5feL9X7dtlbPT-6+HoWrx-sS$sAm4qslEeDvql`mHY^06)3A|~?{3E! z`gk_wxDBj3v6Q3OSkpmLAWa@9)&haziie317dTjH)gphdyh@rn>%{{YVp|g`>nez@ zXwqX!BYioHldmF(FfszdObc7vL{~=LbDWysHC&Ze6}N&W*2awBR!WW*&X?XlS3>8m z0IEtNdrDW3bVWR-7smlcI^dy#=;%ZybR2;q%KgSU6ijt6J zRNmwUl|DG?gY0JtlFUszS6A$|o%)c_BGhG%2zn?}0HX>_O@$1PEA{PS(e3e}QLMbu zUrL_*5PK`bz!{rKW{0aXq`o{mRo2USM!ODjVcp3LP16F27>Th{t}lt9ffxcq!}hHl zC?M=}Rgg!~(kN-Vd6(+-texlzp;Of+8L)IlEU;+_(SdHNp<{GpY09M9a-5VQ zNioU7x@6vX(=esrwf28Km;>IO$zj)3RkR6^kB>l+%*qgO<{;W0N0^u{gbskMxDea)g=<+tu;pB?B)5)L)K;S4O!t6+DdtDV@wBs1lW04> zQ>8A$r76awK!ah8D9I5(ma8=HP?YN6lx#yMEXMNy4q}@EteNija^q1c3tm7wTh-5p z-cbZS%p*iPAA$h14+0!rk&sS|Z&%e(Nv2{m$FpeB<@kj&I++3$k#&ZBY%cd&yQv+vp`~ zbo)-991tT?)cfpYKA|E(+Yv``L9>(^8E-Zp8cg9TJhFq$D^D5gTu6^hfP`3?<$New zp2k(&>3z0?LT?{C$?Q1Wz9RrLAM`xk#;T<#Ujs2(Mpx+_QwYG;sqAULJUJ1>%v14K zr3%}+-jEIel^I|CemIwF)&Y6MNxv)lVAQP1d?K@)_tVmOlYTF}yFfh8ELubZWE4B{V3b zRS-3~gJClrj7Wmbpy;H_20J#KL^!YvWcOgx>*219g_4GYPf;-K5SucL6WzMoH~JVl z?-OMzfEEPls-Fq++V^z{V;MiKR%5rOfcu?R18F$0BtcHF0yl5n!VAwohbM18_Sx57 ze))g-)h~VdPkikg-@NhY-8Z@KIF4ISU_A9KZan$EI6vQ_YL1JGM=m2B3&o5PNRHs> zu0N({*Rx;L!Z9V#Y>G}^-VQKb=AueVw%bcW)X}JTLyANa;2srYh8P9~L{wB{Tro7F z!>TrET)=Z5wGA5>GY4W$aCo41H#h~rU|Qp#d{qo6Zwy~{nPCzXc*ai}_%DI8Pf2kzfG~tCEvrsW2H02NkIS@t8 z5h57t$|@l@7&tgl9d*qDbIjx%MU8T|yHiQgCiCLF(J_*(M*7aIU}E<-6NRoQzP7%_XD7LJK473U?BD=UKj!u=U@}a|iEeeUfhPhfL{cfI z?nLP>0eb)$YHlI`+PwFMFo0rk&?(0vP0-|ag~nklAwXGCh)iD50j54&PF}`M1s4AX z7|d=snh*fU@zl)FoYQF53c#G4l^mQAhposM z0q!MQ$T*WPRL$;e+Y@JJOdKEHxsQjhyp;3pAI!sH%coy_KR*8HPrvi2ANkS$;MP-5 z{-qzh^6EEV`Th^^@X-afZNp(?BaBWM;h50?zrlXEeY8NeV-BqNo7Dh!-*e{!P=y=p z#8O^83T8o@A6N!pVl9g|K_C`gKmB?=koHEc9Lkr+39jHWc7EsYNf$q=izMha zjp4k@1sd6Z6<7S3xbod{;0C7x2G;962d;~oZpqQV8#h=jPdufor7VUKOBZ*#Xy&!)Ehn6g z_4#9GA)RZVKJT=j3M~4-cH2oBd>nrS7xl>xAeyqR-~e55>E9C~ub=DaOWsWfj#&HxS;sJ% z6UJxykfcM+IPFdQ)lO;6-ScMpdDg{O0^UhCO#0LWA%}u}K{_7j)WJuydSkPMcH8K+ zqW%IMlIwj}n3-3QOK-4C#8|UfP1E7}{qV)nDNr@DQ7EY5;H#&`cOURZ@C*_tb|V%= z2;NiYC!H*Ia;}0(in96M)m~LXC9%u=IO23|tJ^pn6NdM+^GXUude8nVGBF?!K4)Di zNEf7`3PTPmG3dQqCdIpE1EPO-yGS+w6qr@WBA$EhIeg+1AO6tA{Re;HAO6}u{O^3} z_x|Ae-FIFGa#UV>V!!o)59isFw`;_}-1jjrE~4f!3C;%$^$Rgal)MHMryo38 zp_C{aB_o4QFe9Zr1fYVY;D!j~Xy7bV(MKSM&eM#6!Km6Yw+YN)5ve*^{z34VJs6RY z5_JuQ*I}Q@NR^NXR+?SmTuc;T8J1cldZP%{XtJCnSC@=hDFqUAPUyfVDEsVVq&-tB zLl7~kiN$C}oTu*DBIusRrr?nBg-RqMMiy1xOU2xiBq~BuRB5vE366^dG^ma_0jeym zH#8Glp#t=Z!&*%eW0z~G#PCpxh{e>1u}f|TKq>@7={29BlF?x~ZC|=aT8S02C>eYzA+uy~NOVX>Xel;?kP`xk zGUuT|VmDPuQLTaPo>|Xj9RSz)QEH5jku+H-g;zyP=cnoFuHkeUFN?M{$&HXI0*MjG z39nzV$7R6zZ`1%0!Kf0MFJ1hp$QsH820N9f2h{6VyAi0L9I9FSLi)~SU@dx+peN}L zY)6I#U{gf9lj^=F$qFW7ixg>_+zr>HtQA#L)%7*1hc+Wh-&GGVD66-#+7+WJ$*dgd zPI$K5Hz8`kP%WyE$O+D*8pGJ}AC2_~ND4_UM=c$ArRqRc0AtFXvKP5|EmMcD$^nQzr3ietqhL0z%vB1 zB4&02>nWfUE)B$p%qci@PiiWfdB;K$xTrHVfY?C<2Lv25g_lgwGPFc-ATR|WUkMH6 z)#O!TWmhtiz#fbZ5ixvP!4fks$k~k|n1V++#aXD3@}UxhS>-~w+E<-0GJ?VIcFl0E zSFFe!?DyoJ$yG@X)JQ}{sn4;(qfh|Na{&X`kXgB%fn%FEKFs;>!G7n5Kg53btqkz+ z>Rqxw0CYxcHf>E|7&aIg)Ke6&)*o zvQ%a`4=PP>fpfD3EG*iilmGtrj**-@tyYEbXR>SQlXT{-I`V2s4Lrh>)C;DEa zaQ!9(YK$3fwKllvJf&H!4eW#qfg0T$uJU8G)Bq=zAG*K`E;jqpQlV!8IH?D*+9htAu(Qm^(0J&^hWv`WX@JyUD0 zu%L~fzDH&@-t(Qk$qR~#0gep|YXZehcCC;=LtYsIh3-ElnT%`A~P|M`wZ5o%bok& z$$g*u<)hpmK15v{G3Nzp&JE1Kd_<5tqLg1^y6iL)Wa4-UMTCo>}Ke3G=D$_MM3~$Jp=LxX`||5jZ`#IO=yp!(7tgREUg)B19b@?cJ*FZ zJre^GWAMAF6WofFp~z5mkcmdY5=Vmhjl#6g=Dj*(G(=?y-J=lM5Z`}`K+)6tCJ=E6_{q>n@dLH*cVh1*7EQQq` zr68{m7SG3a3Sbn(hZWE+5wU?$7||R8f7~Sy+a-u0yO{y7GU`COlQ(#TMPoefm|#gT z2)mwNv-4s#?E_FGzXK6RWnvq2=T_rG_yBY;1D&z(wPpZEAcmF80Qa#IsG;#tN8A7O zJ9Ry5MaDqzLZ#it-~vj$GcYf0zhYbwTY~(L&oOdGghW`3_vsD=z$1W7`!Ce&6gc(y zk2tQ%&oEcZB?yC4M?@X~^R*En{0II1yVi9kFkJR5kCX@^@`&K3UQ;SSJ5g{lGLIrJ zWtg!*r7Hu6C!UVO`HjnKk6*9t{2Fo`;%qxhY=bcp`*A-c8C7!<$8mY7mgWHlF)K30 zEMg1|dxR7W>?Tk$*}FjCD}`Y?Mt4ot`>xP2%@bPXvN4d`0oXR&fBQb~f9;@KE z#*9P=HCiHj1HhgkkvpILE>5G1dz~9hC?pVMuD39FpzuXGP9c!Zpbpxk+r*HIR=!M@ zb3E{rze%K533-PGtJO(;7OOq-bY%5Ar^>2ZFOaMH-*LMHpM1{^dZ<18lwb6@!4q7xAI`|v^b z`V0`0i5TTECvAJ>ht%Dq|0~LmR_Ni|=CVp3cthcTho8wC=*<`P zOTIzpl0LAesRUGUJ{f9+x(83xJzPyp`*Vq&d*2&u49y8pn%p!4q{W_j~ z>KVN7!ZRP8_wW91fBm2Q_MiRDzyGU;{c=a%e3Iwye}7zi`e}?9n8(ZD+!3=dR?ng= z9s``JG@|E-3l!r-a8!lL_kA8WA}dP)0tb3|e?=e)egF}Ppc zyB8PlzJvMTPRz@T;C?v>03#9eh>-(l*KT0Db^~YE&Tu%pe!PD3*1Uf0oEMjuXJcb! zY!w5@92@{L24f%&XV>!(+`&9n(#jKKM9Ly>c}UbG6Ela$JSkR>3?%otv1%sbILR!h z%@L6mjBOl<*b(7sZKT>0R1M~cIQLB1U2K}EWJ8y6U`D2D=)3G^?r<5hSi(kR<7#3g z$=c-pt7aiKY{4jOV+U%B7`y42h%C%woh553Rj4Fm-+)AFaMzZxMUKgsRfr_P4Uvd3 z5p(R1j)RfR5yxU22I?YnL{;oHcout&7=gezlC@1@-*l)#XBqC$9>*9+rHTq}XJNAD zd2Sh1*tyT(mdJ{%oD8N=73oILNsVl_tOLqL>k%_5$4-$#xQMioF~IXA_Bf>f9;H5p zoTxh6r_u3kJ3^Hme`f?HSalqTL}cv6Im#%OT+)m&$AM~zI#yysiFHhX6@gK6_(*oLOhRk9|dHXt;(eR2SU*coxYM^sbYk~DEJn4V2JMd{$qssY6U7{xF};*y$% zHAiGB*sDC-#-;)Z_ZeWZ_QBi`qZl=g7ss=dEc_)?gy~>pP0k1$4qJ*jk8uPl)&I{E zJ`;HW_X2Ylku`Y+>GB6SlGyj+HZo_WI)Os`nE)6uvJ#lgQHU6`YNpF~1QGju4BETP z8FgUsGIJ<~%NT(@Mh*hGm+Hva;0k%n!|`bOv=K)FQB(~UoGesqV`K)v%pZwEbjx%1uN>?z85IN^G$gBcm`? z!vzC#V2^zyH)I@Vaf=9PB4Y$<4<*JyfIA|xI3p{8j3OeARbz;+Q#q0%JODd2H+=vD zntU-!%!!Grm`tSL&an-#t<+i{m)6{i;zS}cGsXl9$%q;XBFTD4sK7B4T9hERG4zbi^>DfH|%)sv!He&EjSDK*B`UtjGv5u}8!K zz@8NrCEO8tNMbSz#bLx9jEn=B74!0PQ*%#FuyP{jnc~AVKC@L-ATUY9tl~f-MQRJhy-->s?`xWxxy?pHadj0elf8pZiKmRj-X}k8=|NIZW`ppM#z5Xg{5{HqA zEo+)4?j|jlj<3YNR7H4nJh)~|ceTIc)W)|;0VW9yB6nd%OTawl0u)x^lAYgB#l&#( zogHpF!0*-thpb9Dp(M3)ABVY}I|WqO>Y4E;K{tP<|GazpGs?|uGKYF6ILYpG(0Pcf z-Edyqqv4&FyOQ5JME==TnBxLi0LA?Mdo4P-2uaOkXi2r8^at0NOuf%!D(_qj06{6e zFsDj)p+8!N-10G;ZlCL4b=u7<0-mORou)RQm=Wk)6NaE8kTqp#jCF|+OF7-__C7I5 z8Y^!&t_+BE5xDc(=t{nm>h9LJE{MK|Ck;KiPQY0hi*saL*#z}0w{G(0I z6+5DV@=#j8`mMvlca8A*K^EYUzKq1eAlHS1et!ZgyunHSqSyG;uq@WoNKavM`2Dq+ zJ-T?Ls_Y9)Nf&YHf{>HmwtQ)DLP{zP9&4>&8?Ez_-mnHbyzb2aXzV4qbZ^>#`P{e3 zbv-39Xp{=!N|#V1psVOu`_O8mu(~AKrG49+uA5N`tZbAnWds-4U_;T`UV6#X_lUs> z1MzT?i)Ik`EFc%qz%C@g1uw&`s$Z#C7wbDDIyw9AmEEe4$IUFVGBd)$mFdk?t0&0h z#Kho;OeTwy0B%3_7(VuqkH%q(fB8G#{KmiaPk!^CeBis^{5mj?I6U`>{qYw+xM53> zv$7_t7>jP7T}1GGNkH>RhxecmqF87uj}|CEw*aFUsbFIuDn@ER*ETS=GxFgDE)jEo zbiw1rqu`^5yuAA^c<;@D`4Gsn1c7n=8g4!LR6X_7lYH#^wOyM?$)cFLifkkPFRmsHPLFtiGeXT0K|+?59F>Q|8mZ$0kt)W7IA40U{mgOQrHSXE#W zXJ;LOow7Yg5L?N|)Br{vRERAiP}s|L-5`JNNK;$m_!GY}%9TlUGDpG8D`_FjTR>N()cOVz zBL~35*i=oWE1-J;N%`WOVSu`HF9{skGF}qfL?&Vc=ByQqg1dvx#I`BE5Zr4qKF1w_ zKyE6Qqn4_WTl@o&5ivH(_Up{=)8oKG#`$nK=)LI^TytqrB>;@g!mksmEW6T3XdH9M zu1ni+cDs-ghZ?{T7QM#BmW{bIA2LT4+!xI(6Nc17t+z{cr?E0dM9dhu1-5N$ISw}; z+`aewwe#^@AfCOrJpSC>yZ1hN@13_k{N`J4KKtm=!)tfndH1o`UwJL=z4bbdmyZy2 zM2&Og^~dLS{W0X(HJ;smy7Ky2#MwC#TOuwq!Kgh%KfIh7i5em%DKfX;Sn@Vtci zU-`;czm8cKQ3#A2-FvQ<4-}R{J>Xcc5$w6*L$&ix#h1G-3ElH9woMby9GSUKK0EP8 z2jZvy(nOPRCAsIUoxp|cgv;c+C3fdn1W<{Q_PrS`9ug~Am9IE`a;JBwfJV!P+b9ik zI1kg$Io5A79-E-jy<-sIfYRVvg9NMf*hX*t@AW=F>!|tl5abm=$lWR3kknv@c1!oa z*~|1*uP&snm$VIPz+s|whkg0b;}6?@qf>hJ2k2c2wVu0MgBMxIzq7_YcEV+`b~Jc^ z6Zx>?F#^a5%t7aI?wPc|0jAwd zLGGNm*MPo!f|yLLKUKc9ys-$clQ^MVffJf|1!S2B2e!+)7yxUbAE0|y(x0qm;GY6pVBK7a+gzp709VIjM6)gy&BQGQDiED6 z0s_I4s7o_3)`hT>*WWtXD58b_+B&bRZ!kjvtj@G%uKGe5U625=*$+9?C+rr;eI9Y` z+AX~Q#rNSu?|<>}*I$3@|M2e!n#e>X8@ z{5P<6M&uZdSj2NEvsj{FIi`epMP^Y^31JCkA%PqNc{l(uX4FIlF)#Ode0UL;ci)Nq z-8X~#k@eu6fn?-1aP8)kc;eX?@XQO(KYIG9r|#c=>h_n;X6?^B^VDA(=hyxrv3=+6 z!~1VU&Hdh^3*5c`5OYo(FLoSxG&4d-XjzR^OaqwRlt%tl zgTZmg!2)9P$We)zff13cX|ZBg(rN}cSW)KM536z<1dWCSYUNKv6AQ0%R|u4r3M}U= za4_N+EGNv0BVew6V#17e1OiicS(OPZZ&b3f7y=hY1@@dcG}}Kc9_+M4m7#`M1nCSY z$t=tj3_5iLq3JL%7|c*tgA!yVfLp2!ZL(aU*^p5N2IWdU<|#9W!)2okC>5te&dD+f z$n05@0QX=FqN02g6!^%!sVpp(o}Nhnzx>~xx&?Y@O}3bxIo4IZj1Ejsfwa3YRh4#_ zBCkHL+>3DX1D`!s*(N)Hh7*u*4j2GJH)9r8BLh07a6gGCJ)%MR2xWvyP-T6PiFrzD z!wMVg``vKjyPE-&b+TkXvGzpv&@l`JzRA|=JZs8}qh_i(KVp!q6+cx?950W!e&ZUp z9C+;JEnK^ChV3wrNStqncC04V`M@fcxJNW&ma#9Xy< zLaHm;IlG)-q2{bg#CCqpI9yN6xV-oBE91crzcTRXT|D!lAH&ao;U{1E)F1imU%c~h z|Eu5q_P39B?>+=sncH9hu|?GGK7FziAbLWK*0x33l>f*UcVg45SXrnNE0aUE8i6gu zdRBpqt1aK&ME8q?R9>z2dZi%R#mF6QWnH;x7cml`;ycN^%u}N0O7+S@J4Og6t~|j4 zOP^~MZJpYRyoPRmIms&MK?ZeKoGPsEDEpfX6+;vsXi}5qSkSbGp!NAz{NSoM`*_cF zR~KsF*R$}*N;lao56Ff@DGJjVEL1+d-v*Ua~`XIDouRp&>N9fQfxHt)|cfUH;JDyIIk|8c9DVod4z-XjHj|~y? zKn#gBKeX>GgcdOaV}=5uv579^uS=? zrah;W&4w#KP9_PbhpHe>qkuu6hJXWA@cpooneylQJb3RDu@qF*<5boXPqT;w0<~l4 z1El5md4y;))0LB3=hyM0pZqwUeB!B}`N|*s&i~=p{{FB2(KlaxN!-O3K2|rMeZJ1F z-`FsZsLKmg^E2lF^AdJg;@4OrH z{@vq#|Is+!c@?og+9EgHdg3WO{q+0r^z-lI2S57pZ{2?E{9D&=-~Kx_^FMod@!;!x zbbJS_M~^Ni#@Uh~(mr z_O$Pi!|YDTWVi;38ij))ux!g#jeRdrs6bO6HVX@V&FJ1VfK9!!b`zj+0Wsyc)aD~w zP~2A!TnkqAT@;8&^hhR{0!W4F7zFkR^vI!81t>8#gIUE@RqphIeP>m%(|0!_?v_x2 zL#{s;BQ>ENCLhKa(gxJLajs{N4mNXO8xj&nY0WegAT8(vNR-;9g0^yIHz`l4)p8tO z$IT!5*$MXrHjBac(!GpKB^a{9`uq;W0qCA~AYy<*1ddw4QG>wg;HSxQ=%8ID z8rTalhUuz1y62HdjI^LpLc%^~w{6s%T?KOkv2lI$+zYu)pf)?!M4ox>w4bSp*h1n$ zfpzvWLb6AwMAnXolq$^)twF3rnD7d+YtE89+0gW#J7W*%!g7vOmo!Zo3eaC_Y+*x!`J=}8VHSgzxlLje9Iu&>2J(;Hf z*ZyH89b-n#5LO>u@soBer;>FA$wZ6-_5tSbI#<6WdX99*XH7GnK}6Mxp`sJ+Nc-H~ z=QleE$iOH@_n-!Pl8_bc6(9p32MT)!aApsgDVTi@PrW@Wv9at#^AZXtH5W=e znPs53Y}xR3K3@0UZvhZWzQS>EPGYL>-G6U7`S94(EU_sa9i8tKa|rr(Syb<=bz*_13um#+#Urj))uE zC9gf1=g&MH*Pna_XJ=;sEB51M^5PPa8xb?A0;8o%2sGCzq=t|km!su=pcdLWII+*M zBe0DPapQUc1N+^(`Ode#Lf&~bZr;3(pZ>XDy#J}s{q$eH{`l>G^YxcsdHH)UzXH_6 zcG$q3=I_~^u@JEd>|41Ce7@~J6&L`uQga0AWS0#tiiQovxzR?S=xkxp`Pl+=+5xLT zBCk~B6&1J{mpav3$oI|>XkmeXzOm!Yb67br7dHyf|s`bj+|KYZsQp{%l*W2TQLH5kL2ZU(zpo)7fif z<5OL^4!A(7rE9?jB~UgvivO`!2cu2{!_=*4ZGU_Gg@AQXhbxD=eW*5tz3Zz8O*D10 z6A4kFxi)ka=Fv19UjRc(<>!wWx~L9DCqtDq&%2`0-{H$Tk?te%X1NmGK*R!W``go- ziPQ5V*7X!F$W7lVGo!WfdN+El&!+(k0Ga5F%Al8n-)0%8syY~5z+Omn_s4X=hYHk& zb=Y9>sbO{aQn5&`pLu-4(mqtNjvq?JO>^2O2gpCse_wPTz(@#Hx4}aogc=qvIfBFx8 z>o@){f9r4mjb|_3c@wz#`0@JlKNi=XeSQp1g2&+T*qg2=Wv{Dex*rud~jPY?-QXsi0L|0YmqC zCrs&+mvWmY5>wR2BN1Cj+i5iQUz4x0hQJcReM3IlC3Ht6hrbG6fSk^(w z>;hSXO1!#_B5bQ8QM23<6{cA?kQ4%~CUk!R)I5oDtxBj#1fj)H0PMAhtKhEpUsyJg z*iboDx#zAT*)9OF<#IHXGOq-gI>%XV?^s%%IstP6V<;fUT8}X3A6S^XL5mUL3Y;Q_ zSw1t>v4w#S8y_W8em<{pxhEM(%xRy=vVF8?aV1+cducj}k`eBFSAv66O<={AF!(8^ zk$rrefc`48*g&;ASdy>h=z983mY=U}Er!>mR;y+A8Ovy$;==|;3RemqUY~||O_l*W zeoL<&hm#whVKZf>X|{HLAj|g2$-qdF$51X(q$d1Oqu9FLQ1v_Czrxb?>G_o1Nv*i! zN_9CE@3G8&2-yS4W1R{oCGkZkd#M)1%5{zub~PZxE6fi4y~ephfPTfA-jz8bGGgup z%`KUeRp3sL6XX0GH*em=&1>hle)Gn5`>~tXavMK-d44uVF=Jjl0{5d}%2JQ$X-{>?Ms_RTAY&q>f}q%} zi)3Yh_Aq#Mer;YpJo4@Df0y;z_YT*_9xs0A!}ytB`sLq!`eQ%(=U;v0l`p;ay>AP2 z9RN0sAui_;1^EpzD%!_*xQ)*w*u^M;#}TKN!hjRd^!<_wi4DzFO1R^tD=a^B-rm?R5|qHgL?l@)y0A0xi2*a_M+2;A8oeLQf7`fJWzX{+Wbi zLDOwo?B{Oqpz|OY)F2jX;ws?M@qJsF^|S5w>olqk&K-N20g=83STh^9?Wf z`o8eJZWz6D#|8(h^M|lKF$e(XG-};*T-g2#-Qt{xpZWYRBUciqfWL)cVHCzsqkqz2 zPQ?nsgoHPh6bmrun-)=;b4{JX9#?TfN}LEc8vxq4X{Xl)ex*pR;x#qBn<$iEotg&V z3SdUA*_N^1q2s4c(Ct*x!B9Yq1qWgF52wRMphvR-ME7f)=$Y{4(9X~a@9?@X`ijUA zl>=%G5#R{`iBPrCeV;;%tq$pA7CvMqn1a3cQ$d=jx;7di2V(ujE6I)zW+*8Yd&gE| z1(_Xqbzx8m)B=al>7PQf{>#7hYyarq{*8a|H=nyWKB{=^ z{m1wH$S1+G^KDiHA6?EsjZi^3XXMPPF{wf3`fNqs5ryK=&wGs&-!sM-9ODq&wnA0T z;}OTZZ(rVd>uuoeR|Yu8`ORB+>iPHM10VhPoge+NAN{M3-@f&$JNN(3!w36o_wKxN zynp{b?%#U=j8qR|QTps7i4h|zK*pp6Y=nq1!cF&dr8*N?q1jJLG`pG(3%1yK$hrws zi4Jj;m~|VFav{D)x59-tyFSljjjL4{83v9nUWSoVw+d_xz1vB+p-zB%Pvzt4g>G6x zg97TO@#!;?B=F7vR6Emb;-0I=VPkE&R-JM!{RacFdVq;BG=3(4N(8EyDO)m&4vNiqcNJh8uJD)bcptLXCHPQhy;P{9Ur zb>gQSwVaPmlh-hu7)l;dzH5e5xT}JhVG6YkMX3L~kDS@3W_x(8oID}Y@+=1N*XX4X z5YSa#=TAV4%y@^{PN=!gGI{Tj>CObZGvK6NQ zsoU_1(}|fA(5_qskUM3I((wlA*0D}{J^Y~H_dTKSs_qc6K?SNSzDdI~X(Zphm~f2I z#SGu&bUf7UY|>mJ1{oFZzu)D*f>;#O$Pui`*0Lb$)Hdi!`81H!`#ajtx_m5_i472y zyaZ*RMN{UA?umjl7+oaPa=#vy>98O3wxtU)H_^j!l7{w5QOqkdaX=wg9v#Lszsf6w`ILo% b7&?> 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 MyngMMzVnr@{+qw|kALF}FMapxIWZ9Ld;a3d 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

9PxFO$iXnB6H@KMgWZ=>|M>u!37)5 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%0DoX|DS{_QnX!h~$*ipQ8{NuO1!0B!vIZHFn5> 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�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%0DP@UaoVnG>a9Q=s2tVb?JY0hS7^M?aNn=%8 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%0ARQb&$bFM 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

Y;9uOnb_x80{J3K5 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≷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

gH#8Bn`v%VgcZcoS6D|zGAs{dZu6);o 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�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¥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 literal 0 HcmV?d00001 diff --git a/poetry.lock b/poetry.lock index 688bf20..87c3943 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,15 +1,4 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. - -[[package]] -name = "alabaster" -version = "1.0.0" -description = "A light, configurable Sphinx theme" -optional = false -python-versions = ">=3.10" -files = [ - {file = "alabaster-1.0.0-py3-none-any.whl", hash = "sha256:fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b"}, - {file = "alabaster-1.0.0.tar.gz", hash = "sha256:c00dca57bca26fa62a6d7d0a9fcce65f3e026e9bfe33e9c538fd3fbb2144fd9e"}, -] +# This file is automatically @generated by Poetry 2.1.2 and should not be changed by hand. [[package]] name = "annotated-types" @@ -17,6 +6,7 @@ version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, @@ -24,13 +14,14 @@ files = [ [[package]] name = "anyio" -version = "4.6.2.post1" +version = "4.9.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, - {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, + { file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c" }, + { file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028" }, ] [package.dependencies] @@ -38,8 +29,8 @@ idna = ">=2.8" sniffio = ">=1.1" [package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] +test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] trio = ["trio (>=0.26.1)"] [[package]] @@ -48,6 +39,8 @@ version = "0.1.4" description = "Disable App Nap on macOS >= 10.9" optional = false python-versions = ">=3.6" +groups = ["dev"] +markers = "platform_system == \"Darwin\"" files = [ {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, @@ -55,30 +48,26 @@ files = [ [[package]] name = "argon2-cffi" -version = "23.1.0" +version = "25.1.0" description = "Argon2 for Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"}, - {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"}, + { file = "argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741" }, + { file = "argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1" }, ] [package.dependencies] argon2-cffi-bindings = "*" -[package.extras] -dev = ["argon2-cffi[tests,typing]", "tox (>4)"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-copybutton", "sphinx-notfound-page"] -tests = ["hypothesis", "pytest"] -typing = ["mypy"] - [[package]] name = "argon2-cffi-bindings" version = "21.2.0" description = "Low-level CFFI bindings for Argon2" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, @@ -116,6 +105,7 @@ version = "1.3.0" description = "Better dates & times for Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, @@ -129,91 +119,104 @@ types-python-dateutil = ">=2.8.10" doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"] -[[package]] -name = "asciitree" -version = "0.3.3" -description = "Draws ASCII trees." -optional = false -python-versions = "*" -files = [ - {file = "asciitree-0.3.3.tar.gz", hash = "sha256:4aa4b9b649f85e3fcb343363d97564aa1fb62e249677f2e18a96765145cc0f6e"}, -] - [[package]] name = "asttokens" -version = "2.4.1" +version = "3.0.0" description = "Annotate AST trees with source code positions" optional = false -python-versions = "*" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, - {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, + { file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2" }, + { file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7" }, ] -[package.dependencies] -six = ">=1.12.0" - [package.extras] -astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] -test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] +astroid = ["astroid (>=2,<4)"] +test = ["astroid (>=2,<4)", "pytest", "pytest-cov", "pytest-xdist"] [[package]] name = "async-lru" -version = "2.0.4" +version = "2.0.5" description = "Simple LRU cache for asyncio" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"}, - {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"}, + { file = "async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943" }, + { file = "async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb" }, ] [[package]] name = "attrs" -version = "24.2.0" +version = "25.3.0" description = "Classes Without Boilerplate" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, + { file = "attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3" }, + { file = "attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b" }, ] [package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] +benchmark = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +cov = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier"] +tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\""] [[package]] name = "babel" -version = "2.16.0" +version = "2.17.0" description = "Internationalization utilities" optional = false python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2" }, + { file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d" }, +] + +[package.extras] +dev = ["backports.zoneinfo ; python_version < \"3.9\"", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata ; sys_platform == \"win32\""] + +[[package]] +name = "backrefs" +version = "5.9" +description = "A wrapper around re and regex that adds additional back references." +optional = false +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, - {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, + { file = "backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f" }, + { file = "backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf" }, + { file = "backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa" }, + { file = "backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b" }, + { file = "backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9" }, + { file = "backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60" }, + { file = "backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59" }, ] [package.extras] -dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] +extras = ["regex"] [[package]] name = "beautifulsoup4" -version = "4.12.3" +version = "4.13.4" description = "Screen-scraping library" optional = false -python-versions = ">=3.6.0" +python-versions = ">=3.7.0" +groups = ["dev"] files = [ - {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, - {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, + { file = "beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b" }, + { file = "beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195" }, ] [package.dependencies] soupsieve = ">1.2" +typing-extensions = ">=4.0.0" [package.extras] cchardet = ["cchardet"] @@ -222,67 +225,24 @@ charset-normalizer = ["charset-normalizer"] html5lib = ["html5lib"] lxml = ["lxml"] -[[package]] -name = "black" -version = "24.10.0" -description = "The uncompromising code formatter." -optional = false -python-versions = ">=3.9" -files = [ - {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, - {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, - {file = "black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f"}, - {file = "black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e"}, - {file = "black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad"}, - {file = "black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50"}, - {file = "black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392"}, - {file = "black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175"}, - {file = "black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3"}, - {file = "black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65"}, - {file = "black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f"}, - {file = "black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8"}, - {file = "black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981"}, - {file = "black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b"}, - {file = "black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2"}, - {file = "black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b"}, - {file = "black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd"}, - {file = "black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f"}, - {file = "black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800"}, - {file = "black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7"}, - {file = "black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d"}, - {file = "black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875"}, -] - -[package.dependencies] -click = ">=8.0.0" -mypy-extensions = ">=0.4.3" -packaging = ">=22.0" -pathspec = ">=0.9.0" -platformdirs = ">=2" - -[package.extras] -colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.10)"] -jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] -uvloop = ["uvloop (>=0.15.2)"] - [[package]] name = "bleach" -version = "6.1.0" +version = "6.2.0" description = "An easy safelist-based HTML-sanitizing tool." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"}, - {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"}, + { file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e" }, + { file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f" }, ] [package.dependencies] -six = ">=1.9.0" +tinycss2 = { version = ">=1.1.0,<1.5", optional = true, markers = "extra == \"css\"" } webencodings = "*" [package.extras] -css = ["tinycss2 (>=1.1.0,<1.3)"] +css = ["tinycss2 (>=1.1.0,<1.5)"] [[package]] name = "certifi" @@ -290,6 +250,7 @@ version = "2024.8.30" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main", "dev"] files = [ {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, @@ -301,6 +262,7 @@ version = "1.17.1" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, @@ -380,6 +342,7 @@ version = "3.4.0" description = "Validate configuration and produce human readable error messages." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, @@ -391,6 +354,7 @@ version = "1.6.4.post1" description = "Time-handling functionality from netcdf4-python" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "cftime-1.6.4.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0baa9bc4850929da9f92c25329aa1f651e2d6f23e237504f337ee9e12a769f5d"}, {file = "cftime-1.6.4.post1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6bb6b087f4b2513c37670bccd457e2a666ca489c5f2aad6e2c0e94604dc1b5b9"}, @@ -435,116 +399,104 @@ numpy = {version = ">=1.26.0b1", markers = "python_version >= \"3.12.0.rc1\""} [[package]] name = "charset-normalizer" -version = "3.4.0" +version = "3.4.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, - {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, - {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, +python-versions = ">=3.7" +groups = ["dev"] +files = [ + { file = "charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-win32.whl", hash = "sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cad5f45b3146325bb38d6855642f6fd609c3f7cad4dbaf75549bf3b904d3184" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2680962a4848b3c4f155dc2ee64505a9c57186d0d56b43123b17ca3de18f0fa" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:36b31da18b8890a76ec181c3cf44326bf2c48e36d393ca1b72b3f484113ea344" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4074c5a429281bf056ddd4c5d3b740ebca4d43ffffe2ef4bf4d2d05114299da" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9e36a97bee9b86ef9a1cf7bb96747eb7a15c2f22bdb5b516434b00f2a599f02" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:1b1bde144d98e446b056ef98e59c256e9294f6b74d7af6846bf5ffdafd687a7d" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:915f3849a011c1f593ab99092f3cecfcb4d65d8feb4a64cf1bf2d22074dc0ec4" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:fb707f3e15060adf5b7ada797624a6c6e0138e2a26baa089df64c68ee98e040f" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:25a23ea5c7edc53e0f29bae2c44fcb5a1aa10591aae107f2a2b2583a9c5cbc64" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:770cab594ecf99ae64c236bc9ee3439c3f46be49796e265ce0cc8bc17b10294f" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-win32.whl", hash = "sha256:6a0289e4589e8bdfef02a80478f1dfcb14f0ab696b5a00e1f4b8a14a307a3c58" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6fc1f5b51fa4cecaa18f2bd7a003f3dd039dd615cd69a2afd6d3b19aed6775f2" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76af085e67e56c8816c3ccf256ebd136def2ed9654525348cfa744b6802b69eb" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45ba65510e2647721e35323d6ef54c7974959f6081b58d4ef5d87c60c84919a" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:046595208aae0120559a67693ecc65dd75d46f7bf687f159127046628178dc45" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75d10d37a47afee94919c4fab4c22b9bc2a8bf7d4f46f87363bcf0573f3ff4f5" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6333b3aa5a12c26b2a4d4e7335a28f1475e0e5e17d69d55141ee3cab736f66d1" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8323a9b031aa0393768b87f04b4164a40037fb2a3c11ac06a03ffecd3618027" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:24498ba8ed6c2e0b56d4acbf83f2d989720a93b41d712ebd4f4979660db4417b" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:844da2b5728b5ce0e32d863af26f32b5ce61bc4273a9c720a9f3aa9df73b1455" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:65c981bdbd3f57670af8b59777cbfae75364b483fa8a9f420f08094531d54a01" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3c21d4fca343c805a52c0c78edc01e3477f6dd1ad7c47653241cf2a206d4fc58" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dc7039885fa1baf9be153a0626e337aa7ec8bf96b0128605fb0d77788ddc1681" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-win32.whl", hash = "sha256:8272b73e1c5603666618805fe821edba66892e2870058c94c53147602eab29c7" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:70f7172939fdf8790425ba31915bfbe8335030f05b9913d7ae00a87d4395620a" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:005fa3432484527f9732ebd315da8da8001593e2cf46a3d817669f062c3d9ed4" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e92fca20c46e9f5e1bb485887d074918b13543b1c2a1185e69bb8d17ab6236a7" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50bf98d5e563b83cc29471fa114366e6806bc06bc7a25fd59641e41445327836" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:721c76e84fe669be19c5791da68232ca2e05ba5185575086e384352e2c309597" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82d8fd25b7f4675d0c47cf95b594d4e7b158aca33b76aa63d07186e13c0e0ab7" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3daeac64d5b371dea99714f08ffc2c208522ec6b06fbc7866a450dd446f5c0f" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dccab8d5fa1ef9bfba0590ecf4d46df048d18ffe3eec01eeb73a42e0d9e7a8ba" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:aaf27faa992bfee0264dc1f03f4c75e9fcdda66a519db6b957a3f826e285cf12" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:eb30abc20df9ab0814b5a2524f23d75dcf83cde762c161917a2b4b7b55b1e518" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:c72fbbe68c6f32f251bdc08b8611c7b3060612236e960ef848e0a517ddbe76c5" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:982bb1e8b4ffda883b3d0a521e23abcd6fd17418f6d2c4118d257a10199c0ce3" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-win32.whl", hash = "sha256:43e0933a0eff183ee85833f341ec567c0980dae57c464d8a508e1b2ceb336471" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:d11b54acf878eef558599658b0ffca78138c8c3655cf4f3a4a673c437e67732e" }, + { file = "charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0" }, + { file = "charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63" }, ] [[package]] @@ -553,6 +505,7 @@ version = "8.1.7" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, @@ -567,6 +520,7 @@ version = "3.1.0" description = "Pickler class to extend the standard pickle.Pickler functionality" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "cloudpickle-3.1.0-py3-none-any.whl", hash = "sha256:fe11acda67f61aaaec473e3afe030feb131d78a43461b718185363384f1ba12e"}, {file = "cloudpickle-3.1.0.tar.gz", hash = "sha256:81a929b6e3c7335c863c771d673d105f02efdb89dfaba0c90495d1c64796601b"}, @@ -578,10 +532,12 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main", "dev"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] +markers = { main = "platform_system == \"Windows\"" } [[package]] name = "comm" @@ -589,6 +545,7 @@ version = "0.2.2" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, @@ -602,87 +559,211 @@ test = ["pytest"] [[package]] name = "coverage" -version = "7.6.4" +version = "7.9.2" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.9" -files = [ - {file = "coverage-7.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f8ae553cba74085db385d489c7a792ad66f7f9ba2ee85bfa508aeb84cf0ba07"}, - {file = "coverage-7.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8165b796df0bd42e10527a3f493c592ba494f16ef3c8b531288e3d0d72c1f6f0"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c8b95bf47db6d19096a5e052ffca0a05f335bc63cef281a6e8fe864d450a72"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ed9281d1b52628e81393f5eaee24a45cbd64965f41857559c2b7ff19385df51"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0809082ee480bb8f7416507538243c8863ac74fd8a5d2485c46f0f7499f2b491"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d541423cdd416b78626b55f123412fcf979d22a2c39fce251b350de38c15c15b"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:58809e238a8a12a625c70450b48e8767cff9eb67c62e6154a642b21ddf79baea"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9b8e184898ed014884ca84c70562b4a82cbc63b044d366fedc68bc2b2f3394a"}, - {file = "coverage-7.6.4-cp310-cp310-win32.whl", hash = "sha256:6bd818b7ea14bc6e1f06e241e8234508b21edf1b242d49831831a9450e2f35fa"}, - {file = "coverage-7.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:06babbb8f4e74b063dbaeb74ad68dfce9186c595a15f11f5d5683f748fa1d172"}, - {file = "coverage-7.6.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:73d2b73584446e66ee633eaad1a56aad577c077f46c35ca3283cd687b7715b0b"}, - {file = "coverage-7.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51b44306032045b383a7a8a2c13878de375117946d68dcb54308111f39775a25"}, - {file = "coverage-7.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3fb02fe73bed561fa12d279a417b432e5b50fe03e8d663d61b3d5990f29546"}, - {file = "coverage-7.6.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed8fe9189d2beb6edc14d3ad19800626e1d9f2d975e436f84e19efb7fa19469b"}, - {file = "coverage-7.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b369ead6527d025a0fe7bd3864e46dbee3aa8f652d48df6174f8d0bac9e26e0e"}, - {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ade3ca1e5f0ff46b678b66201f7ff477e8fa11fb537f3b55c3f0568fbfe6e718"}, - {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:27fb4a050aaf18772db513091c9c13f6cb94ed40eacdef8dad8411d92d9992db"}, - {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4f704f0998911abf728a7783799444fcbbe8261c4a6c166f667937ae6a8aa522"}, - {file = "coverage-7.6.4-cp311-cp311-win32.whl", hash = "sha256:29155cd511ee058e260db648b6182c419422a0d2e9a4fa44501898cf918866cf"}, - {file = "coverage-7.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:8902dd6a30173d4ef09954bfcb24b5d7b5190cf14a43170e386979651e09ba19"}, - {file = "coverage-7.6.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12394842a3a8affa3ba62b0d4ab7e9e210c5e366fbac3e8b2a68636fb19892c2"}, - {file = "coverage-7.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2b6b4c83d8e8ea79f27ab80778c19bc037759aea298da4b56621f4474ffeb117"}, - {file = "coverage-7.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d5b8007f81b88696d06f7df0cb9af0d3b835fe0c8dbf489bad70b45f0e45613"}, - {file = "coverage-7.6.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b57b768feb866f44eeed9f46975f3d6406380275c5ddfe22f531a2bf187eda27"}, - {file = "coverage-7.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5915fcdec0e54ee229926868e9b08586376cae1f5faa9bbaf8faf3561b393d52"}, - {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0b58c672d14f16ed92a48db984612f5ce3836ae7d72cdd161001cc54512571f2"}, - {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2fdef0d83a2d08d69b1f2210a93c416d54e14d9eb398f6ab2f0a209433db19e1"}, - {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8cf717ee42012be8c0cb205dbbf18ffa9003c4cbf4ad078db47b95e10748eec5"}, - {file = "coverage-7.6.4-cp312-cp312-win32.whl", hash = "sha256:7bb92c539a624cf86296dd0c68cd5cc286c9eef2d0c3b8b192b604ce9de20a17"}, - {file = "coverage-7.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:1032e178b76a4e2b5b32e19d0fd0abbce4b58e77a1ca695820d10e491fa32b08"}, - {file = "coverage-7.6.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:023bf8ee3ec6d35af9c1c6ccc1d18fa69afa1cb29eaac57cb064dbb262a517f9"}, - {file = "coverage-7.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0ac3d42cb51c4b12df9c5f0dd2f13a4f24f01943627120ec4d293c9181219ba"}, - {file = "coverage-7.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8fe4984b431f8621ca53d9380901f62bfb54ff759a1348cd140490ada7b693c"}, - {file = "coverage-7.6.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5fbd612f8a091954a0c8dd4c0b571b973487277d26476f8480bfa4b2a65b5d06"}, - {file = "coverage-7.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dacbc52de979f2823a819571f2e3a350a7e36b8cb7484cdb1e289bceaf35305f"}, - {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dab4d16dfef34b185032580e2f2f89253d302facba093d5fa9dbe04f569c4f4b"}, - {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:862264b12ebb65ad8d863d51f17758b1684560b66ab02770d4f0baf2ff75da21"}, - {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5beb1ee382ad32afe424097de57134175fea3faf847b9af002cc7895be4e2a5a"}, - {file = "coverage-7.6.4-cp313-cp313-win32.whl", hash = "sha256:bf20494da9653f6410213424f5f8ad0ed885e01f7e8e59811f572bdb20b8972e"}, - {file = "coverage-7.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:182e6cd5c040cec0a1c8d415a87b67ed01193ed9ad458ee427741c7d8513d963"}, - {file = "coverage-7.6.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a181e99301a0ae128493a24cfe5cfb5b488c4e0bf2f8702091473d033494d04f"}, - {file = "coverage-7.6.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:df57bdbeffe694e7842092c5e2e0bc80fff7f43379d465f932ef36f027179806"}, - {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bcd1069e710600e8e4cf27f65c90c7843fa8edfb4520fb0ccb88894cad08b11"}, - {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99b41d18e6b2a48ba949418db48159d7a2e81c5cc290fc934b7d2380515bd0e3"}, - {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1e54712ba3474f34b7ef7a41e65bd9037ad47916ccb1cc78769bae324c01a"}, - {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53d202fd109416ce011578f321460795abfe10bb901b883cafd9b3ef851bacfc"}, - {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:c48167910a8f644671de9f2083a23630fbf7a1cb70ce939440cd3328e0919f70"}, - {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cc8ff50b50ce532de2fa7a7daae9dd12f0a699bfcd47f20945364e5c31799fef"}, - {file = "coverage-7.6.4-cp313-cp313t-win32.whl", hash = "sha256:b8d3a03d9bfcaf5b0141d07a88456bb6a4c3ce55c080712fec8418ef3610230e"}, - {file = "coverage-7.6.4-cp313-cp313t-win_amd64.whl", hash = "sha256:f3ddf056d3ebcf6ce47bdaf56142af51bb7fad09e4af310241e9db7a3a8022e1"}, - {file = "coverage-7.6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9cb7fa111d21a6b55cbf633039f7bc2749e74932e3aa7cb7333f675a58a58bf3"}, - {file = "coverage-7.6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:11a223a14e91a4693d2d0755c7a043db43d96a7450b4f356d506c2562c48642c"}, - {file = "coverage-7.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a413a096c4cbac202433c850ee43fa326d2e871b24554da8327b01632673a076"}, - {file = "coverage-7.6.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00a1d69c112ff5149cabe60d2e2ee948752c975d95f1e1096742e6077affd376"}, - {file = "coverage-7.6.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f76846299ba5c54d12c91d776d9605ae33f8ae2b9d1d3c3703cf2db1a67f2c0"}, - {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fe439416eb6380de434886b00c859304338f8b19f6f54811984f3420a2e03858"}, - {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0294ca37f1ba500667b1aef631e48d875ced93ad5e06fa665a3295bdd1d95111"}, - {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6f01ba56b1c0e9d149f9ac85a2f999724895229eb36bd997b61e62999e9b0901"}, - {file = "coverage-7.6.4-cp39-cp39-win32.whl", hash = "sha256:bc66f0bf1d7730a17430a50163bb264ba9ded56739112368ba985ddaa9c3bd09"}, - {file = "coverage-7.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:c481b47f6b5845064c65a7bc78bc0860e635a9b055af0df46fdf1c58cebf8e8f"}, - {file = "coverage-7.6.4-pp39.pp310-none-any.whl", hash = "sha256:3c65d37f3a9ebb703e710befdc489a38683a5b152242664b973a7b7b22348a4e"}, - {file = "coverage-7.6.4.tar.gz", hash = "sha256:29fc0f17b1d3fea332f8001d4558f8214af7f1d87a345f3a133c901d60347c73"}, -] - -[package.extras] -toml = ["tomli"] +groups = ["dev"] +files = [ + { file = "coverage-7.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:66283a192a14a3854b2e7f3418d7db05cdf411012ab7ff5db98ff3b181e1f912" }, + { file = "coverage-7.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4e01d138540ef34fcf35c1aa24d06c3de2a4cffa349e29a10056544f35cca15f" }, + { file = "coverage-7.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f22627c1fe2745ee98d3ab87679ca73a97e75ca75eb5faee48660d060875465f" }, + { file = "coverage-7.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b1c2d8363247b46bd51f393f86c94096e64a1cf6906803fa8d5a9d03784bdbf" }, + { file = "coverage-7.9.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c10c882b114faf82dbd33e876d0cbd5e1d1ebc0d2a74ceef642c6152f3f4d547" }, + { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:de3c0378bdf7066c3988d66cd5232d161e933b87103b014ab1b0b4676098fa45" }, + { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1e2f097eae0e5991e7623958a24ced3282676c93c013dde41399ff63e230fcf2" }, + { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:28dc1f67e83a14e7079b6cea4d314bc8b24d1aed42d3582ff89c0295f09b181e" }, + { file = "coverage-7.9.2-cp310-cp310-win32.whl", hash = "sha256:bf7d773da6af9e10dbddacbf4e5cab13d06d0ed93561d44dae0188a42c65be7e" }, + { file = "coverage-7.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:0c0378ba787681ab1897f7c89b415bd56b0b2d9a47e5a3d8dc0ea55aac118d6c" }, + { file = "coverage-7.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a7a56a2964a9687b6aba5b5ced6971af308ef6f79a91043c05dd4ee3ebc3e9ba" }, + { file = "coverage-7.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:123d589f32c11d9be7fe2e66d823a236fe759b0096f5db3fb1b75b2fa414a4fa" }, + { file = "coverage-7.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:333b2e0ca576a7dbd66e85ab402e35c03b0b22f525eed82681c4b866e2e2653a" }, + { file = "coverage-7.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:326802760da234baf9f2f85a39e4a4b5861b94f6c8d95251f699e4f73b1835dc" }, + { file = "coverage-7.9.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19e7be4cfec248df38ce40968c95d3952fbffd57b400d4b9bb580f28179556d2" }, + { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0b4a4cb73b9f2b891c1788711408ef9707666501ba23684387277ededab1097c" }, + { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:2c8937fa16c8c9fbbd9f118588756e7bcdc7e16a470766a9aef912dd3f117dbd" }, + { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:42da2280c4d30c57a9b578bafd1d4494fa6c056d4c419d9689e66d775539be74" }, + { file = "coverage-7.9.2-cp311-cp311-win32.whl", hash = "sha256:14fa8d3da147f5fdf9d298cacc18791818f3f1a9f542c8958b80c228320e90c6" }, + { file = "coverage-7.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:549cab4892fc82004f9739963163fd3aac7a7b0df430669b75b86d293d2df2a7" }, + { file = "coverage-7.9.2-cp311-cp311-win_arm64.whl", hash = "sha256:c2667a2b913e307f06aa4e5677f01a9746cd08e4b35e14ebcde6420a9ebb4c62" }, + { file = "coverage-7.9.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ae9eb07f1cfacd9cfe8eaee6f4ff4b8a289a668c39c165cd0c8548484920ffc0" }, + { file = "coverage-7.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9ce85551f9a1119f02adc46d3014b5ee3f765deac166acf20dbb851ceb79b6f3" }, + { file = "coverage-7.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8f6389ac977c5fb322e0e38885fbbf901743f79d47f50db706e7644dcdcb6e1" }, + { file = "coverage-7.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff0d9eae8cdfcd58fe7893b88993723583a6ce4dfbfd9f29e001922544f95615" }, + { file = "coverage-7.9.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fae939811e14e53ed8a9818dad51d434a41ee09df9305663735f2e2d2d7d959b" }, + { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:31991156251ec202c798501e0a42bbdf2169dcb0f137b1f5c0f4267f3fc68ef9" }, + { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d0d67963f9cbfc7c7f96d4ac74ed60ecbebd2ea6eeb51887af0f8dce205e545f" }, + { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:49b752a2858b10580969ec6af6f090a9a440a64a301ac1528d7ca5f7ed497f4d" }, + { file = "coverage-7.9.2-cp312-cp312-win32.whl", hash = "sha256:88d7598b8ee130f32f8a43198ee02edd16d7f77692fa056cb779616bbea1b355" }, + { file = "coverage-7.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:9dfb070f830739ee49d7c83e4941cc767e503e4394fdecb3b54bfdac1d7662c0" }, + { file = "coverage-7.9.2-cp312-cp312-win_arm64.whl", hash = "sha256:4e2c058aef613e79df00e86b6d42a641c877211384ce5bd07585ed7ba71ab31b" }, + { file = "coverage-7.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:985abe7f242e0d7bba228ab01070fde1d6c8fa12f142e43debe9ed1dde686038" }, + { file = "coverage-7.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82c3939264a76d44fde7f213924021ed31f55ef28111a19649fec90c0f109e6d" }, + { file = "coverage-7.9.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae5d563e970dbe04382f736ec214ef48103d1b875967c89d83c6e3f21706d5b3" }, + { file = "coverage-7.9.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bdd612e59baed2a93c8843c9a7cb902260f181370f1d772f4842987535071d14" }, + { file = "coverage-7.9.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:256ea87cb2a1ed992bcdfc349d8042dcea1b80436f4ddf6e246d6bee4b5d73b6" }, + { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f44ae036b63c8ea432f610534a2668b0c3aee810e7037ab9d8ff6883de480f5b" }, + { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:82d76ad87c932935417a19b10cfe7abb15fd3f923cfe47dbdaa74ef4e503752d" }, + { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:619317bb86de4193debc712b9e59d5cffd91dc1d178627ab2a77b9870deb2868" }, + { file = "coverage-7.9.2-cp313-cp313-win32.whl", hash = "sha256:0a07757de9feb1dfafd16ab651e0f628fd7ce551604d1bf23e47e1ddca93f08a" }, + { file = "coverage-7.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:115db3d1f4d3f35f5bb021e270edd85011934ff97c8797216b62f461dd69374b" }, + { file = "coverage-7.9.2-cp313-cp313-win_arm64.whl", hash = "sha256:48f82f889c80af8b2a7bb6e158d95a3fbec6a3453a1004d04e4f3b5945a02694" }, + { file = "coverage-7.9.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:55a28954545f9d2f96870b40f6c3386a59ba8ed50caf2d949676dac3ecab99f5" }, + { file = "coverage-7.9.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cdef6504637731a63c133bb2e6f0f0214e2748495ec15fe42d1e219d1b133f0b" }, + { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcd5ebe66c7a97273d5d2ddd4ad0ed2e706b39630ed4b53e713d360626c3dbb3" }, + { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9303aed20872d7a3c9cb39c5d2b9bdbe44e3a9a1aecb52920f7e7495410dfab8" }, + { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc18ea9e417a04d1920a9a76fe9ebd2f43ca505b81994598482f938d5c315f46" }, + { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6406cff19880aaaadc932152242523e892faff224da29e241ce2fca329866584" }, + { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2d0d4f6ecdf37fcc19c88fec3e2277d5dee740fb51ffdd69b9579b8c31e4232e" }, + { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c33624f50cf8de418ab2b4d6ca9eda96dc45b2c4231336bac91454520e8d1fac" }, + { file = "coverage-7.9.2-cp313-cp313t-win32.whl", hash = "sha256:1df6b76e737c6a92210eebcb2390af59a141f9e9430210595251fbaf02d46926" }, + { file = "coverage-7.9.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f5fd54310b92741ebe00d9c0d1d7b2b27463952c022da6d47c175d246a98d1bd" }, + { file = "coverage-7.9.2-cp313-cp313t-win_arm64.whl", hash = "sha256:c48c2375287108c887ee87d13b4070a381c6537d30e8487b24ec721bf2a781cb" }, + { file = "coverage-7.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ddc39510ac922a5c4c27849b739f875d3e1d9e590d1e7b64c98dadf037a16cce" }, + { file = "coverage-7.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a535c0c7364acd55229749c2b3e5eebf141865de3a8f697076a3291985f02d30" }, + { file = "coverage-7.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df0f9ef28e0f20c767ccdccfc5ae5f83a6f4a2fbdfbcbcc8487a8a78771168c8" }, + { file = "coverage-7.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f3da12e0ccbcb348969221d29441ac714bbddc4d74e13923d3d5a7a0bebef7a" }, + { file = "coverage-7.9.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a17eaf46f56ae0f870f14a3cbc2e4632fe3771eab7f687eda1ee59b73d09fe4" }, + { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:669135a9d25df55d1ed56a11bf555f37c922cf08d80799d4f65d77d7d6123fcf" }, + { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:9d3a700304d01a627df9db4322dc082a0ce1e8fc74ac238e2af39ced4c083193" }, + { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:71ae8b53855644a0b1579d4041304ddc9995c7b21c8a1f16753c4d8903b4dfed" }, + { file = "coverage-7.9.2-cp39-cp39-win32.whl", hash = "sha256:dd7a57b33b5cf27acb491e890720af45db05589a80c1ffc798462a765be6d4d7" }, + { file = "coverage-7.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:f65bb452e579d5540c8b37ec105dd54d8b9307b07bcaa186818c104ffda22441" }, + { file = "coverage-7.9.2-pp39.pp310.pp311-none-any.whl", hash = "sha256:8a1166db2fb62473285bcb092f586e081e92656c7dfa8e9f62b4d39d7e6b5050" }, + { file = "coverage-7.9.2-py3-none-any.whl", hash = "sha256:e425cd5b00f6fc0ed7cdbd766c70be8baab4b7839e4d4fe5fac48581dd968ea4" }, + { file = "coverage-7.9.2.tar.gz", hash = "sha256:997024fa51e3290264ffd7492ec97d0690293ccd2b45a6cd7d82d945a4a80c8b" }, +] + +[package.extras] +toml = ["tomli ; python_full_version <= \"3.11.0a6\""] + +[[package]] +name = "crc32c" +version = "2.7.1" +description = "A python package implementing the crc32c algorithm in hardware and software" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1fd1f9c6b50d7357736676278a1b8c8986737b8a1c76d7eab4baa71d0b6af67f" }, + { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:805c2be1bc0e251c48439a62b0422385899c15289483692bc70e78473c1039f1" }, + { file = "crc32c-2.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f4333e62b7844dfde112dbb8489fd2970358eddc3310db21e943a9f6994df749" }, + { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f0fadc741e79dc705e2d9ee967473e8a061d26b04310ed739f1ee292f33674f" }, + { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91ced31055d26d59385d708bbd36689e1a1d604d4b0ceb26767eb5a83156f85d" }, + { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36ffa999b72e3c17f6a066ae9e970b40f8c65f38716e436c39a33b809bc6ed9f" }, + { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e80114dd7f462297e54d5da1b9ff472e5249c5a2b406aa51c371bb0edcbf76bd" }, + { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:676f5b46da268b5190f9fb91b3f037a00d114b411313664438525db876adc71f" }, + { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8d0e660c9ed269e90692993a4457a932fc22c9cc96caf79dd1f1a84da85bb312" }, + { file = "crc32c-2.7.1-cp310-cp310-win32.whl", hash = "sha256:17a2c3f8c6d85b04b5511af827b5dbbda4e672d188c0b9f20a8156e93a1aa7b6" }, + { file = "crc32c-2.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3208764c29688f91a35392073229975dd7687b6cb9f76b919dae442cabcd5126" }, + { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:19e03a50545a3ef400bd41667d5525f71030488629c57d819e2dd45064f16192" }, + { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c03286b1e5ce9bed7090084f206aacd87c5146b4b10de56fe9e86cbbbf851cf" }, + { file = "crc32c-2.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:80ebbf144a1a56a532b353e81fa0f3edca4f4baa1bf92b1dde2c663a32bb6a15" }, + { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96b794fd11945298fdd5eb1290a812efb497c14bc42592c5c992ca077458eeba" }, + { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9df7194dd3c0efb5a21f5d70595b7a8b4fd9921fbbd597d6d8e7a11eca3e2d27" }, + { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d698eec444b18e296a104d0b9bb6c596c38bdcb79d24eba49604636e9d747305" }, + { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e07cf10ef852d219d179333fd706d1c415626f1f05e60bd75acf0143a4d8b225" }, + { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d2a051f296e6e92e13efee3b41db388931cdb4a2800656cd1ed1d9fe4f13a086" }, + { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1738259802978cdf428f74156175da6a5fdfb7256f647fdc0c9de1bc6cd7173" }, + { file = "crc32c-2.7.1-cp311-cp311-win32.whl", hash = "sha256:f7786d219a1a1bf27d0aa1869821d11a6f8e90415cfffc1e37791690d4a848a1" }, + { file = "crc32c-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:887f6844bb3ad35f0778cd10793ad217f7123a5422e40041231b8c4c7329649d" }, + { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f7d1c4e761fe42bf856130daf8b2658df33fe0ced3c43dadafdfeaa42b57b950" }, + { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:73361c79a6e4605204457f19fda18b042a94508a52e53d10a4239da5fb0f6a34" }, + { file = "crc32c-2.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:afd778fc8ac0ed2ffbfb122a9aa6a0e409a8019b894a1799cda12c01534493e0" }, + { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56ef661b34e9f25991fface7f9ad85e81bbc1b3fe3b916fd58c893eabe2fa0b8" }, + { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:571aa4429444b5d7f588e4377663592145d2d25eb1635abb530f1281794fc7c9" }, + { file = "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" }, + { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:99d17637c4867672cb8adeea007294e3c3df9d43964369516cfe2c1f47ce500a" }, + { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f4a400ac3c69a32e180d8753fd7ec7bccb80ade7ab0812855dce8a208e72495f" }, + { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:588587772e55624dd9c7a906ec9e8773ae0b6ac5e270fc0bc84ee2758eba90d5" }, + { file = "crc32c-2.7.1-cp312-cp312-win32.whl", hash = "sha256:9f14b60e5a14206e8173dd617fa0c4df35e098a305594082f930dae5488da428" }, + { file = "crc32c-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:7c810a246660a24dc818047dc5f89c7ce7b2814e1e08a8e99993f4103f7219e8" }, + { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:24949bffb06fc411cc18188d33357923cb935273642164d0bb37a5f375654169" }, + { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2d5d326e7e118d4fa60187770d86b66af2fdfc63ce9eeb265f0d3e7d49bebe0b" }, + { file = "crc32c-2.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba110df60c64c8e2d77a9425b982a520ccdb7abe42f06604f4d98a45bb1fff62" }, + { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c277f9d16a3283e064d54854af0976b72abaa89824955579b2b3f37444f89aae" }, + { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:881af0478a01331244e27197356929edbdeaef6a9f81b5c6bacfea18d2139289" }, + { file = "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" }, + { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2416c4d88696ac322632555c0f81ab35e15f154bc96055da6cf110d642dbc10" }, + { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:60254251b88ec9b9795215f0f9ec015a6b5eef8b2c5fba1267c672d83c78fc02" }, + { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:edefc0e46f3c37372183f70338e5bdee42f6789b62fcd36ec53aa933e9dfbeaf" }, + { file = "crc32c-2.7.1-cp313-cp313-win32.whl", hash = "sha256:813af8111218970fe2adb833c5e5239f091b9c9e76f03b4dd91aaba86e99b499" }, + { file = "crc32c-2.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:7d9ede7be8e4ec1c9e90aaf6884decbeef10e3473e6ddac032706d710cab5888" }, + { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:db9ac92294284b22521356715784b91cc9094eee42a5282ab281b872510d1831" }, + { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8fcd7f2f29a30dc92af64a9ee3d38bde0c82bd20ad939999427aac94bbd87373" }, + { file = "crc32c-2.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5c056ef043393085523e149276a7ce0cb534b872e04f3e20d74d9a94a75c0ad7" }, + { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03a92551a343702629af91f78d205801219692b6909f8fa126b830e332bfb0e0" }, + { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb9424ec1a8ca54763155a703e763bcede82e6569fe94762614bb2de1412d4e1" }, + { file = "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" }, + { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:57a20dfc27995f568f64775eea2bbb58ae269f1a1144561df5e4a4955f79db32" }, + { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:f7186d098bfd2cff25eac6880b7c7ad80431b90610036131c1c7dd0eab42a332" }, + { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:55a77e29a265418fa34bef15bd0f2c60afae5348988aaf35ed163b4bbf93cf37" }, + { file = "crc32c-2.7.1-cp313-cp313t-win32.whl", hash = "sha256:ae38a4b6aa361595d81cab441405fbee905c72273e80a1c010fb878ae77ac769" }, + { file = "crc32c-2.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:eee2a43b663feb6c79a6c1c6e5eae339c2b72cfac31ee54ec0209fa736cf7ee5" }, + { file = "crc32c-2.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:04a56e9f4995559fa86bcf5d0ed5c48505a36e2be1c41d70cae5c080d9a00b74" }, + { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88c5c9c21cd9fff593bb7dfe97d3287438c8aecbcc73d227f2366860a0663521" }, + { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:595146cb94ba0055301d273113add2af5859b467db41b50367f47870c2d0a81c" }, + { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9f3792872f1320961f33aaf0198edea371aee393bcc221fab66d10ecffd77d" }, + { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:999a40d75cd1696e779f6f99c29fa52be777197d1d9e3ae69cb919a05a369c1e" }, + { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:eff485526172cee7e6d1fa9c23913f92c7d38ab05674b0b578767c7b693faf5d" }, + { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:541dac90c64ed9ce05f85a71066567e854c1b40743a01d83fa2c66419a2e97b6" }, + { file = "crc32c-2.7.1-cp37-cp37m-win32.whl", hash = "sha256:7138ec26e79100c4cf4294ef40027a1cff26a1e23b7e5eb70efe5d7ff37cbc66" }, + { file = "crc32c-2.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:35a3ed12ac2e2551a07d246b7e6512ac39db021e006205a40c1cfd32ea73fcc3" }, + { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af062f11aea283b7e9c95f3a97fb6bb96ac08a9063f71621c2140237df141ada" }, + { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8f25ca521ecf7cccfff0ecae4d0538b5c0c7235d27bf098241f3e2bf86aed713" }, + { file = "crc32c-2.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1410bcd909be36ccbf8a52c45e4bddca77adfd4e80789ac3cd575c024086516d" }, + { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33fc8cb32f82685ebefd078e740925ea9da37a008ed5f43b68fc8324f8ca4a37" }, + { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad3dc6283ce53ad7d1dc5775003460110ab7eebf348efebe0486a531b28f8184" }, + { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:758ead20e122496764ae50db26bb90fb47fc4b6d242c8e99e87c3f1dae1f1dce" }, + { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e436d9044bbd51936f7aeb8b322543c516bf22371a17970a370a10af1661fa54" }, + { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:47e5be99057264b603e3cd88cf091985f33c16d3c8609f1c83ed6e72ec4179b4" }, + { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:280509210e622a236f16f031856847fd0d6704df662d7209da819ccfb40c6167" }, + { file = "crc32c-2.7.1-cp38-cp38-win32.whl", hash = "sha256:4ab48e048cfa123a9f9bdc5d4d687a3461723132c749c721a6d358605e6d470d" }, + { file = "crc32c-2.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:65471d1b1b6e10a404ca8200a4271d5bc0a552c3f5dcd943c1c7835f766ea02d" }, + { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:39ca842586084bca24f9c4ab43e2d99191b1186b2f89b2122b470d0730254d1b" }, + { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a911abc33d453b3f171a3200b1e18b3fc39c204670b5b0a353cca99e4c664332" }, + { file = "crc32c-2.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:22a72e81ec08a7ece6a35ac68d1ed32dd4a8be7949b164db88d4b4a4bade5c5a" }, + { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54d6f8c5be6815eabd6e3e90fa0bc13045183a6aa33a30dd684eb0f062b92213" }, + { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c855726d71dee7ae25f81c6b54293455fc66802f34d334d22bea1f6ce8bc21c" }, + { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98d5f7fc364bb9c4c4123d149406fbee063f2e8c2cff19a12f13e50faa146237" }, + { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:51ffba582c95a281e5a3f71eacdafc96b9a1835ddae245385639458fff197034" }, + { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3950d3c340c9d70889630ef81fba8666abfd0cf0aa19fd9c3a55634e0b383b0f" }, + { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:522fba1770aad8f7eb189f21fca591a51d96dcc749859088f462281324aec30b" }, + { file = "crc32c-2.7.1-cp39-cp39-win32.whl", hash = "sha256:812723e222b6a9fe0562554d72f4f072c3a95720c60ee500984e7d0e568caac3" }, + { file = "crc32c-2.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:6793fcfe9d4130230d196abbe4021c01ffe8e85c92633bf3c8559f9836c227f5" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:2e83fedebcdeb80c19e76b7a0e5103528bb062521c40702bf34516a429e81df3" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30004a7383538ef93bda9b22f7b3805bc0aa5625ab2675690e1b676b19417d4b" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a01b0983aa87f517c12418f9898ecf2083bf86f4ea04122e053357c3edb0d73f" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb2b963c42128b38872e9ed63f04a73ce1ff89a1dfad7ea38add6fe6296497b8" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cdd5e576fee5d255c1e68a4dae4420f21e57e6f05900b38d5ae47c713fc3330d" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:79f0ff50863aeb441fbfa87e9db6542ddfe3e941189dece832b0af2e454dbab0" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cd27a1e400d77e9872fa1303e8f9d30bd050df35ee4858354ce0b59f8227d32" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:274739b3e1591bd4b7ec98764f2f79c6fbcc0f7d7676d5f17369832fe14ee4f0" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:050f52045b4a033a245e0ee4357e1a793de5af6496c82250ef13d8cb90a21e20" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ceb4ca126f75694bda020a307221563d3c522719c0acedcc81ffb985b4867c94" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:eabefe7a6fb5dfc6318fb35f4d98893baef17ebda9b311498e870526d32168e7" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:217edd9ba8c5f0c3ad60c82a11fa78f01162fa106fd7f5d17175dac6bf1eedf9" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15d640d9d4aa213aec6c837f602081a17d1522f8cd78b52334b62ee27b083410" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:519878822bf9bdead63c25a5e4bdc26d2eae9da6056f92b9b5f3023c08f1d016" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:2bf69cfa4c3ea9f060fe06db00b7e34f771c83f73dd2c3568c2c9019479e34c2" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e89d51c90f6730b67b12c97d49099ba18d0fdce18541fab94d2be95d1c939adb" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:488a0feba1bb005d0dd2f702c1da4849d083e88d82cd27b83ac2d2d93af80755" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:919262b7a12ef63f222ec19c0e092f39268802652e11669315257ae6249ec79f" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4181240f6080c38eec9dd1539cd23a304a12100d3f4ffe43234f32064fae5ef0" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fedde1e53507d0ede1980e8109442edd108c04ab100abcd5145c274820dacd4f" }, + { file = "crc32c-2.7.1.tar.gz", hash = "sha256:f91b144a21eef834d64178e01982bb9179c354b3e9e5f4c803b0e5096384968c" }, +] [[package]] name = "dask" -version = "2024.10.0" +version = "2025.7.0" description = "Parallel PyData with Task Scheduling" optional = false python-versions = ">=3.10" +groups = ["main"] files = [ - {file = "dask-2024.10.0-py3-none-any.whl", hash = "sha256:1ddc27c7967e134b4f8296a488521485a5ac4927cc63e2abfa0b24227b93217f"}, - {file = "dask-2024.10.0.tar.gz", hash = "sha256:dfd3efec5d8d8340fb647d0347637133030cad261b714623cc27de286e9db037"}, + { file = "dask-2025.7.0-py3-none-any.whl", hash = "sha256:073c29c4e99c2400a39a8a67874f35c1d15bf7af9ae3d0c30af3c7c1199f24ae" }, + { file = "dask-2025.7.0.tar.gz", hash = "sha256:c3a0d4e78882e85ea81dbc71e6459713e45676e2d17e776c2f3f19848039e4cf" }, ] [package.dependencies] @@ -697,55 +778,57 @@ toolz = ">=0.10.0" [package.extras] array = ["numpy (>=1.24)"] complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=14.0.1)"] -dataframe = ["dask-expr (>=1.1,<1.2)", "dask[array]", "pandas (>=2.0)"] +dataframe = ["dask[array]", "pandas (>=2.0)", "pyarrow (>=14.0.1)"] diagnostics = ["bokeh (>=3.1.0)", "jinja2 (>=2.10.3)"] -distributed = ["distributed (==2024.10.0)"] -test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] +distributed = ["distributed (==2025.7.0)"] +test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] [[package]] name = "debugpy" -version = "1.8.7" +version = "1.8.15" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" -files = [ - {file = "debugpy-1.8.7-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:95fe04a573b8b22896c404365e03f4eda0ce0ba135b7667a1e57bd079793b96b"}, - {file = "debugpy-1.8.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:628a11f4b295ffb4141d8242a9bb52b77ad4a63a2ad19217a93be0f77f2c28c9"}, - {file = "debugpy-1.8.7-cp310-cp310-win32.whl", hash = "sha256:85ce9c1d0eebf622f86cc68618ad64bf66c4fc3197d88f74bb695a416837dd55"}, - {file = "debugpy-1.8.7-cp310-cp310-win_amd64.whl", hash = "sha256:29e1571c276d643757ea126d014abda081eb5ea4c851628b33de0c2b6245b037"}, - {file = "debugpy-1.8.7-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:caf528ff9e7308b74a1749c183d6808ffbedbb9fb6af78b033c28974d9b8831f"}, - {file = "debugpy-1.8.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cba1d078cf2e1e0b8402e6bda528bf8fda7ccd158c3dba6c012b7897747c41a0"}, - {file = "debugpy-1.8.7-cp311-cp311-win32.whl", hash = "sha256:171899588bcd412151e593bd40d9907133a7622cd6ecdbdb75f89d1551df13c2"}, - {file = "debugpy-1.8.7-cp311-cp311-win_amd64.whl", hash = "sha256:6e1c4ffb0c79f66e89dfd97944f335880f0d50ad29525dc792785384923e2211"}, - {file = "debugpy-1.8.7-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:4d27d842311353ede0ad572600c62e4bcd74f458ee01ab0dd3a1a4457e7e3706"}, - {file = "debugpy-1.8.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:703c1fd62ae0356e194f3e7b7a92acd931f71fe81c4b3be2c17a7b8a4b546ec2"}, - {file = "debugpy-1.8.7-cp312-cp312-win32.whl", hash = "sha256:2f729228430ef191c1e4df72a75ac94e9bf77413ce5f3f900018712c9da0aaca"}, - {file = "debugpy-1.8.7-cp312-cp312-win_amd64.whl", hash = "sha256:45c30aaefb3e1975e8a0258f5bbd26cd40cde9bfe71e9e5a7ac82e79bad64e39"}, - {file = "debugpy-1.8.7-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:d050a1ec7e925f514f0f6594a1e522580317da31fbda1af71d1530d6ea1f2b40"}, - {file = "debugpy-1.8.7-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2f4349a28e3228a42958f8ddaa6333d6f8282d5edaea456070e48609c5983b7"}, - {file = "debugpy-1.8.7-cp313-cp313-win32.whl", hash = "sha256:11ad72eb9ddb436afb8337891a986302e14944f0f755fd94e90d0d71e9100bba"}, - {file = "debugpy-1.8.7-cp313-cp313-win_amd64.whl", hash = "sha256:2efb84d6789352d7950b03d7f866e6d180284bc02c7e12cb37b489b7083d81aa"}, - {file = "debugpy-1.8.7-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:4b908291a1d051ef3331484de8e959ef3e66f12b5e610c203b5b75d2725613a7"}, - {file = "debugpy-1.8.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da8df5b89a41f1fd31503b179d0a84a5fdb752dddd5b5388dbd1ae23cda31ce9"}, - {file = "debugpy-1.8.7-cp38-cp38-win32.whl", hash = "sha256:b12515e04720e9e5c2216cc7086d0edadf25d7ab7e3564ec8b4521cf111b4f8c"}, - {file = "debugpy-1.8.7-cp38-cp38-win_amd64.whl", hash = "sha256:93176e7672551cb5281577cdb62c63aadc87ec036f0c6a486f0ded337c504596"}, - {file = "debugpy-1.8.7-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:90d93e4f2db442f8222dec5ec55ccfc8005821028982f1968ebf551d32b28907"}, - {file = "debugpy-1.8.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6db2a370e2700557a976eaadb16243ec9c91bd46f1b3bb15376d7aaa7632c81"}, - {file = "debugpy-1.8.7-cp39-cp39-win32.whl", hash = "sha256:a6cf2510740e0c0b4a40330640e4b454f928c7b99b0c9dbf48b11efba08a8cda"}, - {file = "debugpy-1.8.7-cp39-cp39-win_amd64.whl", hash = "sha256:6a9d9d6d31846d8e34f52987ee0f1a904c7baa4912bf4843ab39dadf9b8f3e0d"}, - {file = "debugpy-1.8.7-py2.py3-none-any.whl", hash = "sha256:57b00de1c8d2c84a61b90880f7e5b6deaf4c312ecbde3a0e8912f2a56c4ac9ae"}, - {file = "debugpy-1.8.7.zip", hash = "sha256:18b8f731ed3e2e1df8e9cdaa23fb1fc9c24e570cd0081625308ec51c82efe42e"}, +groups = ["dev"] +files = [ + { file = "debugpy-1.8.15-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e9a8125c85172e3ec30985012e7a81ea5e70bbb836637f8a4104f454f9b06c97" }, + { file = "debugpy-1.8.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fd0b6b5eccaa745c214fd240ea82f46049d99ef74b185a3517dad3ea1ec55d9" }, + { file = "debugpy-1.8.15-cp310-cp310-win32.whl", hash = "sha256:8181cce4d344010f6bfe94a531c351a46a96b0f7987750932b2908e7a1e14a55" }, + { file = "debugpy-1.8.15-cp310-cp310-win_amd64.whl", hash = "sha256:af2dcae4e4cd6e8b35f982ccab29fe65f7e8766e10720a717bc80c464584ee21" }, + { file = "debugpy-1.8.15-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:babc4fb1962dd6a37e94d611280e3d0d11a1f5e6c72ac9b3d87a08212c4b6dd3" }, + { file = "debugpy-1.8.15-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f778e68f2986a58479d0ac4f643e0b8c82fdd97c2e200d4d61e7c2d13838eb53" }, + { file = "debugpy-1.8.15-cp311-cp311-win32.whl", hash = "sha256:f9d1b5abd75cd965e2deabb1a06b0e93a1546f31f9f621d2705e78104377c702" }, + { file = "debugpy-1.8.15-cp311-cp311-win_amd64.whl", hash = "sha256:62954fb904bec463e2b5a415777f6d1926c97febb08ef1694da0e5d1463c5c3b" }, + { file = "debugpy-1.8.15-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:3dcc7225cb317469721ab5136cda9ff9c8b6e6fb43e87c9e15d5b108b99d01ba" }, + { file = "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" }, + { file = "debugpy-1.8.15-cp312-cp312-win32.whl", hash = "sha256:b08e9b0bc260cf324c890626961dad4ffd973f7568fbf57feb3c3a65ab6b6327" }, + { file = "debugpy-1.8.15-cp312-cp312-win_amd64.whl", hash = "sha256:e2a4fe357c92334272eb2845fcfcdbec3ef9f22c16cf613c388ac0887aed15fa" }, + { file = "debugpy-1.8.15-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:f5e01291ad7d6649aed5773256c5bba7a1a556196300232de1474c3c372592bf" }, + { file = "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" }, + { file = "debugpy-1.8.15-cp313-cp313-win32.whl", hash = "sha256:fcf0748d4f6e25f89dc5e013d1129ca6f26ad4da405e0723a4f704583896a709" }, + { file = "debugpy-1.8.15-cp313-cp313-win_amd64.whl", hash = "sha256:73c943776cb83e36baf95e8f7f8da765896fd94b05991e7bc162456d25500683" }, + { file = "debugpy-1.8.15-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:054cd4935bd2e4964dfe1aeee4d6bca89d0c833366776fc35387f8a2f517dd00" }, + { file = "debugpy-1.8.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21c4288e662997df3176c4b9d93ee1393913fbaf320732be332d538000c53208" }, + { file = "debugpy-1.8.15-cp38-cp38-win32.whl", hash = "sha256:aaa8ce6a37d764f93fe583d7c6ca58eb7550b36941387483db113125f122bb0d" }, + { file = "debugpy-1.8.15-cp38-cp38-win_amd64.whl", hash = "sha256:71cdf7f676af78e70f005c7fad2ef9da0edc2a24befbf3ab146a51f0d58048c2" }, + { file = "debugpy-1.8.15-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:085b6d0adb3eb457c2823ac497a0690b10a99eff8b01c01a041e84579f114b56" }, + { file = "debugpy-1.8.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd546a405381d17527814852642df0a74b7da8acc20ae5f3cfad0b7c86419511" }, + { file = "debugpy-1.8.15-cp39-cp39-win32.whl", hash = "sha256:ae0d445fe11ff4351428e6c2389e904e1cdcb4a47785da5a5ec4af6c5b95fce5" }, + { file = "debugpy-1.8.15-cp39-cp39-win_amd64.whl", hash = "sha256:de7db80189ca97ab4b10a87e4039cfe4dd7ddfccc8f33b5ae40fcd33792fc67a" }, + { file = "debugpy-1.8.15-py2.py3-none-any.whl", hash = "sha256:bce2e6c5ff4f2e00b98d45e7e01a49c7b489ff6df5f12d881c67d2f1ac635f3d" }, + { file = "debugpy-1.8.15.tar.gz", hash = "sha256:58d7a20b7773ab5ee6bdfb2e6cf622fdf1e40c9d5aef2857d85391526719ac00" }, ] [[package]] name = "decorator" -version = "5.1.1" +version = "5.2.1" description = "Decorators for Humans" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, - {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, + { file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a" }, + { file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360" }, ] [[package]] @@ -754,6 +837,7 @@ version = "0.7.1" description = "XML bomb protection for Python stdlib modules" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] files = [ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, @@ -761,60 +845,60 @@ files = [ [[package]] name = "distlib" -version = "0.3.9" +version = "0.4.0" description = "Distribution utilities" optional = false python-versions = "*" +groups = ["dev"] files = [ - {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, - {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, + { file = "distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16" }, + { file = "distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d" }, ] [[package]] -name = "docutils" -version = "0.21.2" -description = "Docutils -- Python Documentation Utilities" +name = "donfig" +version = "0.8.1.post1" +description = "Python package for configuring a python package" optional = false -python-versions = ">=3.9" +python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2"}, - {file = "docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f"}, + { file = "donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d" }, + { file = "donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52" }, ] +[package.dependencies] +pyyaml = "*" + +[package.extras] +docs = ["cloudpickle", "numpydoc", "pytest", "sphinx (>=4.0.0)"] +test = ["cloudpickle", "pytest"] + [[package]] name = "executing" -version = "2.1.0" +version = "2.2.0" description = "Get the currently executing AST node of a frame, and other information" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf"}, - {file = "executing-2.1.0.tar.gz", hash = "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab"}, + { file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa" }, + { file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755" }, ] [package.extras] -tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] - -[[package]] -name = "fasteners" -version = "0.19" -description = "A python package that provides useful locks" -optional = false -python-versions = ">=3.6" -files = [ - {file = "fasteners-0.19-py3-none-any.whl", hash = "sha256:758819cb5d94cdedf4e836988b74de396ceacb8e2794d21f82d131fd9ee77237"}, - {file = "fasteners-0.19.tar.gz", hash = "sha256:b4f37c3ac52d8a445af3a66bce57b33b5e90b97c696b7b984f530cf8f0ded09c"}, -] +tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich ; python_version >= \"3.11\""] [[package]] name = "fastjsonschema" -version = "2.20.0" +version = "2.21.1" description = "Fastest Python implementation of JSON schema" optional = false python-versions = "*" +groups = ["dev"] files = [ - {file = "fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a"}, - {file = "fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23"}, + { file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667" }, + { file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4" }, ] [package.extras] @@ -822,29 +906,31 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc [[package]] name = "filelock" -version = "3.16.1" +version = "3.18.0" description = "A platform independent file lock." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, - {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, + { file = "filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de" }, + { file = "filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2" }, ] [package.extras] -docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] -typing = ["typing-extensions (>=4.12.2)"] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] +typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] [[package]] name = "fqdn" -version = "1.5.1" -description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers" +version = "1.4.0" +description = "Validate fully-qualified domain names compliant to RFC 1035 and the preferred form in RFC 3686 s. 2." optional = false -python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" +python-versions = "*" +groups = ["dev"] files = [ - {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"}, - {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"}, + { file = "fqdn-1.4.0-py3-none-any.whl", hash = "sha256:e935616ae81c9c60a22267593fe8e6af68cecc68549cc71bb9bfbcbbcb383386" }, + { file = "fqdn-1.4.0.tar.gz", hash = "sha256:30e8f2e685ce87cdace4712fd97c5d09f5e6fa519bbb66e8f188f6a7cb3a5c4e" }, ] [[package]] @@ -853,6 +939,7 @@ version = "2024.10.0" description = "File-system specification" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "fsspec-2024.10.0-py3-none-any.whl", hash = "sha256:03b9a6785766a4de40368b88906366755e2819e758b83705c88cd7cb5fe81871"}, {file = "fsspec-2024.10.0.tar.gz", hash = "sha256:eda2d8a4116d4f2429db8550f2457da57279247dd930bb12f821b58391359493"}, @@ -886,31 +973,66 @@ test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask-expr", "dask[dataframe, test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard"] tqdm = ["tqdm"] +[[package]] +name = "ghp-import" +version = "2.1.0" +description = "Copy your docs directly to the gh-pages branch." +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + { file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343" }, + { file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619" }, +] + +[package.dependencies] +python-dateutil = ">=2.8.1" + +[package.extras] +dev = ["flake8", "markdown", "twine", "wheel"] + +[[package]] +name = "griffe" +version = "1.7.3" +description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "griffe-1.7.3-py3-none-any.whl", hash = "sha256:c6b3ee30c2f0f17f30bcdef5068d6ab7a2a4f1b8bf1a3e74b56fffd21e1c5f75" }, + { file = "griffe-1.7.3.tar.gz", hash = "sha256:52ee893c6a3a968b639ace8015bec9d36594961e156e23315c8e8e51401fa50b" }, +] + +[package.dependencies] +colorama = ">=0.4" + [[package]] name = "h11" -version = "0.14.0" +version = "0.16.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, + { file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86" }, + { file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1" }, ] [[package]] name = "httpcore" -version = "1.0.6" +version = "1.0.9" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, - {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, + { file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55" }, + { file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8" }, ] [package.dependencies] certifi = "*" -h11 = ">=0.13,<0.15" +h11 = ">=0.16" [package.extras] asyncio = ["anyio (>=4.0,<5.0)"] @@ -920,13 +1042,14 @@ trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" -version = "0.27.2" +version = "0.28.1" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, - {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, + { file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad" }, + { file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc" }, ] [package.dependencies] @@ -934,10 +1057,9 @@ anyio = "*" certifi = "*" httpcore = "==1.*" idna = "*" -sniffio = "*" [package.extras] -brotli = ["brotli", "brotlicffi"] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] @@ -945,13 +1067,14 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "identify" -version = "2.6.1" +version = "2.6.12" description = "File identification library for Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "identify-2.6.1-py2.py3-none-any.whl", hash = "sha256:53863bcac7caf8d2ed85bd20312ea5dcfc22226800f6d6881f232d861db5a8f0"}, - {file = "identify-2.6.1.tar.gz", hash = "sha256:91478c5fb7c3aac5ff7bf9b4344f803843dc586832d5f110d672b19aa1984c98"}, + { file = "identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2" }, + { file = "identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6" }, ] [package.extras] @@ -963,6 +1086,7 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -971,23 +1095,13 @@ files = [ [package.extras] all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] -[[package]] -name = "imagesize" -version = "1.4.1" -description = "Getting image size from png/jpeg/jpeg2000/gif file" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, - {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, -] - [[package]] name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, @@ -999,6 +1113,7 @@ version = "6.29.5" description = "IPython Kernel for Jupyter" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, @@ -1028,57 +1143,69 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio [[package]] name = "ipython" -version = "8.29.0" +version = "9.4.0" description = "IPython: Productive Interactive Computing" optional = false -python-versions = ">=3.10" +python-versions = ">=3.11" +groups = ["dev"] files = [ - {file = "ipython-8.29.0-py3-none-any.whl", hash = "sha256:0188a1bd83267192123ccea7f4a8ed0a78910535dbaa3f37671dca76ebd429c8"}, - {file = "ipython-8.29.0.tar.gz", hash = "sha256:40b60e15b22591450eef73e40a027cf77bd652e757523eebc5bd7c7c498290eb"}, + { file = "ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066" }, + { file = "ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270" }, ] [package.dependencies] colorama = {version = "*", markers = "sys_platform == \"win32\""} decorator = "*" +ipython-pygments-lexers = "*" jedi = ">=0.16" matplotlib-inline = "*" pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} -prompt-toolkit = ">=3.0.41,<3.1.0" +prompt_toolkit = ">=3.0.41,<3.1.0" pygments = ">=2.4.0" -stack-data = "*" +stack_data = "*" traitlets = ">=5.13.0" [package.extras] -all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"] +all = ["ipython[doc,matplotlib,test,test-extra]"] black = ["black"] -doc = ["docrepr", "exceptiongroup", "intersphinx-registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli", "typing-extensions"] -kernel = ["ipykernel"] +doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinx_toml (==0.0.4)", "typing_extensions"] matplotlib = ["matplotlib"] -nbconvert = ["nbconvert"] -nbformat = ["nbformat"] -notebook = ["ipywidgets", "notebook"] -parallel = ["ipyparallel"] -qtconsole = ["qtconsole"] -test = ["packaging", "pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"] -test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"] +test = ["packaging", "pytest", "pytest-asyncio (<0.22)", "testpath"] +test-extra = ["curio", "ipykernel", "ipython[test]", "jupyter_ai", "matplotlib (!=3.2.0)", "nbclient", "nbformat", "numpy (>=1.23)", "pandas", "trio"] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +description = "Defines a variety of Pygments lexers for highlighting IPython code." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c" }, + { file = "ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81" }, +] + +[package.dependencies] +pygments = "*" [[package]] name = "ipywidgets" -version = "8.1.5" +version = "8.1.7" description = "Jupyter interactive widgets" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ - {file = "ipywidgets-8.1.5-py3-none-any.whl", hash = "sha256:3290f526f87ae6e77655555baba4f36681c555b8bdbbff430b70e52c34c86245"}, - {file = "ipywidgets-8.1.5.tar.gz", hash = "sha256:870e43b1a35656a80c18c9503bbf2d16802db1cb487eec6fab27d683381dde17"}, + { file = "ipywidgets-8.1.7-py3-none-any.whl", hash = "sha256:764f2602d25471c213919b8a1997df04bef869251db4ca8efba1b76b1bd9f7bb" }, + { file = "ipywidgets-8.1.7.tar.gz", hash = "sha256:15f1ac050b9ccbefd45dccfbb2ef6bed0029d8278682d569d71b8dd96bee0376" }, ] [package.dependencies] comm = ">=0.1.3" ipython = ">=6.1.0" -jupyterlab-widgets = ">=3.0.12,<3.1.0" +jupyterlab_widgets = ">=3.0.15,<3.1.0" traitlets = ">=4.3.1" -widgetsnbextension = ">=4.0.12,<4.1.0" +widgetsnbextension = ">=4.0.14,<4.1.0" [package.extras] test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] @@ -1089,6 +1216,7 @@ version = "20.11.0" description = "Operations with ISO 8601 durations" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, @@ -1099,32 +1227,34 @@ arrow = ">=0.15.0" [[package]] name = "jedi" -version = "0.19.1" +version = "0.19.2" description = "An autocompletion tool for Python that can be used for text editors." optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ - {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"}, - {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, + { file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9" }, + { file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0" }, ] [package.dependencies] -parso = ">=0.8.3,<0.9.0" +parso = ">=0.8.4,<0.9.0" [package.extras] docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] +testing = ["Django", "attrs", "colorama", "docopt", "pytest (<9.0.0)"] [[package]] name = "jinja2" -version = "3.1.4" +version = "3.1.6" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, + { file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67" }, + { file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d" }, ] [package.dependencies] @@ -1135,21 +1265,26 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "json5" -version = "0.9.25" +version = "0.12.0" description = "A Python implementation of the JSON5 data format." optional = false -python-versions = ">=3.8" +python-versions = ">=3.8.0" +groups = ["dev"] files = [ - {file = "json5-0.9.25-py3-none-any.whl", hash = "sha256:34ed7d834b1341a86987ed52f3f76cd8ee184394906b6e22a1e0deb9ab294e8f"}, - {file = "json5-0.9.25.tar.gz", hash = "sha256:548e41b9be043f9426776f05df8635a00fe06104ea51ed24b67f908856e151ae"}, + { file = "json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db" }, + { file = "json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a" }, ] +[package.extras] +dev = ["build (==1.2.2.post1)", "coverage (==7.5.4) ; python_version < \"3.9\"", "coverage (==7.8.0) ; python_version >= \"3.9\"", "mypy (==1.14.1) ; python_version < \"3.9\"", "mypy (==1.15.0) ; python_version >= \"3.9\"", "pip (==25.0.1)", "pylint (==3.2.7) ; python_version < \"3.9\"", "pylint (==3.3.6) ; python_version >= \"3.9\"", "ruff (==0.11.2)", "twine (==6.1.0)", "uv (==0.6.11)"] + [[package]] name = "jsonpointer" version = "3.0.0" description = "Identify specific nodes in a JSON document (RFC 6901)" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, @@ -1157,13 +1292,14 @@ files = [ [[package]] name = "jsonschema" -version = "4.23.0" +version = "4.25.0" description = "An implementation of JSON Schema validation for Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, - {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, + { file = "jsonschema-4.25.0-py3-none-any.whl", hash = "sha256:24c2e8da302de79c8b9382fee3e76b355e44d2a4364bb207159ce10b517bd716" }, + { file = "jsonschema-4.25.0.tar.gz", hash = "sha256:e63acf5c11762c0e6672ffb61482bdf57f0876684d8d249c0fe2d730d48bc55f" }, ] [package.dependencies] @@ -1176,23 +1312,25 @@ jsonschema-specifications = ">=2023.03.6" referencing = ">=0.28.4" rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} +rfc3987-syntax = { version = ">=1.1.0", optional = true, markers = "extra == \"format-nongpl\"" } rpds-py = ">=0.7.1" uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} webcolors = {version = ">=24.6.0", optional = true, markers = "extra == \"format-nongpl\""} [package.extras] format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] -format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=24.6.0)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "rfc3987-syntax (>=1.1.0)", "uri-template", "webcolors (>=24.6.0)"] [[package]] name = "jsonschema-specifications" -version = "2024.10.1" +version = "2025.4.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf"}, - {file = "jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272"}, + { file = "jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af" }, + { file = "jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608" }, ] [package.dependencies] @@ -1204,6 +1342,7 @@ version = "1.1.1" description = "Jupyter metapackage. Install all the Jupyter components in one go." optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83"}, {file = "jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a"}, @@ -1223,6 +1362,7 @@ version = "8.6.3" description = "Jupyter protocol implementation and client libraries" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, @@ -1237,7 +1377,7 @@ traitlets = ">=5.3" [package.extras] docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] +test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko ; sys_platform == \"win32\"", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] [[package]] name = "jupyter-console" @@ -1245,6 +1385,7 @@ version = "6.6.3" description = "Jupyter terminal console" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"}, {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"}, @@ -1265,13 +1406,14 @@ test = ["flaky", "pexpect", "pytest"] [[package]] name = "jupyter-core" -version = "5.7.2" +version = "5.8.1" description = "Jupyter core package. A base package on which Jupyter projects rely." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, - {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, + { file = "jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0" }, + { file = "jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941" }, ] [package.dependencies] @@ -1280,22 +1422,24 @@ pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_ traitlets = ">=5.3" [package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] -test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout"] +docs = ["intersphinx-registry", "myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-spelling", "traitlets"] +test = ["ipykernel", "pre-commit", "pytest (<9)", "pytest-cov", "pytest-timeout"] [[package]] name = "jupyter-events" -version = "0.10.0" +version = "0.12.0" description = "Jupyter Event System library" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "jupyter_events-0.10.0-py3-none-any.whl", hash = "sha256:4b72130875e59d57716d327ea70d3ebc3af1944d3717e5a498b8a06c6c159960"}, - {file = "jupyter_events-0.10.0.tar.gz", hash = "sha256:670b8229d3cc882ec782144ed22e0d29e1c2d639263f92ca8383e66682845e22"}, + { file = "jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb" }, + { file = "jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b" }, ] [package.dependencies] jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]} +packaging = "*" python-json-logger = ">=2.0.4" pyyaml = ">=5.3" referencing = "*" @@ -1305,32 +1449,34 @@ traitlets = ">=5.3" [package.extras] cli = ["click", "rich"] -docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"] +docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme (>=0.16)", "sphinx (>=8)", "sphinxcontrib-spelling"] test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"] [[package]] name = "jupyter-lsp" -version = "2.2.5" +version = "2.2.6" description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001"}, - {file = "jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da"}, + { file = "jupyter_lsp-2.2.6-py3-none-any.whl", hash = "sha256:283783752bf0b459ee7fa88effa72104d87dd343b82d5c06cf113ef755b15b6d" }, + { file = "jupyter_lsp-2.2.6.tar.gz", hash = "sha256:0566bd9bb04fd9e6774a937ed01522b555ba78be37bebef787c8ab22de4c0361" }, ] [package.dependencies] -jupyter-server = ">=1.1.2" +jupyter_server = ">=1.1.2" [[package]] name = "jupyter-server" -version = "2.14.2" +version = "2.16.0" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "jupyter_server-2.14.2-py3-none-any.whl", hash = "sha256:47ff506127c2f7851a17bf4713434208fc490955d0e8632e95014a9a9afbeefd"}, - {file = "jupyter_server-2.14.2.tar.gz", hash = "sha256:66095021aa9638ced276c248b1d81862e4c50f292d575920bbe960de1c56b12b"}, + { file = "jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e" }, + { file = "jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6" }, ] [package.dependencies] @@ -1339,7 +1485,7 @@ argon2-cffi = ">=21.1" jinja2 = ">=3.0.3" jupyter-client = ">=7.4.4" jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -jupyter-events = ">=0.9.0" +jupyter-events = ">=0.11.0" jupyter-server-terminals = ">=0.4.4" nbconvert = ">=6.4.4" nbformat = ">=5.3.0" @@ -1364,6 +1510,7 @@ version = "0.5.3" description = "A Jupyter Server Extension Providing Terminals." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, @@ -1379,13 +1526,14 @@ test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (> [[package]] name = "jupyterlab" -version = "4.2.5" +version = "4.4.4" description = "JupyterLab computational environment" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "jupyterlab-4.2.5-py3-none-any.whl", hash = "sha256:73b6e0775d41a9fee7ee756c80f58a6bed4040869ccc21411dc559818874d321"}, - {file = "jupyterlab-4.2.5.tar.gz", hash = "sha256:ae7f3a1b8cb88b4f55009ce79fa7c06f99d70cd63601ee4aa91815d054f46f75"}, + { file = "jupyterlab-4.4.4-py3-none-any.whl", hash = "sha256:711611e4f59851152eb93316c3547c3ec6291f16bb455f1f4fa380d25637e0dd" }, + { file = "jupyterlab-4.4.4.tar.gz", hash = "sha256:163fee1ef702e0a057f75d2eed3ed1da8a986d59eb002cbeb6f0c2779e6cd153" }, ] [package.dependencies] @@ -1399,14 +1547,14 @@ jupyter-server = ">=2.4.0,<3" jupyterlab-server = ">=2.27.1,<3" notebook-shim = ">=0.2" packaging = "*" -setuptools = ">=40.1.0" +setuptools = ">=41.1.0" tornado = ">=6.2.0" traitlets = "*" [package.extras] -dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.3.5)"] -docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<7.3.0)", "sphinx-copybutton"] -docs-screenshots = ["altair (==5.3.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.2)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.1.post2)", "matplotlib (==3.8.3)", "nbconvert (>=7.0.0)", "pandas (==2.2.1)", "scipy (==1.12.0)", "vega-datasets (==0.9.0)"] +dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.11.4)"] +docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<8.2.0)", "sphinx-copybutton"] +docs-screenshots = ["altair (==5.5.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.5)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.3.post1)", "matplotlib (==3.10.0)", "nbconvert (>=7.0.0)", "pandas (==2.2.3)", "scipy (==1.15.1)", "vega-datasets (==0.9.0)"] test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)", "pyyaml-include (<3.0)", "tomli-w (<2.0)"] @@ -1416,6 +1564,7 @@ version = "0.3.0" description = "Pygments theme using JupyterLab CSS variables" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, @@ -1427,6 +1576,7 @@ version = "2.27.3" description = "A set of server components for JupyterLab and JupyterLab like applications." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4"}, {file = "jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4"}, @@ -1448,49 +1598,61 @@ test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-v [[package]] name = "jupyterlab-widgets" -version = "3.0.13" +version = "3.0.15" description = "Jupyter interactive widgets for JupyterLab" optional = false python-versions = ">=3.7" +groups = ["dev"] +files = [ + { file = "jupyterlab_widgets-3.0.15-py3-none-any.whl", hash = "sha256:d59023d7d7ef71400d51e6fee9a88867f6e65e10a4201605d2d7f3e8f012a31c" }, + { file = "jupyterlab_widgets-3.0.15.tar.gz", hash = "sha256:2920888a0c2922351a9202817957a68c07d99673504d6cd37345299e971bb08b" }, +] + +[[package]] +name = "lark" +version = "1.2.2" +description = "a modern parsing library" +optional = false +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "jupyterlab_widgets-3.0.13-py3-none-any.whl", hash = "sha256:e3cda2c233ce144192f1e29914ad522b2f4c40e77214b0cc97377ca3d323db54"}, - {file = "jupyterlab_widgets-3.0.13.tar.gz", hash = "sha256:a2966d385328c1942b683a8cd96b89b8dd82c8b8f81dda902bb2bc06d46f5bed"}, + { file = "lark-1.2.2-py3-none-any.whl", hash = "sha256:c2276486b02f0f1b90be155f2c8ba4a8e194d42775786db622faccd652d8e80c" }, + { file = "lark-1.2.2.tar.gz", hash = "sha256:ca807d0162cd16cef15a8feecb862d7319e7a09bdb13aef927968e45040fed80" }, ] +[package.extras] +atomic-cache = ["atomicwrites"] +interegular = ["interegular (>=0.3.1,<0.4.0)"] +nearley = ["js2py"] +regex = ["regex"] + [[package]] name = "locket" version = "1.0.0" description = "File-based locks for Python on Linux and Windows" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["main"] files = [ {file = "locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3"}, {file = "locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632"}, ] [[package]] -name = "markdown-it-py" -version = "3.0.0" -description = "Python port of markdown-it. Markdown parsing, done right!" +name = "markdown" +version = "3.8.2" +description = "Python implementation of John Gruber's Markdown." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, - {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, + { file = "markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24" }, + { file = "markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45" }, ] -[package.dependencies] -mdurl = ">=0.1,<1.0" - [package.extras] -benchmarking = ["psutil", "pytest", "pytest-benchmark"] -code-style = ["pre-commit (>=3.0,<4.0)"] -compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] -linkify = ["linkify-it-py (>=1,<3)"] -plugins = ["mdit-py-plugins"] -profiling = ["gprof2dot"] -rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] -testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] +docs = ["mdx_gh_links (>=0.2)", "mkdocs (>=1.6)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] +testing = ["coverage", "pyyaml"] [[package]] name = "markupsafe" @@ -1498,6 +1660,7 @@ version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, @@ -1568,6 +1731,7 @@ version = "0.1.7" description = "Inline Matplotlib backend for Jupyter" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, @@ -1577,144 +1741,255 @@ files = [ traitlets = "*" [[package]] -name = "mdit-py-plugins" -version = "0.4.2" -description = "Collection of plugins for markdown-it-py" +name = "mergedeep" +version = "1.3.4" +description = "A deep merge function for 🐍." +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + { file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307" }, + { file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8" }, +] + +[[package]] +name = "mistune" +version = "3.1.3" +description = "A sane and fast Markdown parser with useful plugins and renderers" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "mdit_py_plugins-0.4.2-py3-none-any.whl", hash = "sha256:0c673c3f889399a33b95e88d2f0d111b4447bdfea7f237dab2d488f459835636"}, - {file = "mdit_py_plugins-0.4.2.tar.gz", hash = "sha256:5f2cd1fdb606ddf152d37ec30e46101a60512bc0e5fa1a7002c36647b09e26b5"}, + { file = "mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9" }, + { file = "mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0" }, +] + +[[package]] +name = "mkdocs" +version = "1.6.1" +description = "Project documentation with Markdown." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e" }, + { file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2" }, ] [package.dependencies] -markdown-it-py = ">=1.0.0,<4.0.0" +click = ">=7.0" +colorama = { version = ">=0.4", markers = "platform_system == \"Windows\"" } +ghp-import = ">=1.0" +jinja2 = ">=2.11.1" +markdown = ">=3.3.6" +markupsafe = ">=2.0.1" +mergedeep = ">=1.3.4" +mkdocs-get-deps = ">=0.2.0" +packaging = ">=20.5" +pathspec = ">=0.11.1" +pyyaml = ">=5.1" +pyyaml-env-tag = ">=0.1" +watchdog = ">=2.0" [package.extras] -code-style = ["pre-commit"] -rtd = ["myst-parser", "sphinx-book-theme"] -testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] +i18n = ["babel (>=2.9.0)"] +min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4) ; platform_system == \"Windows\"", "ghp-import (==1.0)", "importlib-metadata (==4.4) ; python_version < \"3.10\"", "jinja2 (==2.11.1)", "markdown (==3.3.6)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "mkdocs-get-deps (==0.2.0)", "packaging (==20.5)", "pathspec (==0.11.1)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "watchdog (==2.0)"] [[package]] -name = "mdurl" -version = "0.1.2" -description = "Markdown URL utilities" +name = "mkdocs-autorefs" +version = "1.4.2" +description = "Automatically link across pages in MkDocs." optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, - {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, + { file = "mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13" }, + { file = "mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749" }, ] +[package.dependencies] +Markdown = ">=3.3" +markupsafe = ">=2.0.1" +mkdocs = ">=1.1" + [[package]] -name = "mistune" -version = "3.0.2" -description = "A sane and fast Markdown parser with useful plugins and renderers" +name = "mkdocs-get-deps" +version = "0.2.0" +description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"}, - {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"}, + { file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134" }, + { file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c" }, ] +[package.dependencies] +mergedeep = ">=1.3.4" +platformdirs = ">=2.2.0" +pyyaml = ">=5.1" + [[package]] -name = "mypy" -version = "1.13.0" -description = "Optional static typing for Python" +name = "mkdocs-material" +version = "9.6.15" +description = "Documentation that simply works" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"}, - {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"}, - {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"}, - {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"}, - {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"}, - {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"}, - {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"}, - {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"}, - {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"}, - {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"}, - {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"}, - {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"}, - {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"}, - {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"}, - {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"}, - {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"}, - {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"}, - {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"}, - {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"}, - {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"}, - {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"}, - {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"}, - {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"}, - {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"}, - {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"}, - {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"}, - {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"}, - {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"}, - {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"}, - {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"}, - {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"}, - {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"}, -] - -[package.dependencies] -mypy-extensions = ">=1.0.0" -typing-extensions = ">=4.6.0" + { file = "mkdocs_material-9.6.15-py3-none-any.whl", hash = "sha256:ac969c94d4fe5eb7c924b6d2f43d7db41159ea91553d18a9afc4780c34f2717a" }, + { file = "mkdocs_material-9.6.15.tar.gz", hash = "sha256:64adf8fa8dba1a17905b6aee1894a5aafd966d4aeb44a11088519b0f5ca4f1b5" }, +] + +[package.dependencies] +babel = ">=2.10,<3.0" +backrefs = ">=5.7.post1,<6.0" +colorama = ">=0.4,<1.0" +jinja2 = ">=3.1,<4.0" +markdown = ">=3.2,<4.0" +mkdocs = ">=1.6,<2.0" +mkdocs-material-extensions = ">=1.3,<2.0" +paginate = ">=0.5,<1.0" +pygments = ">=2.16,<3.0" +pymdown-extensions = ">=10.2,<11.0" +requests = ">=2.26,<3.0" [package.extras] -dmypy = ["psutil (>=4.0)"] -faster-cache = ["orjson"] -install-types = ["pip"] -mypyc = ["setuptools (>=50)"] -reports = ["lxml"] +git = ["mkdocs-git-committers-plugin-2 (>=1.1,<3)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] +imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] +recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] [[package]] -name = "mypy-extensions" -version = "1.0.0" -description = "Type system extensions for programs checked with the mypy type checker." +name = "mkdocs-material-extensions" +version = "1.3.1" +description = "Extension pack for Python Markdown and MkDocs Material." optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, + { file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31" }, + { file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443" }, ] [[package]] -name = "myst-parser" -version = "4.0.0" -description = "An extended [CommonMark](https://spec.commonmark.org/) compliant parser," +name = "mkdocstrings" +version = "0.29.1" +description = "Automatic documentation from sources, for MkDocs." optional = false -python-versions = ">=3.10" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "myst_parser-4.0.0-py3-none-any.whl", hash = "sha256:b9317997552424448c6096c2558872fdb6f81d3ecb3a40ce84a7518798f3f28d"}, - {file = "myst_parser-4.0.0.tar.gz", hash = "sha256:851c9dfb44e36e56d15d05e72f02b80da21a9e0d07cba96baf5e2d476bb91531"}, + { file = "mkdocstrings-0.29.1-py3-none-any.whl", hash = "sha256:37a9736134934eea89cbd055a513d40a020d87dfcae9e3052c2a6b8cd4af09b6" }, + { file = "mkdocstrings-0.29.1.tar.gz", hash = "sha256:8722f8f8c5cd75da56671e0a0c1bbed1df9946c0cef74794d6141b34011abd42" }, ] [package.dependencies] -docutils = ">=0.19,<0.22" -jinja2 = "*" -markdown-it-py = ">=3.0,<4.0" -mdit-py-plugins = ">=0.4.1,<1.0" -pyyaml = "*" -sphinx = ">=7,<9" +Jinja2 = ">=2.11.1" +Markdown = ">=3.6" +MarkupSafe = ">=1.1" +mkdocs = ">=1.6" +mkdocs-autorefs = ">=1.4" +mkdocstrings-python = { version = ">=1.16.2", optional = true, markers = "extra == \"python\"" } +pymdown-extensions = ">=6.3" [package.extras] -code-style = ["pre-commit (>=3.0,<4.0)"] -linkify = ["linkify-it-py (>=2.0,<3.0)"] -rtd = ["ipython", "sphinx (>=7)", "sphinx-autodoc2 (>=0.5.0,<0.6.0)", "sphinx-book-theme (>=1.1,<2.0)", "sphinx-copybutton", "sphinx-design", "sphinx-pyscript", "sphinx-tippy (>=0.4.3)", "sphinx-togglebutton", "sphinxext-opengraph (>=0.9.0,<0.10.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)"] -testing = ["beautifulsoup4", "coverage[toml]", "defusedxml", "pytest (>=8,<9)", "pytest-cov", "pytest-param-files (>=0.6.0,<0.7.0)", "pytest-regressions", "sphinx-pytest"] -testing-docutils = ["pygments", "pytest (>=8,<9)", "pytest-param-files (>=0.6.0,<0.7.0)"] +crystal = ["mkdocstrings-crystal (>=0.3.4)"] +python = ["mkdocstrings-python (>=1.16.2)"] +python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] + +[[package]] +name = "mkdocstrings-python" +version = "1.16.12" +description = "A Python handler for mkdocstrings." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "mkdocstrings_python-1.16.12-py3-none-any.whl", hash = "sha256:22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374" }, + { file = "mkdocstrings_python-1.16.12.tar.gz", hash = "sha256:9b9eaa066e0024342d433e332a41095c4e429937024945fea511afe58f63175d" }, +] + +[package.dependencies] +griffe = ">=1.6.2" +mkdocs-autorefs = ">=1.4" +mkdocstrings = ">=0.28.3" + +[[package]] +name = "mypy" +version = "1.17.0" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "mypy-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8e08de6138043108b3b18f09d3f817a4783912e48828ab397ecf183135d84d6" }, + { file = "mypy-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce4a17920ec144647d448fc43725b5873548b1aae6c603225626747ededf582d" }, + { file = "mypy-1.17.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ff25d151cc057fdddb1cb1881ef36e9c41fa2a5e78d8dd71bee6e4dcd2bc05b" }, + { file = "mypy-1.17.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93468cf29aa9a132bceb103bd8475f78cacde2b1b9a94fd978d50d4bdf616c9a" }, + { file = "mypy-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:98189382b310f16343151f65dd7e6867386d3e35f7878c45cfa11383d175d91f" }, + { file = "mypy-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:c004135a300ab06a045c1c0d8e3f10215e71d7b4f5bb9a42ab80236364429937" }, + { file = "mypy-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9d4fe5c72fd262d9c2c91c1117d16aac555e05f5beb2bae6a755274c6eec42be" }, + { file = "mypy-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96b196e5c16f41b4f7736840e8455958e832871990c7ba26bf58175e357ed61" }, + { file = "mypy-1.17.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:73a0ff2dd10337ceb521c080d4147755ee302dcde6e1a913babd59473904615f" }, + { file = "mypy-1.17.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:24cfcc1179c4447854e9e406d3af0f77736d631ec87d31c6281ecd5025df625d" }, + { file = "mypy-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3c56f180ff6430e6373db7a1d569317675b0a451caf5fef6ce4ab365f5f2f6c3" }, + { file = "mypy-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:eafaf8b9252734400f9b77df98b4eee3d2eecab16104680d51341c75702cad70" }, + { file = "mypy-1.17.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f986f1cab8dbec39ba6e0eaa42d4d3ac6686516a5d3dccd64be095db05ebc6bb" }, + { file = "mypy-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:51e455a54d199dd6e931cd7ea987d061c2afbaf0960f7f66deef47c90d1b304d" }, + { file = "mypy-1.17.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3204d773bab5ff4ebbd1f8efa11b498027cd57017c003ae970f310e5b96be8d8" }, + { file = "mypy-1.17.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1051df7ec0886fa246a530ae917c473491e9a0ba6938cfd0ec2abc1076495c3e" }, + { file = "mypy-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f773c6d14dcc108a5b141b4456b0871df638eb411a89cd1c0c001fc4a9d08fc8" }, + { file = "mypy-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:1619a485fd0e9c959b943c7b519ed26b712de3002d7de43154a489a2d0fd817d" }, + { file = "mypy-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c41aa59211e49d717d92b3bb1238c06d387c9325d3122085113c79118bebb06" }, + { file = "mypy-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e69db1fb65b3114f98c753e3930a00514f5b68794ba80590eb02090d54a5d4a" }, + { file = "mypy-1.17.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:03ba330b76710f83d6ac500053f7727270b6b8553b0423348ffb3af6f2f7b889" }, + { file = "mypy-1.17.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:037bc0f0b124ce46bfde955c647f3e395c6174476a968c0f22c95a8d2f589bba" }, + { file = "mypy-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c38876106cb6132259683632b287238858bd58de267d80defb6f418e9ee50658" }, + { file = "mypy-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:d30ba01c0f151998f367506fab31c2ac4527e6a7b2690107c7a7f9e3cb419a9c" }, + { file = "mypy-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:63e751f1b5ab51d6f3d219fe3a2fe4523eaa387d854ad06906c63883fde5b1ab" }, + { file = "mypy-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7fb09d05e0f1c329a36dcd30e27564a3555717cde87301fae4fb542402ddfad" }, + { file = "mypy-1.17.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b72c34ce05ac3a1361ae2ebb50757fb6e3624032d91488d93544e9f82db0ed6c" }, + { file = "mypy-1.17.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:434ad499ad8dde8b2f6391ddfa982f41cb07ccda8e3c67781b1bfd4e5f9450a8" }, + { file = "mypy-1.17.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f105f61a5eff52e137fd73bee32958b2add9d9f0a856f17314018646af838e97" }, + { file = "mypy-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:ba06254a5a22729853209550d80f94e28690d5530c661f9416a68ac097b13fc4" }, + { file = "mypy-1.17.0-py3-none-any.whl", hash = "sha256:15d9d0018237ab058e5de3d8fce61b6fa72cc59cc78fd91f1b474bce12abf496" }, + { file = "mypy-1.17.0.tar.gz", hash = "sha256:e5d7ccc08ba089c06e2f5629c660388ef1fee708444f1dee0b9203fa031dee03" }, +] + +[package.dependencies] +mypy_extensions = ">=1.0.0" +pathspec = ">=0.9.0" +typing_extensions = ">=4.6.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +faster-cache = ["orjson"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505" }, + { file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558" }, +] [[package]] name = "nbclient" -version = "0.10.0" +version = "0.10.2" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." optional = false -python-versions = ">=3.8.0" +python-versions = ">=3.9.0" +groups = ["dev"] files = [ - {file = "nbclient-0.10.0-py3-none-any.whl", hash = "sha256:f13e3529332a1f1f81d82a53210322476a168bb7090a0289c795fe9cc11c9d3f"}, - {file = "nbclient-0.10.0.tar.gz", hash = "sha256:4b3f1b7dba531e498449c4db4f53da339c91d449dc11e9af3a43b4eb5c5abb09"}, + { file = "nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d" }, + { file = "nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193" }, ] [package.dependencies] @@ -1725,23 +2000,24 @@ traitlets = ">=5.4" [package.extras] dev = ["pre-commit"] -docs = ["autodoc-traits", "mock", "moto", "myst-parser", "nbclient[test]", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling"] -test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] +docs = ["autodoc-traits", "flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "mock", "moto", "myst-parser", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling", "testpath", "xmltodict"] +test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] [[package]] name = "nbconvert" -version = "7.16.4" +version = "7.16.6" description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "nbconvert-7.16.4-py3-none-any.whl", hash = "sha256:05873c620fe520b6322bf8a5ad562692343fe3452abda5765c7a34b7d1aa3eb3"}, - {file = "nbconvert-7.16.4.tar.gz", hash = "sha256:86ca91ba266b0a448dc96fa6c5b9d98affabde2867b363258703536807f9f7f4"}, + { file = "nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b" }, + { file = "nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582" }, ] [package.dependencies] beautifulsoup4 = "*" -bleach = "!=5.0.0" +bleach = { version = "!=5.0.0", extras = ["css"] } defusedxml = "*" jinja2 = ">=3.0" jupyter-core = ">=4.7" @@ -1753,7 +2029,6 @@ nbformat = ">=5.7" packaging = "*" pandocfilters = ">=1.4.1" pygments = ">=2.4.1" -tinycss2 = "*" traitlets = ">=5.1" [package.extras] @@ -1771,6 +2046,7 @@ version = "5.10.4" description = "The Jupyter Notebook format" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, @@ -1792,6 +2068,7 @@ version = "1.6.0" description = "Patch asyncio to allow nested event loops" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, @@ -1803,6 +2080,7 @@ version = "1.7.2" description = "Provides an object-oriented python interface to the netCDF version 4 library" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "netCDF4-1.7.2-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:5e9b485e3bd9294d25ff7dc9addefce42b3d23c1ee7e3627605277d159819392"}, {file = "netCDF4-1.7.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:118b476fd00d7e3ab9aa7771186d547da645ae3b49c0c7bdab866793ebf22f07"}, @@ -1850,6 +2128,7 @@ version = "1.9.1" description = "Node.js virtual environment builder" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] files = [ {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, @@ -1857,18 +2136,19 @@ files = [ [[package]] name = "notebook" -version = "7.2.2" +version = "7.4.4" description = "Jupyter Notebook - A web-based notebook environment for interactive computing" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "notebook-7.2.2-py3-none-any.whl", hash = "sha256:c89264081f671bc02eec0ed470a627ed791b9156cad9285226b31611d3e9fe1c"}, - {file = "notebook-7.2.2.tar.gz", hash = "sha256:2ef07d4220421623ad3fe88118d687bc0450055570cdd160814a59cf3a1c516e"}, + { file = "notebook-7.4.4-py3-none-any.whl", hash = "sha256:32840f7f777b6bff79bb101159336e9b332bdbfba1495b8739e34d1d65cbc1c0" }, + { file = "notebook-7.4.4.tar.gz", hash = "sha256:392fd501e266f2fb3466c6fcd3331163a2184968cb5c5accf90292e01dfe528c" }, ] [package.dependencies] jupyter-server = ">=2.4.0,<3" -jupyterlab = ">=4.2.0,<4.3" +jupyterlab = ">=4.4.4,<4.5" jupyterlab-server = ">=2.27.1,<3" notebook-shim = ">=0.2,<0.3" tornado = ">=6.2.0" @@ -1876,7 +2156,7 @@ tornado = ">=6.2.0" [package.extras] dev = ["hatch", "pre-commit"] docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] +test = ["importlib-resources (>=5.0) ; python_version < \"3.10\"", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] [[package]] name = "notebook-shim" @@ -1884,6 +2164,7 @@ version = "0.2.4" description = "A shim layer for notebook traits and config" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, @@ -1897,101 +2178,103 @@ test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync" [[package]] name = "numcodecs" -version = "0.13.1" +version = "0.16.1" description = "A Python package providing buffer compression and transformation codecs for use in data storage and communication applications." optional = false -python-versions = ">=3.10" -files = [ - {file = "numcodecs-0.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:96add4f783c5ce57cc7e650b6cac79dd101daf887c479a00a29bc1487ced180b"}, - {file = "numcodecs-0.13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:237b7171609e868a20fd313748494444458ccd696062f67e198f7f8f52000c15"}, - {file = "numcodecs-0.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96e42f73c31b8c24259c5fac6adba0c3ebf95536e37749dc6c62ade2989dca28"}, - {file = "numcodecs-0.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:eda7d7823c9282e65234731fd6bd3986b1f9e035755f7fed248d7d366bb291ab"}, - {file = "numcodecs-0.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2eda97dd2f90add98df6d295f2c6ae846043396e3d51a739ca5db6c03b5eb666"}, - {file = "numcodecs-0.13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2a86f5367af9168e30f99727ff03b27d849c31ad4522060dde0bce2923b3a8bc"}, - {file = "numcodecs-0.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233bc7f26abce24d57e44ea8ebeb5cd17084690b4e7409dd470fdb75528d615f"}, - {file = "numcodecs-0.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:796b3e6740107e4fa624cc636248a1580138b3f1c579160f260f76ff13a4261b"}, - {file = "numcodecs-0.13.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5195bea384a6428f8afcece793860b1ab0ae28143c853f0b2b20d55a8947c917"}, - {file = "numcodecs-0.13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3501a848adaddce98a71a262fee15cd3618312692aa419da77acd18af4a6a3f6"}, - {file = "numcodecs-0.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2230484e6102e5fa3cc1a5dd37ca1f92dfbd183d91662074d6f7574e3e8f53"}, - {file = "numcodecs-0.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:e5db4824ebd5389ea30e54bc8aeccb82d514d28b6b68da6c536b8fa4596f4bca"}, - {file = "numcodecs-0.13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7a60d75179fd6692e301ddfb3b266d51eb598606dcae7b9fc57f986e8d65cb43"}, - {file = "numcodecs-0.13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f593c7506b0ab248961a3b13cb148cc6e8355662ff124ac591822310bc55ecf"}, - {file = "numcodecs-0.13.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80d3071465f03522e776a31045ddf2cfee7f52df468b977ed3afdd7fe5869701"}, - {file = "numcodecs-0.13.1-cp313-cp313-win_amd64.whl", hash = "sha256:90d3065ae74c9342048ae0046006f99dcb1388b7288da5a19b3bddf9c30c3176"}, - {file = "numcodecs-0.13.1.tar.gz", hash = "sha256:a3cf37881df0898f3a9c0d4477df88133fe85185bffe57ba31bcc2fa207709bc"}, -] - -[package.dependencies] -numpy = ">=1.7" +python-versions = ">=3.11" +groups = ["main"] +files = [ + { file = "numcodecs-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5348a25aefbce37ea7c00c3363d36176155233c95597e5905a932e9620df960d" }, + { file = "numcodecs-0.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2058b0a985470809c720d2457758b61e6c9495a49d5f20dfac9b5ebabd8848eb" }, + { file = "numcodecs-0.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b216b6d7bc207b85d41fddbc25b09fd00d76e265454db6e3fb09d5da0216397" }, + { file = "numcodecs-0.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2308d56c4f84a5b942f8668b4adedd3d9cdd6a22e6e6e20768ec356c77050f38" }, + { file = "numcodecs-0.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:acd8d68b4b815e62cb91e6064a53dac51ee99849350784ee16dd52cdbb4bc70f" }, + { file = "numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122" }, + { file = "numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458" }, + { file = "numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40" }, + { file = "numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609" }, + { file = "numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df" }, + { file = "numcodecs-0.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2ad8ee940315f59188accfc3f2d39726a4ca0d76b49bf8d0018e121f01c49028" }, + { file = "numcodecs-0.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:179ca7bf3525a0f7379df7767d87dd495253de44597cb7e511198b28b09da633" }, + { file = "numcodecs-0.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e2babbb50bf348ae982818d5560af330eab0dcd925fb0e49509785ad57d11db" }, + { file = "numcodecs-0.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4b29d8d3284b72bfad4fb83d672a17f497ae86ee1ef8087bac7222b620d3d91" }, + { file = "numcodecs-0.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:06489635f43e1a959aea73cb830d78cf3adb07ac5f34daccb92091e4d9ac6b07" }, + { file = "numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1" }, +] + +[package.dependencies] +crc32c = { version = ">=2.7", optional = true, markers = "extra == \"crc32c\"" } +numpy = ">=1.24" +typing_extensions = "*" [package.extras] -docs = ["mock", "numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-issues"] +crc32c = ["crc32c (>=2.7)"] +docs = ["numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-issues"] msgpack = ["msgpack"] -pcodec = ["pcodec (>=0.2.0)"] +pcodec = ["pcodec (>=0.3,<0.4)"] test = ["coverage", "pytest", "pytest-cov"] -test-extras = ["importlib-metadata"] -zfpy = ["numpy (<2.0.0)", "zfpy (>=1.0.0)"] +test-extras = ["importlib_metadata"] +zfpy = ["zfpy (>=1.0.0)"] [[package]] name = "numpy" -version = "2.1.2" +version = "2.3.1" description = "Fundamental package for array computing in Python" optional = false -python-versions = ">=3.10" -files = [ - {file = "numpy-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:30d53720b726ec36a7f88dc873f0eec8447fbc93d93a8f079dfac2629598d6ee"}, - {file = "numpy-2.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8d3ca0a72dd8846eb6f7dfe8f19088060fcb76931ed592d29128e0219652884"}, - {file = "numpy-2.1.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:fc44e3c68ff00fd991b59092a54350e6e4911152682b4782f68070985aa9e648"}, - {file = "numpy-2.1.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:7c1c60328bd964b53f8b835df69ae8198659e2b9302ff9ebb7de4e5a5994db3d"}, - {file = "numpy-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cdb606a7478f9ad91c6283e238544451e3a95f30fb5467fbf715964341a8a86"}, - {file = "numpy-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d666cb72687559689e9906197e3bec7b736764df6a2e58ee265e360663e9baf7"}, - {file = "numpy-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c6eef7a2dbd0abfb0d9eaf78b73017dbfd0b54051102ff4e6a7b2980d5ac1a03"}, - {file = "numpy-2.1.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:12edb90831ff481f7ef5f6bc6431a9d74dc0e5ff401559a71e5e4611d4f2d466"}, - {file = "numpy-2.1.2-cp310-cp310-win32.whl", hash = "sha256:a65acfdb9c6ebb8368490dbafe83c03c7e277b37e6857f0caeadbbc56e12f4fb"}, - {file = "numpy-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:860ec6e63e2c5c2ee5e9121808145c7bf86c96cca9ad396c0bd3e0f2798ccbe2"}, - {file = "numpy-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b42a1a511c81cc78cbc4539675713bbcf9d9c3913386243ceff0e9429ca892fe"}, - {file = "numpy-2.1.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:faa88bc527d0f097abdc2c663cddf37c05a1c2f113716601555249805cf573f1"}, - {file = "numpy-2.1.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:c82af4b2ddd2ee72d1fc0c6695048d457e00b3582ccde72d8a1c991b808bb20f"}, - {file = "numpy-2.1.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:13602b3174432a35b16c4cfb5de9a12d229727c3dd47a6ce35111f2ebdf66ff4"}, - {file = "numpy-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ebec5fd716c5a5b3d8dfcc439be82a8407b7b24b230d0ad28a81b61c2f4659a"}, - {file = "numpy-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2b49c3c0804e8ecb05d59af8386ec2f74877f7ca8fd9c1e00be2672e4d399b1"}, - {file = "numpy-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2cbba4b30bf31ddbe97f1c7205ef976909a93a66bb1583e983adbd155ba72ac2"}, - {file = "numpy-2.1.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8e00ea6fc82e8a804433d3e9cedaa1051a1422cb6e443011590c14d2dea59146"}, - {file = "numpy-2.1.2-cp311-cp311-win32.whl", hash = "sha256:5006b13a06e0b38d561fab5ccc37581f23c9511879be7693bd33c7cd15ca227c"}, - {file = "numpy-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:f1eb068ead09f4994dec71c24b2844f1e4e4e013b9629f812f292f04bd1510d9"}, - {file = "numpy-2.1.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d7bf0a4f9f15b32b5ba53147369e94296f5fffb783db5aacc1be15b4bf72f43b"}, - {file = "numpy-2.1.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b1d0fcae4f0949f215d4632be684a539859b295e2d0cb14f78ec231915d644db"}, - {file = "numpy-2.1.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f751ed0a2f250541e19dfca9f1eafa31a392c71c832b6bb9e113b10d050cb0f1"}, - {file = "numpy-2.1.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:bd33f82e95ba7ad632bc57837ee99dba3d7e006536200c4e9124089e1bf42426"}, - {file = "numpy-2.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b8cde4f11f0a975d1fd59373b32e2f5a562ade7cde4f85b7137f3de8fbb29a0"}, - {file = "numpy-2.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d95f286b8244b3649b477ac066c6906fbb2905f8ac19b170e2175d3d799f4df"}, - {file = "numpy-2.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ab4754d432e3ac42d33a269c8567413bdb541689b02d93788af4131018cbf366"}, - {file = "numpy-2.1.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e585c8ae871fd38ac50598f4763d73ec5497b0de9a0ab4ef5b69f01c6a046142"}, - {file = "numpy-2.1.2-cp312-cp312-win32.whl", hash = "sha256:9c6c754df29ce6a89ed23afb25550d1c2d5fdb9901d9c67a16e0b16eaf7e2550"}, - {file = "numpy-2.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:456e3b11cb79ac9946c822a56346ec80275eaf2950314b249b512896c0d2505e"}, - {file = "numpy-2.1.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a84498e0d0a1174f2b3ed769b67b656aa5460c92c9554039e11f20a05650f00d"}, - {file = "numpy-2.1.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4d6ec0d4222e8ffdab1744da2560f07856421b367928026fb540e1945f2eeeaf"}, - {file = "numpy-2.1.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:259ec80d54999cc34cd1eb8ded513cb053c3bf4829152a2e00de2371bd406f5e"}, - {file = "numpy-2.1.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:675c741d4739af2dc20cd6c6a5c4b7355c728167845e3c6b0e824e4e5d36a6c3"}, - {file = "numpy-2.1.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05b2d4e667895cc55e3ff2b56077e4c8a5604361fc21a042845ea3ad67465aa8"}, - {file = "numpy-2.1.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43cca367bf94a14aca50b89e9bc2061683116cfe864e56740e083392f533ce7a"}, - {file = "numpy-2.1.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:76322dcdb16fccf2ac56f99048af32259dcc488d9b7e25b51e5eca5147a3fb98"}, - {file = "numpy-2.1.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:32e16a03138cabe0cb28e1007ee82264296ac0983714094380b408097a418cfe"}, - {file = "numpy-2.1.2-cp313-cp313-win32.whl", hash = "sha256:242b39d00e4944431a3cd2db2f5377e15b5785920421993770cddb89992c3f3a"}, - {file = "numpy-2.1.2-cp313-cp313-win_amd64.whl", hash = "sha256:f2ded8d9b6f68cc26f8425eda5d3877b47343e68ca23d0d0846f4d312ecaa445"}, - {file = "numpy-2.1.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2ffef621c14ebb0188a8633348504a35c13680d6da93ab5cb86f4e54b7e922b5"}, - {file = "numpy-2.1.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ad369ed238b1959dfbade9018a740fb9392c5ac4f9b5173f420bd4f37ba1f7a0"}, - {file = "numpy-2.1.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d82075752f40c0ddf57e6e02673a17f6cb0f8eb3f587f63ca1eaab5594da5b17"}, - {file = "numpy-2.1.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:1600068c262af1ca9580a527d43dc9d959b0b1d8e56f8a05d830eea39b7c8af6"}, - {file = "numpy-2.1.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a26ae94658d3ba3781d5e103ac07a876b3e9b29db53f68ed7df432fd033358a8"}, - {file = "numpy-2.1.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13311c2db4c5f7609b462bc0f43d3c465424d25c626d95040f073e30f7570e35"}, - {file = "numpy-2.1.2-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:2abbf905a0b568706391ec6fa15161fad0fb5d8b68d73c461b3c1bab6064dd62"}, - {file = "numpy-2.1.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:ef444c57d664d35cac4e18c298c47d7b504c66b17c2ea91312e979fcfbdfb08a"}, - {file = "numpy-2.1.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:bdd407c40483463898b84490770199d5714dcc9dd9b792f6c6caccc523c00952"}, - {file = "numpy-2.1.2-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:da65fb46d4cbb75cb417cddf6ba5e7582eb7bb0b47db4b99c9fe5787ce5d91f5"}, - {file = "numpy-2.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c193d0b0238638e6fc5f10f1b074a6993cb13b0b431f64079a509d63d3aa8b7"}, - {file = "numpy-2.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a7d80b2e904faa63068ead63107189164ca443b42dd1930299e0d1cb041cec2e"}, - {file = "numpy-2.1.2.tar.gz", hash = "sha256:13532a088217fa624c99b843eeb54640de23b3414b14aa66d023805eb731066c"}, +python-versions = ">=3.11" +groups = ["main"] +files = [ + { file = "numpy-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6ea9e48336a402551f52cd8f593343699003d2353daa4b72ce8d34f66b722070" }, + { file = "numpy-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ccb7336eaf0e77c1635b232c141846493a588ec9ea777a7c24d7166bb8533ae" }, + { file = "numpy-2.3.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0bb3a4a61e1d327e035275d2a993c96fa786e4913aa089843e6a2d9dd205c66a" }, + { file = "numpy-2.3.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:e344eb79dab01f1e838ebb67aab09965fb271d6da6b00adda26328ac27d4a66e" }, + { file = "numpy-2.3.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:467db865b392168ceb1ef1ffa6f5a86e62468c43e0cfb4ab6da667ede10e58db" }, + { file = "numpy-2.3.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:afed2ce4a84f6b0fc6c1ce734ff368cbf5a5e24e8954a338f3bdffa0718adffb" }, + { file = "numpy-2.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0025048b3c1557a20bc80d06fdeb8cc7fc193721484cca82b2cfa072fec71a93" }, + { file = "numpy-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a5ee121b60aa509679b682819c602579e1df14a5b07fe95671c8849aad8f2115" }, + { file = "numpy-2.3.1-cp311-cp311-win32.whl", hash = "sha256:a8b740f5579ae4585831b3cf0e3b0425c667274f82a484866d2adf9570539369" }, + { file = "numpy-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:d4580adadc53311b163444f877e0789f1c8861e2698f6b2a4ca852fda154f3ff" }, + { file = "numpy-2.3.1-cp311-cp311-win_arm64.whl", hash = "sha256:ec0bdafa906f95adc9a0c6f26a4871fa753f25caaa0e032578a30457bff0af6a" }, + { file = "numpy-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2959d8f268f3d8ee402b04a9ec4bb7604555aeacf78b360dc4ec27f1d508177d" }, + { file = "numpy-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:762e0c0c6b56bdedfef9a8e1d4538556438288c4276901ea008ae44091954e29" }, + { file = "numpy-2.3.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:867ef172a0976aaa1f1d1b63cf2090de8b636a7674607d514505fb7276ab08fc" }, + { file = "numpy-2.3.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:4e602e1b8682c2b833af89ba641ad4176053aaa50f5cacda1a27004352dde943" }, + { file = "numpy-2.3.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8e333040d069eba1652fb08962ec5b76af7f2c7bce1df7e1418c8055cf776f25" }, + { file = "numpy-2.3.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e7cbf5a5eafd8d230a3ce356d892512185230e4781a361229bd902ff403bc660" }, + { file = "numpy-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f1b8f26d1086835f442286c1d9b64bb3974b0b1e41bb105358fd07d20872952" }, + { file = "numpy-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ee8340cb48c9b7a5899d1149eece41ca535513a9698098edbade2a8e7a84da77" }, + { file = "numpy-2.3.1-cp312-cp312-win32.whl", hash = "sha256:e772dda20a6002ef7061713dc1e2585bc1b534e7909b2030b5a46dae8ff077ab" }, + { file = "numpy-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:cfecc7822543abdea6de08758091da655ea2210b8ffa1faf116b940693d3df76" }, + { file = "numpy-2.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:7be91b2239af2658653c5bb6f1b8bccafaf08226a258caf78ce44710a0160d30" }, + { file = "numpy-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25a1992b0a3fdcdaec9f552ef10d8103186f5397ab45e2d25f8ac51b1a6b97e8" }, + { file = "numpy-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7dea630156d39b02a63c18f508f85010230409db5b2927ba59c8ba4ab3e8272e" }, + { file = "numpy-2.3.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bada6058dd886061f10ea15f230ccf7dfff40572e99fef440a4a857c8728c9c0" }, + { file = "numpy-2.3.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:a894f3816eb17b29e4783e5873f92faf55b710c2519e5c351767c51f79d8526d" }, + { file = "numpy-2.3.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:18703df6c4a4fee55fd3d6e5a253d01c5d33a295409b03fda0c86b3ca2ff41a1" }, + { file = "numpy-2.3.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5902660491bd7a48b2ec16c23ccb9124b8abfd9583c5fdfa123fe6b421e03de1" }, + { file = "numpy-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:36890eb9e9d2081137bd78d29050ba63b8dab95dff7912eadf1185e80074b2a0" }, + { file = "numpy-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a780033466159c2270531e2b8ac063704592a0bc62ec4a1b991c7c40705eb0e8" }, + { file = "numpy-2.3.1-cp313-cp313-win32.whl", hash = "sha256:39bff12c076812595c3a306f22bfe49919c5513aa1e0e70fac756a0be7c2a2b8" }, + { file = "numpy-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d5ee6eec45f08ce507a6570e06f2f879b374a552087a4179ea7838edbcbfa42" }, + { file = "numpy-2.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:0c4d9e0a8368db90f93bd192bfa771ace63137c3488d198ee21dfb8e7771916e" }, + { file = "numpy-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b0b5397374f32ec0649dd98c652a1798192042e715df918c20672c62fb52d4b8" }, + { file = "numpy-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c5bdf2015ccfcee8253fb8be695516ac4457c743473a43290fd36eba6a1777eb" }, + { file = "numpy-2.3.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d70f20df7f08b90a2062c1f07737dd340adccf2068d0f1b9b3d56e2038979fee" }, + { file = "numpy-2.3.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:2fb86b7e58f9ac50e1e9dd1290154107e47d1eef23a0ae9145ded06ea606f992" }, + { file = "numpy-2.3.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:23ab05b2d241f76cb883ce8b9a93a680752fbfcbd51c50eff0b88b979e471d8c" }, + { file = "numpy-2.3.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ce2ce9e5de4703a673e705183f64fd5da5bf36e7beddcb63a25ee2286e71ca48" }, + { file = "numpy-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c4913079974eeb5c16ccfd2b1f09354b8fed7e0d6f2cab933104a09a6419b1ee" }, + { file = "numpy-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:010ce9b4f00d5c036053ca684c77441f2f2c934fd23bee058b4d6f196efd8280" }, + { file = "numpy-2.3.1-cp313-cp313t-win32.whl", hash = "sha256:6269b9edfe32912584ec496d91b00b6d34282ca1d07eb10e82dfc780907d6c2e" }, + { file = "numpy-2.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2a809637460e88a113e186e87f228d74ae2852a2e0c44de275263376f17b5bdc" }, + { file = "numpy-2.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:eccb9a159db9aed60800187bc47a6d3451553f0e1b08b068d8b277ddfbb9b244" }, + { file = "numpy-2.3.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ad506d4b09e684394c42c966ec1527f6ebc25da7f4da4b1b056606ffe446b8a3" }, + { file = "numpy-2.3.1-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:ebb8603d45bc86bbd5edb0d63e52c5fd9e7945d3a503b77e486bd88dde67a19b" }, + { file = "numpy-2.3.1-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:15aa4c392ac396e2ad3d0a2680c0f0dee420f9fed14eef09bdb9450ee6dcb7b7" }, + { file = "numpy-2.3.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c6e0bf9d1a2f50d2b65a7cf56db37c095af17b59f6c132396f7c6d5dd76484df" }, + { file = "numpy-2.3.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:eabd7e8740d494ce2b4ea0ff05afa1b7b291e978c0ae075487c51e8bd93c0c68" }, + { file = "numpy-2.3.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:e610832418a2bc09d974cc9fecebfa51e9532d6190223bc5ef6a7402ebf3b5cb" }, + { file = "numpy-2.3.1.tar.gz", hash = "sha256:1ec9ae20a4226da374362cca3c62cd753faf2f951440b0e3b98e93c235441d2b" }, ] [[package]] @@ -2000,6 +2283,7 @@ version = "7.7.0" description = "A decorator to automatically detect mismatch when overriding a method." optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, @@ -2011,17 +2295,35 @@ version = "24.1" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, ] +[[package]] +name = "paginate" +version = "0.5.7" +description = "Divides large result sets into pages for easier browsing" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + { file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591" }, + { file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945" }, +] + +[package.extras] +dev = ["pytest", "tox"] +lint = ["black"] + [[package]] name = "pandas" version = "2.2.3" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"}, {file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"}, @@ -2104,6 +2406,7 @@ version = "1.5.1" description = "Utilities for writing pandoc filters in python" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["dev"] files = [ {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, @@ -2115,6 +2418,7 @@ version = "0.8.4" description = "A Python Parser" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, @@ -2130,6 +2434,7 @@ version = "1.4.2" description = "Appendable key-value storage" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f"}, {file = "partd-1.4.2.tar.gz", hash = "sha256:d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c"}, @@ -2148,6 +2453,7 @@ version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, @@ -2159,6 +2465,8 @@ version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." optional = false python-versions = "*" +groups = ["dev"] +markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" files = [ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, @@ -2169,19 +2477,20 @@ ptyprocess = ">=0.5" [[package]] name = "platformdirs" -version = "4.3.6" +version = "4.3.8" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, + { file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4" }, + { file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc" }, ] [package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.4)", "pytest-cov (>=6)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.14.1)"] [[package]] name = "pluggy" @@ -2189,6 +2498,7 @@ version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, @@ -2200,13 +2510,14 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "pre-commit" -version = "3.8.0" +version = "4.2.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "pre_commit-3.8.0-py2.py3-none-any.whl", hash = "sha256:9a90a53bf82fdd8778d58085faf8d83df56e40dfe18f45b19446e26bf1b3a63f"}, - {file = "pre_commit-3.8.0.tar.gz", hash = "sha256:8bb6494d4a20423842e198980c9ecf9f96607a07ea29549e180eef9ae80fe7af"}, + { file = "pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd" }, + { file = "pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146" }, ] [package.dependencies] @@ -2218,13 +2529,14 @@ virtualenv = ">=20.10.0" [[package]] name = "prometheus-client" -version = "0.21.0" +version = "0.22.1" description = "Python client for the Prometheus monitoring system." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "prometheus_client-0.21.0-py3-none-any.whl", hash = "sha256:4fa6b4dd0ac16d58bb587c04b1caae65b8c5043e85f778f42f5f632f6af2e166"}, - {file = "prometheus_client-0.21.0.tar.gz", hash = "sha256:96c83c606b71ff2b0a433c98889d275f51ffec6c5e267de37c7a2b5c9aa9233e"}, + { file = "prometheus_client-0.22.1-py3-none-any.whl", hash = "sha256:cca895342e308174341b2cbf99a56bef291fbc0ef7b9e5412a0f26d653ba7094" }, + { file = "prometheus_client-0.22.1.tar.gz", hash = "sha256:190f1331e783cf21eb60bca559354e0a4d4378facecf78f5428c39b675d20d28" }, ] [package.extras] @@ -2232,13 +2544,14 @@ twisted = ["twisted"] [[package]] name = "prompt-toolkit" -version = "3.0.48" +version = "3.0.51" description = "Library for building powerful interactive command lines in Python" optional = false -python-versions = ">=3.7.0" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e"}, - {file = "prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90"}, + { file = "prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07" }, + { file = "prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed" }, ] [package.dependencies] @@ -2246,32 +2559,26 @@ wcwidth = "*" [[package]] name = "psutil" -version = "6.1.0" -description = "Cross-platform lib for process and system monitoring in Python." +version = "7.0.0" +description = "Cross-platform lib for process and system monitoring in Python. NOTE: the syntax of this script MUST be kept compatible with Python 2.7." optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +python-versions = ">=3.6" +groups = ["dev"] files = [ - {file = "psutil-6.1.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ff34df86226c0227c52f38b919213157588a678d049688eded74c76c8ba4a5d0"}, - {file = "psutil-6.1.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:c0e0c00aa18ca2d3b2b991643b799a15fc8f0563d2ebb6040f64ce8dc027b942"}, - {file = "psutil-6.1.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:000d1d1ebd634b4efb383f4034437384e44a6d455260aaee2eca1e9c1b55f047"}, - {file = "psutil-6.1.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:5cd2bcdc75b452ba2e10f0e8ecc0b57b827dd5d7aaffbc6821b2a9a242823a76"}, - {file = "psutil-6.1.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:045f00a43c737f960d273a83973b2511430d61f283a44c96bf13a6e829ba8fdc"}, - {file = "psutil-6.1.0-cp27-none-win32.whl", hash = "sha256:9118f27452b70bb1d9ab3198c1f626c2499384935aaf55388211ad982611407e"}, - {file = "psutil-6.1.0-cp27-none-win_amd64.whl", hash = "sha256:a8506f6119cff7015678e2bce904a4da21025cc70ad283a53b099e7620061d85"}, - {file = "psutil-6.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6e2dcd475ce8b80522e51d923d10c7871e45f20918e027ab682f94f1c6351688"}, - {file = "psutil-6.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0895b8414afafc526712c498bd9de2b063deaac4021a3b3c34566283464aff8e"}, - {file = "psutil-6.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9dcbfce5d89f1d1f2546a2090f4fcf87c7f669d1d90aacb7d7582addece9fb38"}, - {file = "psutil-6.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:498c6979f9c6637ebc3a73b3f87f9eb1ec24e1ce53a7c5173b8508981614a90b"}, - {file = "psutil-6.1.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d905186d647b16755a800e7263d43df08b790d709d575105d419f8b6ef65423a"}, - {file = "psutil-6.1.0-cp36-cp36m-win32.whl", hash = "sha256:6d3fbbc8d23fcdcb500d2c9f94e07b1342df8ed71b948a2649b5cb060a7c94ca"}, - {file = "psutil-6.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1209036fbd0421afde505a4879dee3b2fd7b1e14fee81c0069807adcbbcca747"}, - {file = "psutil-6.1.0-cp37-abi3-win32.whl", hash = "sha256:1ad45a1f5d0b608253b11508f80940985d1d0c8f6111b5cb637533a0e6ddc13e"}, - {file = "psutil-6.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:a8fb3752b491d246034fa4d279ff076501588ce8cbcdbb62c32fd7a377d996be"}, - {file = "psutil-6.1.0.tar.gz", hash = "sha256:353815f59a7f64cdaca1c0307ee13558a0512f6db064e92fe833784f08539c7a"}, -] - -[package.extras] -dev = ["black", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest-cov", "requests", "rstcheck", "ruff", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "wheel"] + { file = "psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25" }, + { file = "psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da" }, + { file = "psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91" }, + { file = "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" }, + { file = "psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993" }, + { file = "psutil-7.0.0-cp36-cp36m-win32.whl", hash = "sha256:84df4eb63e16849689f76b1ffcb36db7b8de703d1bc1fe41773db487621b6c17" }, + { file = "psutil-7.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1e744154a6580bc968a0195fd25e80432d3afec619daf145b9e5ba16cc1d688e" }, + { file = "psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99" }, + { file = "psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553" }, + { file = "psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456" }, +] + +[package.extras] +dev = ["abi3audit", "black (==24.10.0)", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest", "pytest-cov", "pytest-xdist", "requests", "rstcheck", "ruff", "setuptools", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "vulture", "wheel"] test = ["pytest", "pytest-xdist", "setuptools"] [[package]] @@ -2280,6 +2587,8 @@ version = "0.7.0" description = "Run a subprocess in a pseudo terminal" optional = false python-versions = "*" +groups = ["dev"] +markers = "os_name != \"nt\" or sys_platform != \"win32\" and sys_platform != \"emscripten\"" files = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, @@ -2291,6 +2600,7 @@ version = "0.2.3" description = "Safely evaluate AST nodes without side effects" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, @@ -2305,6 +2615,7 @@ version = "2.22" description = "C parser in Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, @@ -2312,123 +2623,133 @@ files = [ [[package]] name = "pydantic" -version = "2.9.2" +version = "2.11.7" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, - {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, + { file = "pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b" }, + { file = "pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db" }, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.23.4" -typing-extensions = [ - {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, - {version = ">=4.6.1", markers = "python_version < \"3.13\""}, -] +pydantic-core = "2.33.2" +typing-extensions = ">=4.12.2" +typing-inspection = ">=0.4.0" [package.extras] email = ["email-validator (>=2.0.0)"] -timezone = ["tzdata"] +timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""] [[package]] name = "pydantic-core" -version = "2.23.4" +version = "2.33.2" description = "Core functionality for Pydantic validation and serialization" optional = false -python-versions = ">=3.8" -files = [ - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, - {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, - {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, - {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, - {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, - {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, - {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, - {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, - {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, - {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, - {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, - {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, - {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, - {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, - {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, - {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, - {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, - {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, - {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, - {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, - {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, - {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, - {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, - {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, - {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, - {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, - {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, - {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, - {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, - {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, +python-versions = ">=3.9" +groups = ["main"] +files = [ + { file = "pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8" }, + { file = "pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d" }, + { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d" }, + { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d53b22f2032c42eaaf025f7c40c2e3b94568ae077a606f006d206a463bc69572" }, + { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0405262705a123b7ce9f0b92f123334d67b70fd1f20a9372b907ce1080c7ba02" }, + { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b25d91e288e2c4e0662b8038a28c6a07eaac3e196cfc4ff69de4ea3db992a1b" }, + { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bdfe4b3789761f3bcb4b1ddf33355a71079858958e3a552f16d5af19768fef2" }, + { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:efec8db3266b76ef9607c2c4c419bdb06bf335ae433b80816089ea7585816f6a" }, + { file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:031c57d67ca86902726e0fae2214ce6770bbe2f710dc33063187a68744a5ecac" }, + { file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:f8de619080e944347f5f20de29a975c2d815d9ddd8be9b9b7268e2e3ef68605a" }, + { file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73662edf539e72a9440129f231ed3757faab89630d291b784ca99237fb94db2b" }, + { file = "pydantic_core-2.33.2-cp310-cp310-win32.whl", hash = "sha256:0a39979dcbb70998b0e505fb1556a1d550a0781463ce84ebf915ba293ccb7e22" }, + { file = "pydantic_core-2.33.2-cp310-cp310-win_amd64.whl", hash = "sha256:b0379a2b24882fef529ec3b4987cb5d003b9cda32256024e6fe1586ac45fc640" }, + { file = "pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7" }, + { file = "pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246" }, + { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f" }, + { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc" }, + { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de" }, + { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a" }, + { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef" }, + { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e" }, + { file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d" }, + { file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30" }, + { file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf" }, + { file = "pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51" }, + { file = "pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab" }, + { file = "pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65" }, + { file = "pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc" }, + { file = "pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7" }, + { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025" }, + { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011" }, + { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f" }, + { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88" }, + { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1" }, + { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b" }, + { file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1" }, + { file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6" }, + { file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea" }, + { file = "pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290" }, + { file = "pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2" }, + { file = "pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab" }, + { file = "pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f" }, + { file = "pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6" }, + { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef" }, + { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a" }, + { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916" }, + { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a" }, + { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d" }, + { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56" }, + { file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5" }, + { file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e" }, + { file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162" }, + { file = "pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849" }, + { file = "pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9" }, + { file = "pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9" }, + { file = "pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac" }, + { file = "pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5" }, + { file = "pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9" }, + { file = "pydantic_core-2.33.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a2b911a5b90e0374d03813674bf0a5fbbb7741570dcd4b4e85a2e48d17def29d" }, + { file = "pydantic_core-2.33.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6fa6dfc3e4d1f734a34710f391ae822e0a8eb8559a85c6979e14e65ee6ba2954" }, + { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c54c939ee22dc8e2d545da79fc5381f1c020d6d3141d3bd747eab59164dc89fb" }, + { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53a57d2ed685940a504248187d5685e49eb5eef0f696853647bf37c418c538f7" }, + { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09fb9dd6571aacd023fe6aaca316bd01cf60ab27240d7eb39ebd66a3a15293b4" }, + { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e6116757f7959a712db11f3e9c0a99ade00a5bbedae83cb801985aa154f071b" }, + { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d55ab81c57b8ff8548c3e4947f119551253f4e3787a7bbc0b6b3ca47498a9d3" }, + { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c20c462aa4434b33a2661701b861604913f912254e441ab8d78d30485736115a" }, + { file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44857c3227d3fb5e753d5fe4a3420d6376fa594b07b621e220cd93703fe21782" }, + { file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:eb9b459ca4df0e5c87deb59d37377461a538852765293f9e6ee834f0435a93b9" }, + { file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9fcd347d2cc5c23b06de6d3b7b8275be558a0c90549495c699e379a80bf8379e" }, + { file = "pydantic_core-2.33.2-cp39-cp39-win32.whl", hash = "sha256:83aa99b1285bc8f038941ddf598501a86f1536789740991d7d8756e34f1e74d9" }, + { file = "pydantic_core-2.33.2-cp39-cp39-win_amd64.whl", hash = "sha256:f481959862f57f29601ccced557cc2e817bce7533ab8e01a797a48b49c9692b3" }, + { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c4aa4e82353f65e548c476b37e64189783aa5384903bfea4f41580f255fddfa" }, + { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d946c8bf0d5c24bf4fe333af284c59a19358aa3ec18cb3dc4370080da1e8ad29" }, + { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87b31b6846e361ef83fedb187bb5b4372d0da3f7e28d85415efa92d6125d6e6d" }, + { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa9d91b338f2df0508606f7009fde642391425189bba6d8c653afd80fd6bb64e" }, + { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2058a32994f1fde4ca0480ab9d1e75a0e8c87c22b53a3ae66554f9af78f2fe8c" }, + { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:0e03262ab796d986f978f79c943fc5f620381be7287148b8010b4097f79a39ec" }, + { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1a8695a8d00c73e50bff9dfda4d540b7dee29ff9b8053e38380426a85ef10052" }, + { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fa754d1850735a0b0e03bcffd9d4b4343eb417e47196e4485d9cca326073a42c" }, + { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a11c8d26a50bfab49002947d3d237abe4d9e4b5bdc8846a63537b6488e197808" }, + { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8" }, + { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593" }, + { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612" }, + { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7" }, + { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e" }, + { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8" }, + { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf" }, + { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb" }, + { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1" }, + { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:87acbfcf8e90ca885206e98359d7dca4bcbb35abdc0ff66672a293e1d7a19101" }, + { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7f92c15cd1e97d4b12acd1cc9004fa092578acfa57b67ad5e43a197175d01a64" }, + { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3f26877a748dc4251cfcfda9dfb5f13fcb034f5308388066bcfe9031b63ae7d" }, + { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac89aea9af8cd672fa7b510e7b8c33b0bba9a43186680550ccf23020f32d535" }, + { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:970919794d126ba8645f3837ab6046fb4e72bbc057b3709144066204c19a455d" }, + { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3eb3fe62804e8f859c49ed20a8451342de53ed764150cb14ca71357c765dc2a6" }, + { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:3abcd9392a36025e3bd55f9bd38d908bd17962cc49bc6da8e7e96285336e2bca" }, + { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3a1c81334778f9e3af2f8aeb7a960736e5cab1dfebfb26aabca09afd2906c039" }, + { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2807668ba86cb38c6817ad9bc66215ab8584d1d304030ce4f0887336f28a5e27" }, + { file = "pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc" }, ] [package.dependencies] @@ -2440,6 +2761,7 @@ version = "2.18.0" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, @@ -2449,79 +2771,91 @@ files = [ windows-terminal = ["colorama (>=0.4.6)"] [[package]] -name = "pyproj" -version = "3.7.0" -description = "Python interface to PROJ (cartographic projections and coordinate transformations library)" +name = "pymdown-extensions" +version = "10.16" +description = "Extension pack for Python Markdown." optional = false -python-versions = ">=3.10" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "pyproj-3.7.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d5c7e7d24b967e328a5efd013f466804a1f226d1106ac7efc47dcc99360dbc8f"}, - {file = "pyproj-3.7.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:448958c46bd3fe2da91c89ba551ac5835e63073ca861422c6eb1af89979dfab1"}, - {file = "pyproj-3.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f673ca345bb92afc93d4235938ca0c9a76237aa7addf42a95965c8dc8cad9b49"}, - {file = "pyproj-3.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee60895f60cbd1a9c903ab2bc22adea63004296a1c28b8775a11cf50905cf085"}, - {file = "pyproj-3.7.0-cp310-cp310-win32.whl", hash = "sha256:0dd31b0740ee010934234f848d2d092c66146cb8d0ba009a64e41d192caa7686"}, - {file = "pyproj-3.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:7943d85ba39e89c51b920339ff63162d63bf89da161f0acb6206b0d39b11661e"}, - {file = "pyproj-3.7.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:e66d8d42dbdf232e121546c5a1dec097caf0454e4885c09a8e03cdcee0753c03"}, - {file = "pyproj-3.7.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:7764b64a0aefe40134a2828b3a40be88f6c8b7832c45d8a9f2bd592ace4b2a3b"}, - {file = "pyproj-3.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53c442c5081dc95346996f5c4323fde2caafc69c6e60b4707aa46e88244f1e04"}, - {file = "pyproj-3.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc5b305d4d5d7697885681d9b660623e328227612823d5c660e0a9566cb48838"}, - {file = "pyproj-3.7.0-cp311-cp311-win32.whl", hash = "sha256:de2b47d748dc41cccb6b3b713d4d7dc9aa1046a82141c8665026908726426abc"}, - {file = "pyproj-3.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:38cba7c4c5679e40242dd959133e95b908d3b912dd66291094fd13510e8517ff"}, - {file = "pyproj-3.7.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:8cbec92bdd6e9933ca08795c12717d1384e9b51cf4b1acf0d753db255a75c51e"}, - {file = "pyproj-3.7.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:8c4a8e4d3ba76c3adac3c087544cf92f7f9a19ea34946904a13fca48cc1c0106"}, - {file = "pyproj-3.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82624fb42aa31f6b1a860fbc0316babd07fd712642bc31022df4e9b4056bf463"}, - {file = "pyproj-3.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34e1bbb3f89c68d4a6835c40b2da8b27680eec60e8cc7cdb08c09bcc725b2b62"}, - {file = "pyproj-3.7.0-cp312-cp312-win32.whl", hash = "sha256:952515d5592167ad4436b355485f82acebed2a49b46722159e4584b75a763dd3"}, - {file = "pyproj-3.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:0692f806224e8ed82fe4acfa57268ff444fdaf9f330689f24c0d96e59480cce1"}, - {file = "pyproj-3.7.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:94e8b903a9e83448fd2379c49dec3e8cd83c9ed36f54354e68b601cef56d5426"}, - {file = "pyproj-3.7.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:64cb5c17d6f6305a8b978a40f95560c87c5b363fcac40632337955664437875a"}, - {file = "pyproj-3.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c54e9bdda7ab9c4a5af50f9d6e6ee7704e05fafd504896b96ed1208c7aea098"}, - {file = "pyproj-3.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24fa4e9e0abba875f9524808410cc520067eaf38fd5549ed0ef7c43ac39923c9"}, - {file = "pyproj-3.7.0-cp313-cp313-win32.whl", hash = "sha256:b9e8353fc3c79dc14d1f5ac758a1a6e4eee04102c3c0b138670f121f5ac52eb4"}, - {file = "pyproj-3.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:10a8dc6ec61af97c89ff032647d743f8dc023645773da42ef43f7ae1125b3509"}, - {file = "pyproj-3.7.0.tar.gz", hash = "sha256:bf658f4aaf815d9d03c8121650b6f0b8067265c36e31bc6660b98ef144d81813"}, + { file = "pymdown_extensions-10.16-py3-none-any.whl", hash = "sha256:f5dd064a4db588cb2d95229fc4ee63a1b16cc8b4d0e6145c0899ed8723da1df2" }, + { file = "pymdown_extensions-10.16.tar.gz", hash = "sha256:71dac4fca63fabeffd3eb9038b756161a33ec6e8d230853d3cecf562155ab3de" }, ] [package.dependencies] -certifi = "*" +markdown = ">=3.6" +pyyaml = "*" + +[package.extras] +extra = ["pygments (>=2.19.1)"] [[package]] -name = "pytest" -version = "8.3.3" -description = "pytest: simple powerful testing with Python" +name = "pyproj" +version = "3.7.1" +description = "Python interface to PROJ (cartographic projections and coordinate transformations library)" optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, - {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, +python-versions = ">=3.10" +groups = ["main"] +files = [ + { file = "pyproj-3.7.1-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:bf09dbeb333c34e9c546364e7df1ff40474f9fddf9e70657ecb0e4f670ff0b0e" }, + { file = "pyproj-3.7.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:6575b2e53cc9e3e461ad6f0692a5564b96e7782c28631c7771c668770915e169" }, + { file = "pyproj-3.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cb516ee35ed57789b46b96080edf4e503fdb62dbb2e3c6581e0d6c83fca014b" }, + { file = "pyproj-3.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e47c4e93b88d99dd118875ee3ca0171932444cdc0b52d493371b5d98d0f30ee" }, + { file = "pyproj-3.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3e8d276caeae34fcbe4813855d0d97b9b825bab8d7a8b86d859c24a6213a5a0d" }, + { file = "pyproj-3.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f173f851ee75e54acdaa053382b6825b400cb2085663a9bb073728a59c60aebb" }, + { file = "pyproj-3.7.1-cp310-cp310-win32.whl", hash = "sha256:f550281ed6e5ea88fcf04a7c6154e246d5714be495c50c9e8e6b12d3fb63e158" }, + { file = "pyproj-3.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3537668992a709a2e7f068069192138618c00d0ba113572fdd5ee5ffde8222f3" }, + { file = "pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d" }, + { file = "pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067" }, + { file = "pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa" }, + { file = "pyproj-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5dcf24ede53d8abab7d8a77f69ff1936c6a8843ef4fcc574646e4be66e5739" }, + { file = "pyproj-3.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c2e7449840a44ce860d8bea2c6c1c4bc63fa07cba801dcce581d14dcb031a02" }, + { file = "pyproj-3.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0829865c1d3a3543f918b3919dc601eea572d6091c0dd175e1a054db9c109274" }, + { file = "pyproj-3.7.1-cp311-cp311-win32.whl", hash = "sha256:6181960b4b812e82e588407fe5c9c68ada267c3b084db078f248db5d7f45d18a" }, + { file = "pyproj-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ad0ff443a785d84e2b380869fdd82e6bfc11eba6057d25b4409a9bbfa867970" }, + { file = "pyproj-3.7.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:2781029d90df7f8d431e29562a3f2d8eafdf233c4010d6fc0381858dc7373217" }, + { file = "pyproj-3.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d61bf8ab04c73c1da08eedaf21a103b72fa5b0a9b854762905f65ff8b375d394" }, + { file = "pyproj-3.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04abc517a8555d1b05fcee768db3280143fe42ec39fdd926a2feef31631a1f2f" }, + { file = "pyproj-3.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084c0a475688f934d386c2ab3b6ce03398a473cd48adfda70d9ab8f87f2394a0" }, + { file = "pyproj-3.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a20727a23b1e49c7dc7fe3c3df8e56a8a7acdade80ac2f5cca29d7ca5564c145" }, + { file = "pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d" }, + { file = "pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274" }, + { file = "pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98" }, + { file = "pyproj-3.7.1-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:5f8d02ef4431dee414d1753d13fa82a21a2f61494737b5f642ea668d76164d6d" }, + { file = "pyproj-3.7.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:0b853ae99bda66cbe24b4ccfe26d70601d84375940a47f553413d9df570065e0" }, + { file = "pyproj-3.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83db380c52087f9e9bdd8a527943b2e7324f275881125e39475c4f9277bdeec4" }, + { file = "pyproj-3.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b35ed213892e211a3ce2bea002aa1183e1a2a9b79e51bb3c6b15549a831ae528" }, + { file = "pyproj-3.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a8b15b0463d1303bab113d1a6af2860a0d79013c3a66fcc5475ce26ef717fd4f" }, + { file = "pyproj-3.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:87229e42b75e89f4dad6459200f92988c5998dfb093c7c631fb48524c86cd5dc" }, + { file = "pyproj-3.7.1-cp313-cp313-win32.whl", hash = "sha256:d666c3a3faaf3b1d7fc4a544059c4eab9d06f84a604b070b7aa2f318e227798e" }, + { file = "pyproj-3.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:d3caac7473be22b6d6e102dde6c46de73b96bc98334e577dfaee9886f102ea2e" }, + { file = "pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47" }, ] [package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=1.5,<2" - -[package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +certifi = "*" [[package]] -name = "pytest-cov" -version = "5.0.0" -description = "Pytest plugin for measuring coverage." +name = "pytest" +version = "8.4.1" +description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"}, - {file = "pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652"}, + { file = "pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7" }, + { file = "pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c" }, ] [package.dependencies] -coverage = {version = ">=5.2.1", extras = ["toml"]} -pytest = ">=4.6" +colorama = { version = ">=0.4", markers = "sys_platform == \"win32\"" } +iniconfig = ">=1" +packaging = ">=20" +pluggy = ">=1.5,<2" +pygments = ">=2.7.2" [package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] [[package]] name = "python-dateutil" @@ -2529,6 +2863,7 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main", "dev"] files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -2539,21 +2874,26 @@ six = ">=1.5" [[package]] name = "python-json-logger" -version = "2.0.7" -description = "A python library adding a json log formatter" +version = "3.3.0" +description = "JSON Log Formatter for the Python Logging Package" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"}, - {file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"}, + { file = "python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7" }, + { file = "python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84" }, ] +[package.extras] +dev = ["backports.zoneinfo ; python_version < \"3.9\"", "black", "build", "freezegun", "mdx_truly_sane_lists", "mike", "mkdocs", "mkdocs-awesome-pages-plugin", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-material (>=8.5)", "mkdocstrings[python]", "msgspec ; implementation_name != \"pypy\"", "mypy", "orjson ; implementation_name != \"pypy\"", "pylint", "pytest", "tzdata", "validate-pyproject[all]"] + [[package]] name = "pytz" version = "2024.2" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" +groups = ["main"] files = [ {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, @@ -2561,44 +2901,51 @@ files = [ [[package]] name = "pywin32" -version = "308" +version = "311" description = "Python for Window Extensions" optional = false python-versions = "*" -files = [ - {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, - {file = "pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e"}, - {file = "pywin32-308-cp310-cp310-win_arm64.whl", hash = "sha256:a5ab5381813b40f264fa3495b98af850098f814a25a63589a8e9eb12560f450c"}, - {file = "pywin32-308-cp311-cp311-win32.whl", hash = "sha256:5d8c8015b24a7d6855b1550d8e660d8daa09983c80e5daf89a273e5c6fb5095a"}, - {file = "pywin32-308-cp311-cp311-win_amd64.whl", hash = "sha256:575621b90f0dc2695fec346b2d6302faebd4f0f45c05ea29404cefe35d89442b"}, - {file = "pywin32-308-cp311-cp311-win_arm64.whl", hash = "sha256:100a5442b7332070983c4cd03f2e906a5648a5104b8a7f50175f7906efd16bb6"}, - {file = "pywin32-308-cp312-cp312-win32.whl", hash = "sha256:587f3e19696f4bf96fde9d8a57cec74a57021ad5f204c9e627e15c33ff568897"}, - {file = "pywin32-308-cp312-cp312-win_amd64.whl", hash = "sha256:00b3e11ef09ede56c6a43c71f2d31857cf7c54b0ab6e78ac659497abd2834f47"}, - {file = "pywin32-308-cp312-cp312-win_arm64.whl", hash = "sha256:9b4de86c8d909aed15b7011182c8cab38c8850de36e6afb1f0db22b8959e3091"}, - {file = "pywin32-308-cp313-cp313-win32.whl", hash = "sha256:1c44539a37a5b7b21d02ab34e6a4d314e0788f1690d65b48e9b0b89f31abbbed"}, - {file = "pywin32-308-cp313-cp313-win_amd64.whl", hash = "sha256:fd380990e792eaf6827fcb7e187b2b4b1cede0585e3d0c9e84201ec27b9905e4"}, - {file = "pywin32-308-cp313-cp313-win_arm64.whl", hash = "sha256:ef313c46d4c18dfb82a2431e3051ac8f112ccee1a34f29c263c583c568db63cd"}, - {file = "pywin32-308-cp37-cp37m-win32.whl", hash = "sha256:1f696ab352a2ddd63bd07430080dd598e6369152ea13a25ebcdd2f503a38f1ff"}, - {file = "pywin32-308-cp37-cp37m-win_amd64.whl", hash = "sha256:13dcb914ed4347019fbec6697a01a0aec61019c1046c2b905410d197856326a6"}, - {file = "pywin32-308-cp38-cp38-win32.whl", hash = "sha256:5794e764ebcabf4ff08c555b31bd348c9025929371763b2183172ff4708152f0"}, - {file = "pywin32-308-cp38-cp38-win_amd64.whl", hash = "sha256:3b92622e29d651c6b783e368ba7d6722b1634b8e70bd376fd7610fe1992e19de"}, - {file = "pywin32-308-cp39-cp39-win32.whl", hash = "sha256:7873ca4dc60ab3287919881a7d4f88baee4a6e639aa6962de25a98ba6b193341"}, - {file = "pywin32-308-cp39-cp39-win_amd64.whl", hash = "sha256:71b3322d949b4cc20776436a9c9ba0eeedcbc9c650daa536df63f0ff111bb920"}, +groups = ["dev"] +markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"" +files = [ + { file = "pywin32-311-cp310-cp310-win32.whl", hash = "sha256:d03ff496d2a0cd4a5893504789d4a15399133fe82517455e78bad62efbb7f0a3" }, + { file = "pywin32-311-cp310-cp310-win_amd64.whl", hash = "sha256:797c2772017851984b97180b0bebe4b620bb86328e8a884bb626156295a63b3b" }, + { file = "pywin32-311-cp310-cp310-win_arm64.whl", hash = "sha256:0502d1facf1fed4839a9a51ccbcc63d952cf318f78ffc00a7e78528ac27d7a2b" }, + { file = "pywin32-311-cp311-cp311-win32.whl", hash = "sha256:184eb5e436dea364dcd3d2316d577d625c0351bf237c4e9a5fabbcfa5a58b151" }, + { file = "pywin32-311-cp311-cp311-win_amd64.whl", hash = "sha256:3ce80b34b22b17ccbd937a6e78e7225d80c52f5ab9940fe0506a1a16f3dab503" }, + { file = "pywin32-311-cp311-cp311-win_arm64.whl", hash = "sha256:a733f1388e1a842abb67ffa8e7aad0e70ac519e09b0f6a784e65a136ec7cefd2" }, + { file = "pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31" }, + { file = "pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067" }, + { file = "pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852" }, + { file = "pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d" }, + { file = "pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d" }, + { file = "pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a" }, + { file = "pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee" }, + { file = "pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87" }, + { file = "pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42" }, + { file = "pywin32-311-cp38-cp38-win32.whl", hash = "sha256:6c6f2969607b5023b0d9ce2541f8d2cbb01c4f46bc87456017cf63b73f1e2d8c" }, + { file = "pywin32-311-cp38-cp38-win_amd64.whl", hash = "sha256:c8015b09fb9a5e188f83b7b04de91ddca4658cee2ae6f3bc483f0b21a77ef6cd" }, + { file = "pywin32-311-cp39-cp39-win32.whl", hash = "sha256:aba8f82d551a942cb20d4a83413ccbac30790b50efb89a75e4f586ac0bb8056b" }, + { file = "pywin32-311-cp39-cp39-win_amd64.whl", hash = "sha256:e0c4cfb0621281fe40387df582097fd796e80430597cb9944f0ae70447bacd91" }, + { file = "pywin32-311-cp39-cp39-win_arm64.whl", hash = "sha256:62ea666235135fee79bb154e695f3ff67370afefd71bd7fea7512fc70ef31e3d" }, ] [[package]] name = "pywinpty" -version = "2.0.14" +version = "2.0.15" description = "Pseudo terminal support for Windows from Python." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] +markers = "os_name == \"nt\"" files = [ - {file = "pywinpty-2.0.14-cp310-none-win_amd64.whl", hash = "sha256:0b149c2918c7974f575ba79f5a4aad58bd859a52fa9eb1296cc22aa412aa411f"}, - {file = "pywinpty-2.0.14-cp311-none-win_amd64.whl", hash = "sha256:cf2a43ac7065b3e0dc8510f8c1f13a75fb8fde805efa3b8cff7599a1ef497bc7"}, - {file = "pywinpty-2.0.14-cp312-none-win_amd64.whl", hash = "sha256:55dad362ef3e9408ade68fd173e4f9032b3ce08f68cfe7eacb2c263ea1179737"}, - {file = "pywinpty-2.0.14-cp313-none-win_amd64.whl", hash = "sha256:074fb988a56ec79ca90ed03a896d40707131897cefb8f76f926e3834227f2819"}, - {file = "pywinpty-2.0.14-cp39-none-win_amd64.whl", hash = "sha256:5725fd56f73c0531ec218663bd8c8ff5acc43c78962fab28564871b5fce053fd"}, - {file = "pywinpty-2.0.14.tar.gz", hash = "sha256:18bd9529e4a5daf2d9719aa17788ba6013e594ae94c5a0c27e83df3278b0660e"}, + { file = "pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e" }, + { file = "pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca" }, + { file = "pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc" }, + { file = "pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408" }, + { file = "pywinpty-2.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:a4560ad8c01e537708d2790dbe7da7d986791de805d89dd0d3697ca59e9e4901" }, + { file = "pywinpty-2.0.15-cp39-cp39-win_amd64.whl", hash = "sha256:d261cd88fcd358cfb48a7ca0700db3e1c088c9c10403c9ebc0d8a8b57aa6a117" }, + { file = "pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2" }, ] [[package]] @@ -2607,6 +2954,7 @@ version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -2663,122 +3011,108 @@ files = [ {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] +[[package]] +name = "pyyaml-env-tag" +version = "1.1" +description = "A custom YAML tag for referencing environment variables in YAML files." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04" }, + { file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff" }, +] + +[package.dependencies] +pyyaml = "*" + [[package]] name = "pyzmq" -version = "26.2.0" +version = "27.0.0" description = "Python bindings for 0MQ" optional = false -python-versions = ">=3.7" -files = [ - {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:ddf33d97d2f52d89f6e6e7ae66ee35a4d9ca6f36eda89c24591b0c40205a3629"}, - {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dacd995031a01d16eec825bf30802fceb2c3791ef24bcce48fa98ce40918c27b"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89289a5ee32ef6c439086184529ae060c741334b8970a6855ec0b6ad3ff28764"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5506f06d7dc6ecf1efacb4a013b1f05071bb24b76350832c96449f4a2d95091c"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ea039387c10202ce304af74def5021e9adc6297067f3441d348d2b633e8166a"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a2224fa4a4c2ee872886ed00a571f5e967c85e078e8e8c2530a2fb01b3309b88"}, - {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:28ad5233e9c3b52d76196c696e362508959741e1a005fb8fa03b51aea156088f"}, - {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1c17211bc037c7d88e85ed8b7d8f7e52db6dc8eca5590d162717c654550f7282"}, - {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b8f86dd868d41bea9a5f873ee13bf5551c94cf6bc51baebc6f85075971fe6eea"}, - {file = "pyzmq-26.2.0-cp310-cp310-win32.whl", hash = "sha256:46a446c212e58456b23af260f3d9fb785054f3e3653dbf7279d8f2b5546b21c2"}, - {file = "pyzmq-26.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:49d34ab71db5a9c292a7644ce74190b1dd5a3475612eefb1f8be1d6961441971"}, - {file = "pyzmq-26.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:bfa832bfa540e5b5c27dcf5de5d82ebc431b82c453a43d141afb1e5d2de025fa"}, - {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:8f7e66c7113c684c2b3f1c83cdd3376103ee0ce4c49ff80a648643e57fb22218"}, - {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3a495b30fc91db2db25120df5847d9833af237546fd59170701acd816ccc01c4"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77eb0968da535cba0470a5165468b2cac7772cfb569977cff92e240f57e31bef"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ace4f71f1900a548f48407fc9be59c6ba9d9aaf658c2eea6cf2779e72f9f317"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92a78853d7280bffb93df0a4a6a2498cba10ee793cc8076ef797ef2f74d107cf"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:689c5d781014956a4a6de61d74ba97b23547e431e9e7d64f27d4922ba96e9d6e"}, - {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0aca98bc423eb7d153214b2df397c6421ba6373d3397b26c057af3c904452e37"}, - {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f3496d76b89d9429a656293744ceca4d2ac2a10ae59b84c1da9b5165f429ad3"}, - {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5c2b3bfd4b9689919db068ac6c9911f3fcb231c39f7dd30e3138be94896d18e6"}, - {file = "pyzmq-26.2.0-cp311-cp311-win32.whl", hash = "sha256:eac5174677da084abf378739dbf4ad245661635f1600edd1221f150b165343f4"}, - {file = "pyzmq-26.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:5a509df7d0a83a4b178d0f937ef14286659225ef4e8812e05580776c70e155d5"}, - {file = "pyzmq-26.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0e6091b157d48cbe37bd67233318dbb53e1e6327d6fc3bb284afd585d141003"}, - {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:ded0fc7d90fe93ae0b18059930086c51e640cdd3baebdc783a695c77f123dcd9"}, - {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17bf5a931c7f6618023cdacc7081f3f266aecb68ca692adac015c383a134ca52"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55cf66647e49d4621a7e20c8d13511ef1fe1efbbccf670811864452487007e08"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4661c88db4a9e0f958c8abc2b97472e23061f0bc737f6f6179d7a27024e1faa5"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea7f69de383cb47522c9c208aec6dd17697db7875a4674c4af3f8cfdac0bdeae"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:7f98f6dfa8b8ccaf39163ce872bddacca38f6a67289116c8937a02e30bbe9711"}, - {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e3e0210287329272539eea617830a6a28161fbbd8a3271bf4150ae3e58c5d0e6"}, - {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6b274e0762c33c7471f1a7471d1a2085b1a35eba5cdc48d2ae319f28b6fc4de3"}, - {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:29c6a4635eef69d68a00321e12a7d2559fe2dfccfa8efae3ffb8e91cd0b36a8b"}, - {file = "pyzmq-26.2.0-cp312-cp312-win32.whl", hash = "sha256:989d842dc06dc59feea09e58c74ca3e1678c812a4a8a2a419046d711031f69c7"}, - {file = "pyzmq-26.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a50625acdc7801bc6f74698c5c583a491c61d73c6b7ea4dee3901bb99adb27a"}, - {file = "pyzmq-26.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d29ab8592b6ad12ebbf92ac2ed2bedcfd1cec192d8e559e2e099f648570e19b"}, - {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9dd8cd1aeb00775f527ec60022004d030ddc51d783d056e3e23e74e623e33726"}, - {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:28c812d9757fe8acecc910c9ac9dafd2ce968c00f9e619db09e9f8f54c3a68a3"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d80b1dd99c1942f74ed608ddb38b181b87476c6a966a88a950c7dee118fdf50"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c997098cc65e3208eca09303630e84d42718620e83b733d0fd69543a9cab9cb"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ad1bc8d1b7a18497dda9600b12dc193c577beb391beae5cd2349184db40f187"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bea2acdd8ea4275e1278350ced63da0b166421928276c7c8e3f9729d7402a57b"}, - {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:23f4aad749d13698f3f7b64aad34f5fc02d6f20f05999eebc96b89b01262fb18"}, - {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a4f96f0d88accc3dbe4a9025f785ba830f968e21e3e2c6321ccdfc9aef755115"}, - {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ced65e5a985398827cc9276b93ef6dfabe0273c23de8c7931339d7e141c2818e"}, - {file = "pyzmq-26.2.0-cp313-cp313-win32.whl", hash = "sha256:31507f7b47cc1ead1f6e86927f8ebb196a0bab043f6345ce070f412a59bf87b5"}, - {file = "pyzmq-26.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:70fc7fcf0410d16ebdda9b26cbd8bf8d803d220a7f3522e060a69a9c87bf7bad"}, - {file = "pyzmq-26.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:c3789bd5768ab5618ebf09cef6ec2b35fed88709b104351748a63045f0ff9797"}, - {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:034da5fc55d9f8da09015d368f519478a52675e558c989bfcb5cf6d4e16a7d2a"}, - {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c92d73464b886931308ccc45b2744e5968cbaade0b1d6aeb40d8ab537765f5bc"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:794a4562dcb374f7dbbfb3f51d28fb40123b5a2abadee7b4091f93054909add5"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aee22939bb6075e7afededabad1a56a905da0b3c4e3e0c45e75810ebe3a52672"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ae90ff9dad33a1cfe947d2c40cb9cb5e600d759ac4f0fd22616ce6540f72797"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:43a47408ac52647dfabbc66a25b05b6a61700b5165807e3fbd40063fcaf46386"}, - {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:25bf2374a2a8433633c65ccb9553350d5e17e60c8eb4de4d92cc6bd60f01d306"}, - {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:007137c9ac9ad5ea21e6ad97d3489af654381324d5d3ba614c323f60dab8fae6"}, - {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:470d4a4f6d48fb34e92d768b4e8a5cc3780db0d69107abf1cd7ff734b9766eb0"}, - {file = "pyzmq-26.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3b55a4229ce5da9497dd0452b914556ae58e96a4381bb6f59f1305dfd7e53fc8"}, - {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9cb3a6460cdea8fe8194a76de8895707e61ded10ad0be97188cc8463ffa7e3a8"}, - {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8ab5cad923cc95c87bffee098a27856c859bd5d0af31bd346035aa816b081fe1"}, - {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ed69074a610fad1c2fda66180e7b2edd4d31c53f2d1872bc2d1211563904cd9"}, - {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cccba051221b916a4f5e538997c45d7d136a5646442b1231b916d0164067ea27"}, - {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:0eaa83fc4c1e271c24eaf8fb083cbccef8fde77ec8cd45f3c35a9a123e6da097"}, - {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9edda2df81daa129b25a39b86cb57dfdfe16f7ec15b42b19bfac503360d27a93"}, - {file = "pyzmq-26.2.0-cp37-cp37m-win32.whl", hash = "sha256:ea0eb6af8a17fa272f7b98d7bebfab7836a0d62738e16ba380f440fceca2d951"}, - {file = "pyzmq-26.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4ff9dc6bc1664bb9eec25cd17506ef6672d506115095411e237d571e92a58231"}, - {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2eb7735ee73ca1b0d71e0e67c3739c689067f055c764f73aac4cc8ecf958ee3f"}, - {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a534f43bc738181aa7cbbaf48e3eca62c76453a40a746ab95d4b27b1111a7d2"}, - {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:aedd5dd8692635813368e558a05266b995d3d020b23e49581ddd5bbe197a8ab6"}, - {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8be4700cd8bb02cc454f630dcdf7cfa99de96788b80c51b60fe2fe1dac480289"}, - {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fcc03fa4997c447dce58264e93b5aa2d57714fbe0f06c07b7785ae131512732"}, - {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:402b190912935d3db15b03e8f7485812db350d271b284ded2b80d2e5704be780"}, - {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8685fa9c25ff00f550c1fec650430c4b71e4e48e8d852f7ddcf2e48308038640"}, - {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:76589c020680778f06b7e0b193f4b6dd66d470234a16e1df90329f5e14a171cd"}, - {file = "pyzmq-26.2.0-cp38-cp38-win32.whl", hash = "sha256:8423c1877d72c041f2c263b1ec6e34360448decfb323fa8b94e85883043ef988"}, - {file = "pyzmq-26.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:76589f2cd6b77b5bdea4fca5992dc1c23389d68b18ccc26a53680ba2dc80ff2f"}, - {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:b1d464cb8d72bfc1a3adc53305a63a8e0cac6bc8c5a07e8ca190ab8d3faa43c2"}, - {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4da04c48873a6abdd71811c5e163bd656ee1b957971db7f35140a2d573f6949c"}, - {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d049df610ac811dcffdc147153b414147428567fbbc8be43bb8885f04db39d98"}, - {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05590cdbc6b902101d0e65d6a4780af14dc22914cc6ab995d99b85af45362cc9"}, - {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c811cfcd6a9bf680236c40c6f617187515269ab2912f3d7e8c0174898e2519db"}, - {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6835dd60355593de10350394242b5757fbbd88b25287314316f266e24c61d073"}, - {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc6bee759a6bddea5db78d7dcd609397449cb2d2d6587f48f3ca613b19410cfc"}, - {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c530e1eecd036ecc83c3407f77bb86feb79916d4a33d11394b8234f3bd35b940"}, - {file = "pyzmq-26.2.0-cp39-cp39-win32.whl", hash = "sha256:367b4f689786fca726ef7a6c5ba606958b145b9340a5e4808132cc65759abd44"}, - {file = "pyzmq-26.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:e6fa2e3e683f34aea77de8112f6483803c96a44fd726d7358b9888ae5bb394ec"}, - {file = "pyzmq-26.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:7445be39143a8aa4faec43b076e06944b8f9d0701b669df4af200531b21e40bb"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:706e794564bec25819d21a41c31d4df2d48e1cc4b061e8d345d7fb4dd3e94072"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b435f2753621cd36e7c1762156815e21c985c72b19135dac43a7f4f31d28dd1"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:160c7e0a5eb178011e72892f99f918c04a131f36056d10d9c1afb223fc952c2d"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c4a71d5d6e7b28a47a394c0471b7e77a0661e2d651e7ae91e0cab0a587859ca"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:90412f2db8c02a3864cbfc67db0e3dcdbda336acf1c469526d3e869394fe001c"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2ea4ad4e6a12e454de05f2949d4beddb52460f3de7c8b9d5c46fbb7d7222e02c"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fc4f7a173a5609631bb0c42c23d12c49df3966f89f496a51d3eb0ec81f4519d6"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:878206a45202247781472a2d99df12a176fef806ca175799e1c6ad263510d57c"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17c412bad2eb9468e876f556eb4ee910e62d721d2c7a53c7fa31e643d35352e6"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:0d987a3ae5a71c6226b203cfd298720e0086c7fe7c74f35fa8edddfbd6597eed"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:39887ac397ff35b7b775db7201095fc6310a35fdbae85bac4523f7eb3b840e20"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fdb5b3e311d4d4b0eb8b3e8b4d1b0a512713ad7e6a68791d0923d1aec433d919"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:226af7dcb51fdb0109f0016449b357e182ea0ceb6b47dfb5999d569e5db161d5"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bed0e799e6120b9c32756203fb9dfe8ca2fb8467fed830c34c877e25638c3fc"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:29c7947c594e105cb9e6c466bace8532dc1ca02d498684128b339799f5248277"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cdeabcff45d1c219636ee2e54d852262e5c2e085d6cb476d938aee8d921356b3"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35cffef589bcdc587d06f9149f8d5e9e8859920a071df5a2671de2213bef592a"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18c8dc3b7468d8b4bdf60ce9d7141897da103c7a4690157b32b60acb45e333e6"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7133d0a1677aec369d67dd78520d3fa96dd7f3dcec99d66c1762870e5ea1a50a"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6a96179a24b14fa6428cbfc08641c779a53f8fcec43644030328f44034c7f1f4"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4f78c88905461a9203eac9faac157a2a0dbba84a0fd09fd29315db27be40af9f"}, - {file = "pyzmq-26.2.0.tar.gz", hash = "sha256:070672c258581c8e4f640b5159297580a9974b026043bd4ab0470be9ed324f1f"}, +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "pyzmq-27.0.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:b973ee650e8f442ce482c1d99ca7ab537c69098d53a3d046676a484fd710c87a" }, + { file = "pyzmq-27.0.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:661942bc7cd0223d569d808f2e5696d9cc120acc73bf3e88a1f1be7ab648a7e4" }, + { file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50360fb2a056ffd16e5f4177eee67f1dd1017332ea53fb095fe7b5bf29c70246" }, + { file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf209a6dc4b420ed32a7093642843cbf8703ed0a7d86c16c0b98af46762ebefb" }, + { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c2dace4a7041cca2fba5357a2d7c97c5effdf52f63a1ef252cfa496875a3762d" }, + { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:63af72b2955fc77caf0a77444baa2431fcabb4370219da38e1a9f8d12aaebe28" }, + { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e8c4adce8e37e75c4215297d7745551b8dcfa5f728f23ce09bf4e678a9399413" }, + { file = "pyzmq-27.0.0-cp310-cp310-win32.whl", hash = "sha256:5d5ef4718ecab24f785794e0e7536436698b459bfbc19a1650ef55280119d93b" }, + { file = "pyzmq-27.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:e40609380480b3d12c30f841323f42451c755b8fece84235236f5fe5ffca8c1c" }, + { file = "pyzmq-27.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:6b0397b0be277b46762956f576e04dc06ced265759e8c2ff41a0ee1aa0064198" }, + { file = "pyzmq-27.0.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:21457825249b2a53834fa969c69713f8b5a79583689387a5e7aed880963ac564" }, + { file = "pyzmq-27.0.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1958947983fef513e6e98eff9cb487b60bf14f588dc0e6bf35fa13751d2c8251" }, + { file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0dc628b5493f9a8cd9844b8bee9732ef587ab00002157c9329e4fc0ef4d3afa" }, + { file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7bbe9e1ed2c8d3da736a15694d87c12493e54cc9dc9790796f0321794bbc91f" }, + { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dc1091f59143b471d19eb64f54bae4f54bcf2a466ffb66fe45d94d8d734eb495" }, + { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7011ade88c8e535cf140f8d1a59428676fbbce7c6e54fefce58bf117aefb6667" }, + { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2c386339d7e3f064213aede5d03d054b237937fbca6dd2197ac8cf3b25a6b14e" }, + { file = "pyzmq-27.0.0-cp311-cp311-win32.whl", hash = "sha256:0546a720c1f407b2172cb04b6b094a78773491497e3644863cf5c96c42df8cff" }, + { file = "pyzmq-27.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:15f39d50bd6c9091c67315ceb878a4f531957b121d2a05ebd077eb35ddc5efed" }, + { file = "pyzmq-27.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c5817641eebb391a2268c27fecd4162448e03538387093cdbd8bf3510c316b38" }, + { file = "pyzmq-27.0.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:cbabc59dcfaac66655c040dfcb8118f133fb5dde185e5fc152628354c1598e52" }, + { file = "pyzmq-27.0.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0ac5179cba4b2f94f1aa208fbb77b62c4c9bf24dd446278b8b602cf85fcda3" }, + { file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53a48f0228eab6cbf69fde3aa3c03cbe04e50e623ef92ae395fce47ef8a76152" }, + { file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:111db5f395e09f7e775f759d598f43cb815fc58e0147623c4816486e1a39dc22" }, + { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c8878011653dcdc27cc2c57e04ff96f0471e797f5c19ac3d7813a245bcb24371" }, + { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:c0ed2c1f335ba55b5fdc964622254917d6b782311c50e138863eda409fbb3b6d" }, + { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e918d70862d4cfd4b1c187310015646a14e1f5917922ab45b29f28f345eeb6be" }, + { file = "pyzmq-27.0.0-cp312-abi3-win32.whl", hash = "sha256:88b4e43cab04c3c0f0d55df3b1eef62df2b629a1a369b5289a58f6fa8b07c4f4" }, + { file = "pyzmq-27.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:dce4199bf5f648a902ce37e7b3afa286f305cd2ef7a8b6ec907470ccb6c8b371" }, + { file = "pyzmq-27.0.0-cp312-abi3-win_arm64.whl", hash = "sha256:56e46bbb85d52c1072b3f809cc1ce77251d560bc036d3a312b96db1afe76db2e" }, + { file = "pyzmq-27.0.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c36ad534c0c29b4afa088dc53543c525b23c0797e01b69fef59b1a9c0e38b688" }, + { file = "pyzmq-27.0.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:67855c14173aec36395d7777aaba3cc527b393821f30143fd20b98e1ff31fd38" }, + { file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8617c7d43cd8ccdb62aebe984bfed77ca8f036e6c3e46dd3dddda64b10f0ab7a" }, + { file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67bfbcbd0a04c575e8103a6061d03e393d9f80ffdb9beb3189261e9e9bc5d5e9" }, + { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5cd11d46d7b7e5958121b3eaf4cd8638eff3a720ec527692132f05a57f14341d" }, + { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b801c2e40c5aa6072c2f4876de8dccd100af6d9918d4d0d7aa54a1d982fd4f44" }, + { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20d5cb29e8c5f76a127c75b6e7a77e846bc4b655c373baa098c26a61b7ecd0ef" }, + { file = "pyzmq-27.0.0-cp313-cp313t-win32.whl", hash = "sha256:a20528da85c7ac7a19b7384e8c3f8fa707841fd85afc4ed56eda59d93e3d98ad" }, + { file = "pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f" }, + { file = "pyzmq-27.0.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:f4162dbbd9c5c84fb930a36f290b08c93e35fce020d768a16fc8891a2f72bab8" }, + { file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:4e7d0a8d460fba526cc047333bdcbf172a159b8bd6be8c3eb63a416ff9ba1477" }, + { file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:29f44e3c26b9783816ba9ce274110435d8f5b19bbd82f7a6c7612bb1452a3597" }, + { file = "pyzmq-27.0.0-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e435540fa1da54667f0026cf1e8407fe6d8a11f1010b7f06b0b17214ebfcf5e" }, + { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:51f5726de3532b8222e569990c8aa34664faa97038304644679a51d906e60c6e" }, + { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:42c7555123679637c99205b1aa9e8f7d90fe29d4c243c719e347d4852545216c" }, + { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a979b7cf9e33d86c4949df527a3018767e5f53bc3b02adf14d4d8db1db63ccc0" }, + { file = "pyzmq-27.0.0-cp38-cp38-win32.whl", hash = "sha256:26b72c5ae20bf59061c3570db835edb81d1e0706ff141747055591c4b41193f8" }, + { file = "pyzmq-27.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:55a0155b148fe0428285a30922f7213539aa84329a5ad828bca4bbbc665c70a4" }, + { file = "pyzmq-27.0.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:100f6e5052ba42b2533011d34a018a5ace34f8cac67cb03cfa37c8bdae0ca617" }, + { file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:bf6c6b061efd00404b9750e2cfbd9507492c8d4b3721ded76cb03786131be2ed" }, + { file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ee05728c0b0b2484a9fc20466fa776fffb65d95f7317a3419985b8c908563861" }, + { file = "pyzmq-27.0.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7cdf07fe0a557b131366f80727ec8ccc4b70d89f1e3f920d94a594d598d754f0" }, + { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:90252fa2ff3a104219db1f5ced7032a7b5fc82d7c8d2fec2b9a3e6fd4e25576b" }, + { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ea6d441c513bf18c578c73c323acf7b4184507fc244762193aa3a871333c9045" }, + { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ae2b34bcfaae20c064948a4113bf8709eee89fd08317eb293ae4ebd69b4d9740" }, + { file = "pyzmq-27.0.0-cp39-cp39-win32.whl", hash = "sha256:5b10bd6f008937705cf6e7bf8b6ece5ca055991e3eb130bca8023e20b86aa9a3" }, + { file = "pyzmq-27.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:00387d12a8af4b24883895f7e6b9495dc20a66027b696536edac35cb988c38f3" }, + { file = "pyzmq-27.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:4c19d39c04c29a6619adfeb19e3735c421b3bfee082f320662f52e59c47202ba" }, + { file = "pyzmq-27.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:656c1866505a5735d0660b7da6d7147174bbf59d4975fc2b7f09f43c9bc25745" }, + { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:74175b9e12779382432dd1d1f5960ebe7465d36649b98a06c6b26be24d173fab" }, + { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8c6de908465697a8708e4d6843a1e884f567962fc61eb1706856545141d0cbb" }, + { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c644aaacc01d0df5c7072826df45e67301f191c55f68d7b2916d83a9ddc1b551" }, + { file = "pyzmq-27.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:10f70c1d9a446a85013a36871a296007f6fe4232b530aa254baf9da3f8328bc0" }, + { file = "pyzmq-27.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd1dc59763effd1576f8368047c9c31468fce0af89d76b5067641137506792ae" }, + { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:60e8cc82d968174650c1860d7b716366caab9973787a1c060cf8043130f7d0f7" }, + { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:14fe7aaac86e4e93ea779a821967360c781d7ac5115b3f1a171ced77065a0174" }, + { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6ad0562d4e6abb785be3e4dd68599c41be821b521da38c402bc9ab2a8e7ebc7e" }, + { file = "pyzmq-27.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:9df43a2459cd3a3563404c1456b2c4c69564daa7dbaf15724c09821a3329ce46" }, + { file = "pyzmq-27.0.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8c86ea8fe85e2eb0ffa00b53192c401477d5252f6dd1db2e2ed21c1c30d17e5e" }, + { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:c45fee3968834cd291a13da5fac128b696c9592a9493a0f7ce0b47fa03cc574d" }, + { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cae73bb6898c4e045fbed5024cb587e4110fddb66f6163bcab5f81f9d4b9c496" }, + { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:26d542258c7a1f35a9cff3d887687d3235006134b0ac1c62a6fe1ad3ac10440e" }, + { file = "pyzmq-27.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:04cd50ef3b28e35ced65740fb9956a5b3f77a6ff32fcd887e3210433f437dd0f" }, + { file = "pyzmq-27.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:39ddd3ba0a641f01d8f13a3cfd4c4924eb58e660d8afe87e9061d6e8ca6f7ac3" }, + { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:8ca7e6a0388dd9e1180b14728051068f4efe83e0d2de058b5ff92c63f399a73f" }, + { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2524c40891be6a3106885a3935d58452dd83eb7a5742a33cc780a1ad4c49dec0" }, + { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a56e3e5bd2d62a01744fd2f1ce21d760c7c65f030e9522738d75932a14ab62a" }, + { file = "pyzmq-27.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:096af9e133fec3a72108ddefba1e42985cb3639e9de52cfd336b6fc23aa083e9" }, + { file = "pyzmq-27.0.0.tar.gz", hash = "sha256:b1f08eeb9ce1510e6939b6e5dcd46a17765e2333daae78ecf4606808442e52cf" }, ] [package.dependencies] @@ -2786,13 +3120,14 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "referencing" -version = "0.35.1" +version = "0.36.2" description = "JSON Referencing + Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, - {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, + { file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0" }, + { file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa" }, ] [package.dependencies] @@ -2801,18 +3136,19 @@ rpds-py = ">=0.7.0" [[package]] name = "requests" -version = "2.32.3" +version = "2.32.4" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, + { file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c" }, + { file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422" }, ] [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" +charset_normalizer = ">=2,<4" idna = ">=2.5,<4" urllib3 = ">=1.21.1,<3" @@ -2826,6 +3162,7 @@ version = "0.1.4" description = "A pure python RFC3339 validator" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] files = [ {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, @@ -2840,148 +3177,210 @@ version = "0.1.1" description = "Pure python rfc3986 validator" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] files = [ {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, ] +[[package]] +name = "rfc3987-syntax" +version = "1.1.0" +description = "Helper functions to syntactically validate strings according to RFC 3987." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "rfc3987_syntax-1.1.0-py3-none-any.whl", hash = "sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f" }, + { file = "rfc3987_syntax-1.1.0.tar.gz", hash = "sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d" }, +] + +[package.dependencies] +lark = ">=1.2.2" + +[package.extras] +testing = ["pytest (>=8.3.5)"] + [[package]] name = "rpds-py" -version = "0.20.0" +version = "0.26.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false -python-versions = ">=3.8" -files = [ - {file = "rpds_py-0.20.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2"}, - {file = "rpds_py-0.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94"}, - {file = "rpds_py-0.20.0-cp310-none-win32.whl", hash = "sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee"}, - {file = "rpds_py-0.20.0-cp310-none-win_amd64.whl", hash = "sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399"}, - {file = "rpds_py-0.20.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489"}, - {file = "rpds_py-0.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58"}, - {file = "rpds_py-0.20.0-cp311-none-win32.whl", hash = "sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0"}, - {file = "rpds_py-0.20.0-cp311-none-win_amd64.whl", hash = "sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c"}, - {file = "rpds_py-0.20.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6"}, - {file = "rpds_py-0.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174"}, - {file = "rpds_py-0.20.0-cp312-none-win32.whl", hash = "sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139"}, - {file = "rpds_py-0.20.0-cp312-none-win_amd64.whl", hash = "sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585"}, - {file = "rpds_py-0.20.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29"}, - {file = "rpds_py-0.20.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57"}, - {file = "rpds_py-0.20.0-cp313-none-win32.whl", hash = "sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a"}, - {file = "rpds_py-0.20.0-cp313-none-win_amd64.whl", hash = "sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2"}, - {file = "rpds_py-0.20.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24"}, - {file = "rpds_py-0.20.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a"}, - {file = "rpds_py-0.20.0-cp38-none-win32.whl", hash = "sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5"}, - {file = "rpds_py-0.20.0-cp38-none-win_amd64.whl", hash = "sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232"}, - {file = "rpds_py-0.20.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22"}, - {file = "rpds_py-0.20.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b"}, - {file = "rpds_py-0.20.0-cp39-none-win32.whl", hash = "sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7"}, - {file = "rpds_py-0.20.0-cp39-none-win_amd64.whl", hash = "sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8"}, - {file = "rpds_py-0.20.0.tar.gz", hash = "sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121"}, +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "rpds_py-0.26.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4c70c70f9169692b36307a95f3d8c0a9fcd79f7b4a383aad5eaa0e9718b79b37" }, + { file = "rpds_py-0.26.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:777c62479d12395bfb932944e61e915741e364c843afc3196b694db3d669fcd0" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec671691e72dff75817386aa02d81e708b5a7ec0dec6669ec05213ff6b77e1bd" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a1cb5d6ce81379401bbb7f6dbe3d56de537fb8235979843f0d53bc2e9815a79" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f789e32fa1fb6a7bf890e0124e7b42d1e60d28ebff57fe806719abb75f0e9a3" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c55b0a669976cf258afd718de3d9ad1b7d1fe0a91cd1ab36f38b03d4d4aeaaf" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c70d9ec912802ecfd6cd390dadb34a9578b04f9bcb8e863d0a7598ba5e9e7ccc" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3021933c2cb7def39d927b9862292e0f4c75a13d7de70eb0ab06efed4c508c19" }, + { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8a7898b6ca3b7d6659e55cdac825a2e58c638cbf335cde41f4619e290dd0ad11" }, + { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:12bff2ad9447188377f1b2794772f91fe68bb4bbfa5a39d7941fbebdbf8c500f" }, + { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:191aa858f7d4902e975d4cf2f2d9243816c91e9605070aeb09c0a800d187e323" }, + { file = "rpds_py-0.26.0-cp310-cp310-win32.whl", hash = "sha256:b37a04d9f52cb76b6b78f35109b513f6519efb481d8ca4c321f6a3b9580b3f45" }, + { file = "rpds_py-0.26.0-cp310-cp310-win_amd64.whl", hash = "sha256:38721d4c9edd3eb6670437d8d5e2070063f305bfa2d5aa4278c51cedcd508a84" }, + { file = "rpds_py-0.26.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9e8cb77286025bdb21be2941d64ac6ca016130bfdcd228739e8ab137eb4406ed" }, + { file = "rpds_py-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e09330b21d98adc8ccb2dbb9fc6cb434e8908d4c119aeaa772cb1caab5440a0" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9c1b92b774b2e68d11193dc39620d62fd8ab33f0a3c77ecdabe19c179cdbc1" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:824e6d3503ab990d7090768e4dfd9e840837bae057f212ff9f4f05ec6d1975e7" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ad7fd2258228bf288f2331f0a6148ad0186b2e3643055ed0db30990e59817a6" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dc23bbb3e06ec1ea72d515fb572c1fea59695aefbffb106501138762e1e915e" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d80bf832ac7b1920ee29a426cdca335f96a2b5caa839811803e999b41ba9030d" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0919f38f5542c0a87e7b4afcafab6fd2c15386632d249e9a087498571250abe3" }, + { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d422b945683e409000c888e384546dbab9009bb92f7c0b456e217988cf316107" }, + { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a7711fa562ba2da1aa757e11024ad6d93bad6ad7ede5afb9af144623e5f76a" }, + { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238e8c8610cb7c29460e37184f6799547f7e09e6a9bdbdab4e8edb90986a2318" }, + { file = "rpds_py-0.26.0-cp311-cp311-win32.whl", hash = "sha256:893b022bfbdf26d7bedb083efeea624e8550ca6eb98bf7fea30211ce95b9201a" }, + { file = "rpds_py-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:87a5531de9f71aceb8af041d72fc4cab4943648d91875ed56d2e629bef6d4c03" }, + { file = "rpds_py-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:de2713f48c1ad57f89ac25b3cb7daed2156d8e822cf0eca9b96a6f990718cc41" }, + { file = "rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d" }, + { file = "rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323" }, + { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158" }, + { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3" }, + { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2" }, + { file = "rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44" }, + { file = "rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c" }, + { file = "rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8" }, + { file = "rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d" }, + { file = "rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1" }, + { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9" }, + { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9" }, + { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba" }, + { file = "rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b" }, + { file = "rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5" }, + { file = "rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256" }, + { file = "rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618" }, + { file = "rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed" }, + { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632" }, + { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c" }, + { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0" }, + { file = "rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9" }, + { file = "rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9" }, + { file = "rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a" }, + { file = "rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387" }, + { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af" }, + { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33" }, + { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953" }, + { file = "rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9" }, + { file = "rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37" }, + { file = "rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867" }, + { file = "rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da" }, + { file = "rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b" }, + { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a" }, + { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170" }, + { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e" }, + { file = "rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f" }, + { file = "rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7" }, + { file = "rpds_py-0.26.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:7a48af25d9b3c15684059d0d1fc0bc30e8eee5ca521030e2bffddcab5be40226" }, + { file = "rpds_py-0.26.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0c71c2f6bf36e61ee5c47b2b9b5d47e4d1baad6426bfed9eea3e858fc6ee8806" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d815d48b1804ed7867b539236b6dd62997850ca1c91cad187f2ddb1b7bbef19" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84cfbd4d4d2cdeb2be61a057a258d26b22877266dd905809e94172dff01a42ae" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fbaa70553ca116c77717f513e08815aec458e6b69a028d4028d403b3bc84ff37" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39bfea47c375f379d8e87ab4bb9eb2c836e4f2069f0f65731d85e55d74666387" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1533b7eb683fb5f38c1d68a3c78f5fdd8f1412fa6b9bf03b40f450785a0ab915" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c5ab0ee51f560d179b057555b4f601b7df909ed31312d301b99f8b9fc6028284" }, + { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e5162afc9e0d1f9cae3b577d9c29ddbab3505ab39012cb794d94a005825bde21" }, + { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:43f10b007033f359bc3fa9cd5e6c1e76723f056ffa9a6b5c117cc35720a80292" }, + { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e3730a48e5622e598293eee0762b09cff34dd3f271530f47b0894891281f051d" }, + { file = "rpds_py-0.26.0-cp39-cp39-win32.whl", hash = "sha256:4b1f66eb81eab2e0ff5775a3a312e5e2e16bf758f7b06be82fb0d04078c7ac51" }, + { file = "rpds_py-0.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:519067e29f67b5c90e64fb1a6b6e9d2ec0ba28705c51956637bac23a2f4ddae1" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3c0909c5234543ada2515c05dc08595b08d621ba919629e94427e8e03539c958" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c1fb0cda2abcc0ac62f64e2ea4b4e64c57dfd6b885e693095460c61bde7bb18e" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84d142d2d6cf9b31c12aa4878d82ed3b2324226270b89b676ac62ccd7df52d08" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a547e21c5610b7e9093d870be50682a6a6cf180d6da0f42c47c306073bfdbbf6" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:35e9a70a0f335371275cdcd08bc5b8051ac494dd58bff3bbfb421038220dc871" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dfa6115c6def37905344d56fb54c03afc49104e2ca473d5dedec0f6606913b4" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:313cfcd6af1a55a286a3c9a25f64af6d0e46cf60bc5798f1db152d97a216ff6f" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f7bf2496fa563c046d05e4d232d7b7fd61346e2402052064b773e5c378bf6f73" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:aa81873e2c8c5aa616ab8e017a481a96742fdf9313c40f14338ca7dbf50cb55f" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:68ffcf982715f5b5b7686bdd349ff75d422e8f22551000c24b30eaa1b7f7ae84" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6188de70e190847bb6db3dc3981cbadff87d27d6fe9b4f0e18726d55795cee9b" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1c962145c7473723df9722ba4c058de12eb5ebedcb4e27e7d902920aa3831ee8" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f61a9326f80ca59214d1cceb0a09bb2ece5b2563d4e0cd37bfd5515c28510674" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:183f857a53bcf4b1b42ef0f57ca553ab56bdd170e49d8091e96c51c3d69ca696" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:941c1cfdf4799d623cf3aa1d326a6b4fdb7a5799ee2687f3516738216d2262fb" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72a8d9564a717ee291f554eeb4bfeafe2309d5ec0aa6c475170bdab0f9ee8e88" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:511d15193cbe013619dd05414c35a7dedf2088fcee93c6bbb7c77859765bd4e8" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aea1f9741b603a8d8fedb0ed5502c2bc0accbc51f43e2ad1337fe7259c2b77a5" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4019a9d473c708cf2f16415688ef0b4639e07abaa569d72f74745bbeffafa2c7" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:093d63b4b0f52d98ebae33b8c50900d3d67e0666094b1be7a12fffd7f65de74b" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2abe21d8ba64cded53a2a677e149ceb76dcf44284202d737178afe7ba540c1eb" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:4feb7511c29f8442cbbc28149a92093d32e815a28aa2c50d333826ad2a20fdf0" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e99685fc95d386da368013e7fb4269dd39c30d99f812a8372d62f244f662709c" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a90a13408a7a856b87be8a9f008fff53c5080eea4e4180f6c2e546e4a972fb5d" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ac51b65e8dc76cf4949419c54c5528adb24fc721df722fd452e5fbc236f5c40" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59b2093224a18c6508d95cfdeba8db9cbfd6f3494e94793b58972933fcee4c6d" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f01a5d6444a3258b00dc07b6ea4733e26f8072b788bef750baa37b370266137" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6e2c12160c72aeda9d1283e612f68804621f448145a210f1bf1d79151c47090" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb28c1f569f8d33b2b5dcd05d0e6ef7005d8639c54c2f0be824f05aedf715255" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1766b5724c3f779317d5321664a343c07773c8c5fd1532e4039e6cc7d1a815be" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b6d9e5a2ed9c4988c8f9b28b3bc0e3e5b1aaa10c28d210a594ff3a8c02742daf" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b5f7a446ddaf6ca0fad9a5535b56fbfc29998bf0e0b450d174bbec0d600e1d72" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:eed5ac260dd545fbc20da5f4f15e7efe36a55e0e7cf706e4ec005b491a9546a0" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:582462833ba7cee52e968b0341b85e392ae53d44c0f9af6a5927c80e539a8b67" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:69a607203441e07e9a8a529cff1d5b73f6a160f22db1097211e6212a68567d11" }, + { file = "rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0" }, ] [[package]] name = "ruff" -version = "0.5.7" +version = "0.12.4" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" -files = [ - {file = "ruff-0.5.7-py3-none-linux_armv6l.whl", hash = "sha256:548992d342fc404ee2e15a242cdbea4f8e39a52f2e7752d0e4cbe88d2d2f416a"}, - {file = "ruff-0.5.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:00cc8872331055ee017c4f1071a8a31ca0809ccc0657da1d154a1d2abac5c0be"}, - {file = "ruff-0.5.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:eaf3d86a1fdac1aec8a3417a63587d93f906c678bb9ed0b796da7b59c1114a1e"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a01c34400097b06cf8a6e61b35d6d456d5bd1ae6961542de18ec81eaf33b4cb8"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcc8054f1a717e2213500edaddcf1dbb0abad40d98e1bd9d0ad364f75c763eea"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f70284e73f36558ef51602254451e50dd6cc479f8b6f8413a95fcb5db4a55fc"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a78ad870ae3c460394fc95437d43deb5c04b5c29297815a2a1de028903f19692"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ccd078c66a8e419475174bfe60a69adb36ce04f8d4e91b006f1329d5cd44bcf"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e31c9bad4ebf8fdb77b59cae75814440731060a09a0e0077d559a556453acbb"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d796327eed8e168164346b769dd9a27a70e0298d667b4ecee6877ce8095ec8e"}, - {file = "ruff-0.5.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4a09ea2c3f7778cc635e7f6edf57d566a8ee8f485f3c4454db7771efb692c499"}, - {file = "ruff-0.5.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a36d8dcf55b3a3bc353270d544fb170d75d2dff41eba5df57b4e0b67a95bb64e"}, - {file = "ruff-0.5.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9369c218f789eefbd1b8d82a8cf25017b523ac47d96b2f531eba73770971c9e5"}, - {file = "ruff-0.5.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b88ca3db7eb377eb24fb7c82840546fb7acef75af4a74bd36e9ceb37a890257e"}, - {file = "ruff-0.5.7-py3-none-win32.whl", hash = "sha256:33d61fc0e902198a3e55719f4be6b375b28f860b09c281e4bdbf783c0566576a"}, - {file = "ruff-0.5.7-py3-none-win_amd64.whl", hash = "sha256:083bbcbe6fadb93cd86709037acc510f86eed5a314203079df174c40bbbca6b3"}, - {file = "ruff-0.5.7-py3-none-win_arm64.whl", hash = "sha256:2dca26154ff9571995107221d0aeaad0e75a77b5a682d6236cf89a58c70b76f4"}, - {file = "ruff-0.5.7.tar.gz", hash = "sha256:8dfc0a458797f5d9fb622dd0efc52d796f23f0a1493a9527f4e49a550ae9a7e5"}, +groups = ["dev"] +files = [ + { file = "ruff-0.12.4-py3-none-linux_armv6l.whl", hash = "sha256:cb0d261dac457ab939aeb247e804125a5d521b21adf27e721895b0d3f83a0d0a" }, + { file = "ruff-0.12.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:55c0f4ca9769408d9b9bac530c30d3e66490bd2beb2d3dae3e4128a1f05c7442" }, + { file = "ruff-0.12.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a8224cc3722c9ad9044da7f89c4c1ec452aef2cfe3904365025dd2f51daeae0e" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9949d01d64fa3672449a51ddb5d7548b33e130240ad418884ee6efa7a229586" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:be0593c69df9ad1465e8a2d10e3defd111fdb62dcd5be23ae2c06da77e8fcffb" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7dea966bcb55d4ecc4cc3270bccb6f87a337326c9dcd3c07d5b97000dbff41c" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:afcfa3ab5ab5dd0e1c39bf286d829e042a15e966b3726eea79528e2e24d8371a" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c057ce464b1413c926cdb203a0f858cd52f3e73dcb3270a3318d1630f6395bb3" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e64b90d1122dc2713330350626b10d60818930819623abbb56535c6466cce045" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2abc48f3d9667fdc74022380b5c745873499ff827393a636f7a59da1515e7c57" }, + { file = "ruff-0.12.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2b2449dc0c138d877d629bea151bee8c0ae3b8e9c43f5fcaafcd0c0d0726b184" }, + { file = "ruff-0.12.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:56e45bb11f625db55f9b70477062e6a1a04d53628eda7784dce6e0f55fd549eb" }, + { file = "ruff-0.12.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:478fccdb82ca148a98a9ff43658944f7ab5ec41c3c49d77cd99d44da019371a1" }, + { file = "ruff-0.12.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0fc426bec2e4e5f4c4f182b9d2ce6a75c85ba9bcdbe5c6f2a74fcb8df437df4b" }, + { file = "ruff-0.12.4-py3-none-win32.whl", hash = "sha256:4de27977827893cdfb1211d42d84bc180fceb7b72471104671c59be37041cf93" }, + { file = "ruff-0.12.4-py3-none-win_amd64.whl", hash = "sha256:fe0b9e9eb23736b453143d72d2ceca5db323963330d5b7859d60d101147d461a" }, + { file = "ruff-0.12.4-py3-none-win_arm64.whl", hash = "sha256:0618ec4442a83ab545e5b71202a5c0ed7791e8471435b94e655b570a5031a98e" }, + { file = "ruff-0.12.4.tar.gz", hash = "sha256:13efa16df6c6eeb7d0f091abae50f58e9522f3843edb40d56ad52a5a4a4b6873" }, ] [[package]] @@ -2990,35 +3389,37 @@ version = "1.8.3" description = "Send file to trash natively under Mac OS X, Windows and Linux" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +groups = ["dev"] files = [ {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, ] [package.extras] -nativelib = ["pyobjc-framework-Cocoa", "pywin32"] -objc = ["pyobjc-framework-Cocoa"] -win32 = ["pywin32"] +nativelib = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\"", "pywin32 ; sys_platform == \"win32\""] +objc = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\""] +win32 = ["pywin32 ; sys_platform == \"win32\""] [[package]] name = "setuptools" -version = "75.2.0" +version = "80.9.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "setuptools-75.2.0-py3-none-any.whl", hash = "sha256:a7fcb66f68b4d9e8e66b42f9876150a3371558f98fa32222ffaa5bced76406f8"}, - {file = "setuptools-75.2.0.tar.gz", hash = "sha256:753bb6ebf1f465a1912e19ed1d41f403a79173a9acf66a42e7e6aec45c3c16ec"}, + { file = "setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922" }, + { file = "setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c" }, ] [package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.8.0) ; sys_platform != \"cygwin\""] +core = ["importlib_metadata (>=6) ; python_version < \"3.10\"", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.14.*)", "pytest-mypy"] [[package]] name = "six" @@ -3026,6 +3427,7 @@ version = "1.16.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +groups = ["main", "dev"] files = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -3037,167 +3439,31 @@ version = "1.3.1" description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, ] -[[package]] -name = "snowballstemmer" -version = "2.2.0" -description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." -optional = false -python-versions = "*" -files = [ - {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, - {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, -] - [[package]] name = "soupsieve" -version = "2.6" +version = "2.7" description = "A modern CSS selector implementation for Beautiful Soup." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"}, - {file = "soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb"}, -] - -[[package]] -name = "sphinx" -version = "8.1.3" -description = "Python documentation generator" -optional = false -python-versions = ">=3.10" -files = [ - {file = "sphinx-8.1.3-py3-none-any.whl", hash = "sha256:09719015511837b76bf6e03e42eb7595ac8c2e41eeb9c29c5b755c6b677992a2"}, - {file = "sphinx-8.1.3.tar.gz", hash = "sha256:43c1911eecb0d3e161ad78611bc905d1ad0e523e4ddc202a58a821773dc4c927"}, -] - -[package.dependencies] -alabaster = ">=0.7.14" -babel = ">=2.13" -colorama = {version = ">=0.4.6", markers = "sys_platform == \"win32\""} -docutils = ">=0.20,<0.22" -imagesize = ">=1.3" -Jinja2 = ">=3.1" -packaging = ">=23.0" -Pygments = ">=2.17" -requests = ">=2.30.0" -snowballstemmer = ">=2.2" -sphinxcontrib-applehelp = ">=1.0.7" -sphinxcontrib-devhelp = ">=1.0.6" -sphinxcontrib-htmlhelp = ">=2.0.6" -sphinxcontrib-jsmath = ">=1.0.1" -sphinxcontrib-qthelp = ">=1.0.6" -sphinxcontrib-serializinghtml = ">=1.1.9" - -[package.extras] -docs = ["sphinxcontrib-websupport"] -lint = ["flake8 (>=6.0)", "mypy (==1.11.1)", "pyright (==1.1.384)", "pytest (>=6.0)", "ruff (==0.6.9)", "sphinx-lint (>=0.9)", "tomli (>=2)", "types-Pillow (==10.2.0.20240822)", "types-Pygments (==2.18.0.20240506)", "types-colorama (==0.4.15.20240311)", "types-defusedxml (==0.7.0.20240218)", "types-docutils (==0.21.0.20241005)", "types-requests (==2.32.0.20240914)", "types-urllib3 (==1.26.25.14)"] -test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=8.0)", "setuptools (>=70.0)", "typing_extensions (>=4.9)"] - -[[package]] -name = "sphinxcontrib-applehelp" -version = "2.0.0" -description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" -optional = false -python-versions = ">=3.9" -files = [ - {file = "sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5"}, - {file = "sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1"}, -] - -[package.extras] -lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] -standalone = ["Sphinx (>=5)"] -test = ["pytest"] - -[[package]] -name = "sphinxcontrib-devhelp" -version = "2.0.0" -description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" -optional = false -python-versions = ">=3.9" -files = [ - {file = "sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2"}, - {file = "sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad"}, -] - -[package.extras] -lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] -standalone = ["Sphinx (>=5)"] -test = ["pytest"] - -[[package]] -name = "sphinxcontrib-htmlhelp" -version = "2.1.0" -description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" -optional = false -python-versions = ">=3.9" -files = [ - {file = "sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8"}, - {file = "sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9"}, -] - -[package.extras] -lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] -standalone = ["Sphinx (>=5)"] -test = ["html5lib", "pytest"] - -[[package]] -name = "sphinxcontrib-jsmath" -version = "1.0.1" -description = "A sphinx extension which renders display math in HTML via JavaScript" -optional = false -python-versions = ">=3.5" -files = [ - {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, - {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, -] - -[package.extras] -test = ["flake8", "mypy", "pytest"] - -[[package]] -name = "sphinxcontrib-qthelp" -version = "2.0.0" -description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" -optional = false -python-versions = ">=3.9" -files = [ - {file = "sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb"}, - {file = "sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab"}, + { file = "soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4" }, + { file = "soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a" }, ] -[package.extras] -lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] -standalone = ["Sphinx (>=5)"] -test = ["defusedxml (>=0.7.1)", "pytest"] - -[[package]] -name = "sphinxcontrib-serializinghtml" -version = "2.0.0" -description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" -optional = false -python-versions = ">=3.9" -files = [ - {file = "sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331"}, - {file = "sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d"}, -] - -[package.extras] -lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] -standalone = ["Sphinx (>=5)"] -test = ["pytest"] - [[package]] name = "stack-data" version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, @@ -3217,6 +3483,7 @@ version = "0.18.1" description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, @@ -3238,6 +3505,7 @@ version = "1.4.0" description = "A tiny CSS parser" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, @@ -3256,6 +3524,7 @@ version = "1.0.0" description = "List processing tools and functional utilities" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236"}, {file = "toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02"}, @@ -3263,22 +3532,24 @@ files = [ [[package]] name = "tornado" -version = "6.4.1" +version = "6.5.1" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, - {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"}, - {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"}, - {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"}, - {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"}, + { file = "tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7" }, + { file = "tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6" }, + { file = "tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888" }, + { file = "tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331" }, + { file = "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" }, + { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401" }, + { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692" }, + { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a" }, + { file = "tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365" }, + { file = "tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b" }, + { file = "tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7" }, + { file = "tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c" }, ] [[package]] @@ -3287,6 +3558,7 @@ version = "5.14.3" description = "Traitlets Python configuration system" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, @@ -3298,13 +3570,14 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0, [[package]] name = "types-python-dateutil" -version = "2.9.0.20241003" +version = "2.9.0.20250708" description = "Typing stubs for python-dateutil" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "types-python-dateutil-2.9.0.20241003.tar.gz", hash = "sha256:58cb85449b2a56d6684e41aeefb4c4280631246a0da1a719bdbe6f3fb0317446"}, - {file = "types_python_dateutil-2.9.0.20241003-py3-none-any.whl", hash = "sha256:250e1d8e80e7bbc3a6c99b907762711d1a1cdd00e978ad39cb5940f6f0a87f3d"}, + { file = "types_python_dateutil-2.9.0.20250708-py3-none-any.whl", hash = "sha256:4d6d0cc1cc4d24a2dc3816024e502564094497b713f7befda4d5bc7a8e3fd21f" }, + { file = "types_python_dateutil-2.9.0.20250708.tar.gz", hash = "sha256:ccdbd75dab2d6c9696c350579f34cffe2c281e4c5f27a585b2a2438dd1d5c8ab" }, ] [[package]] @@ -3313,17 +3586,34 @@ version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] +[[package]] +name = "typing-inspection" +version = "0.4.1" +description = "Runtime typing introspection tools" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + { file = "typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51" }, + { file = "typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28" }, +] + +[package.dependencies] +typing-extensions = ">=4.12.0" + [[package]] name = "tzdata" version = "2024.2" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" +groups = ["main"] files = [ {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, @@ -3335,6 +3625,7 @@ version = "1.3.0" description = "RFC 6570 URI Template Processor" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, @@ -3345,30 +3636,32 @@ dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake [[package]] name = "urllib3" -version = "2.2.3" +version = "2.5.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, + { file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc" }, + { file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760" }, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.27.0" +version = "20.31.2" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "virtualenv-20.27.0-py3-none-any.whl", hash = "sha256:44a72c29cceb0ee08f300b314848c86e57bf8d1f13107a5e671fb9274138d655"}, - {file = "virtualenv-20.27.0.tar.gz", hash = "sha256:2ca56a68ed615b8fe4326d11a0dca5dfbe8fd68510fb6c6349163bed3c15f2b2"}, + { file = "virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11" }, + { file = "virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af" }, ] [package.dependencies] @@ -3378,7 +3671,50 @@ platformdirs = ">=3.9.1,<5" [package.extras] docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"GraalVM\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""] + +[[package]] +name = "watchdog" +version = "6.0.0" +description = "Filesystem events monitoring" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26" }, + { file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112" }, + { file = "watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3" }, + { file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c" }, + { file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2" }, + { file = "watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c" }, + { file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948" }, + { file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860" }, + { file = "watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0" }, + { file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c" }, + { file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134" }, + { file = "watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b" }, + { file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8" }, + { file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a" }, + { file = "watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c" }, + { file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881" }, + { file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11" }, + { file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa" }, + { file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2" }, + { file = "watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a" }, + { file = "watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680" }, + { file = "watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f" }, + { file = "watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282" }, +] + +[package.extras] +watchmedo = ["PyYAML (>=3.10)"] [[package]] name = "wcwidth" @@ -3386,6 +3722,7 @@ version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, @@ -3393,25 +3730,23 @@ files = [ [[package]] name = "webcolors" -version = "24.8.0" +version = "24.11.1" description = "A library for working with the color formats defined by HTML and CSS." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "webcolors-24.8.0-py3-none-any.whl", hash = "sha256:fc4c3b59358ada164552084a8ebee637c221e4059267d0f8325b3b560f6c7f0a"}, - {file = "webcolors-24.8.0.tar.gz", hash = "sha256:08b07af286a01bcd30d583a7acadf629583d1f79bfef27dd2c2c5c263817277d"}, + { file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9" }, + { file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6" }, ] -[package.extras] -docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"] -tests = ["coverage[toml]"] - [[package]] name = "webencodings" version = "0.5.1" description = "Character encoding aliases for legacy web content" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, @@ -3423,6 +3758,7 @@ version = "1.8.0" description = "WebSocket client for Python with low level API options" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, @@ -3435,62 +3771,70 @@ test = ["websockets"] [[package]] name = "widgetsnbextension" -version = "4.0.13" +version = "4.0.14" description = "Jupyter interactive widgets for Jupyter Notebook" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ - {file = "widgetsnbextension-4.0.13-py3-none-any.whl", hash = "sha256:74b2692e8500525cc38c2b877236ba51d34541e6385eeed5aec15a70f88a6c71"}, - {file = "widgetsnbextension-4.0.13.tar.gz", hash = "sha256:ffcb67bc9febd10234a362795f643927f4e0c05d9342c727b65d2384f8feacb6"}, + { file = "widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575" }, + { file = "widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af" }, ] [[package]] name = "xarray" -version = "2024.10.0" +version = "2025.7.1" description = "N-D labeled arrays and datasets in Python" optional = false -python-versions = ">=3.10" +python-versions = ">=3.11" +groups = ["main"] files = [ - {file = "xarray-2024.10.0-py3-none-any.whl", hash = "sha256:ae1d38cb44a0324dfb61e492394158ae22389bf7de9f3c174309c17376df63a0"}, - {file = "xarray-2024.10.0.tar.gz", hash = "sha256:e369e2bac430e418c2448e5b96f07da4635f98c1319aa23cfeb3fbcb9a01d2e0"}, + { file = "xarray-2025.7.1-py3-none-any.whl", hash = "sha256:e8647b659e53bd350d7c5a91c34dd4122ad6a3ca0bc41399d424a7c0273c7635" }, + { file = "xarray-2025.7.1.tar.gz", hash = "sha256:2884bf5672b540fcc6ff8c20a3196bda0d78fbfb4d67398d60526e97c2faceef" }, ] [package.dependencies] -numpy = ">=1.24" -packaging = ">=23.1" -pandas = ">=2.1" +numpy = ">=1.26" +packaging = ">=24.1" +pandas = ">=2.2" [package.extras] -accel = ["bottleneck", "flox", "numba (>=0.54)", "numbagg", "opt-einsum", "scipy"] +accel = ["bottleneck", "flox (>=0.9)", "numba (>=0.59)", "numbagg (>=0.8)", "opt_einsum", "scipy (>=1.13)"] complete = ["xarray[accel,etc,io,parallel,viz]"] -dev = ["hypothesis", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-env", "pytest-timeout", "pytest-xdist", "ruff", "sphinx", "sphinx-autosummary-accessors", "xarray[complete]"] -etc = ["sparse"] -io = ["cftime", "fsspec", "h5netcdf", "netCDF4", "pooch", "pydap", "scipy", "zarr"] +etc = ["sparse (>=0.15)"] +io = ["cftime", "fsspec", "h5netcdf", "netCDF4 (>=1.6.0)", "pooch", "pydap", "scipy (>=1.13)", "zarr (>=2.18)"] parallel = ["dask[complete]"] -viz = ["cartopy", "matplotlib", "nc-time-axis", "seaborn"] +types = ["pandas-stubs", "scipy-stubs", "types-PyYAML", "types-Pygments", "types-colorama", "types-decorator", "types-defusedxml", "types-docutils", "types-networkx", "types-openpyxl", "types-pexpect", "types-psutil", "types-pycurl", "types-python-dateutil", "types-pytz", "types-setuptools"] +viz = ["cartopy (>=0.23)", "matplotlib", "nc-time-axis", "seaborn"] [[package]] name = "zarr" -version = "2.18.3" +version = "3.1.0" description = "An implementation of chunked, compressed, N-dimensional arrays for Python" optional = false -python-versions = ">=3.10" +python-versions = ">=3.11" +groups = ["main"] files = [ - {file = "zarr-2.18.3-py3-none-any.whl", hash = "sha256:b1f7dfd2496f436745cdd4c7bcf8d3b4bc1dceef5fdd0d589c87130d842496dd"}, - {file = "zarr-2.18.3.tar.gz", hash = "sha256:2580d8cb6dd84621771a10d31c4d777dca8a27706a1a89b29f42d2d37e2df5ce"}, + { file = "zarr-3.1.0-py3-none-any.whl", hash = "sha256:bd3d2f88d602d43f81df82e26dd115ea66635a2af5bf6da261d3c640bb4c1ce4" }, + { file = "zarr-3.1.0.tar.gz", hash = "sha256:ace5b111dc69d5315cb1655dfd0f816c5acf9798d2ad92f43b608a52c8c8ac2b" }, ] [package.dependencies] -asciitree = "*" -fasteners = {version = "*", markers = "sys_platform != \"emscripten\""} -numcodecs = ">=0.10.0" -numpy = ">=1.24" +donfig = ">=0.8" +numcodecs = { version = ">=0.14", extras = ["crc32c"] } +numpy = ">=1.26" +packaging = ">=22.0" +typing-extensions = ">=4.9" [package.extras] -docs = ["numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-automodapi", "sphinx-copybutton", "sphinx-design", "sphinx-issues"] -jupyter = ["ipytree (>=0.2.2)", "ipywidgets (>=8.0.0)", "notebook"] +docs = ["astroid (<4)", "numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "pytest", "rich", "s3fs (>=2023.10.0)", "sphinx (==8.1.3)", "sphinx-autoapi (==3.4.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx-copybutton", "sphinx-design", "sphinx-issues", "sphinx-reredirects", "towncrier"] +gpu = ["cupy-cuda12x"] +optional = ["rich", "universal-pathlib"] +remote = ["fsspec (>=2023.10.0)", "obstore (>=0.5.1)"] +remote-tests = ["botocore", "fsspec (>=2023.10.0)", "moto[s3,server]", "obstore (>=0.5.1)", "requests", "s3fs (>=2023.10.0)"] +test = ["coverage", "hypothesis", "mypy", "packaging", "pytest (<8.4)", "pytest-accept", "pytest-asyncio", "pytest-cov", "pytest-xdist", "rich", "tomlkit", "uv"] [metadata] -lock-version = "2.0" -python-versions = "^3.12" -content-hash = "c227f4956e13803f7c4c240d2028332843d0193a7d65c66c70cea8b1ac344a56" +lock-version = "2.1" +python-versions = ">=3.13" +content-hash = "8bae2583ae033a597f7a25d41850932002e2a0fdd9baa8e5edd7856f5c19bd12" diff --git a/pyproject.toml b/pyproject.toml index fe31d88..3899a2a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,42 +1,44 @@ -[tool.poetry] -name = "weather-provider-libraries" -version = "0.3.1" -description = "The Weather Provider Libraries for the Weather Provider Access Suite project" -authors = ["Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com>"] -license = "MPL2.0" -readme = "README.rst" +[project] +name = "meteoforge" +version = "3.0.0-alpha.1" +description = "The MeteoForge Project provides a set of tools to work with meteorological data, focused on downloading, processing and formatting datasets from various sources." +authors = [ + { name = "Raoul Linnenbank", email = "58594297+rflinnenbank@users.noreply.github.com" } +] +license = { text = "MPL2.0" } +readme = "README.md" +requires-python = ">=3.13" +dynamic = ["dependencies"] + +[tool.poetry.urls] +homepage = "https://github.com/alliander-opensource/meteoforge" +repository = "https://github.com/alliander-opensource/meteoforge" +documentation = "https://github.com/alliander-opensource/meteoforge" [tool.poetry.dependencies] -python = "^3.12" -pydantic = "^2.8.2" -pyproj = "^3.6.1" -numpy = "^2.0.1" -xarray = "^2024.10.0" -dask = "^2024.10.0" -zarr = "^2.18.3" +dask = "^2025.7" netcdf4 = "^1.7.2" - -[tool.poetry.group.dev] -optional = true +numpy = "^2.3.1" +pydantic = "^2.11.7" +pyproj = "^3.7.1" +xarray = "^2025.7.1" +zarr = "^3.1.0" [tool.poetry.group.dev.dependencies] -sphinx = "^8.0.2" -pytest = "^8.3.2" -coverage = "^7.6.1" -mypy = "^1.11.1" -ruff = "^0.5.7" -black = "^24.8.0" -jupyter = "^1.0.0" -pre-commit = "^3.8.0" -myst-parser = "^4.0.0" -pytest-cov = "^5.0.0" - +coverage = "^7.9.2" +jupyter = "^1.1.1" +mkdocs = "^1.6.1" +mkdocs-material = "^9.6.15" +mkdocstrings = { extras = ["python"], version = "^0.29.1" } +mypy = "^1.17.0" +pre-commit = "^4.2.0" +pytest = "^8.4.1" +ruff = "^0.12.4" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" -# Tool configuration: [tool.ruff] output-format = "github" line-length = 120 @@ -73,46 +75,33 @@ exclude = [ [tool.ruff.lint] select = [ - # pycodestyle "E", - # Pyflake "F", - # pyupgrade "UP", - # flake8-bugbear "B", - # flake8-simplify "SIM", - # isort "I", - # pydocstyle "D", ] ignore = [ - # Missing docstring in public module "D100", - # Missing docstring in public package "D104", - # `one-blank-line-before-class` (D203) and `no-blank-line-before-class` (D211) are incompatible. Ignoring `one-blank-line-before-class`. "D203", - # `multi-line-summary-first-line` (D212) and `multi-line-summary-second-line` (D213) are incompatible. Ignoring `multi-line-summary-second-line`. "D213", ] [tool.ruff.lint.per-file-ignores] -# Allow longer line length in conftest where many 1-line dictinaries are specified "conftest.py" = ["E501"] [tool.mypy] -packages = ["vbd_alise_api"] -exclude = ["migrations"] +packages = ["meteoforge"] [tool.pytest.ini_options] addopts = [ - "--cov", - "--cov-branch", - "--cov-report=xml", - "--cov-report=term-missing" # Coverage report incl missing lines in terminal + "--cov", + "--cov-branch", + "--cov-report=xml", + "--cov-report=term-missing" ] minversion = "8.3.2" testpaths = ["tests"] @@ -123,6 +112,3 @@ omit = [ "tests/*", ".venv/*", ] - -[tool.black] -line-length = 120 diff --git a/src/meteoforge/__init__.py b/src/meteoforge/__init__.py new file mode 100644 index 0000000..4265cc3 --- /dev/null +++ b/src/meteoforge/__init__.py @@ -0,0 +1 @@ +#!/usr/bin/env python diff --git a/src/weather_provider_libraries/__init__.py b/src/weather_provider_libraries/__init__.py deleted file mode 100644 index fef66b5..0000000 --- a/src/weather_provider_libraries/__init__.py +++ /dev/null @@ -1 +0,0 @@ -#!/usr/bin/env python \ No newline at end of file From 933e47e28d93f0fb799dd6b9fff6ae651e9228a6 Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 15:30:21 +0200 Subject: [PATCH 20/50] Update pyproject.toml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3899a2a..15525ad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -94,7 +94,7 @@ ignore = [ "conftest.py" = ["E501"] [tool.mypy] -packages = ["meteoforge"] +packages = ["src.meteoforge"] [tool.pytest.ini_options] addopts = [ From a3f616777caccca20b6c4da8997e5f5fae3f5d65 Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 15:40:39 +0200 Subject: [PATCH 21/50] Update README.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fbddadf..1166b54 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,9 @@ [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=bugs)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=coverage)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) -

+

## Index From 935d70b54a772f8ec9c25a96952d90a3f8d4ca32 Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 15:50:42 +0200 Subject: [PATCH 22/50] feature: Added issue templates Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .github/ISSUE_TEMPLATE/bug_report.md | 43 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 23 ++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..c921beb --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,43 @@ +--- +name: Bug Report +about: Help us improve by reporting a bug +title: '' +labels: '' +assignees: '' +--- + +## **Describe the Bug** + +Provide a clear and concise description of the issue. + +## **To Reproduce** + +Steps to reproduce the behavior: + +1. Go to '...' +2. Click on '...' +3. Scroll down to '...' +4. See the error. + +## **Expected Behavior** + +Describe what you expected to happen. + +## **Screenshots** + +If applicable, add screenshots to help explain the problem. + +## **Desktop (please complete the following information):** + +- **OS**: [e.g., iOS] +- **Project Version**: [e.g., 22] + +## **Smartphone (please complete the following information):** + +- **Device**: [e.g., iPhone 6] +- **OS**: [e.g., iOS 8.1] +- **Project Version**: [e.g., 22] + +## **Additional Context** + +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..08970e0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,23 @@ +--- +name: Feature Request +about: Suggest an idea to improve this project +title: '' +labels: '' +assignees: '' +--- + +## **Is Your Feature Request Related to a Problem? Please Describe** + +Provide a clear and concise description of the problem. For example: "I'm frustrated when [...]" + +## **Describe the Solution You'd Like** + +Explain what you want to happen in a clear and concise manner. + +## **Describe Alternatives You've Considered** + +List any alternative solutions or features you’ve thought about. + +## **Additional Context** + +Add any other context, screenshots, or examples to support your request. From c5b7993e62f65ab38733a261c247e8ec2148dcf9 Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 21:12:11 +0200 Subject: [PATCH 23/50] feature: Finalized building frame and added basic logging and mock testing. Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .../meteo_sources/__init__.py | 2 + .../meteo_sources/example_source/__init__.py | 2 + .../example_model_one/__init__.py | 2 + .../example_source/example_model_one/model.py | 2 + .../example_model_one/parameter_settings.yaml | 0 .../example_model_one/update.py | 2 + .../example_model_two/__init__.py | 2 + .../example_source/example_model_two/model.py | 2 + .../example_model_two/parameter_settings.yaml | 0 .../example_model_two/update.py | 2 + .../example_source/source_config.yaml.py | 2 + poetry.lock | 216 ++++++++++-------- pyproject.toml | 2 + src/meteoforge/__init__.py | 3 +- src/meteoforge/core/controller.py | 2 + src/meteoforge/core/manager.py | 2 + src/meteoforge/core/model.py | 2 + src/meteoforge/core/source.py | 2 + src/meteoforge/logging/logging.py | 27 +++ src/meteoforge/logging/logging_config.yaml | 28 +++ src/meteoforge/parameters/parameters.py | 2 + src/meteoforge/spatial_temporal/locations.py | 2 + src/meteoforge/spatial_temporal/periods.py | 2 + src/meteoforge_tools/README.md | 3 + src/meteoforge_tools/__init__.py | 2 + .../netfcd_to_zarr_conversion.py | 2 + tests/conftest.py | 2 + tests/test_example_test.py | 7 + 28 files changed, 230 insertions(+), 94 deletions(-) create mode 100644 docs/example-meteo-source/meteo_sources/__init__.py create mode 100644 docs/example-meteo-source/meteo_sources/example_source/__init__.py create mode 100644 docs/example-meteo-source/meteo_sources/example_source/example_model_one/__init__.py create mode 100644 docs/example-meteo-source/meteo_sources/example_source/example_model_one/model.py create mode 100644 docs/example-meteo-source/meteo_sources/example_source/example_model_one/parameter_settings.yaml create mode 100644 docs/example-meteo-source/meteo_sources/example_source/example_model_one/update.py create mode 100644 docs/example-meteo-source/meteo_sources/example_source/example_model_two/__init__.py create mode 100644 docs/example-meteo-source/meteo_sources/example_source/example_model_two/model.py create mode 100644 docs/example-meteo-source/meteo_sources/example_source/example_model_two/parameter_settings.yaml create mode 100644 docs/example-meteo-source/meteo_sources/example_source/example_model_two/update.py create mode 100644 docs/example-meteo-source/meteo_sources/example_source/source_config.yaml.py create mode 100644 src/meteoforge/core/controller.py create mode 100644 src/meteoforge/core/manager.py create mode 100644 src/meteoforge/core/model.py create mode 100644 src/meteoforge/core/source.py create mode 100644 src/meteoforge/logging/logging.py create mode 100644 src/meteoforge/logging/logging_config.yaml create mode 100644 src/meteoforge/parameters/parameters.py create mode 100644 src/meteoforge/spatial_temporal/locations.py create mode 100644 src/meteoforge/spatial_temporal/periods.py create mode 100644 src/meteoforge_tools/README.md create mode 100644 src/meteoforge_tools/__init__.py create mode 100644 src/meteoforge_tools/netfcd_to_zarr_conversion.py create mode 100644 tests/conftest.py create mode 100644 tests/test_example_test.py diff --git a/docs/example-meteo-source/meteo_sources/__init__.py b/docs/example-meteo-source/meteo_sources/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/docs/example-meteo-source/meteo_sources/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/docs/example-meteo-source/meteo_sources/example_source/__init__.py b/docs/example-meteo-source/meteo_sources/example_source/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/docs/example-meteo-source/meteo_sources/example_source/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/docs/example-meteo-source/meteo_sources/example_source/example_model_one/__init__.py b/docs/example-meteo-source/meteo_sources/example_source/example_model_one/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/docs/example-meteo-source/meteo_sources/example_source/example_model_one/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/docs/example-meteo-source/meteo_sources/example_source/example_model_one/model.py b/docs/example-meteo-source/meteo_sources/example_source/example_model_one/model.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/docs/example-meteo-source/meteo_sources/example_source/example_model_one/model.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/docs/example-meteo-source/meteo_sources/example_source/example_model_one/parameter_settings.yaml b/docs/example-meteo-source/meteo_sources/example_source/example_model_one/parameter_settings.yaml new file mode 100644 index 0000000..e69de29 diff --git a/docs/example-meteo-source/meteo_sources/example_source/example_model_one/update.py b/docs/example-meteo-source/meteo_sources/example_source/example_model_one/update.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/docs/example-meteo-source/meteo_sources/example_source/example_model_one/update.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/docs/example-meteo-source/meteo_sources/example_source/example_model_two/__init__.py b/docs/example-meteo-source/meteo_sources/example_source/example_model_two/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/docs/example-meteo-source/meteo_sources/example_source/example_model_two/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/docs/example-meteo-source/meteo_sources/example_source/example_model_two/model.py b/docs/example-meteo-source/meteo_sources/example_source/example_model_two/model.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/docs/example-meteo-source/meteo_sources/example_source/example_model_two/model.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/docs/example-meteo-source/meteo_sources/example_source/example_model_two/parameter_settings.yaml b/docs/example-meteo-source/meteo_sources/example_source/example_model_two/parameter_settings.yaml new file mode 100644 index 0000000..e69de29 diff --git a/docs/example-meteo-source/meteo_sources/example_source/example_model_two/update.py b/docs/example-meteo-source/meteo_sources/example_source/example_model_two/update.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/docs/example-meteo-source/meteo_sources/example_source/example_model_two/update.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/docs/example-meteo-source/meteo_sources/example_source/source_config.yaml.py b/docs/example-meteo-source/meteo_sources/example_source/source_config.yaml.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/docs/example-meteo-source/meteo_sources/example_source/source_config.yaml.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/poetry.lock b/poetry.lock index 87c3943..c280b9e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -246,14 +246,14 @@ css = ["tinycss2 (>=1.1.0,<1.5)"] [[package]] name = "certifi" -version = "2024.8.30" +version = "2025.7.14" description = "Python package for providing Mozilla's CA Bundle." optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" groups = ["main", "dev"] files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, + { file = "certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2" }, + { file = "certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995" }, ] [[package]] @@ -501,14 +501,14 @@ files = [ [[package]] name = "click" -version = "8.1.7" +version = "8.2.1" description = "Composable command line interface toolkit" optional = false -python-versions = ">=3.7" +python-versions = ">=3.10" groups = ["main", "dev"] files = [ - {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, - {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, + { file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b" }, + { file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202" }, ] [package.dependencies] @@ -516,14 +516,14 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "cloudpickle" -version = "3.1.0" +version = "3.1.1" description = "Pickler class to extend the standard pickle.Pickler functionality" optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "cloudpickle-3.1.0-py3-none-any.whl", hash = "sha256:fe11acda67f61aaaec473e3afe030feb131d78a43461b718185363384f1ba12e"}, - {file = "cloudpickle-3.1.0.tar.gz", hash = "sha256:81a929b6e3c7335c863c771d673d105f02efdb89dfaba0c90495d1c64796601b"}, + { file = "cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e" }, + { file = "cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64" }, ] [[package]] @@ -537,7 +537,25 @@ files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -markers = { main = "platform_system == \"Windows\"" } +markers = { main = "platform_system == \"Windows\" or sys_platform == \"win32\"" } + +[[package]] +name = "colorlog" +version = "6.9.0" +description = "Add colours to the output of Python's logging module." +optional = false +python-versions = ">=3.6" +groups = ["main"] +files = [ + { file = "colorlog-6.9.0-py3-none-any.whl", hash = "sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff" }, + { file = "colorlog-6.9.0.tar.gz", hash = "sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2" }, +] + +[package.dependencies] +colorama = { version = "*", markers = "sys_platform == \"win32\"" } + +[package.extras] +development = ["black", "flake8", "mypy", "pytest", "types-colorama"] [[package]] name = "comm" @@ -935,14 +953,14 @@ files = [ [[package]] name = "fsspec" -version = "2024.10.0" +version = "2025.7.0" description = "File-system specification" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["main"] files = [ - {file = "fsspec-2024.10.0-py3-none-any.whl", hash = "sha256:03b9a6785766a4de40368b88906366755e2819e758b83705c88cd7cb5fe81871"}, - {file = "fsspec-2024.10.0.tar.gz", hash = "sha256:eda2d8a4116d4f2429db8550f2457da57279247dd930bb12f821b58391359493"}, + { file = "fsspec-2025.7.0-py3-none-any.whl", hash = "sha256:8b012e39f63c7d5f10474de957f3ab793b47b45ae7d39f2fb735f8bbe25c0e21" }, + { file = "fsspec-2025.7.0.tar.gz", hash = "sha256:786120687ffa54b8283d942929540d8bc5ccfa820deb555a2b5d0ed2b737bf58" }, ] [package.extras] @@ -950,7 +968,7 @@ abfs = ["adlfs"] adl = ["adlfs"] arrow = ["pyarrow (>=1)"] dask = ["dask", "distributed"] -dev = ["pre-commit", "ruff"] +dev = ["pre-commit", "ruff (>=0.5)"] doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"] dropbox = ["dropbox", "dropboxdrivefs", "requests"] full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] @@ -969,8 +987,8 @@ sftp = ["paramiko"] smb = ["smbprotocol"] ssh = ["paramiko"] test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"] -test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask-expr", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] -test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard"] +test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] +test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard ; python_version < \"3.14\""] tqdm = ["tqdm"] [[package]] @@ -1097,14 +1115,14 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 [[package]] name = "iniconfig" -version = "2.0.0" +version = "2.1.0" description = "brain-dead simple config-ini parsing" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, + { file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760" }, + { file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7" }, ] [[package]] @@ -2291,14 +2309,14 @@ files = [ [[package]] name = "packaging" -version = "24.1" +version = "25.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, + { file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484" }, + { file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f" }, ] [[package]] @@ -2319,54 +2337,54 @@ lint = ["black"] [[package]] name = "pandas" -version = "2.2.3" +version = "2.3.1" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"}, - {file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"}, - {file = "pandas-2.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d9c45366def9a3dd85a6454c0e7908f2b3b8e9c138f5dc38fed7ce720d8453ed"}, - {file = "pandas-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86976a1c5b25ae3f8ccae3a5306e443569ee3c3faf444dfd0f41cda24667ad57"}, - {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b8661b0238a69d7aafe156b7fa86c44b881387509653fdf857bebc5e4008ad42"}, - {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37e0aced3e8f539eccf2e099f65cdb9c8aa85109b0be6e93e2baff94264bdc6f"}, - {file = "pandas-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:56534ce0746a58afaf7942ba4863e0ef81c9c50d3f0ae93e9497d6a41a057645"}, - {file = "pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039"}, - {file = "pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd"}, - {file = "pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698"}, - {file = "pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc"}, - {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3"}, - {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32"}, - {file = "pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5"}, - {file = "pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9"}, - {file = "pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4"}, - {file = "pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3"}, - {file = "pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319"}, - {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8"}, - {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a"}, - {file = "pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13"}, - {file = "pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015"}, - {file = "pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28"}, - {file = "pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0"}, - {file = "pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24"}, - {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659"}, - {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb"}, - {file = "pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d"}, - {file = "pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468"}, - {file = "pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18"}, - {file = "pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2"}, - {file = "pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4"}, - {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d"}, - {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a"}, - {file = "pandas-2.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc6b93f9b966093cb0fd62ff1a7e4c09e6d546ad7c1de191767baffc57628f39"}, - {file = "pandas-2.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5dbca4c1acd72e8eeef4753eeca07de9b1db4f398669d5994086f788a5d7cc30"}, - {file = "pandas-2.2.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8cd6d7cc958a3910f934ea8dbdf17b2364827bb4dafc38ce6eef6bb3d65ff09c"}, - {file = "pandas-2.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99df71520d25fade9db7c1076ac94eb994f4d2673ef2aa2e86ee039b6746d20c"}, - {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31d0ced62d4ea3e231a9f228366919a5ea0b07440d9d4dac345376fd8e1477ea"}, - {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7eee9e7cea6adf3e3d24e304ac6b8300646e2a5d1cd3a3c2abed9101b0846761"}, - {file = "pandas-2.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:4850ba03528b6dd51d6c5d273c46f183f39a9baf3f0143e566b89450965b105e"}, - {file = "pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667"}, + { file = "pandas-2.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:22c2e866f7209ebc3a8f08d75766566aae02bcc91d196935a1d9e59c7b990ac9" }, + { file = "pandas-2.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3583d348546201aff730c8c47e49bc159833f971c2899d6097bce68b9112a4f1" }, + { file = "pandas-2.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f951fbb702dacd390561e0ea45cdd8ecfa7fb56935eb3dd78e306c19104b9b0" }, + { file = "pandas-2.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd05b72ec02ebfb993569b4931b2e16fbb4d6ad6ce80224a3ee838387d83a191" }, + { file = "pandas-2.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1b916a627919a247d865aed068eb65eb91a344b13f5b57ab9f610b7716c92de1" }, + { file = "pandas-2.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fe67dc676818c186d5a3d5425250e40f179c2a89145df477dd82945eaea89e97" }, + { file = "pandas-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:2eb789ae0274672acbd3c575b0598d213345660120a257b47b5dafdc618aec83" }, + { file = "pandas-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2b0540963d83431f5ce8870ea02a7430adca100cec8a050f0811f8e31035541b" }, + { file = "pandas-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fe7317f578c6a153912bd2292f02e40c1d8f253e93c599e82620c7f69755c74f" }, + { file = "pandas-2.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6723a27ad7b244c0c79d8e7007092d7c8f0f11305770e2f4cd778b3ad5f9f85" }, + { file = "pandas-2.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3462c3735fe19f2638f2c3a40bd94ec2dc5ba13abbb032dd2fa1f540a075509d" }, + { file = "pandas-2.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:98bcc8b5bf7afed22cc753a28bc4d9e26e078e777066bc53fac7904ddef9a678" }, + { file = "pandas-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4d544806b485ddf29e52d75b1f559142514e60ef58a832f74fb38e48d757b299" }, + { file = "pandas-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:b3cd4273d3cb3707b6fffd217204c52ed92859533e31dc03b7c5008aa933aaab" }, + { file = "pandas-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:689968e841136f9e542020698ee1c4fbe9caa2ed2213ae2388dc7b81721510d3" }, + { file = "pandas-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:025e92411c16cbe5bb2a4abc99732a6b132f439b8aab23a59fa593eb00704232" }, + { file = "pandas-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b7ff55f31c4fcb3e316e8f7fa194566b286d6ac430afec0d461163312c5841e" }, + { file = "pandas-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dcb79bf373a47d2a40cf7232928eb7540155abbc460925c2c96d2d30b006eb4" }, + { file = "pandas-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:56a342b231e8862c96bdb6ab97170e203ce511f4d0429589c8ede1ee8ece48b8" }, + { file = "pandas-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ca7ed14832bce68baef331f4d7f294411bed8efd032f8109d690df45e00c4679" }, + { file = "pandas-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:ac942bfd0aca577bef61f2bc8da8147c4ef6879965ef883d8e8d5d2dc3e744b8" }, + { file = "pandas-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9026bd4a80108fac2239294a15ef9003c4ee191a0f64b90f170b40cfb7cf2d22" }, + { file = "pandas-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6de8547d4fdb12421e2d047a2c446c623ff4c11f47fddb6b9169eb98ffba485a" }, + { file = "pandas-2.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:782647ddc63c83133b2506912cc6b108140a38a37292102aaa19c81c83db2928" }, + { file = "pandas-2.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba6aff74075311fc88504b1db890187a3cd0f887a5b10f5525f8e2ef55bfdb9" }, + { file = "pandas-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e5635178b387bd2ba4ac040f82bc2ef6e6b500483975c4ebacd34bec945fda12" }, + { file = "pandas-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6f3bf5ec947526106399a9e1d26d40ee2b259c66422efdf4de63c848492d91bb" }, + { file = "pandas-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:1c78cf43c8fde236342a1cb2c34bcff89564a7bfed7e474ed2fffa6aed03a956" }, + { file = "pandas-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8dfc17328e8da77be3cf9f47509e5637ba8f137148ed0e9b5241e1baf526e20a" }, + { file = "pandas-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ec6c851509364c59a5344458ab935e6451b31b818be467eb24b0fe89bd05b6b9" }, + { file = "pandas-2.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:911580460fc4884d9b05254b38a6bfadddfcc6aaef856fb5859e7ca202e45275" }, + { file = "pandas-2.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f4d6feeba91744872a600e6edbbd5b033005b431d5ae8379abee5bcfa479fab" }, + { file = "pandas-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fe37e757f462d31a9cd7580236a82f353f5713a80e059a29753cf938c6775d96" }, + { file = "pandas-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5db9637dbc24b631ff3707269ae4559bce4b7fd75c1c4d7e13f40edc42df4444" }, + { file = "pandas-2.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4645f770f98d656f11c69e81aeb21c6fca076a44bed3dcbb9396a4311bc7f6d8" }, + { file = "pandas-2.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:342e59589cc454aaff7484d75b816a433350b3d7964d7847327edda4d532a2e3" }, + { file = "pandas-2.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d12f618d80379fde6af007f65f0c25bd3e40251dbd1636480dfffce2cf1e6da" }, + { file = "pandas-2.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd71c47a911da120d72ef173aeac0bf5241423f9bfea57320110a978457e069e" }, + { file = "pandas-2.3.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:09e3b1587f0f3b0913e21e8b32c3119174551deb4a4eba4a89bc7377947977e7" }, + { file = "pandas-2.3.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2323294c73ed50f612f67e2bf3ae45aea04dce5690778e08a09391897f35ff88" }, + { file = "pandas-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:b4b0de34dc8499c2db34000ef8baad684cfa4cbd836ecee05f323ebfba348c7d" }, + { file = "pandas-2.3.1.tar.gz", hash = "sha256:0a95b9ac964fe83ce317827f80304d37388ea77616b1425f0ae41c9d2d0d7bb2" }, ] [package.dependencies] @@ -2494,19 +2512,19 @@ type = ["mypy (>=1.14.1)"] [[package]] name = "pluggy" -version = "1.5.0" +version = "1.6.0" description = "plugin and hook calling mechanisms for python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, + { file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746" }, + { file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3" }, ] [package.extras] dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] +testing = ["coverage", "pytest", "pytest-benchmark"] [[package]] name = "pre-commit" @@ -2757,14 +2775,14 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pygments" -version = "2.18.0" +version = "2.19.2" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, - {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, + { file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b" }, + { file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887" }, ] [package.extras] @@ -2889,14 +2907,14 @@ dev = ["backports.zoneinfo ; python_version < \"3.9\"", "black", "build", "freez [[package]] name = "pytz" -version = "2024.2" +version = "2025.2" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" groups = ["main"] files = [ - {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, - {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, + { file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00" }, + { file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3" }, ] [[package]] @@ -3423,14 +3441,14 @@ type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.deve [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" groups = ["main", "dev"] files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + { file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274" }, + { file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" }, ] [[package]] @@ -3580,16 +3598,28 @@ files = [ { file = "types_python_dateutil-2.9.0.20250708.tar.gz", hash = "sha256:ccdbd75dab2d6c9696c350579f34cffe2c281e4c5f27a585b2a2438dd1d5c8ab" }, ] +[[package]] +name = "types-pyyaml" +version = "6.0.12.20250516" +description = "Typing stubs for PyYAML" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530" }, + { file = "types_pyyaml-6.0.12.20250516.tar.gz", hash = "sha256:9f21a70216fc0fa1b216a8176db5f9e0af6eb35d2f2932acb87689d03a5bf6ba" }, +] + [[package]] name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" +version = "4.14.1" +description = "Backported and Experimental Type Hints for Python 3.9+" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["main", "dev"] files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, + { file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76" }, + { file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36" }, ] [[package]] @@ -3609,14 +3639,14 @@ typing-extensions = ">=4.12.0" [[package]] name = "tzdata" -version = "2024.2" +version = "2025.2" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" groups = ["main"] files = [ - {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, - {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, + { file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8" }, + { file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9" }, ] [[package]] @@ -3837,4 +3867,4 @@ test = ["coverage", "hypothesis", "mypy", "packaging", "pytest (<8.4)", "pytest- [metadata] lock-version = "2.1" python-versions = ">=3.13" -content-hash = "8bae2583ae033a597f7a25d41850932002e2a0fdd9baa8e5edd7856f5c19bd12" +content-hash = "3ca97b9e51214f096f076795391e3d64556d52f47c53450bcf99ffd0c495f64b" diff --git a/pyproject.toml b/pyproject.toml index 15525ad..81c3d03 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,6 +23,7 @@ pydantic = "^2.11.7" pyproj = "^3.7.1" xarray = "^2025.7.1" zarr = "^3.1.0" +colorlog = "^6.9.0" [tool.poetry.group.dev.dependencies] coverage = "^7.9.2" @@ -34,6 +35,7 @@ mypy = "^1.17.0" pre-commit = "^4.2.0" pytest = "^8.4.1" ruff = "^0.12.4" +types-pyyaml = "^6.0.12.20250516" [build-system] requires = ["poetry-core"] diff --git a/src/meteoforge/__init__.py b/src/meteoforge/__init__.py index 4265cc3..0a5cd78 100644 --- a/src/meteoforge/__init__.py +++ b/src/meteoforge/__init__.py @@ -1 +1,2 @@ -#!/usr/bin/env python +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/controller.py b/src/meteoforge/core/controller.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/core/controller.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/manager.py b/src/meteoforge/core/manager.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/core/manager.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/model.py b/src/meteoforge/core/model.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/core/model.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/source.py b/src/meteoforge/core/source.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/core/source.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/logging/logging.py b/src/meteoforge/logging/logging.py new file mode 100644 index 0000000..66fcb03 --- /dev/null +++ b/src/meteoforge/logging/logging.py @@ -0,0 +1,27 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 + +import logging +import logging.config +import os + +import yaml + + +def setup_logging(config_path: str | None = None): + """Set up project logging using the 'logging_config.yaml' config file.""" + if config_path is None: + config_path = os.path.join(os.path.dirname(__file__), "logging_config.yaml") + if os.path.exists(config_path): + with open(config_path) as file: + config = yaml.safe_load(file) + logging.config.dictConfig(config) + else: + raise FileNotFoundError(f"Logging configuration file not found: {config_path}") + + +setup_logging() + +logger = logging.getLogger("meteoforge") +logger.info("MeteoForge logging initialized.") +logger.info("Logging level set to %s", logger.getEffectiveLevel()) diff --git a/src/meteoforge/logging/logging_config.yaml b/src/meteoforge/logging/logging_config.yaml new file mode 100644 index 0000000..c4566fe --- /dev/null +++ b/src/meteoforge/logging/logging_config.yaml @@ -0,0 +1,28 @@ +version: 1 +disable_existing_loggers: false +formatters: + color: + class: colorlog.ColoredFormatter + format: "%(asctime)s - %(name)s - %(log_color)s%(levelname)s%(reset)s - %(message)s" + log_colors: + DEBUG: green + INFO: cyan + WARNING: yellow + ERROR: red + CRITICAL: bold_red + monocolor: + format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s" +handlers: + console: + class: logging.StreamHandler + level: INFO + formatter: color + stream: ext://sys.stdout +loggers: + meteoforge: + level: DEBUG + handlers: [ console ] + propagate: no +root: + level: WARNING + handlers: [ console ] diff --git a/src/meteoforge/parameters/parameters.py b/src/meteoforge/parameters/parameters.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/parameters/parameters.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/locations.py b/src/meteoforge/spatial_temporal/locations.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/spatial_temporal/locations.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/periods.py b/src/meteoforge/spatial_temporal/periods.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/spatial_temporal/periods.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge_tools/README.md b/src/meteoforge_tools/README.md new file mode 100644 index 0000000..c781249 --- /dev/null +++ b/src/meteoforge_tools/README.md @@ -0,0 +1,3 @@ +# MeteoForge Tools + +... diff --git a/src/meteoforge_tools/__init__.py b/src/meteoforge_tools/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge_tools/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge_tools/netfcd_to_zarr_conversion.py b/src/meteoforge_tools/netfcd_to_zarr_conversion.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge_tools/netfcd_to_zarr_conversion.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/tests/test_example_test.py b/tests/test_example_test.py new file mode 100644 index 0000000..de3ea2a --- /dev/null +++ b/tests/test_example_test.py @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 + + +def test_example(): + """Example test function to demonstrate pytest setup.""" + assert True # Replace with actual test logic From 3b0484159201bcec859e9f02a1226e2855cc778f Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 21:15:53 +0200 Subject: [PATCH 24/50] Update src/meteoforge/logging/logging.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- src/meteoforge/logging/logging.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/meteoforge/logging/logging.py b/src/meteoforge/logging/logging.py index 66fcb03..546c34a 100644 --- a/src/meteoforge/logging/logging.py +++ b/src/meteoforge/logging/logging.py @@ -13,7 +13,7 @@ def setup_logging(config_path: str | None = None): if config_path is None: config_path = os.path.join(os.path.dirname(__file__), "logging_config.yaml") if os.path.exists(config_path): - with open(config_path) as file: + with open(config_path, encoding="utf-8") as file: config = yaml.safe_load(file) logging.config.dictConfig(config) else: From 767b1013d783046cd98164e547d18120f852ab1f Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Thu, 30 Oct 2025 14:56:40 +0100 Subject: [PATCH 25/50] Add Scorecard workflow for supply-chain security Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .github/workflows/scorecard.yml | 78 +++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 .github/workflows/scorecard.yml diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml new file mode 100644 index 0000000..01e17d4 --- /dev/null +++ b/.github/workflows/scorecard.yml @@ -0,0 +1,78 @@ +# This workflow uses actions that are not certified by GitHub. They are provided +# by a third-party and are governed by separate terms of service, privacy +# policy, and support documentation. + +name: Scorecard supply-chain security +on: + # For Branch-Protection check. Only the default branch is supported. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection + branch_protection_rule: + # To guarantee Maintained check is occasionally updated. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained + schedule: + - cron: '37 7 * * 1' + push: + branches: [ "main" ] + +# Declare default permissions as read only. +permissions: read-all + +jobs: + analysis: + name: Scorecard analysis + runs-on: ubuntu-latest + # `publish_results: true` only works when run from the default branch. conditional can be removed if disabled. + if: github.event.repository.default_branch == github.ref_name || github.event_name == 'pull_request' + permissions: + # Needed to upload the results to code-scanning dashboard. + security-events: write + # Needed to publish results and get a badge (see publish_results below). + id-token: write + # Uncomment the permissions below if installing in a private repository. + # contents: read + # actions: read + + steps: + - name: "Checkout code" + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + + - name: "Run analysis" + uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1 + with: + results_file: results.sarif + results_format: sarif + # (Optional) "write" PAT token. Uncomment the `repo_token` line below if: + # - you want to enable the Branch-Protection check on a *public* repository, or + # - you are installing Scorecard on a *private* repository + # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action?tab=readme-ov-file#authentication-with-fine-grained-pat-optional. + # repo_token: ${{ secrets.SCORECARD_TOKEN }} + + # Public repositories: + # - Publish results to OpenSSF REST API for easy access by consumers + # - Allows the repository to include the Scorecard badge. + # - See https://github.com/ossf/scorecard-action#publishing-results. + # For private repositories: + # - `publish_results` will always be set to `false`, regardless + # of the value entered here. + publish_results: true + + # (Optional) Uncomment file_mode if you have a .gitattributes with files marked export-ignore + # file_mode: git + + # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF + # format to the repository Actions tab. + - name: "Upload artifact" + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 + with: + name: SARIF file + path: results.sarif + retention-days: 5 + + # Upload the results to GitHub's code scanning dashboard (optional). + # Commenting out will disable upload of results to your repo's Code Scanning dashboard + - name: "Upload to code-scanning" + uses: github/codeql-action/upload-sarif@v3 + with: + sarif_file: results.sarif From 920ee7fa8c7738283e9c4747f11e425de363b26f Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sun, 9 Nov 2025 14:48:25 +0100 Subject: [PATCH 26/50] feature: Initial commit with most of the groundwork (#52) * feature: Initial commit with most of the groundwork Co-authored-by: Nico Rikken Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .github/dependabot.yaml | 24 + .../allowed-pr-sources-dev-release.yaml | 26 + .../workflows/allowed-pr-sources-main.yaml | 28 + .github/workflows/gh-pages-deployment.yaml | 36 + .../{scorecard.yml => openssf-scorecard.yml} | 0 .github/workflows/pr-quality-gate.yaml.yml | 70 + .github/workflows/pre-commit/action.yaml | 36 + .github/workflows/pytest/action.yaml | 28 + .github/workflows/sonar/action.yaml | 28 + .gitignore | 1 + poetry.lock | 3581 +++-------------- pyproject.toml | 18 +- 12 files changed, 825 insertions(+), 3051 deletions(-) create mode 100644 .github/dependabot.yaml create mode 100644 .github/workflows/allowed-pr-sources-dev-release.yaml create mode 100644 .github/workflows/allowed-pr-sources-main.yaml create mode 100644 .github/workflows/gh-pages-deployment.yaml rename .github/workflows/{scorecard.yml => openssf-scorecard.yml} (100%) create mode 100644 .github/workflows/pr-quality-gate.yaml.yml create mode 100644 .github/workflows/pre-commit/action.yaml create mode 100644 .github/workflows/pytest/action.yaml create mode 100644 .github/workflows/sonar/action.yaml diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 0000000..38b8455 --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,24 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file + +version: 2 +updates: + - package-ecosystem: "pip" + reviewers: + - "rflinnenbank" + directory: "/" + schedule: + interval: "weekly" + groups: + package-updates: + applies-to: version-updates + patterns: [ "*" ] + + - package-ecosystem: "github-actions" + directory: "/" + reviewers: + - "rflinnenbank" + schedule: + interval: "weekly" diff --git a/.github/workflows/allowed-pr-sources-dev-release.yaml b/.github/workflows/allowed-pr-sources-dev-release.yaml new file mode 100644 index 0000000..5bf13d5 --- /dev/null +++ b/.github/workflows/allowed-pr-sources-dev-release.yaml @@ -0,0 +1,26 @@ +name: Check if PR source branch is allowed for development or release branches + +on: + pull_request: + types: [ opened, reopened, synchronize, edited, ready_for_review ] + branches: + - development + - release/** + +jobs: + enforce: + runs-on: ubuntu-latest + steps: + - name: Check PR source branch + env: + HEAD_REF: ${{ github.head_ref }} + run: | + echo "Head branch: $HEAD_REF" + if [[ "$HEAD_REF" =~ ^feature/ || "$HEAD_REF" =~ ^dev/feature/ ]]; then + echo "✔ Allowed source branch." + exit 0 + else + echo "❌ Disallowed source branch: $HEAD_REF" + echo "Only 'feature/*' or 'dev/feature/*' may open PRs into 'development' or 'release/*'." + exit 1 + fi diff --git a/.github/workflows/allowed-pr-sources-main.yaml b/.github/workflows/allowed-pr-sources-main.yaml new file mode 100644 index 0000000..c9cc120 --- /dev/null +++ b/.github/workflows/allowed-pr-sources-main.yaml @@ -0,0 +1,28 @@ +name: Check if PR source branch is allowed for main branch + +on: + pull_request: + types: [ opened, reopened, synchronize, edited, ready_for_review ] + branches: + - main + +jobs: + enforce: + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: read + steps: + - name: Check PR source branch + env: + HEAD_REF: ${{ github.head_ref }} + run: | + echo "Head branch: $HEAD_REF" + if [[ "$HEAD_REF" == "development" || "$HEAD_REF" =~ ^release/ || "$HEAD_REF" =~ ^hotfix/ ]]; then + echo "✔ Allowed source branch." + exit 0 + else + echo "❌ Disallowed source branch: $HEAD_REF" + echo "Only 'development', 'release/*', or 'hotfix/*' may open PRs into 'main'." + exit 1 + fi diff --git a/.github/workflows/gh-pages-deployment.yaml b/.github/workflows/gh-pages-deployment.yaml new file mode 100644 index 0000000..e55fc5f --- /dev/null +++ b/.github/workflows/gh-pages-deployment.yaml @@ -0,0 +1,36 @@ +name: GitHub Pages Deployment +on: + push: + branches: + - main + paths: + - 'docs/**' + - 'gh-pages-deployment.yaml' + - 'README.md' + workflow_dispatch: +permissions: + contents: write + pages: write +jobs: + deploy-gh-pages: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Configure Git user + run: | + git config user.name github-actions[bot] + git config user.email 41898282+github-actions[bot]@users.noreply.github.com + - uses: actions/setup-python@v5 + with: + python-version: ${{ env.MAIN_PYTHON_VERSION }} + - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV + - uses: actions/cache@v4 + with: + key: mkdocs-material-${{ env.cache_id }} + path: ~/.cache + restore-keys: | + mkdocs-material- + - run: pip install mkdocs-material + - run: mkdocs gh-deploy --force + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/scorecard.yml b/.github/workflows/openssf-scorecard.yml similarity index 100% rename from .github/workflows/scorecard.yml rename to .github/workflows/openssf-scorecard.yml diff --git a/.github/workflows/pr-quality-gate.yaml.yml b/.github/workflows/pr-quality-gate.yaml.yml new file mode 100644 index 0000000..0f30122 --- /dev/null +++ b/.github/workflows/pr-quality-gate.yaml.yml @@ -0,0 +1,70 @@ +name: "PR Quality Gate: rc & main" + +on: + pull_request: + branches: [ rc, main ] + types: [ opened, synchronize, reopened, ready_for_review ] + +permissions: + contents: read + pull-requests: write + +concurrency: + group: pr-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + precommit: + name: pre-commit + if: ${{ !github.event.pull_request.draft }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + # NOTE: point "uses:" to the DIRECTORY that contains action.yaml + # If your composite is at ./pre-commit/action.yaml, use "./pre-commit" + - name: Run pre-commit composite + uses: ./.github/workflows/pre-commit + with: + python-version: ${{ env.MAIN_PYTHON_VERSION }} + + pytest: + name: pytest + if: ${{ !github.event.pull_request.draft }} + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ${{ fromJSON(env.SUPPORTED_PYTHON_VERSIONS) }} + steps: + - uses: actions/checkout@v4 + - name: Run pytest composite + uses: ./.github/workflows/pytest + with: + python-version: ${{ matrix.python-version }} + + pytest-windows: + name: pytest (Windows, non-blocking) + if: ${{ !github.event.pull_request.draft }} + runs-on: windows-latest + continue-on-error: true + strategy: + matrix: + python-version: ${{ fromJSON(env.SUPPORTED_PYTHON_VERSIONS) }} + steps: + - uses: actions/checkout@v4 + - name: Run pytest composite + uses: ./.github/workflows/pytest + with: + python-version: ${{ matrix.python-version }} + + sonarqube: + name: SonarQube + if: ${{ !github.event.pull_request.draft }} + runs-on: ubuntu-latest + needs: [ pytest ] # starts only after pytest completes + steps: + - uses: actions/checkout@v4 + - name: Run SonarCloud composite + uses: ./.github/workflows/sonar + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} diff --git a/.github/workflows/pre-commit/action.yaml b/.github/workflows/pre-commit/action.yaml new file mode 100644 index 0000000..80fb107 --- /dev/null +++ b/.github/workflows/pre-commit/action.yaml @@ -0,0 +1,36 @@ +name: Pre-commit +description: Sets up Python and Poetry and runs pre-commit + +inputs: + python-version: + required: true + description: Python version used + +runs: + using: "composite" + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Setup Python + if: ${{ hashFiles('.pre-commit-config.yaml') != '' }} + uses: actions/setup-python@v3 + with: + python-version: ${{ inputs.python-version }} + + - name: Install Poetry + if: ${{ hashFiles('.pre-commit-config.yaml') != '' }} + run: pipx install --python python${{ inputs.python-version }} poetry + shell: bash + + - name: Install pre-commit + if: ${{ hashFiles('.pre-commit-config.yaml') != '' }} + run: | + pip install pre-commit + pre-commit install + shell: bash + + - name: Run pre-commit + if: ${{ hashFiles('.pre-commit-config.yaml') != '' }} + run: pre-commit run -a + shell: bash diff --git a/.github/workflows/pytest/action.yaml b/.github/workflows/pytest/action.yaml new file mode 100644 index 0000000..8d274df --- /dev/null +++ b/.github/workflows/pytest/action.yaml @@ -0,0 +1,28 @@ +name: 'PyTest' +description: 'Run pytest with Poetry' +inputs: + python-version: + required: true + description: 'Python version used.' + +runs: + using: 'composite' + steps: + - name: Checkout repository + uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v3 + with: + python-version: ${{ inputs.python-version }} + - name: Install Poetry + run: pipx install poetry + - name: Install dependencies + run: poetry install --with dev + - name: Run tests + run: poetry run pytest -m "not unstable and not online" + - name: Upload coverage.xml as artifact + uses: actions/upload-artifact@v3 + if: ${{ hashFiles('coverage.xml') != '' }} + with: + name: coverage.xml + path: ./coverage.xml diff --git a/.github/workflows/sonar/action.yaml b/.github/workflows/sonar/action.yaml new file mode 100644 index 0000000..4b8d3fe --- /dev/null +++ b/.github/workflows/sonar/action.yaml @@ -0,0 +1,28 @@ +name: SonarCloud Scan +description: Runs SonarCloud scan with coverage artifact + +inputs: + GITHUB_TOKEN: + required: true + description: GitHub token + SONAR_TOKEN: + required: true + description: SonarCloud token + +runs: + using: "composite" + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - uses: actions/download-artifact@v5 + with: + name: coverage.xml + path: ./ + + - name: SonarCloud Scan + uses: SonarSource/sonarcloud-github-action@master + env: + GITHUB_TOKEN: ${{ inputs.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ inputs.SONAR_TOKEN }} diff --git a/.gitignore b/.gitignore index a4024fb..b3fbd8e 100644 --- a/.gitignore +++ b/.gitignore @@ -666,3 +666,4 @@ src/weather_provider_sources/ # All of IDEA really .idea/ !/htmlcov/ +/.act_secrets.ini diff --git a/poetry.lock b/poetry.lock index c280b9e..eae691b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. [[package]] name = "annotated-types" @@ -12,161 +12,6 @@ files = [ {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] -[[package]] -name = "anyio" -version = "4.9.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c" }, - { file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028" }, -] - -[package.dependencies] -idna = ">=2.8" -sniffio = ">=1.1" - -[package.extras] -doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] -test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] -trio = ["trio (>=0.26.1)"] - -[[package]] -name = "appnope" -version = "0.1.4" -description = "Disable App Nap on macOS >= 10.9" -optional = false -python-versions = ">=3.6" -groups = ["dev"] -markers = "platform_system == \"Darwin\"" -files = [ - {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, - {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, -] - -[[package]] -name = "argon2-cffi" -version = "25.1.0" -description = "Argon2 for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741" }, - { file = "argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1" }, -] - -[package.dependencies] -argon2-cffi-bindings = "*" - -[[package]] -name = "argon2-cffi-bindings" -version = "21.2.0" -description = "Low-level CFFI bindings for Argon2" -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"}, - {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, -] - -[package.dependencies] -cffi = ">=1.0.1" - -[package.extras] -dev = ["cogapp", "pre-commit", "pytest", "wheel"] -tests = ["pytest"] - -[[package]] -name = "arrow" -version = "1.3.0" -description = "Better dates & times for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, - {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, -] - -[package.dependencies] -python-dateutil = ">=2.7.0" -types-python-dateutil = ">=2.8.10" - -[package.extras] -doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] -test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"] - -[[package]] -name = "asttokens" -version = "3.0.0" -description = "Annotate AST trees with source code positions" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2" }, - { file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7" }, -] - -[package.extras] -astroid = ["astroid (>=2,<4)"] -test = ["astroid (>=2,<4)", "pytest", "pytest-cov", "pytest-xdist"] - -[[package]] -name = "async-lru" -version = "2.0.5" -description = "Simple LRU cache for asyncio" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943" }, - { file = "async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb" }, -] - -[[package]] -name = "attrs" -version = "25.3.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3" }, - { file = "attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b" }, -] - -[package.extras] -benchmark = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -cov = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier"] -tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\""] - [[package]] name = "babel" version = "2.17.0" @@ -175,8 +20,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2" }, - { file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d" }, + {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, + {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, ] [package.extras] @@ -190,152 +35,30 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f" }, - { file = "backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf" }, - { file = "backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa" }, - { file = "backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b" }, - { file = "backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9" }, - { file = "backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60" }, - { file = "backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59" }, + {file = "backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f"}, + {file = "backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf"}, + {file = "backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa"}, + {file = "backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b"}, + {file = "backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9"}, + {file = "backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60"}, + {file = "backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59"}, ] [package.extras] extras = ["regex"] -[[package]] -name = "beautifulsoup4" -version = "4.13.4" -description = "Screen-scraping library" -optional = false -python-versions = ">=3.7.0" -groups = ["dev"] -files = [ - { file = "beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b" }, - { file = "beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195" }, -] - -[package.dependencies] -soupsieve = ">1.2" -typing-extensions = ">=4.0.0" - -[package.extras] -cchardet = ["cchardet"] -chardet = ["chardet"] -charset-normalizer = ["charset-normalizer"] -html5lib = ["html5lib"] -lxml = ["lxml"] - -[[package]] -name = "bleach" -version = "6.2.0" -description = "An easy safelist-based HTML-sanitizing tool." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e" }, - { file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f" }, -] - -[package.dependencies] -tinycss2 = { version = ">=1.1.0,<1.5", optional = true, markers = "extra == \"css\"" } -webencodings = "*" - -[package.extras] -css = ["tinycss2 (>=1.1.0,<1.5)"] - [[package]] name = "certifi" -version = "2025.7.14" +version = "2025.8.3" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.7" -groups = ["main", "dev"] -files = [ - { file = "certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2" }, - { file = "certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995" }, -] - -[[package]] -name = "cffi" -version = "1.17.1" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, - {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, - {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, - {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, - {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, - {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, - {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, - {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, - {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, - {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, - {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, - {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, - {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, - {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, - {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, - {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, + {file = "certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5"}, + {file = "certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407"}, ] -[package.dependencies] -pycparser = "*" - [[package]] name = "cfgv" version = "3.4.0" @@ -348,155 +71,93 @@ files = [ {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, ] -[[package]] -name = "cftime" -version = "1.6.4.post1" -description = "Time-handling functionality from netcdf4-python" -optional = false -python-versions = ">=3.8" -groups = ["main"] -files = [ - {file = "cftime-1.6.4.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0baa9bc4850929da9f92c25329aa1f651e2d6f23e237504f337ee9e12a769f5d"}, - {file = "cftime-1.6.4.post1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6bb6b087f4b2513c37670bccd457e2a666ca489c5f2aad6e2c0e94604dc1b5b9"}, - {file = "cftime-1.6.4.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d9bdeb9174962c9ca00015190bfd693de6b0ec3ec0b3dbc35c693a4f48efdcc"}, - {file = "cftime-1.6.4.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e735cfd544878eb94d0108ff5a093bd1a332dba90f979a31a357756d609a90d5"}, - {file = "cftime-1.6.4.post1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1dcd1b140bf50da6775c56bd7ca179e84bd258b2f159b53eefd5c514b341f2bf"}, - {file = "cftime-1.6.4.post1-cp310-cp310-win_amd64.whl", hash = "sha256:e60b8f24b20753f7548f410f7510e28b941f336f84bd34e3cfd7874af6e70281"}, - {file = "cftime-1.6.4.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1bf7be0a0afc87628cb8c8483412aac6e48e83877004faa0936afb5bf8a877ba"}, - {file = "cftime-1.6.4.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f64ca83acc4e3029f737bf3a32530ffa1fbf53124f5bee70b47548bc58671a7"}, - {file = "cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ebdfd81726b0cfb8b524309224fa952898dfa177c13d5f6af5b18cefbf497d"}, - {file = "cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ea0965a4c87739aebd84fe8eed966e5809d10065eeffd35c99c274b6f8da15"}, - {file = "cftime-1.6.4.post1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:800a18aea4e8cb2b206450397cb8a53b154798738af3cdd3c922ce1ca198b0e6"}, - {file = "cftime-1.6.4.post1-cp311-cp311-win_amd64.whl", hash = "sha256:5dcfc872f455db1f12eabe3c3ba98e93757cd60ed3526a53246e966ccde46c8a"}, - {file = "cftime-1.6.4.post1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a590f73506f4704ba5e154ef55bfbaed5e1b4ac170f3caeb8c58e4f2c619ee4e"}, - {file = "cftime-1.6.4.post1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:933cb10e1af4e362e77f513e3eb92b34a688729ddbf938bbdfa5ac20a7f44ba0"}, - {file = "cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf17a1b36f62e9e73c4c9363dd811e1bbf1170f5ac26d343fb26012ccf482908"}, - {file = "cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e18021f421aa26527bad8688c1acf0c85fa72730beb6efce969c316743294f2"}, - {file = "cftime-1.6.4.post1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5835b9d622f9304d1c23a35603a0f068739f428d902860f25e6e7e5a1b7cd8ea"}, - {file = "cftime-1.6.4.post1-cp312-cp312-win_amd64.whl", hash = "sha256:7f50bf0d1b664924aaee636eb2933746b942417d1f8b82ab6c1f6e8ba0da6885"}, - {file = "cftime-1.6.4.post1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5c89766ebf088c097832ea618c24ed5075331f0b7bf8e9c2d4144aefbf2f1850"}, - {file = "cftime-1.6.4.post1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7f27113f7ccd1ca32881fdcb9a4bec806a5f54ae621fc1c374f1171f3ed98ef2"}, - {file = "cftime-1.6.4.post1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da367b23eea7cf4df071c88e014a1600d6c5bbf22e3393a4af409903fa397e28"}, - {file = "cftime-1.6.4.post1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6579c5c83cdf09d73aa94c7bc34925edd93c5f2c7dd28e074f568f7e376271a0"}, - {file = "cftime-1.6.4.post1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6b731c7133d17b479ca0c3c46a7a04f96197f0a4d753f4c2284c3ff0447279b4"}, - {file = "cftime-1.6.4.post1-cp313-cp313-win_amd64.whl", hash = "sha256:d2a8c223faea7f1248ab469cc0d7795dd46f2a423789038f439fee7190bae259"}, - {file = "cftime-1.6.4.post1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9df3e2d49e548c62d1939e923800b08d2ab732d3ac8d75b857edd7982c878552"}, - {file = "cftime-1.6.4.post1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2892b7e7654142d825655f60eb66c3e1af745901890316907071d44cf9a18d8a"}, - {file = "cftime-1.6.4.post1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4ab54e6c04e68395d454cd4001188fc4ade2fe48035589ed65af80c4527ef08"}, - {file = "cftime-1.6.4.post1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:568b69fc52f406e361db62a4d7a219c6fb0ced138937144c3b3a511648dd6c50"}, - {file = "cftime-1.6.4.post1-cp38-cp38-win_amd64.whl", hash = "sha256:640911d2629f4a8f81f6bc0163a983b6b94f86d1007449b8cbfd926136cda253"}, - {file = "cftime-1.6.4.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:44e9f8052600803b55f8cb6bcac2be49405c21efa900ec77a9fb7f692db2f7a6"}, - {file = "cftime-1.6.4.post1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a90b6ef4a3fc65322c212a2c99cec75d1886f1ebaf0ff6189f7b327566762222"}, - {file = "cftime-1.6.4.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:652700130dbcca3ae36dbb5b61ff360e62aa09fabcabc42ec521091a14389901"}, - {file = "cftime-1.6.4.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a7fb6cc541a027dab37fdeb695f8a2b21cd7d200be606f81b5abc38f2391e2"}, - {file = "cftime-1.6.4.post1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:fc2c0abe2dbd147e1b1e6d0f3de19a5ea8b04956acc204830fd8418066090989"}, - {file = "cftime-1.6.4.post1-cp39-cp39-win_amd64.whl", hash = "sha256:0ee2f5af8643aa1b47b7e388763a1a6e0dc05558cd2902cffb9cbcf954397648"}, - {file = "cftime-1.6.4.post1.tar.gz", hash = "sha256:50ac76cc9f10ab7bd46e44a71c51a6927051b499b4407df4f29ab13d741b942f"}, -] - -[package.dependencies] -numpy = {version = ">=1.26.0b1", markers = "python_version >= \"3.12.0.rc1\""} - [[package]] name = "charset-normalizer" -version = "3.4.2" +version = "3.4.3" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - { file = "charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-win32.whl", hash = "sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cad5f45b3146325bb38d6855642f6fd609c3f7cad4dbaf75549bf3b904d3184" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2680962a4848b3c4f155dc2ee64505a9c57186d0d56b43123b17ca3de18f0fa" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:36b31da18b8890a76ec181c3cf44326bf2c48e36d393ca1b72b3f484113ea344" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4074c5a429281bf056ddd4c5d3b740ebca4d43ffffe2ef4bf4d2d05114299da" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9e36a97bee9b86ef9a1cf7bb96747eb7a15c2f22bdb5b516434b00f2a599f02" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:1b1bde144d98e446b056ef98e59c256e9294f6b74d7af6846bf5ffdafd687a7d" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:915f3849a011c1f593ab99092f3cecfcb4d65d8feb4a64cf1bf2d22074dc0ec4" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:fb707f3e15060adf5b7ada797624a6c6e0138e2a26baa089df64c68ee98e040f" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:25a23ea5c7edc53e0f29bae2c44fcb5a1aa10591aae107f2a2b2583a9c5cbc64" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:770cab594ecf99ae64c236bc9ee3439c3f46be49796e265ce0cc8bc17b10294f" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-win32.whl", hash = "sha256:6a0289e4589e8bdfef02a80478f1dfcb14f0ab696b5a00e1f4b8a14a307a3c58" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6fc1f5b51fa4cecaa18f2bd7a003f3dd039dd615cd69a2afd6d3b19aed6775f2" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76af085e67e56c8816c3ccf256ebd136def2ed9654525348cfa744b6802b69eb" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45ba65510e2647721e35323d6ef54c7974959f6081b58d4ef5d87c60c84919a" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:046595208aae0120559a67693ecc65dd75d46f7bf687f159127046628178dc45" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75d10d37a47afee94919c4fab4c22b9bc2a8bf7d4f46f87363bcf0573f3ff4f5" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6333b3aa5a12c26b2a4d4e7335a28f1475e0e5e17d69d55141ee3cab736f66d1" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8323a9b031aa0393768b87f04b4164a40037fb2a3c11ac06a03ffecd3618027" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:24498ba8ed6c2e0b56d4acbf83f2d989720a93b41d712ebd4f4979660db4417b" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:844da2b5728b5ce0e32d863af26f32b5ce61bc4273a9c720a9f3aa9df73b1455" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:65c981bdbd3f57670af8b59777cbfae75364b483fa8a9f420f08094531d54a01" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3c21d4fca343c805a52c0c78edc01e3477f6dd1ad7c47653241cf2a206d4fc58" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dc7039885fa1baf9be153a0626e337aa7ec8bf96b0128605fb0d77788ddc1681" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-win32.whl", hash = "sha256:8272b73e1c5603666618805fe821edba66892e2870058c94c53147602eab29c7" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:70f7172939fdf8790425ba31915bfbe8335030f05b9913d7ae00a87d4395620a" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:005fa3432484527f9732ebd315da8da8001593e2cf46a3d817669f062c3d9ed4" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e92fca20c46e9f5e1bb485887d074918b13543b1c2a1185e69bb8d17ab6236a7" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50bf98d5e563b83cc29471fa114366e6806bc06bc7a25fd59641e41445327836" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:721c76e84fe669be19c5791da68232ca2e05ba5185575086e384352e2c309597" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82d8fd25b7f4675d0c47cf95b594d4e7b158aca33b76aa63d07186e13c0e0ab7" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3daeac64d5b371dea99714f08ffc2c208522ec6b06fbc7866a450dd446f5c0f" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dccab8d5fa1ef9bfba0590ecf4d46df048d18ffe3eec01eeb73a42e0d9e7a8ba" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:aaf27faa992bfee0264dc1f03f4c75e9fcdda66a519db6b957a3f826e285cf12" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:eb30abc20df9ab0814b5a2524f23d75dcf83cde762c161917a2b4b7b55b1e518" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:c72fbbe68c6f32f251bdc08b8611c7b3060612236e960ef848e0a517ddbe76c5" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:982bb1e8b4ffda883b3d0a521e23abcd6fd17418f6d2c4118d257a10199c0ce3" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-win32.whl", hash = "sha256:43e0933a0eff183ee85833f341ec567c0980dae57c464d8a508e1b2ceb336471" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:d11b54acf878eef558599658b0ffca78138c8c3655cf4f3a4a673c437e67732e" }, - { file = "charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0" }, - { file = "charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63" }, + {file = "charset_normalizer-3.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fb7f67a1bfa6e40b438170ebdc8158b78dc465a5a67b6dde178a46987b244a72"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc9370a2da1ac13f0153780040f465839e6cccb4a1e44810124b4e22483c93fe"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:07a0eae9e2787b586e129fdcbe1af6997f8d0e5abaa0bc98c0e20e124d67e601"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:74d77e25adda8581ffc1c720f1c81ca082921329452eba58b16233ab1842141c"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0e909868420b7049dafd3a31d45125b31143eec59235311fc4c57ea26a4acd2"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c6f162aabe9a91a309510d74eeb6507fab5fff92337a15acbe77753d88d9dcf0"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4ca4c094de7771a98d7fbd67d9e5dbf1eb73efa4f744a730437d8a3a5cf994f0"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:02425242e96bcf29a49711b0ca9f37e451da7c70562bc10e8ed992a5a7a25cc0"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:78deba4d8f9590fe4dae384aeff04082510a709957e968753ff3c48399f6f92a"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-win32.whl", hash = "sha256:d79c198e27580c8e958906f803e63cddb77653731be08851c7df0b1a14a8fc0f"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:c6e490913a46fa054e03699c70019ab869e990270597018cef1d8562132c2669"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-win32.whl", hash = "sha256:6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0f2be7e0cf7754b9a30eb01f4295cc3d4358a479843b31f328afd210e2c7598c"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c60e092517a73c632ec38e290eba714e9627abe9d301c8c8a12ec32c314a2a4b"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:252098c8c7a873e17dd696ed98bbe91dbacd571da4b87df3736768efa7a792e4"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3653fad4fe3ed447a596ae8638b437f827234f01a8cd801842e43f3d0a6b281b"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8999f965f922ae054125286faf9f11bc6932184b93011d138925a1773830bbe9"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d95bfb53c211b57198bb91c46dd5a2d8018b3af446583aab40074bf7988401cb"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:5b413b0b1bfd94dbf4023ad6945889f374cd24e3f62de58d6bb102c4d9ae534a"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:b5e3b2d152e74e100a9e9573837aba24aab611d39428ded46f4e4022ea7d1942"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a2d08ac246bb48479170408d6c19f6385fa743e7157d716e144cad849b2dd94b"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-win32.whl", hash = "sha256:ec557499516fc90fd374bf2e32349a2887a876fbf162c160e3c01b6849eaf557"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:5d8d01eac18c423815ed4f4a2ec3b439d654e55ee4ad610e153cf02faf67ea40"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:70bfc5f2c318afece2f5838ea5e4c3febada0be750fcf4775641052bbba14d05"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23b6b24d74478dc833444cbd927c338349d6ae852ba53a0d02a2de1fce45b96e"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:34a7f768e3f985abdb42841e20e17b330ad3aaf4bb7e7aeeb73db2e70f077b99"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fb731e5deb0c7ef82d698b0f4c5bb724633ee2a489401594c5c88b02e6cb15f7"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:257f26fed7d7ff59921b78244f3cd93ed2af1800ff048c33f624c87475819dd7"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1ef99f0456d3d46a50945c98de1774da86f8e992ab5c77865ea8b8195341fc19"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:2c322db9c8c89009a990ef07c3bcc9f011a3269bc06782f916cd3d9eed7c9312"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:511729f456829ef86ac41ca78c63a5cb55240ed23b4b737faca0eb1abb1c41bc"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:88ab34806dea0671532d3f82d82b85e8fc23d7b2dd12fa837978dad9bb392a34"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-win32.whl", hash = "sha256:16a8770207946ac75703458e2c743631c79c59c5890c80011d536248f8eaa432"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:d22dbedd33326a4a5190dd4fe9e9e693ef12160c77382d9e87919bce54f3d4ca"}, + {file = "charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a"}, + {file = "charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14"}, ] [[package]] @@ -505,27 +166,15 @@ version = "8.2.1" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.10" -groups = ["main", "dev"] +groups = ["dev"] files = [ - { file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b" }, - { file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202" }, + {file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b"}, + {file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202"}, ] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} -[[package]] -name = "cloudpickle" -version = "3.1.1" -description = "Pickler class to extend the standard pickle.Pickler functionality" -optional = false -python-versions = ">=3.8" -groups = ["main"] -files = [ - { file = "cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e" }, - { file = "cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64" }, -] - [[package]] name = "colorama" version = "0.4.6" @@ -537,330 +186,127 @@ files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -markers = { main = "platform_system == \"Windows\" or sys_platform == \"win32\"" } +markers = {main = "sys_platform == \"win32\""} [[package]] name = "colorlog" -version = "6.9.0" +version = "6.10.1" description = "Add colours to the output of Python's logging module." optional = false python-versions = ">=3.6" groups = ["main"] files = [ - { file = "colorlog-6.9.0-py3-none-any.whl", hash = "sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff" }, - { file = "colorlog-6.9.0.tar.gz", hash = "sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2" }, + {file = "colorlog-6.10.1-py3-none-any.whl", hash = "sha256:2d7e8348291948af66122cff006c9f8da6255d224e7cf8e37d8de2df3bad8c9c"}, + {file = "colorlog-6.10.1.tar.gz", hash = "sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321"}, ] [package.dependencies] -colorama = { version = "*", markers = "sys_platform == \"win32\"" } +colorama = {version = "*", markers = "sys_platform == \"win32\""} [package.extras] development = ["black", "flake8", "mypy", "pytest", "types-colorama"] -[[package]] -name = "comm" -version = "0.2.2" -description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, - {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, -] - -[package.dependencies] -traitlets = ">=4" - -[package.extras] -test = ["pytest"] - [[package]] name = "coverage" -version = "7.9.2" +version = "7.10.4" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "coverage-7.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:66283a192a14a3854b2e7f3418d7db05cdf411012ab7ff5db98ff3b181e1f912" }, - { file = "coverage-7.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4e01d138540ef34fcf35c1aa24d06c3de2a4cffa349e29a10056544f35cca15f" }, - { file = "coverage-7.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f22627c1fe2745ee98d3ab87679ca73a97e75ca75eb5faee48660d060875465f" }, - { file = "coverage-7.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b1c2d8363247b46bd51f393f86c94096e64a1cf6906803fa8d5a9d03784bdbf" }, - { file = "coverage-7.9.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c10c882b114faf82dbd33e876d0cbd5e1d1ebc0d2a74ceef642c6152f3f4d547" }, - { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:de3c0378bdf7066c3988d66cd5232d161e933b87103b014ab1b0b4676098fa45" }, - { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1e2f097eae0e5991e7623958a24ced3282676c93c013dde41399ff63e230fcf2" }, - { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:28dc1f67e83a14e7079b6cea4d314bc8b24d1aed42d3582ff89c0295f09b181e" }, - { file = "coverage-7.9.2-cp310-cp310-win32.whl", hash = "sha256:bf7d773da6af9e10dbddacbf4e5cab13d06d0ed93561d44dae0188a42c65be7e" }, - { file = "coverage-7.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:0c0378ba787681ab1897f7c89b415bd56b0b2d9a47e5a3d8dc0ea55aac118d6c" }, - { file = "coverage-7.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a7a56a2964a9687b6aba5b5ced6971af308ef6f79a91043c05dd4ee3ebc3e9ba" }, - { file = "coverage-7.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:123d589f32c11d9be7fe2e66d823a236fe759b0096f5db3fb1b75b2fa414a4fa" }, - { file = "coverage-7.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:333b2e0ca576a7dbd66e85ab402e35c03b0b22f525eed82681c4b866e2e2653a" }, - { file = "coverage-7.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:326802760da234baf9f2f85a39e4a4b5861b94f6c8d95251f699e4f73b1835dc" }, - { file = "coverage-7.9.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19e7be4cfec248df38ce40968c95d3952fbffd57b400d4b9bb580f28179556d2" }, - { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0b4a4cb73b9f2b891c1788711408ef9707666501ba23684387277ededab1097c" }, - { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:2c8937fa16c8c9fbbd9f118588756e7bcdc7e16a470766a9aef912dd3f117dbd" }, - { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:42da2280c4d30c57a9b578bafd1d4494fa6c056d4c419d9689e66d775539be74" }, - { file = "coverage-7.9.2-cp311-cp311-win32.whl", hash = "sha256:14fa8d3da147f5fdf9d298cacc18791818f3f1a9f542c8958b80c228320e90c6" }, - { file = "coverage-7.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:549cab4892fc82004f9739963163fd3aac7a7b0df430669b75b86d293d2df2a7" }, - { file = "coverage-7.9.2-cp311-cp311-win_arm64.whl", hash = "sha256:c2667a2b913e307f06aa4e5677f01a9746cd08e4b35e14ebcde6420a9ebb4c62" }, - { file = "coverage-7.9.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ae9eb07f1cfacd9cfe8eaee6f4ff4b8a289a668c39c165cd0c8548484920ffc0" }, - { file = "coverage-7.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9ce85551f9a1119f02adc46d3014b5ee3f765deac166acf20dbb851ceb79b6f3" }, - { file = "coverage-7.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8f6389ac977c5fb322e0e38885fbbf901743f79d47f50db706e7644dcdcb6e1" }, - { file = "coverage-7.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff0d9eae8cdfcd58fe7893b88993723583a6ce4dfbfd9f29e001922544f95615" }, - { file = "coverage-7.9.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fae939811e14e53ed8a9818dad51d434a41ee09df9305663735f2e2d2d7d959b" }, - { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:31991156251ec202c798501e0a42bbdf2169dcb0f137b1f5c0f4267f3fc68ef9" }, - { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d0d67963f9cbfc7c7f96d4ac74ed60ecbebd2ea6eeb51887af0f8dce205e545f" }, - { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:49b752a2858b10580969ec6af6f090a9a440a64a301ac1528d7ca5f7ed497f4d" }, - { file = "coverage-7.9.2-cp312-cp312-win32.whl", hash = "sha256:88d7598b8ee130f32f8a43198ee02edd16d7f77692fa056cb779616bbea1b355" }, - { file = "coverage-7.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:9dfb070f830739ee49d7c83e4941cc767e503e4394fdecb3b54bfdac1d7662c0" }, - { file = "coverage-7.9.2-cp312-cp312-win_arm64.whl", hash = "sha256:4e2c058aef613e79df00e86b6d42a641c877211384ce5bd07585ed7ba71ab31b" }, - { file = "coverage-7.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:985abe7f242e0d7bba228ab01070fde1d6c8fa12f142e43debe9ed1dde686038" }, - { file = "coverage-7.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82c3939264a76d44fde7f213924021ed31f55ef28111a19649fec90c0f109e6d" }, - { file = "coverage-7.9.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae5d563e970dbe04382f736ec214ef48103d1b875967c89d83c6e3f21706d5b3" }, - { file = "coverage-7.9.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bdd612e59baed2a93c8843c9a7cb902260f181370f1d772f4842987535071d14" }, - { file = "coverage-7.9.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:256ea87cb2a1ed992bcdfc349d8042dcea1b80436f4ddf6e246d6bee4b5d73b6" }, - { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f44ae036b63c8ea432f610534a2668b0c3aee810e7037ab9d8ff6883de480f5b" }, - { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:82d76ad87c932935417a19b10cfe7abb15fd3f923cfe47dbdaa74ef4e503752d" }, - { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:619317bb86de4193debc712b9e59d5cffd91dc1d178627ab2a77b9870deb2868" }, - { file = "coverage-7.9.2-cp313-cp313-win32.whl", hash = "sha256:0a07757de9feb1dfafd16ab651e0f628fd7ce551604d1bf23e47e1ddca93f08a" }, - { file = "coverage-7.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:115db3d1f4d3f35f5bb021e270edd85011934ff97c8797216b62f461dd69374b" }, - { file = "coverage-7.9.2-cp313-cp313-win_arm64.whl", hash = "sha256:48f82f889c80af8b2a7bb6e158d95a3fbec6a3453a1004d04e4f3b5945a02694" }, - { file = "coverage-7.9.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:55a28954545f9d2f96870b40f6c3386a59ba8ed50caf2d949676dac3ecab99f5" }, - { file = "coverage-7.9.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cdef6504637731a63c133bb2e6f0f0214e2748495ec15fe42d1e219d1b133f0b" }, - { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcd5ebe66c7a97273d5d2ddd4ad0ed2e706b39630ed4b53e713d360626c3dbb3" }, - { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9303aed20872d7a3c9cb39c5d2b9bdbe44e3a9a1aecb52920f7e7495410dfab8" }, - { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc18ea9e417a04d1920a9a76fe9ebd2f43ca505b81994598482f938d5c315f46" }, - { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6406cff19880aaaadc932152242523e892faff224da29e241ce2fca329866584" }, - { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2d0d4f6ecdf37fcc19c88fec3e2277d5dee740fb51ffdd69b9579b8c31e4232e" }, - { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c33624f50cf8de418ab2b4d6ca9eda96dc45b2c4231336bac91454520e8d1fac" }, - { file = "coverage-7.9.2-cp313-cp313t-win32.whl", hash = "sha256:1df6b76e737c6a92210eebcb2390af59a141f9e9430210595251fbaf02d46926" }, - { file = "coverage-7.9.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f5fd54310b92741ebe00d9c0d1d7b2b27463952c022da6d47c175d246a98d1bd" }, - { file = "coverage-7.9.2-cp313-cp313t-win_arm64.whl", hash = "sha256:c48c2375287108c887ee87d13b4070a381c6537d30e8487b24ec721bf2a781cb" }, - { file = "coverage-7.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ddc39510ac922a5c4c27849b739f875d3e1d9e590d1e7b64c98dadf037a16cce" }, - { file = "coverage-7.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a535c0c7364acd55229749c2b3e5eebf141865de3a8f697076a3291985f02d30" }, - { file = "coverage-7.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df0f9ef28e0f20c767ccdccfc5ae5f83a6f4a2fbdfbcbcc8487a8a78771168c8" }, - { file = "coverage-7.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f3da12e0ccbcb348969221d29441ac714bbddc4d74e13923d3d5a7a0bebef7a" }, - { file = "coverage-7.9.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a17eaf46f56ae0f870f14a3cbc2e4632fe3771eab7f687eda1ee59b73d09fe4" }, - { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:669135a9d25df55d1ed56a11bf555f37c922cf08d80799d4f65d77d7d6123fcf" }, - { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:9d3a700304d01a627df9db4322dc082a0ce1e8fc74ac238e2af39ced4c083193" }, - { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:71ae8b53855644a0b1579d4041304ddc9995c7b21c8a1f16753c4d8903b4dfed" }, - { file = "coverage-7.9.2-cp39-cp39-win32.whl", hash = "sha256:dd7a57b33b5cf27acb491e890720af45db05589a80c1ffc798462a765be6d4d7" }, - { file = "coverage-7.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:f65bb452e579d5540c8b37ec105dd54d8b9307b07bcaa186818c104ffda22441" }, - { file = "coverage-7.9.2-pp39.pp310.pp311-none-any.whl", hash = "sha256:8a1166db2fb62473285bcb092f586e081e92656c7dfa8e9f62b4d39d7e6b5050" }, - { file = "coverage-7.9.2-py3-none-any.whl", hash = "sha256:e425cd5b00f6fc0ed7cdbd766c70be8baab4b7839e4d4fe5fac48581dd968ea4" }, - { file = "coverage-7.9.2.tar.gz", hash = "sha256:997024fa51e3290264ffd7492ec97d0690293ccd2b45a6cd7d82d945a4a80c8b" }, + {file = "coverage-7.10.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d92d6edb0ccafd20c6fbf9891ca720b39c2a6a4b4a6f9cf323ca2c986f33e475"}, + {file = "coverage-7.10.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7202da14dc0236884fcc45665ffb2d79d4991a53fbdf152ab22f69f70923cc22"}, + {file = "coverage-7.10.4-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ada418633ae24ec8d0fcad5efe6fc7aa3c62497c6ed86589e57844ad04365674"}, + {file = "coverage-7.10.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b828e33eca6c3322adda3b5884456f98c435182a44917ded05005adfa1415500"}, + {file = "coverage-7.10.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:802793ba397afcfdbe9f91f89d65ae88b958d95edc8caf948e1f47d8b6b2b606"}, + {file = "coverage-7.10.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d0b23512338c54101d3bf7a1ab107d9d75abda1d5f69bc0887fd079253e4c27e"}, + {file = "coverage-7.10.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f36b7dcf72d06a8c5e2dd3aca02be2b1b5db5f86404627dff834396efce958f2"}, + {file = "coverage-7.10.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fce316c367a1dc2c411821365592eeb335ff1781956d87a0410eae248188ba51"}, + {file = "coverage-7.10.4-cp310-cp310-win32.whl", hash = "sha256:8c5dab29fc8070b3766b5fc85f8d89b19634584429a2da6d42da5edfadaf32ae"}, + {file = "coverage-7.10.4-cp310-cp310-win_amd64.whl", hash = "sha256:4b0d114616f0fccb529a1817457d5fb52a10e106f86c5fb3b0bd0d45d0d69b93"}, + {file = "coverage-7.10.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:05d5f98ec893d4a2abc8bc5f046f2f4367404e7e5d5d18b83de8fde1093ebc4f"}, + {file = "coverage-7.10.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9267efd28f8994b750d171e58e481e3bbd69e44baed540e4c789f8e368b24b88"}, + {file = "coverage-7.10.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:4456a039fdc1a89ea60823d0330f1ac6f97b0dbe9e2b6fb4873e889584b085fb"}, + {file = "coverage-7.10.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c2bfbd2a9f7e68a21c5bd191be94bfdb2691ac40d325bac9ef3ae45ff5c753d9"}, + {file = "coverage-7.10.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ab7765f10ae1df7e7fe37de9e64b5a269b812ee22e2da3f84f97b1c7732a0d8"}, + {file = "coverage-7.10.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a09b13695166236e171ec1627ff8434b9a9bae47528d0ba9d944c912d33b3d2"}, + {file = "coverage-7.10.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5c9e75dfdc0167d5675e9804f04a56b2cf47fb83a524654297000b578b8adcb7"}, + {file = "coverage-7.10.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c751261bfe6481caba15ec005a194cb60aad06f29235a74c24f18546d8377df0"}, + {file = "coverage-7.10.4-cp311-cp311-win32.whl", hash = "sha256:051c7c9e765f003c2ff6e8c81ccea28a70fb5b0142671e4e3ede7cebd45c80af"}, + {file = "coverage-7.10.4-cp311-cp311-win_amd64.whl", hash = "sha256:1a647b152f10be08fb771ae4a1421dbff66141e3d8ab27d543b5eb9ea5af8e52"}, + {file = "coverage-7.10.4-cp311-cp311-win_arm64.whl", hash = "sha256:b09b9e4e1de0d406ca9f19a371c2beefe3193b542f64a6dd40cfcf435b7d6aa0"}, + {file = "coverage-7.10.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a1f0264abcabd4853d4cb9b3d164adbf1565da7dab1da1669e93f3ea60162d79"}, + {file = "coverage-7.10.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:536cbe6b118a4df231b11af3e0f974a72a095182ff8ec5f4868c931e8043ef3e"}, + {file = "coverage-7.10.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:9a4c0d84134797b7bf3f080599d0cd501471f6c98b715405166860d79cfaa97e"}, + {file = "coverage-7.10.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7c155fc0f9cee8c9803ea0ad153ab6a3b956baa5d4cd993405dc0b45b2a0b9e0"}, + {file = "coverage-7.10.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a5f2ab6e451d4b07855d8bcf063adf11e199bff421a4ba57f5bb95b7444ca62"}, + {file = "coverage-7.10.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:685b67d99b945b0c221be0780c336b303a7753b3e0ec0d618c795aada25d5e7a"}, + {file = "coverage-7.10.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0c079027e50c2ae44da51c2e294596cbc9dbb58f7ca45b30651c7e411060fc23"}, + {file = "coverage-7.10.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3749aa72b93ce516f77cf5034d8e3c0dfd45c6e8a163a602ede2dc5f9a0bb927"}, + {file = "coverage-7.10.4-cp312-cp312-win32.whl", hash = "sha256:fecb97b3a52fa9bcd5a7375e72fae209088faf671d39fae67261f37772d5559a"}, + {file = "coverage-7.10.4-cp312-cp312-win_amd64.whl", hash = "sha256:26de58f355626628a21fe6a70e1e1fad95702dafebfb0685280962ae1449f17b"}, + {file = "coverage-7.10.4-cp312-cp312-win_arm64.whl", hash = "sha256:67e8885408f8325198862bc487038a4980c9277d753cb8812510927f2176437a"}, + {file = "coverage-7.10.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2b8e1d2015d5dfdbf964ecef12944c0c8c55b885bb5c0467ae8ef55e0e151233"}, + {file = "coverage-7.10.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:25735c299439018d66eb2dccf54f625aceb78645687a05f9f848f6e6c751e169"}, + {file = "coverage-7.10.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:715c06cb5eceac4d9b7cdf783ce04aa495f6aff657543fea75c30215b28ddb74"}, + {file = "coverage-7.10.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e017ac69fac9aacd7df6dc464c05833e834dc5b00c914d7af9a5249fcccf07ef"}, + {file = "coverage-7.10.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bad180cc40b3fccb0f0e8c702d781492654ac2580d468e3ffc8065e38c6c2408"}, + {file = "coverage-7.10.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:becbdcd14f685fada010a5f792bf0895675ecf7481304fe159f0cd3f289550bd"}, + {file = "coverage-7.10.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0b485ca21e16a76f68060911f97ebbe3e0d891da1dbbce6af7ca1ab3f98b9097"}, + {file = "coverage-7.10.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6c1d098ccfe8e1e0a1ed9a0249138899948afd2978cbf48eb1cc3fcd38469690"}, + {file = "coverage-7.10.4-cp313-cp313-win32.whl", hash = "sha256:8630f8af2ca84b5c367c3df907b1706621abe06d6929f5045fd628968d421e6e"}, + {file = "coverage-7.10.4-cp313-cp313-win_amd64.whl", hash = "sha256:f68835d31c421736be367d32f179e14ca932978293fe1b4c7a6a49b555dff5b2"}, + {file = "coverage-7.10.4-cp313-cp313-win_arm64.whl", hash = "sha256:6eaa61ff6724ca7ebc5326d1fae062d85e19b38dd922d50903702e6078370ae7"}, + {file = "coverage-7.10.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:702978108876bfb3d997604930b05fe769462cc3000150b0e607b7b444f2fd84"}, + {file = "coverage-7.10.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e8f978e8c5521d9c8f2086ac60d931d583fab0a16f382f6eb89453fe998e2484"}, + {file = "coverage-7.10.4-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:df0ac2ccfd19351411c45e43ab60932b74472e4648b0a9edf6a3b58846e246a9"}, + {file = "coverage-7.10.4-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:73a0d1aaaa3796179f336448e1576a3de6fc95ff4f07c2d7251d4caf5d18cf8d"}, + {file = "coverage-7.10.4-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:873da6d0ed6b3ffc0bc01f2c7e3ad7e2023751c0d8d86c26fe7322c314b031dc"}, + {file = "coverage-7.10.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c6446c75b0e7dda5daa876a1c87b480b2b52affb972fedd6c22edf1aaf2e00ec"}, + {file = "coverage-7.10.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:6e73933e296634e520390c44758d553d3b573b321608118363e52113790633b9"}, + {file = "coverage-7.10.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:52073d4b08d2cb571234c8a71eb32af3c6923149cf644a51d5957ac128cf6aa4"}, + {file = "coverage-7.10.4-cp313-cp313t-win32.whl", hash = "sha256:e24afb178f21f9ceb1aefbc73eb524769aa9b504a42b26857243f881af56880c"}, + {file = "coverage-7.10.4-cp313-cp313t-win_amd64.whl", hash = "sha256:be04507ff1ad206f4be3d156a674e3fb84bbb751ea1b23b142979ac9eebaa15f"}, + {file = "coverage-7.10.4-cp313-cp313t-win_arm64.whl", hash = "sha256:f3e3ff3f69d02b5dad67a6eac68cc9c71ae343b6328aae96e914f9f2f23a22e2"}, + {file = "coverage-7.10.4-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:a59fe0af7dd7211ba595cf7e2867458381f7e5d7b4cffe46274e0b2f5b9f4eb4"}, + {file = "coverage-7.10.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3a6c35c5b70f569ee38dc3350cd14fdd0347a8b389a18bb37538cc43e6f730e6"}, + {file = "coverage-7.10.4-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:acb7baf49f513554c4af6ef8e2bd6e8ac74e6ea0c7386df8b3eb586d82ccccc4"}, + {file = "coverage-7.10.4-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a89afecec1ed12ac13ed203238b560cbfad3522bae37d91c102e690b8b1dc46c"}, + {file = "coverage-7.10.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:480442727f464407d8ade6e677b7f21f3b96a9838ab541b9a28ce9e44123c14e"}, + {file = "coverage-7.10.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a89bf193707f4a17f1ed461504031074d87f035153239f16ce86dfb8f8c7ac76"}, + {file = "coverage-7.10.4-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:3ddd912c2fc440f0fb3229e764feec85669d5d80a988ff1b336a27d73f63c818"}, + {file = "coverage-7.10.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:8a538944ee3a42265e61c7298aeba9ea43f31c01271cf028f437a7b4075592cf"}, + {file = "coverage-7.10.4-cp314-cp314-win32.whl", hash = "sha256:fd2e6002be1c62476eb862b8514b1ba7e7684c50165f2a8d389e77da6c9a2ebd"}, + {file = "coverage-7.10.4-cp314-cp314-win_amd64.whl", hash = "sha256:ec113277f2b5cf188d95fb66a65c7431f2b9192ee7e6ec9b72b30bbfb53c244a"}, + {file = "coverage-7.10.4-cp314-cp314-win_arm64.whl", hash = "sha256:9744954bfd387796c6a091b50d55ca7cac3d08767795b5eec69ad0f7dbf12d38"}, + {file = "coverage-7.10.4-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:5af4829904dda6aabb54a23879f0f4412094ba9ef153aaa464e3c1b1c9bc98e6"}, + {file = "coverage-7.10.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7bba5ed85e034831fac761ae506c0644d24fd5594727e174b5a73aff343a7508"}, + {file = "coverage-7.10.4-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d57d555b0719834b55ad35045de6cc80fc2b28e05adb6b03c98479f9553b387f"}, + {file = "coverage-7.10.4-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ba62c51a72048bb1ea72db265e6bd8beaabf9809cd2125bbb5306c6ce105f214"}, + {file = "coverage-7.10.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0acf0c62a6095f07e9db4ec365cc58c0ef5babb757e54745a1aa2ea2a2564af1"}, + {file = "coverage-7.10.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e1033bf0f763f5cf49ffe6594314b11027dcc1073ac590b415ea93463466deec"}, + {file = "coverage-7.10.4-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:92c29eff894832b6a40da1789b1f252305af921750b03ee4535919db9179453d"}, + {file = "coverage-7.10.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:822c4c830989c2093527e92acd97be4638a44eb042b1bdc0e7a278d84a070bd3"}, + {file = "coverage-7.10.4-cp314-cp314t-win32.whl", hash = "sha256:e694d855dac2e7cf194ba33653e4ba7aad7267a802a7b3fc4347d0517d5d65cd"}, + {file = "coverage-7.10.4-cp314-cp314t-win_amd64.whl", hash = "sha256:efcc54b38ef7d5bfa98050f220b415bc5bb3d432bd6350a861cf6da0ede2cdcd"}, + {file = "coverage-7.10.4-cp314-cp314t-win_arm64.whl", hash = "sha256:6f3a3496c0fa26bfac4ebc458747b778cff201c8ae94fa05e1391bab0dbc473c"}, + {file = "coverage-7.10.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:48fd4d52600c2a9d5622e52dfae674a7845c5e1dceaf68b88c99feb511fbcfd6"}, + {file = "coverage-7.10.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:56217b470d09d69e6b7dcae38200f95e389a77db801cb129101697a4553b18b6"}, + {file = "coverage-7.10.4-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:44ac3f21a6e28c5ff7f7a47bca5f87885f6a1e623e637899125ba47acd87334d"}, + {file = "coverage-7.10.4-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3387739d72c84d17b4d2f7348749cac2e6700e7152026912b60998ee9a40066b"}, + {file = "coverage-7.10.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3f111ff20d9a6348e0125be892608e33408dd268f73b020940dfa8511ad05503"}, + {file = "coverage-7.10.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:01a852f0a9859734b018a3f483cc962d0b381d48d350b1a0c47d618c73a0c398"}, + {file = "coverage-7.10.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:225111dd06759ba4e37cee4c0b4f3df2b15c879e9e3c37bf986389300b9917c3"}, + {file = "coverage-7.10.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2178d4183bd1ba608f0bb12e71e55838ba1b7dbb730264f8b08de9f8ef0c27d0"}, + {file = "coverage-7.10.4-cp39-cp39-win32.whl", hash = "sha256:93d175fe81913aee7a6ea430abbdf2a79f1d9fd451610e12e334e4fe3264f563"}, + {file = "coverage-7.10.4-cp39-cp39-win_amd64.whl", hash = "sha256:2221a823404bb941c7721cf0ef55ac6ee5c25d905beb60c0bba5e5e85415d353"}, + {file = "coverage-7.10.4-py3-none-any.whl", hash = "sha256:065d75447228d05121e5c938ca8f0e91eed60a1eb2d1258d42d5084fecfc3302"}, + {file = "coverage-7.10.4.tar.gz", hash = "sha256:25f5130af6c8e7297fd14634955ba9e1697f47143f289e2a23284177c0061d27"}, ] [package.extras] toml = ["tomli ; python_full_version <= \"3.11.0a6\""] -[[package]] -name = "crc32c" -version = "2.7.1" -description = "A python package implementing the crc32c algorithm in hardware and software" -optional = false -python-versions = ">=3.7" -groups = ["main"] -files = [ - { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1fd1f9c6b50d7357736676278a1b8c8986737b8a1c76d7eab4baa71d0b6af67f" }, - { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:805c2be1bc0e251c48439a62b0422385899c15289483692bc70e78473c1039f1" }, - { file = "crc32c-2.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f4333e62b7844dfde112dbb8489fd2970358eddc3310db21e943a9f6994df749" }, - { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f0fadc741e79dc705e2d9ee967473e8a061d26b04310ed739f1ee292f33674f" }, - { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91ced31055d26d59385d708bbd36689e1a1d604d4b0ceb26767eb5a83156f85d" }, - { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36ffa999b72e3c17f6a066ae9e970b40f8c65f38716e436c39a33b809bc6ed9f" }, - { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e80114dd7f462297e54d5da1b9ff472e5249c5a2b406aa51c371bb0edcbf76bd" }, - { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:676f5b46da268b5190f9fb91b3f037a00d114b411313664438525db876adc71f" }, - { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8d0e660c9ed269e90692993a4457a932fc22c9cc96caf79dd1f1a84da85bb312" }, - { file = "crc32c-2.7.1-cp310-cp310-win32.whl", hash = "sha256:17a2c3f8c6d85b04b5511af827b5dbbda4e672d188c0b9f20a8156e93a1aa7b6" }, - { file = "crc32c-2.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3208764c29688f91a35392073229975dd7687b6cb9f76b919dae442cabcd5126" }, - { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:19e03a50545a3ef400bd41667d5525f71030488629c57d819e2dd45064f16192" }, - { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c03286b1e5ce9bed7090084f206aacd87c5146b4b10de56fe9e86cbbbf851cf" }, - { file = "crc32c-2.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:80ebbf144a1a56a532b353e81fa0f3edca4f4baa1bf92b1dde2c663a32bb6a15" }, - { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96b794fd11945298fdd5eb1290a812efb497c14bc42592c5c992ca077458eeba" }, - { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9df7194dd3c0efb5a21f5d70595b7a8b4fd9921fbbd597d6d8e7a11eca3e2d27" }, - { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d698eec444b18e296a104d0b9bb6c596c38bdcb79d24eba49604636e9d747305" }, - { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e07cf10ef852d219d179333fd706d1c415626f1f05e60bd75acf0143a4d8b225" }, - { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d2a051f296e6e92e13efee3b41db388931cdb4a2800656cd1ed1d9fe4f13a086" }, - { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1738259802978cdf428f74156175da6a5fdfb7256f647fdc0c9de1bc6cd7173" }, - { file = "crc32c-2.7.1-cp311-cp311-win32.whl", hash = "sha256:f7786d219a1a1bf27d0aa1869821d11a6f8e90415cfffc1e37791690d4a848a1" }, - { file = "crc32c-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:887f6844bb3ad35f0778cd10793ad217f7123a5422e40041231b8c4c7329649d" }, - { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f7d1c4e761fe42bf856130daf8b2658df33fe0ced3c43dadafdfeaa42b57b950" }, - { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:73361c79a6e4605204457f19fda18b042a94508a52e53d10a4239da5fb0f6a34" }, - { file = "crc32c-2.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:afd778fc8ac0ed2ffbfb122a9aa6a0e409a8019b894a1799cda12c01534493e0" }, - { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56ef661b34e9f25991fface7f9ad85e81bbc1b3fe3b916fd58c893eabe2fa0b8" }, - { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:571aa4429444b5d7f588e4377663592145d2d25eb1635abb530f1281794fc7c9" }, - { file = "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" }, - { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:99d17637c4867672cb8adeea007294e3c3df9d43964369516cfe2c1f47ce500a" }, - { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f4a400ac3c69a32e180d8753fd7ec7bccb80ade7ab0812855dce8a208e72495f" }, - { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:588587772e55624dd9c7a906ec9e8773ae0b6ac5e270fc0bc84ee2758eba90d5" }, - { file = "crc32c-2.7.1-cp312-cp312-win32.whl", hash = "sha256:9f14b60e5a14206e8173dd617fa0c4df35e098a305594082f930dae5488da428" }, - { file = "crc32c-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:7c810a246660a24dc818047dc5f89c7ce7b2814e1e08a8e99993f4103f7219e8" }, - { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:24949bffb06fc411cc18188d33357923cb935273642164d0bb37a5f375654169" }, - { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2d5d326e7e118d4fa60187770d86b66af2fdfc63ce9eeb265f0d3e7d49bebe0b" }, - { file = "crc32c-2.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba110df60c64c8e2d77a9425b982a520ccdb7abe42f06604f4d98a45bb1fff62" }, - { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c277f9d16a3283e064d54854af0976b72abaa89824955579b2b3f37444f89aae" }, - { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:881af0478a01331244e27197356929edbdeaef6a9f81b5c6bacfea18d2139289" }, - { file = "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" }, - { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2416c4d88696ac322632555c0f81ab35e15f154bc96055da6cf110d642dbc10" }, - { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:60254251b88ec9b9795215f0f9ec015a6b5eef8b2c5fba1267c672d83c78fc02" }, - { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:edefc0e46f3c37372183f70338e5bdee42f6789b62fcd36ec53aa933e9dfbeaf" }, - { file = "crc32c-2.7.1-cp313-cp313-win32.whl", hash = "sha256:813af8111218970fe2adb833c5e5239f091b9c9e76f03b4dd91aaba86e99b499" }, - { file = "crc32c-2.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:7d9ede7be8e4ec1c9e90aaf6884decbeef10e3473e6ddac032706d710cab5888" }, - { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:db9ac92294284b22521356715784b91cc9094eee42a5282ab281b872510d1831" }, - { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8fcd7f2f29a30dc92af64a9ee3d38bde0c82bd20ad939999427aac94bbd87373" }, - { file = "crc32c-2.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5c056ef043393085523e149276a7ce0cb534b872e04f3e20d74d9a94a75c0ad7" }, - { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03a92551a343702629af91f78d205801219692b6909f8fa126b830e332bfb0e0" }, - { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb9424ec1a8ca54763155a703e763bcede82e6569fe94762614bb2de1412d4e1" }, - { file = "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" }, - { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:57a20dfc27995f568f64775eea2bbb58ae269f1a1144561df5e4a4955f79db32" }, - { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:f7186d098bfd2cff25eac6880b7c7ad80431b90610036131c1c7dd0eab42a332" }, - { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:55a77e29a265418fa34bef15bd0f2c60afae5348988aaf35ed163b4bbf93cf37" }, - { file = "crc32c-2.7.1-cp313-cp313t-win32.whl", hash = "sha256:ae38a4b6aa361595d81cab441405fbee905c72273e80a1c010fb878ae77ac769" }, - { file = "crc32c-2.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:eee2a43b663feb6c79a6c1c6e5eae339c2b72cfac31ee54ec0209fa736cf7ee5" }, - { file = "crc32c-2.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:04a56e9f4995559fa86bcf5d0ed5c48505a36e2be1c41d70cae5c080d9a00b74" }, - { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88c5c9c21cd9fff593bb7dfe97d3287438c8aecbcc73d227f2366860a0663521" }, - { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:595146cb94ba0055301d273113add2af5859b467db41b50367f47870c2d0a81c" }, - { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9f3792872f1320961f33aaf0198edea371aee393bcc221fab66d10ecffd77d" }, - { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:999a40d75cd1696e779f6f99c29fa52be777197d1d9e3ae69cb919a05a369c1e" }, - { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:eff485526172cee7e6d1fa9c23913f92c7d38ab05674b0b578767c7b693faf5d" }, - { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:541dac90c64ed9ce05f85a71066567e854c1b40743a01d83fa2c66419a2e97b6" }, - { file = "crc32c-2.7.1-cp37-cp37m-win32.whl", hash = "sha256:7138ec26e79100c4cf4294ef40027a1cff26a1e23b7e5eb70efe5d7ff37cbc66" }, - { file = "crc32c-2.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:35a3ed12ac2e2551a07d246b7e6512ac39db021e006205a40c1cfd32ea73fcc3" }, - { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af062f11aea283b7e9c95f3a97fb6bb96ac08a9063f71621c2140237df141ada" }, - { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8f25ca521ecf7cccfff0ecae4d0538b5c0c7235d27bf098241f3e2bf86aed713" }, - { file = "crc32c-2.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1410bcd909be36ccbf8a52c45e4bddca77adfd4e80789ac3cd575c024086516d" }, - { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33fc8cb32f82685ebefd078e740925ea9da37a008ed5f43b68fc8324f8ca4a37" }, - { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad3dc6283ce53ad7d1dc5775003460110ab7eebf348efebe0486a531b28f8184" }, - { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:758ead20e122496764ae50db26bb90fb47fc4b6d242c8e99e87c3f1dae1f1dce" }, - { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e436d9044bbd51936f7aeb8b322543c516bf22371a17970a370a10af1661fa54" }, - { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:47e5be99057264b603e3cd88cf091985f33c16d3c8609f1c83ed6e72ec4179b4" }, - { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:280509210e622a236f16f031856847fd0d6704df662d7209da819ccfb40c6167" }, - { file = "crc32c-2.7.1-cp38-cp38-win32.whl", hash = "sha256:4ab48e048cfa123a9f9bdc5d4d687a3461723132c749c721a6d358605e6d470d" }, - { file = "crc32c-2.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:65471d1b1b6e10a404ca8200a4271d5bc0a552c3f5dcd943c1c7835f766ea02d" }, - { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:39ca842586084bca24f9c4ab43e2d99191b1186b2f89b2122b470d0730254d1b" }, - { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a911abc33d453b3f171a3200b1e18b3fc39c204670b5b0a353cca99e4c664332" }, - { file = "crc32c-2.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:22a72e81ec08a7ece6a35ac68d1ed32dd4a8be7949b164db88d4b4a4bade5c5a" }, - { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54d6f8c5be6815eabd6e3e90fa0bc13045183a6aa33a30dd684eb0f062b92213" }, - { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c855726d71dee7ae25f81c6b54293455fc66802f34d334d22bea1f6ce8bc21c" }, - { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98d5f7fc364bb9c4c4123d149406fbee063f2e8c2cff19a12f13e50faa146237" }, - { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:51ffba582c95a281e5a3f71eacdafc96b9a1835ddae245385639458fff197034" }, - { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3950d3c340c9d70889630ef81fba8666abfd0cf0aa19fd9c3a55634e0b383b0f" }, - { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:522fba1770aad8f7eb189f21fca591a51d96dcc749859088f462281324aec30b" }, - { file = "crc32c-2.7.1-cp39-cp39-win32.whl", hash = "sha256:812723e222b6a9fe0562554d72f4f072c3a95720c60ee500984e7d0e568caac3" }, - { file = "crc32c-2.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:6793fcfe9d4130230d196abbe4021c01ffe8e85c92633bf3c8559f9836c227f5" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:2e83fedebcdeb80c19e76b7a0e5103528bb062521c40702bf34516a429e81df3" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30004a7383538ef93bda9b22f7b3805bc0aa5625ab2675690e1b676b19417d4b" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a01b0983aa87f517c12418f9898ecf2083bf86f4ea04122e053357c3edb0d73f" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb2b963c42128b38872e9ed63f04a73ce1ff89a1dfad7ea38add6fe6296497b8" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cdd5e576fee5d255c1e68a4dae4420f21e57e6f05900b38d5ae47c713fc3330d" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:79f0ff50863aeb441fbfa87e9db6542ddfe3e941189dece832b0af2e454dbab0" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cd27a1e400d77e9872fa1303e8f9d30bd050df35ee4858354ce0b59f8227d32" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:274739b3e1591bd4b7ec98764f2f79c6fbcc0f7d7676d5f17369832fe14ee4f0" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:050f52045b4a033a245e0ee4357e1a793de5af6496c82250ef13d8cb90a21e20" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ceb4ca126f75694bda020a307221563d3c522719c0acedcc81ffb985b4867c94" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:eabefe7a6fb5dfc6318fb35f4d98893baef17ebda9b311498e870526d32168e7" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:217edd9ba8c5f0c3ad60c82a11fa78f01162fa106fd7f5d17175dac6bf1eedf9" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15d640d9d4aa213aec6c837f602081a17d1522f8cd78b52334b62ee27b083410" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:519878822bf9bdead63c25a5e4bdc26d2eae9da6056f92b9b5f3023c08f1d016" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:2bf69cfa4c3ea9f060fe06db00b7e34f771c83f73dd2c3568c2c9019479e34c2" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e89d51c90f6730b67b12c97d49099ba18d0fdce18541fab94d2be95d1c939adb" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:488a0feba1bb005d0dd2f702c1da4849d083e88d82cd27b83ac2d2d93af80755" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:919262b7a12ef63f222ec19c0e092f39268802652e11669315257ae6249ec79f" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4181240f6080c38eec9dd1539cd23a304a12100d3f4ffe43234f32064fae5ef0" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fedde1e53507d0ede1980e8109442edd108c04ab100abcd5145c274820dacd4f" }, - { file = "crc32c-2.7.1.tar.gz", hash = "sha256:f91b144a21eef834d64178e01982bb9179c354b3e9e5f4c803b0e5096384968c" }, -] - -[[package]] -name = "dask" -version = "2025.7.0" -description = "Parallel PyData with Task Scheduling" -optional = false -python-versions = ">=3.10" -groups = ["main"] -files = [ - { file = "dask-2025.7.0-py3-none-any.whl", hash = "sha256:073c29c4e99c2400a39a8a67874f35c1d15bf7af9ae3d0c30af3c7c1199f24ae" }, - { file = "dask-2025.7.0.tar.gz", hash = "sha256:c3a0d4e78882e85ea81dbc71e6459713e45676e2d17e776c2f3f19848039e4cf" }, -] - -[package.dependencies] -click = ">=8.1" -cloudpickle = ">=3.0.0" -fsspec = ">=2021.09.0" -packaging = ">=20.0" -partd = ">=1.4.0" -pyyaml = ">=5.3.1" -toolz = ">=0.10.0" - -[package.extras] -array = ["numpy (>=1.24)"] -complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=14.0.1)"] -dataframe = ["dask[array]", "pandas (>=2.0)", "pyarrow (>=14.0.1)"] -diagnostics = ["bokeh (>=3.1.0)", "jinja2 (>=2.10.3)"] -distributed = ["distributed (==2025.7.0)"] -test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] - -[[package]] -name = "debugpy" -version = "1.8.15" -description = "An implementation of the Debug Adapter Protocol for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "debugpy-1.8.15-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e9a8125c85172e3ec30985012e7a81ea5e70bbb836637f8a4104f454f9b06c97" }, - { file = "debugpy-1.8.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fd0b6b5eccaa745c214fd240ea82f46049d99ef74b185a3517dad3ea1ec55d9" }, - { file = "debugpy-1.8.15-cp310-cp310-win32.whl", hash = "sha256:8181cce4d344010f6bfe94a531c351a46a96b0f7987750932b2908e7a1e14a55" }, - { file = "debugpy-1.8.15-cp310-cp310-win_amd64.whl", hash = "sha256:af2dcae4e4cd6e8b35f982ccab29fe65f7e8766e10720a717bc80c464584ee21" }, - { file = "debugpy-1.8.15-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:babc4fb1962dd6a37e94d611280e3d0d11a1f5e6c72ac9b3d87a08212c4b6dd3" }, - { file = "debugpy-1.8.15-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f778e68f2986a58479d0ac4f643e0b8c82fdd97c2e200d4d61e7c2d13838eb53" }, - { file = "debugpy-1.8.15-cp311-cp311-win32.whl", hash = "sha256:f9d1b5abd75cd965e2deabb1a06b0e93a1546f31f9f621d2705e78104377c702" }, - { file = "debugpy-1.8.15-cp311-cp311-win_amd64.whl", hash = "sha256:62954fb904bec463e2b5a415777f6d1926c97febb08ef1694da0e5d1463c5c3b" }, - { file = "debugpy-1.8.15-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:3dcc7225cb317469721ab5136cda9ff9c8b6e6fb43e87c9e15d5b108b99d01ba" }, - { file = "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" }, - { file = "debugpy-1.8.15-cp312-cp312-win32.whl", hash = "sha256:b08e9b0bc260cf324c890626961dad4ffd973f7568fbf57feb3c3a65ab6b6327" }, - { file = "debugpy-1.8.15-cp312-cp312-win_amd64.whl", hash = "sha256:e2a4fe357c92334272eb2845fcfcdbec3ef9f22c16cf613c388ac0887aed15fa" }, - { file = "debugpy-1.8.15-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:f5e01291ad7d6649aed5773256c5bba7a1a556196300232de1474c3c372592bf" }, - { file = "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" }, - { file = "debugpy-1.8.15-cp313-cp313-win32.whl", hash = "sha256:fcf0748d4f6e25f89dc5e013d1129ca6f26ad4da405e0723a4f704583896a709" }, - { file = "debugpy-1.8.15-cp313-cp313-win_amd64.whl", hash = "sha256:73c943776cb83e36baf95e8f7f8da765896fd94b05991e7bc162456d25500683" }, - { file = "debugpy-1.8.15-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:054cd4935bd2e4964dfe1aeee4d6bca89d0c833366776fc35387f8a2f517dd00" }, - { file = "debugpy-1.8.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21c4288e662997df3176c4b9d93ee1393913fbaf320732be332d538000c53208" }, - { file = "debugpy-1.8.15-cp38-cp38-win32.whl", hash = "sha256:aaa8ce6a37d764f93fe583d7c6ca58eb7550b36941387483db113125f122bb0d" }, - { file = "debugpy-1.8.15-cp38-cp38-win_amd64.whl", hash = "sha256:71cdf7f676af78e70f005c7fad2ef9da0edc2a24befbf3ab146a51f0d58048c2" }, - { file = "debugpy-1.8.15-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:085b6d0adb3eb457c2823ac497a0690b10a99eff8b01c01a041e84579f114b56" }, - { file = "debugpy-1.8.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd546a405381d17527814852642df0a74b7da8acc20ae5f3cfad0b7c86419511" }, - { file = "debugpy-1.8.15-cp39-cp39-win32.whl", hash = "sha256:ae0d445fe11ff4351428e6c2389e904e1cdcb4a47785da5a5ec4af6c5b95fce5" }, - { file = "debugpy-1.8.15-cp39-cp39-win_amd64.whl", hash = "sha256:de7db80189ca97ab4b10a87e4039cfe4dd7ddfccc8f33b5ae40fcd33792fc67a" }, - { file = "debugpy-1.8.15-py2.py3-none-any.whl", hash = "sha256:bce2e6c5ff4f2e00b98d45e7e01a49c7b489ff6df5f12d881c67d2f1ac635f3d" }, - { file = "debugpy-1.8.15.tar.gz", hash = "sha256:58d7a20b7773ab5ee6bdfb2e6cf622fdf1e40c9d5aef2857d85391526719ac00" }, -] - -[[package]] -name = "decorator" -version = "5.2.1" -description = "Decorators for Humans" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a" }, - { file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360" }, -] - -[[package]] -name = "defusedxml" -version = "0.7.1" -description = "XML bomb protection for Python stdlib modules" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["dev"] -files = [ - {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, - {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, -] - [[package]] name = "distlib" version = "0.4.0" @@ -869,128 +315,22 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - { file = "distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16" }, - { file = "distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d" }, -] - -[[package]] -name = "donfig" -version = "0.8.1.post1" -description = "Python package for configuring a python package" -optional = false -python-versions = ">=3.8" -groups = ["main"] -files = [ - { file = "donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d" }, - { file = "donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52" }, -] - -[package.dependencies] -pyyaml = "*" - -[package.extras] -docs = ["cloudpickle", "numpydoc", "pytest", "sphinx (>=4.0.0)"] -test = ["cloudpickle", "pytest"] - -[[package]] -name = "executing" -version = "2.2.0" -description = "Get the currently executing AST node of a frame, and other information" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa" }, - { file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755" }, -] - -[package.extras] -tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich ; python_version >= \"3.11\""] - -[[package]] -name = "fastjsonschema" -version = "2.21.1" -description = "Fastest Python implementation of JSON schema" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - { file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667" }, - { file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4" }, + {file = "distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16"}, + {file = "distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d"}, ] -[package.extras] -devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] - [[package]] name = "filelock" -version = "3.18.0" +version = "3.19.1" description = "A platform independent file lock." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de" }, - { file = "filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2" }, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] -typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] - -[[package]] -name = "fqdn" -version = "1.4.0" -description = "Validate fully-qualified domain names compliant to RFC 1035 and the preferred form in RFC 3686 s. 2." -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - { file = "fqdn-1.4.0-py3-none-any.whl", hash = "sha256:e935616ae81c9c60a22267593fe8e6af68cecc68549cc71bb9bfbcbbcb383386" }, - { file = "fqdn-1.4.0.tar.gz", hash = "sha256:30e8f2e685ce87cdace4712fd97c5d09f5e6fa519bbb66e8f188f6a7cb3a5c4e" }, -] - -[[package]] -name = "fsspec" -version = "2025.7.0" -description = "File-system specification" -optional = false -python-versions = ">=3.9" -groups = ["main"] -files = [ - { file = "fsspec-2025.7.0-py3-none-any.whl", hash = "sha256:8b012e39f63c7d5f10474de957f3ab793b47b45ae7d39f2fb735f8bbe25c0e21" }, - { file = "fsspec-2025.7.0.tar.gz", hash = "sha256:786120687ffa54b8283d942929540d8bc5ccfa820deb555a2b5d0ed2b737bf58" }, + {file = "filelock-3.19.1-py3-none-any.whl", hash = "sha256:d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d"}, + {file = "filelock-3.19.1.tar.gz", hash = "sha256:66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58"}, ] -[package.extras] -abfs = ["adlfs"] -adl = ["adlfs"] -arrow = ["pyarrow (>=1)"] -dask = ["dask", "distributed"] -dev = ["pre-commit", "ruff (>=0.5)"] -doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"] -dropbox = ["dropbox", "dropboxdrivefs", "requests"] -full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] -fuse = ["fusepy"] -gcs = ["gcsfs"] -git = ["pygit2"] -github = ["requests"] -gs = ["gcsfs"] -gui = ["panel"] -hdfs = ["pyarrow (>=1)"] -http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] -libarchive = ["libarchive-c"] -oci = ["ocifs"] -s3 = ["s3fs"] -sftp = ["paramiko"] -smb = ["smbprotocol"] -ssh = ["paramiko"] -test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"] -test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] -test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard ; python_version < \"3.14\""] -tqdm = ["tqdm"] - [[package]] name = "ghp-import" version = "2.1.0" @@ -999,8 +339,8 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - { file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343" }, - { file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619" }, + {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, + {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, ] [package.dependencies] @@ -1011,88 +351,29 @@ dev = ["flake8", "markdown", "twine", "wheel"] [[package]] name = "griffe" -version = "1.7.3" +version = "1.12.1" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "griffe-1.7.3-py3-none-any.whl", hash = "sha256:c6b3ee30c2f0f17f30bcdef5068d6ab7a2a4f1b8bf1a3e74b56fffd21e1c5f75" }, - { file = "griffe-1.7.3.tar.gz", hash = "sha256:52ee893c6a3a968b639ace8015bec9d36594961e156e23315c8e8e51401fa50b" }, + {file = "griffe-1.12.1-py3-none-any.whl", hash = "sha256:2d7c12334de00089c31905424a00abcfd931b45b8b516967f224133903d302cc"}, + {file = "griffe-1.12.1.tar.gz", hash = "sha256:29f5a6114c0aeda7d9c86a570f736883f8a2c5b38b57323d56b3d1c000565567"}, ] [package.dependencies] colorama = ">=0.4" -[[package]] -name = "h11" -version = "0.16.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86" }, - { file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1" }, -] - -[[package]] -name = "httpcore" -version = "1.0.9" -description = "A minimal low-level HTTP client." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55" }, - { file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8" }, -] - -[package.dependencies] -certifi = "*" -h11 = ">=0.16" - -[package.extras] -asyncio = ["anyio (>=4.0,<5.0)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<1.0)"] - -[[package]] -name = "httpx" -version = "0.28.1" -description = "The next generation HTTP client." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad" }, - { file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc" }, -] - -[package.dependencies] -anyio = "*" -certifi = "*" -httpcore = "==1.*" -idna = "*" - -[package.extras] -brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -zstd = ["zstandard (>=0.18.0)"] - [[package]] name = "identify" -version = "2.6.12" +version = "2.6.13" description = "File identification library for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2" }, - { file = "identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6" }, + {file = "identify-2.6.13-py2.py3-none-any.whl", hash = "sha256:60381139b3ae39447482ecc406944190f690d4a2997f2584062089848361b33b"}, + {file = "identify-2.6.13.tar.gz", hash = "sha256:da8d6c828e773620e13bfa86ea601c5a5310ba4bcd65edf378198b56a1f9fb32"}, ] [package.extras] @@ -1121,148 +402,10 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760" }, - { file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7" }, + {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, + {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, ] -[[package]] -name = "ipykernel" -version = "6.29.5" -description = "IPython Kernel for Jupyter" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, - {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, -] - -[package.dependencies] -appnope = {version = "*", markers = "platform_system == \"Darwin\""} -comm = ">=0.1.1" -debugpy = ">=1.6.5" -ipython = ">=7.23.1" -jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -matplotlib-inline = ">=0.1" -nest-asyncio = "*" -packaging = "*" -psutil = "*" -pyzmq = ">=24" -tornado = ">=6.1" -traitlets = ">=5.4.0" - -[package.extras] -cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] -pyqt5 = ["pyqt5"] -pyside6 = ["pyside6"] -test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] - -[[package]] -name = "ipython" -version = "9.4.0" -description = "IPython: Productive Interactive Computing" -optional = false -python-versions = ">=3.11" -groups = ["dev"] -files = [ - { file = "ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066" }, - { file = "ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270" }, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -decorator = "*" -ipython-pygments-lexers = "*" -jedi = ">=0.16" -matplotlib-inline = "*" -pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} -prompt_toolkit = ">=3.0.41,<3.1.0" -pygments = ">=2.4.0" -stack_data = "*" -traitlets = ">=5.13.0" - -[package.extras] -all = ["ipython[doc,matplotlib,test,test-extra]"] -black = ["black"] -doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinx_toml (==0.0.4)", "typing_extensions"] -matplotlib = ["matplotlib"] -test = ["packaging", "pytest", "pytest-asyncio (<0.22)", "testpath"] -test-extra = ["curio", "ipykernel", "ipython[test]", "jupyter_ai", "matplotlib (!=3.2.0)", "nbclient", "nbformat", "numpy (>=1.23)", "pandas", "trio"] - -[[package]] -name = "ipython-pygments-lexers" -version = "1.1.1" -description = "Defines a variety of Pygments lexers for highlighting IPython code." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c" }, - { file = "ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81" }, -] - -[package.dependencies] -pygments = "*" - -[[package]] -name = "ipywidgets" -version = "8.1.7" -description = "Jupyter interactive widgets" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - { file = "ipywidgets-8.1.7-py3-none-any.whl", hash = "sha256:764f2602d25471c213919b8a1997df04bef869251db4ca8efba1b76b1bd9f7bb" }, - { file = "ipywidgets-8.1.7.tar.gz", hash = "sha256:15f1ac050b9ccbefd45dccfbb2ef6bed0029d8278682d569d71b8dd96bee0376" }, -] - -[package.dependencies] -comm = ">=0.1.3" -ipython = ">=6.1.0" -jupyterlab_widgets = ">=3.0.15,<3.1.0" -traitlets = ">=4.3.1" -widgetsnbextension = ">=4.0.14,<4.1.0" - -[package.extras] -test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] - -[[package]] -name = "isoduration" -version = "20.11.0" -description = "Operations with ISO 8601 durations" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, - {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, -] - -[package.dependencies] -arrow = ">=0.15.0" - -[[package]] -name = "jedi" -version = "0.19.2" -description = "An autocompletion tool for Python that can be used for text editors." -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - { file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9" }, - { file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0" }, -] - -[package.dependencies] -parso = ">=0.8.4,<0.9.0" - -[package.extras] -docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] -qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["Django", "attrs", "colorama", "docopt", "pytest (<9.0.0)"] - [[package]] name = "jinja2" version = "3.1.6" @@ -1271,8 +414,8 @@ optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - { file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67" }, - { file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d" }, + {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, + {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, ] [package.dependencies] @@ -1281,381 +424,6 @@ MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] -[[package]] -name = "json5" -version = "0.12.0" -description = "A Python implementation of the JSON5 data format." -optional = false -python-versions = ">=3.8.0" -groups = ["dev"] -files = [ - { file = "json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db" }, - { file = "json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a" }, -] - -[package.extras] -dev = ["build (==1.2.2.post1)", "coverage (==7.5.4) ; python_version < \"3.9\"", "coverage (==7.8.0) ; python_version >= \"3.9\"", "mypy (==1.14.1) ; python_version < \"3.9\"", "mypy (==1.15.0) ; python_version >= \"3.9\"", "pip (==25.0.1)", "pylint (==3.2.7) ; python_version < \"3.9\"", "pylint (==3.3.6) ; python_version >= \"3.9\"", "ruff (==0.11.2)", "twine (==6.1.0)", "uv (==0.6.11)"] - -[[package]] -name = "jsonpointer" -version = "3.0.0" -description = "Identify specific nodes in a JSON document (RFC 6901)" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, - {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, -] - -[[package]] -name = "jsonschema" -version = "4.25.0" -description = "An implementation of JSON Schema validation for Python" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "jsonschema-4.25.0-py3-none-any.whl", hash = "sha256:24c2e8da302de79c8b9382fee3e76b355e44d2a4364bb207159ce10b517bd716" }, - { file = "jsonschema-4.25.0.tar.gz", hash = "sha256:e63acf5c11762c0e6672ffb61482bdf57f0876684d8d249c0fe2d730d48bc55f" }, -] - -[package.dependencies] -attrs = ">=22.2.0" -fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""} -jsonschema-specifications = ">=2023.03.6" -referencing = ">=0.28.4" -rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} -rfc3987-syntax = { version = ">=1.1.0", optional = true, markers = "extra == \"format-nongpl\"" } -rpds-py = ">=0.7.1" -uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -webcolors = {version = ">=24.6.0", optional = true, markers = "extra == \"format-nongpl\""} - -[package.extras] -format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] -format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "rfc3987-syntax (>=1.1.0)", "uri-template", "webcolors (>=24.6.0)"] - -[[package]] -name = "jsonschema-specifications" -version = "2025.4.1" -description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af" }, - { file = "jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608" }, -] - -[package.dependencies] -referencing = ">=0.31.0" - -[[package]] -name = "jupyter" -version = "1.1.1" -description = "Jupyter metapackage. Install all the Jupyter components in one go." -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83"}, - {file = "jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a"}, -] - -[package.dependencies] -ipykernel = "*" -ipywidgets = "*" -jupyter-console = "*" -jupyterlab = "*" -nbconvert = "*" -notebook = "*" - -[[package]] -name = "jupyter-client" -version = "8.6.3" -description = "Jupyter protocol implementation and client libraries" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, - {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, -] - -[package.dependencies] -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -python-dateutil = ">=2.8.2" -pyzmq = ">=23.0" -tornado = ">=6.2" -traitlets = ">=5.3" - -[package.extras] -docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko ; sys_platform == \"win32\"", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] - -[[package]] -name = "jupyter-console" -version = "6.6.3" -description = "Jupyter terminal console" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"}, - {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"}, -] - -[package.dependencies] -ipykernel = ">=6.14" -ipython = "*" -jupyter-client = ">=7.0.0" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -prompt-toolkit = ">=3.0.30" -pygments = "*" -pyzmq = ">=17" -traitlets = ">=5.4" - -[package.extras] -test = ["flaky", "pexpect", "pytest"] - -[[package]] -name = "jupyter-core" -version = "5.8.1" -description = "Jupyter core package. A base package on which Jupyter projects rely." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0" }, - { file = "jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941" }, -] - -[package.dependencies] -platformdirs = ">=2.5" -pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} -traitlets = ">=5.3" - -[package.extras] -docs = ["intersphinx-registry", "myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-spelling", "traitlets"] -test = ["ipykernel", "pre-commit", "pytest (<9)", "pytest-cov", "pytest-timeout"] - -[[package]] -name = "jupyter-events" -version = "0.12.0" -description = "Jupyter Event System library" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb" }, - { file = "jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b" }, -] - -[package.dependencies] -jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]} -packaging = "*" -python-json-logger = ">=2.0.4" -pyyaml = ">=5.3" -referencing = "*" -rfc3339-validator = "*" -rfc3986-validator = ">=0.1.1" -traitlets = ">=5.3" - -[package.extras] -cli = ["click", "rich"] -docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme (>=0.16)", "sphinx (>=8)", "sphinxcontrib-spelling"] -test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"] - -[[package]] -name = "jupyter-lsp" -version = "2.2.6" -description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "jupyter_lsp-2.2.6-py3-none-any.whl", hash = "sha256:283783752bf0b459ee7fa88effa72104d87dd343b82d5c06cf113ef755b15b6d" }, - { file = "jupyter_lsp-2.2.6.tar.gz", hash = "sha256:0566bd9bb04fd9e6774a937ed01522b555ba78be37bebef787c8ab22de4c0361" }, -] - -[package.dependencies] -jupyter_server = ">=1.1.2" - -[[package]] -name = "jupyter-server" -version = "2.16.0" -description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e" }, - { file = "jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6" }, -] - -[package.dependencies] -anyio = ">=3.1.0" -argon2-cffi = ">=21.1" -jinja2 = ">=3.0.3" -jupyter-client = ">=7.4.4" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -jupyter-events = ">=0.11.0" -jupyter-server-terminals = ">=0.4.4" -nbconvert = ">=6.4.4" -nbformat = ">=5.3.0" -overrides = ">=5.0" -packaging = ">=22.0" -prometheus-client = ">=0.9" -pywinpty = {version = ">=2.0.1", markers = "os_name == \"nt\""} -pyzmq = ">=24" -send2trash = ">=1.8.2" -terminado = ">=0.8.3" -tornado = ">=6.2.0" -traitlets = ">=5.6.0" -websocket-client = ">=1.7" - -[package.extras] -docs = ["ipykernel", "jinja2", "jupyter-client", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"] -test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0,<9)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.7)", "pytest-timeout", "requests"] - -[[package]] -name = "jupyter-server-terminals" -version = "0.5.3" -description = "A Jupyter Server Extension Providing Terminals." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, - {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, -] - -[package.dependencies] -pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""} -terminado = ">=0.8.3" - -[package.extras] -docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"] -test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"] - -[[package]] -name = "jupyterlab" -version = "4.4.4" -description = "JupyterLab computational environment" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "jupyterlab-4.4.4-py3-none-any.whl", hash = "sha256:711611e4f59851152eb93316c3547c3ec6291f16bb455f1f4fa380d25637e0dd" }, - { file = "jupyterlab-4.4.4.tar.gz", hash = "sha256:163fee1ef702e0a057f75d2eed3ed1da8a986d59eb002cbeb6f0c2779e6cd153" }, -] - -[package.dependencies] -async-lru = ">=1.0.0" -httpx = ">=0.25.0" -ipykernel = ">=6.5.0" -jinja2 = ">=3.0.3" -jupyter-core = "*" -jupyter-lsp = ">=2.0.0" -jupyter-server = ">=2.4.0,<3" -jupyterlab-server = ">=2.27.1,<3" -notebook-shim = ">=0.2" -packaging = "*" -setuptools = ">=41.1.0" -tornado = ">=6.2.0" -traitlets = "*" - -[package.extras] -dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.11.4)"] -docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<8.2.0)", "sphinx-copybutton"] -docs-screenshots = ["altair (==5.5.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.5)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.3.post1)", "matplotlib (==3.10.0)", "nbconvert (>=7.0.0)", "pandas (==2.2.3)", "scipy (==1.15.1)", "vega-datasets (==0.9.0)"] -test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] -upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)", "pyyaml-include (<3.0)", "tomli-w (<2.0)"] - -[[package]] -name = "jupyterlab-pygments" -version = "0.3.0" -description = "Pygments theme using JupyterLab CSS variables" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, - {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, -] - -[[package]] -name = "jupyterlab-server" -version = "2.27.3" -description = "A set of server components for JupyterLab and JupyterLab like applications." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4"}, - {file = "jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4"}, -] - -[package.dependencies] -babel = ">=2.10" -jinja2 = ">=3.0.3" -json5 = ">=0.9.0" -jsonschema = ">=4.18.0" -jupyter-server = ">=1.21,<3" -packaging = ">=21.3" -requests = ">=2.31" - -[package.extras] -docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"] -openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"] -test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0,<8)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] - -[[package]] -name = "jupyterlab-widgets" -version = "3.0.15" -description = "Jupyter interactive widgets for JupyterLab" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - { file = "jupyterlab_widgets-3.0.15-py3-none-any.whl", hash = "sha256:d59023d7d7ef71400d51e6fee9a88867f6e65e10a4201605d2d7f3e8f012a31c" }, - { file = "jupyterlab_widgets-3.0.15.tar.gz", hash = "sha256:2920888a0c2922351a9202817957a68c07d99673504d6cd37345299e971bb08b" }, -] - -[[package]] -name = "lark" -version = "1.2.2" -description = "a modern parsing library" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "lark-1.2.2-py3-none-any.whl", hash = "sha256:c2276486b02f0f1b90be155f2c8ba4a8e194d42775786db622faccd652d8e80c" }, - { file = "lark-1.2.2.tar.gz", hash = "sha256:ca807d0162cd16cef15a8feecb862d7319e7a09bdb13aef927968e45040fed80" }, -] - -[package.extras] -atomic-cache = ["atomicwrites"] -interegular = ["interegular (>=0.3.1,<0.4.0)"] -nearley = ["js2py"] -regex = ["regex"] - -[[package]] -name = "locket" -version = "1.0.0" -description = "File-based locks for Python on Linux and Windows" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -groups = ["main"] -files = [ - {file = "locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3"}, - {file = "locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632"}, -] - [[package]] name = "markdown" version = "3.8.2" @@ -1664,8 +432,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24" }, - { file = "markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45" }, + {file = "markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24"}, + {file = "markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45"}, ] [package.extras] @@ -1740,46 +508,19 @@ files = [ {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, - {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, -] - -[[package]] -name = "matplotlib-inline" -version = "0.1.7" -description = "Inline Matplotlib backend for Jupyter" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, - {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, -] - -[package.dependencies] -traitlets = "*" - -[[package]] -name = "mergedeep" -version = "1.3.4" -description = "A deep merge function for 🐍." -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - { file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307" }, - { file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8" }, + {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, ] [[package]] -name = "mistune" -version = "3.1.3" -description = "A sane and fast Markdown parser with useful plugins and renderers" +name = "mergedeep" +version = "1.3.4" +description = "A deep merge function for 🐍." optional = false -python-versions = ">=3.8" +python-versions = ">=3.6" groups = ["dev"] files = [ - { file = "mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9" }, - { file = "mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0" }, + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, ] [[package]] @@ -1790,13 +531,13 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e" }, - { file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2" }, + {file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e"}, + {file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2"}, ] [package.dependencies] click = ">=7.0" -colorama = { version = ">=0.4", markers = "platform_system == \"Windows\"" } +colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} ghp-import = ">=1.0" jinja2 = ">=2.11.1" markdown = ">=3.3.6" @@ -1821,8 +562,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13" }, - { file = "mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749" }, + {file = "mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13"}, + {file = "mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749"}, ] [package.dependencies] @@ -1838,8 +579,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134" }, - { file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c" }, + {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, + {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, ] [package.dependencies] @@ -1849,19 +590,20 @@ pyyaml = ">=5.1" [[package]] name = "mkdocs-material" -version = "9.6.15" +version = "9.6.17" description = "Documentation that simply works" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "mkdocs_material-9.6.15-py3-none-any.whl", hash = "sha256:ac969c94d4fe5eb7c924b6d2f43d7db41159ea91553d18a9afc4780c34f2717a" }, - { file = "mkdocs_material-9.6.15.tar.gz", hash = "sha256:64adf8fa8dba1a17905b6aee1894a5aafd966d4aeb44a11088519b0f5ca4f1b5" }, + {file = "mkdocs_material-9.6.17-py3-none-any.whl", hash = "sha256:221dd8b37a63f52e580bcab4a7e0290e4a6f59bd66190be9c3d40767e05f9417"}, + {file = "mkdocs_material-9.6.17.tar.gz", hash = "sha256:48ae7aec72a3f9f501a70be3fbd329c96ff5f5a385b67a1563e5ed5ce064affe"}, ] [package.dependencies] babel = ">=2.10,<3.0" backrefs = ">=5.7.post1,<6.0" +click = "<8.2.2" colorama = ">=0.4,<1.0" jinja2 = ">=3.1,<4.0" markdown = ">=3.2,<4.0" @@ -1885,8 +627,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31" }, - { file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443" }, + {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, + {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, ] [[package]] @@ -1897,8 +639,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "mkdocstrings-0.29.1-py3-none-any.whl", hash = "sha256:37a9736134934eea89cbd055a513d40a020d87dfcae9e3052c2a6b8cd4af09b6" }, - { file = "mkdocstrings-0.29.1.tar.gz", hash = "sha256:8722f8f8c5cd75da56671e0a0c1bbed1df9946c0cef74794d6141b34011abd42" }, + {file = "mkdocstrings-0.29.1-py3-none-any.whl", hash = "sha256:37a9736134934eea89cbd055a513d40a020d87dfcae9e3052c2a6b8cd4af09b6"}, + {file = "mkdocstrings-0.29.1.tar.gz", hash = "sha256:8722f8f8c5cd75da56671e0a0c1bbed1df9946c0cef74794d6141b34011abd42"}, ] [package.dependencies] @@ -1907,7 +649,7 @@ Markdown = ">=3.6" MarkupSafe = ">=1.1" mkdocs = ">=1.6" mkdocs-autorefs = ">=1.4" -mkdocstrings-python = { version = ">=1.16.2", optional = true, markers = "extra == \"python\"" } +mkdocstrings-python = {version = ">=1.16.2", optional = true, markers = "extra == \"python\""} pymdown-extensions = ">=6.3" [package.extras] @@ -1923,8 +665,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "mkdocstrings_python-1.16.12-py3-none-any.whl", hash = "sha256:22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374" }, - { file = "mkdocstrings_python-1.16.12.tar.gz", hash = "sha256:9b9eaa066e0024342d433e332a41095c4e429937024945fea511afe58f63175d" }, + {file = "mkdocstrings_python-1.16.12-py3-none-any.whl", hash = "sha256:22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374"}, + {file = "mkdocstrings_python-1.16.12.tar.gz", hash = "sha256:9b9eaa066e0024342d433e332a41095c4e429937024945fea511afe58f63175d"}, ] [package.dependencies] @@ -1934,44 +676,50 @@ mkdocstrings = ">=0.28.3" [[package]] name = "mypy" -version = "1.17.0" +version = "1.17.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "mypy-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8e08de6138043108b3b18f09d3f817a4783912e48828ab397ecf183135d84d6" }, - { file = "mypy-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce4a17920ec144647d448fc43725b5873548b1aae6c603225626747ededf582d" }, - { file = "mypy-1.17.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ff25d151cc057fdddb1cb1881ef36e9c41fa2a5e78d8dd71bee6e4dcd2bc05b" }, - { file = "mypy-1.17.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93468cf29aa9a132bceb103bd8475f78cacde2b1b9a94fd978d50d4bdf616c9a" }, - { file = "mypy-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:98189382b310f16343151f65dd7e6867386d3e35f7878c45cfa11383d175d91f" }, - { file = "mypy-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:c004135a300ab06a045c1c0d8e3f10215e71d7b4f5bb9a42ab80236364429937" }, - { file = "mypy-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9d4fe5c72fd262d9c2c91c1117d16aac555e05f5beb2bae6a755274c6eec42be" }, - { file = "mypy-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96b196e5c16f41b4f7736840e8455958e832871990c7ba26bf58175e357ed61" }, - { file = "mypy-1.17.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:73a0ff2dd10337ceb521c080d4147755ee302dcde6e1a913babd59473904615f" }, - { file = "mypy-1.17.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:24cfcc1179c4447854e9e406d3af0f77736d631ec87d31c6281ecd5025df625d" }, - { file = "mypy-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3c56f180ff6430e6373db7a1d569317675b0a451caf5fef6ce4ab365f5f2f6c3" }, - { file = "mypy-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:eafaf8b9252734400f9b77df98b4eee3d2eecab16104680d51341c75702cad70" }, - { file = "mypy-1.17.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f986f1cab8dbec39ba6e0eaa42d4d3ac6686516a5d3dccd64be095db05ebc6bb" }, - { file = "mypy-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:51e455a54d199dd6e931cd7ea987d061c2afbaf0960f7f66deef47c90d1b304d" }, - { file = "mypy-1.17.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3204d773bab5ff4ebbd1f8efa11b498027cd57017c003ae970f310e5b96be8d8" }, - { file = "mypy-1.17.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1051df7ec0886fa246a530ae917c473491e9a0ba6938cfd0ec2abc1076495c3e" }, - { file = "mypy-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f773c6d14dcc108a5b141b4456b0871df638eb411a89cd1c0c001fc4a9d08fc8" }, - { file = "mypy-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:1619a485fd0e9c959b943c7b519ed26b712de3002d7de43154a489a2d0fd817d" }, - { file = "mypy-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c41aa59211e49d717d92b3bb1238c06d387c9325d3122085113c79118bebb06" }, - { file = "mypy-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e69db1fb65b3114f98c753e3930a00514f5b68794ba80590eb02090d54a5d4a" }, - { file = "mypy-1.17.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:03ba330b76710f83d6ac500053f7727270b6b8553b0423348ffb3af6f2f7b889" }, - { file = "mypy-1.17.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:037bc0f0b124ce46bfde955c647f3e395c6174476a968c0f22c95a8d2f589bba" }, - { file = "mypy-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c38876106cb6132259683632b287238858bd58de267d80defb6f418e9ee50658" }, - { file = "mypy-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:d30ba01c0f151998f367506fab31c2ac4527e6a7b2690107c7a7f9e3cb419a9c" }, - { file = "mypy-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:63e751f1b5ab51d6f3d219fe3a2fe4523eaa387d854ad06906c63883fde5b1ab" }, - { file = "mypy-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7fb09d05e0f1c329a36dcd30e27564a3555717cde87301fae4fb542402ddfad" }, - { file = "mypy-1.17.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b72c34ce05ac3a1361ae2ebb50757fb6e3624032d91488d93544e9f82db0ed6c" }, - { file = "mypy-1.17.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:434ad499ad8dde8b2f6391ddfa982f41cb07ccda8e3c67781b1bfd4e5f9450a8" }, - { file = "mypy-1.17.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f105f61a5eff52e137fd73bee32958b2add9d9f0a856f17314018646af838e97" }, - { file = "mypy-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:ba06254a5a22729853209550d80f94e28690d5530c661f9416a68ac097b13fc4" }, - { file = "mypy-1.17.0-py3-none-any.whl", hash = "sha256:15d9d0018237ab058e5de3d8fce61b6fa72cc59cc78fd91f1b474bce12abf496" }, - { file = "mypy-1.17.0.tar.gz", hash = "sha256:e5d7ccc08ba089c06e2f5629c660388ef1fee708444f1dee0b9203fa031dee03" }, + {file = "mypy-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3fbe6d5555bf608c47203baa3e72dbc6ec9965b3d7c318aa9a4ca76f465bd972"}, + {file = "mypy-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80ef5c058b7bce08c83cac668158cb7edea692e458d21098c7d3bce35a5d43e7"}, + {file = "mypy-1.17.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4a580f8a70c69e4a75587bd925d298434057fe2a428faaf927ffe6e4b9a98df"}, + {file = "mypy-1.17.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd86bb649299f09d987a2eebb4d52d10603224500792e1bee18303bbcc1ce390"}, + {file = "mypy-1.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a76906f26bd8d51ea9504966a9c25419f2e668f012e0bdf3da4ea1526c534d94"}, + {file = "mypy-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:e79311f2d904ccb59787477b7bd5d26f3347789c06fcd7656fa500875290264b"}, + {file = "mypy-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad37544be07c5d7fba814eb370e006df58fed8ad1ef33ed1649cb1889ba6ff58"}, + {file = "mypy-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:064e2ff508e5464b4bd807a7c1625bc5047c5022b85c70f030680e18f37273a5"}, + {file = "mypy-1.17.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:70401bbabd2fa1aa7c43bb358f54037baf0586f41e83b0ae67dd0534fc64edfd"}, + {file = "mypy-1.17.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e92bdc656b7757c438660f775f872a669b8ff374edc4d18277d86b63edba6b8b"}, + {file = "mypy-1.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c1fdf4abb29ed1cb091cf432979e162c208a5ac676ce35010373ff29247bcad5"}, + {file = "mypy-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:ff2933428516ab63f961644bc49bc4cbe42bbffb2cd3b71cc7277c07d16b1a8b"}, + {file = "mypy-1.17.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:69e83ea6553a3ba79c08c6e15dbd9bfa912ec1e493bf75489ef93beb65209aeb"}, + {file = "mypy-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b16708a66d38abb1e6b5702f5c2c87e133289da36f6a1d15f6a5221085c6403"}, + {file = "mypy-1.17.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:89e972c0035e9e05823907ad5398c5a73b9f47a002b22359b177d40bdaee7056"}, + {file = "mypy-1.17.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03b6d0ed2b188e35ee6d5c36b5580cffd6da23319991c49ab5556c023ccf1341"}, + {file = "mypy-1.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c837b896b37cd103570d776bda106eabb8737aa6dd4f248451aecf53030cdbeb"}, + {file = "mypy-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:665afab0963a4b39dff7c1fa563cc8b11ecff7910206db4b2e64dd1ba25aed19"}, + {file = "mypy-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93378d3203a5c0800c6b6d850ad2f19f7a3cdf1a3701d3416dbf128805c6a6a7"}, + {file = "mypy-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:15d54056f7fe7a826d897789f53dd6377ec2ea8ba6f776dc83c2902b899fee81"}, + {file = "mypy-1.17.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:209a58fed9987eccc20f2ca94afe7257a8f46eb5df1fb69958650973230f91e6"}, + {file = "mypy-1.17.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:099b9a5da47de9e2cb5165e581f158e854d9e19d2e96b6698c0d64de911dd849"}, + {file = "mypy-1.17.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa6ffadfbe6994d724c5a1bb6123a7d27dd68fc9c059561cd33b664a79578e14"}, + {file = "mypy-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:9a2b7d9180aed171f033c9f2fc6c204c1245cf60b0cb61cf2e7acc24eea78e0a"}, + {file = "mypy-1.17.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:15a83369400454c41ed3a118e0cc58bd8123921a602f385cb6d6ea5df050c733"}, + {file = "mypy-1.17.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:55b918670f692fc9fba55c3298d8a3beae295c5cded0a55dccdc5bbead814acd"}, + {file = "mypy-1.17.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:62761474061feef6f720149d7ba876122007ddc64adff5ba6f374fda35a018a0"}, + {file = "mypy-1.17.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c49562d3d908fd49ed0938e5423daed8d407774a479b595b143a3d7f87cdae6a"}, + {file = "mypy-1.17.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:397fba5d7616a5bc60b45c7ed204717eaddc38f826e3645402c426057ead9a91"}, + {file = "mypy-1.17.1-cp314-cp314-win_amd64.whl", hash = "sha256:9d6b20b97d373f41617bd0708fd46aa656059af57f2ef72aa8c7d6a2b73b74ed"}, + {file = "mypy-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5d1092694f166a7e56c805caaf794e0585cabdbf1df36911c414e4e9abb62ae9"}, + {file = "mypy-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:79d44f9bfb004941ebb0abe8eff6504223a9c1ac51ef967d1263c6572bbebc99"}, + {file = "mypy-1.17.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b01586eed696ec905e61bd2568f48740f7ac4a45b3a468e6423a03d3788a51a8"}, + {file = "mypy-1.17.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43808d9476c36b927fbcd0b0255ce75efe1b68a080154a38ae68a7e62de8f0f8"}, + {file = "mypy-1.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:feb8cc32d319edd5859da2cc084493b3e2ce5e49a946377663cc90f6c15fb259"}, + {file = "mypy-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d7598cf74c3e16539d4e2f0b8d8c318e00041553d83d4861f87c7a72e95ac24d"}, + {file = "mypy-1.17.1-py3-none-any.whl", hash = "sha256:a9f52c0351c21fe24c21d8c0eb1f62967b262d6729393397b6f443c3b773c3b9"}, + {file = "mypy-1.17.1.tar.gz", hash = "sha256:25e01ec741ab5bb3eec8ba9cdb0f769230368a22c959c4937360efb89b7e9f01"}, ] [package.dependencies] @@ -1994,152 +742,10 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505" }, - { file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558" }, -] - -[[package]] -name = "nbclient" -version = "0.10.2" -description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." -optional = false -python-versions = ">=3.9.0" -groups = ["dev"] -files = [ - { file = "nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d" }, - { file = "nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193" }, -] - -[package.dependencies] -jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -nbformat = ">=5.1" -traitlets = ">=5.4" - -[package.extras] -dev = ["pre-commit"] -docs = ["autodoc-traits", "flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "mock", "moto", "myst-parser", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling", "testpath", "xmltodict"] -test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] - -[[package]] -name = "nbconvert" -version = "7.16.6" -description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b" }, - { file = "nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582" }, -] - -[package.dependencies] -beautifulsoup4 = "*" -bleach = { version = "!=5.0.0", extras = ["css"] } -defusedxml = "*" -jinja2 = ">=3.0" -jupyter-core = ">=4.7" -jupyterlab-pygments = "*" -markupsafe = ">=2.0" -mistune = ">=2.0.3,<4" -nbclient = ">=0.5.0" -nbformat = ">=5.7" -packaging = "*" -pandocfilters = ">=1.4.1" -pygments = ">=2.4.1" -traitlets = ">=5.1" - -[package.extras] -all = ["flaky", "ipykernel", "ipython", "ipywidgets (>=7.5)", "myst-parser", "nbsphinx (>=0.2.12)", "playwright", "pydata-sphinx-theme", "pyqtwebengine (>=5.15)", "pytest (>=7)", "sphinx (==5.0.2)", "sphinxcontrib-spelling", "tornado (>=6.1)"] -docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"] -qtpdf = ["pyqtwebengine (>=5.15)"] -qtpng = ["pyqtwebengine (>=5.15)"] -serve = ["tornado (>=6.1)"] -test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest (>=7)"] -webpdf = ["playwright"] - -[[package]] -name = "nbformat" -version = "5.10.4" -description = "The Jupyter Notebook format" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, - {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, -] - -[package.dependencies] -fastjsonschema = ">=2.15" -jsonschema = ">=2.6" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -traitlets = ">=5.1" - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["pep440", "pre-commit", "pytest", "testpath"] - -[[package]] -name = "nest-asyncio" -version = "1.6.0" -description = "Patch asyncio to allow nested event loops" -optional = false -python-versions = ">=3.5" -groups = ["dev"] -files = [ - {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, - {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, -] - -[[package]] -name = "netcdf4" -version = "1.7.2" -description = "Provides an object-oriented python interface to the netCDF version 4 library" -optional = false -python-versions = ">=3.8" -groups = ["main"] -files = [ - {file = "netCDF4-1.7.2-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:5e9b485e3bd9294d25ff7dc9addefce42b3d23c1ee7e3627605277d159819392"}, - {file = "netCDF4-1.7.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:118b476fd00d7e3ab9aa7771186d547da645ae3b49c0c7bdab866793ebf22f07"}, - {file = "netCDF4-1.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abe5b1837ff209185ecfe50bd71884c866b3ee69691051833e410e57f177e059"}, - {file = "netCDF4-1.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28021c7e886e5bccf9a8ce504c032d1d7f98d86f67495fb7cf2c9564eba04510"}, - {file = "netCDF4-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:7460b638e41c8ce4179d082a81cb6456f0ce083d4d959f4d9e87a95cd86f64cb"}, - {file = "netCDF4-1.7.2-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:09d61c2ddb6011afb51e77ea0f25cd0bdc28887fb426ffbbc661d920f20c9749"}, - {file = "netCDF4-1.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:fd2a16dbddeb8fa7cf48c37bfc1967290332f2862bb82f984eec2007bb120aeb"}, - {file = "netCDF4-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f54f5d39ffbcf1726a1e6fd90cb5fa74277ecea739a5fa0f424636d71beafe24"}, - {file = "netCDF4-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:902aa50d70f49d002d896212a171d344c38f7b8ca520837c56c922ac1535c4a3"}, - {file = "netCDF4-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3291f9ad0c98c49a4dd16aefad1a9abd3a1b884171db6c81bdcee94671cfabe3"}, - {file = "netCDF4-1.7.2-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e73e3baa0b74afc414e53ff5095748fdbec7fb346eda351e567c23f2f0d247f1"}, - {file = "netCDF4-1.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a51da09258b31776f474c1d47e484fc7214914cdc59edf4cee789ba632184591"}, - {file = "netCDF4-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb95b11804fe051897d1f2044b05d82a1847bc2549631cdd2f655dde7de77a9c"}, - {file = "netCDF4-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d8a848373723f41ef662590b4f5e1832227501c9fd4513e8ad8da58c269977"}, - {file = "netCDF4-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:568ea369e00b581302d77fc5fd0b8f78e520c7e08d0b5af5219ba51f3f1cd694"}, - {file = "netCDF4-1.7.2-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:205a5f1de3ddb993c7c97fb204a923a22408cc2e5facf08d75a8eb89b3e7e1a8"}, - {file = "netCDF4-1.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:96653fc75057df196010818367c63ba6d7e9af603df0a7fe43fcdad3fe0e9e56"}, - {file = "netCDF4-1.7.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30d20e56b9ba2c48884eb89c91b63e6c0612b4927881707e34402719153ef17f"}, - {file = "netCDF4-1.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d6bfd38ba0bde04d56f06c1554714a2ea9dab75811c89450dc3ec57a9d36b80"}, - {file = "netCDF4-1.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:5c5fbee6134ee1246c397e1508e5297d825aa19221fdf3fa8dc9727ad824d7a5"}, - {file = "netCDF4-1.7.2-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:6bf402c2c7c063474576e5cf89af877d0b0cd097d9316d5bc4fcb22b62f12567"}, - {file = "netCDF4-1.7.2-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:5bdf3b34e6fd4210e34fdc5d1a669a22c4863d96f8a20a3928366acae7b3cbbb"}, - {file = "netCDF4-1.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:657774404b9f78a5e4d26506ac9bfe106e4a37238282a70803cc7ce679c5a6cc"}, - {file = "netCDF4-1.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e896d92f01fbf365e33e2513d5a8c4cfe16ff406aae9b6034e5ba1538c8c7a8"}, - {file = "netCDF4-1.7.2-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:eb87c08d1700fe67c301898cf5ba3a3e1f8f2fbb417fcd0e2ac784846b60b058"}, - {file = "netCDF4-1.7.2-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:59b403032774c723ee749d7f2135be311bad7d00d1db284bebfab58b9d5cdb92"}, - {file = "netCDF4-1.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:572f71459ef4b30e8554dcc4e1e6f55de515acc82a50968b48fe622244a64548"}, - {file = "netCDF4-1.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f77e72281acc5f331f82271e5f7f014d46f5ca9bcaa5aafe3e46d66cee21320"}, - {file = "netCDF4-1.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:d0fa7a9674fae8ae4877e813173c3ff7a6beee166b8730bdc847f517b282ed31"}, - {file = "netcdf4-1.7.2.tar.gz", hash = "sha256:a4c6375540b19989896136943abb6d44850ff6f1fa7d3f063253b1ad3f8b7fce"}, + {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, + {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, ] -[package.dependencies] -certifi = "*" -cftime = "*" -numpy = "*" - -[package.extras] -tests = ["Cython", "packaging", "pytest"] - [[package]] name = "nodeenv" version = "1.9.1" @@ -2152,171 +758,16 @@ files = [ {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] -[[package]] -name = "notebook" -version = "7.4.4" -description = "Jupyter Notebook - A web-based notebook environment for interactive computing" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "notebook-7.4.4-py3-none-any.whl", hash = "sha256:32840f7f777b6bff79bb101159336e9b332bdbfba1495b8739e34d1d65cbc1c0" }, - { file = "notebook-7.4.4.tar.gz", hash = "sha256:392fd501e266f2fb3466c6fcd3331163a2184968cb5c5accf90292e01dfe528c" }, -] - -[package.dependencies] -jupyter-server = ">=2.4.0,<3" -jupyterlab = ">=4.4.4,<4.5" -jupyterlab-server = ">=2.27.1,<3" -notebook-shim = ">=0.2,<0.3" -tornado = ">=6.2.0" - -[package.extras] -dev = ["hatch", "pre-commit"] -docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["importlib-resources (>=5.0) ; python_version < \"3.10\"", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] - -[[package]] -name = "notebook-shim" -version = "0.2.4" -description = "A shim layer for notebook traits and config" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, - {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, -] - -[package.dependencies] -jupyter-server = ">=1.8,<3" - -[package.extras] -test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"] - -[[package]] -name = "numcodecs" -version = "0.16.1" -description = "A Python package providing buffer compression and transformation codecs for use in data storage and communication applications." -optional = false -python-versions = ">=3.11" -groups = ["main"] -files = [ - { file = "numcodecs-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5348a25aefbce37ea7c00c3363d36176155233c95597e5905a932e9620df960d" }, - { file = "numcodecs-0.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2058b0a985470809c720d2457758b61e6c9495a49d5f20dfac9b5ebabd8848eb" }, - { file = "numcodecs-0.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b216b6d7bc207b85d41fddbc25b09fd00d76e265454db6e3fb09d5da0216397" }, - { file = "numcodecs-0.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2308d56c4f84a5b942f8668b4adedd3d9cdd6a22e6e6e20768ec356c77050f38" }, - { file = "numcodecs-0.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:acd8d68b4b815e62cb91e6064a53dac51ee99849350784ee16dd52cdbb4bc70f" }, - { file = "numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122" }, - { file = "numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458" }, - { file = "numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40" }, - { file = "numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609" }, - { file = "numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df" }, - { file = "numcodecs-0.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2ad8ee940315f59188accfc3f2d39726a4ca0d76b49bf8d0018e121f01c49028" }, - { file = "numcodecs-0.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:179ca7bf3525a0f7379df7767d87dd495253de44597cb7e511198b28b09da633" }, - { file = "numcodecs-0.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e2babbb50bf348ae982818d5560af330eab0dcd925fb0e49509785ad57d11db" }, - { file = "numcodecs-0.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4b29d8d3284b72bfad4fb83d672a17f497ae86ee1ef8087bac7222b620d3d91" }, - { file = "numcodecs-0.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:06489635f43e1a959aea73cb830d78cf3adb07ac5f34daccb92091e4d9ac6b07" }, - { file = "numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1" }, -] - -[package.dependencies] -crc32c = { version = ">=2.7", optional = true, markers = "extra == \"crc32c\"" } -numpy = ">=1.24" -typing_extensions = "*" - -[package.extras] -crc32c = ["crc32c (>=2.7)"] -docs = ["numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-issues"] -msgpack = ["msgpack"] -pcodec = ["pcodec (>=0.3,<0.4)"] -test = ["coverage", "pytest", "pytest-cov"] -test-extras = ["importlib_metadata"] -zfpy = ["zfpy (>=1.0.0)"] - -[[package]] -name = "numpy" -version = "2.3.1" -description = "Fundamental package for array computing in Python" -optional = false -python-versions = ">=3.11" -groups = ["main"] -files = [ - { file = "numpy-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6ea9e48336a402551f52cd8f593343699003d2353daa4b72ce8d34f66b722070" }, - { file = "numpy-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ccb7336eaf0e77c1635b232c141846493a588ec9ea777a7c24d7166bb8533ae" }, - { file = "numpy-2.3.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0bb3a4a61e1d327e035275d2a993c96fa786e4913aa089843e6a2d9dd205c66a" }, - { file = "numpy-2.3.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:e344eb79dab01f1e838ebb67aab09965fb271d6da6b00adda26328ac27d4a66e" }, - { file = "numpy-2.3.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:467db865b392168ceb1ef1ffa6f5a86e62468c43e0cfb4ab6da667ede10e58db" }, - { file = "numpy-2.3.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:afed2ce4a84f6b0fc6c1ce734ff368cbf5a5e24e8954a338f3bdffa0718adffb" }, - { file = "numpy-2.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0025048b3c1557a20bc80d06fdeb8cc7fc193721484cca82b2cfa072fec71a93" }, - { file = "numpy-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a5ee121b60aa509679b682819c602579e1df14a5b07fe95671c8849aad8f2115" }, - { file = "numpy-2.3.1-cp311-cp311-win32.whl", hash = "sha256:a8b740f5579ae4585831b3cf0e3b0425c667274f82a484866d2adf9570539369" }, - { file = "numpy-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:d4580adadc53311b163444f877e0789f1c8861e2698f6b2a4ca852fda154f3ff" }, - { file = "numpy-2.3.1-cp311-cp311-win_arm64.whl", hash = "sha256:ec0bdafa906f95adc9a0c6f26a4871fa753f25caaa0e032578a30457bff0af6a" }, - { file = "numpy-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2959d8f268f3d8ee402b04a9ec4bb7604555aeacf78b360dc4ec27f1d508177d" }, - { file = "numpy-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:762e0c0c6b56bdedfef9a8e1d4538556438288c4276901ea008ae44091954e29" }, - { file = "numpy-2.3.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:867ef172a0976aaa1f1d1b63cf2090de8b636a7674607d514505fb7276ab08fc" }, - { file = "numpy-2.3.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:4e602e1b8682c2b833af89ba641ad4176053aaa50f5cacda1a27004352dde943" }, - { file = "numpy-2.3.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8e333040d069eba1652fb08962ec5b76af7f2c7bce1df7e1418c8055cf776f25" }, - { file = "numpy-2.3.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e7cbf5a5eafd8d230a3ce356d892512185230e4781a361229bd902ff403bc660" }, - { file = "numpy-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f1b8f26d1086835f442286c1d9b64bb3974b0b1e41bb105358fd07d20872952" }, - { file = "numpy-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ee8340cb48c9b7a5899d1149eece41ca535513a9698098edbade2a8e7a84da77" }, - { file = "numpy-2.3.1-cp312-cp312-win32.whl", hash = "sha256:e772dda20a6002ef7061713dc1e2585bc1b534e7909b2030b5a46dae8ff077ab" }, - { file = "numpy-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:cfecc7822543abdea6de08758091da655ea2210b8ffa1faf116b940693d3df76" }, - { file = "numpy-2.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:7be91b2239af2658653c5bb6f1b8bccafaf08226a258caf78ce44710a0160d30" }, - { file = "numpy-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25a1992b0a3fdcdaec9f552ef10d8103186f5397ab45e2d25f8ac51b1a6b97e8" }, - { file = "numpy-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7dea630156d39b02a63c18f508f85010230409db5b2927ba59c8ba4ab3e8272e" }, - { file = "numpy-2.3.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bada6058dd886061f10ea15f230ccf7dfff40572e99fef440a4a857c8728c9c0" }, - { file = "numpy-2.3.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:a894f3816eb17b29e4783e5873f92faf55b710c2519e5c351767c51f79d8526d" }, - { file = "numpy-2.3.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:18703df6c4a4fee55fd3d6e5a253d01c5d33a295409b03fda0c86b3ca2ff41a1" }, - { file = "numpy-2.3.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5902660491bd7a48b2ec16c23ccb9124b8abfd9583c5fdfa123fe6b421e03de1" }, - { file = "numpy-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:36890eb9e9d2081137bd78d29050ba63b8dab95dff7912eadf1185e80074b2a0" }, - { file = "numpy-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a780033466159c2270531e2b8ac063704592a0bc62ec4a1b991c7c40705eb0e8" }, - { file = "numpy-2.3.1-cp313-cp313-win32.whl", hash = "sha256:39bff12c076812595c3a306f22bfe49919c5513aa1e0e70fac756a0be7c2a2b8" }, - { file = "numpy-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d5ee6eec45f08ce507a6570e06f2f879b374a552087a4179ea7838edbcbfa42" }, - { file = "numpy-2.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:0c4d9e0a8368db90f93bd192bfa771ace63137c3488d198ee21dfb8e7771916e" }, - { file = "numpy-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b0b5397374f32ec0649dd98c652a1798192042e715df918c20672c62fb52d4b8" }, - { file = "numpy-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c5bdf2015ccfcee8253fb8be695516ac4457c743473a43290fd36eba6a1777eb" }, - { file = "numpy-2.3.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d70f20df7f08b90a2062c1f07737dd340adccf2068d0f1b9b3d56e2038979fee" }, - { file = "numpy-2.3.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:2fb86b7e58f9ac50e1e9dd1290154107e47d1eef23a0ae9145ded06ea606f992" }, - { file = "numpy-2.3.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:23ab05b2d241f76cb883ce8b9a93a680752fbfcbd51c50eff0b88b979e471d8c" }, - { file = "numpy-2.3.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ce2ce9e5de4703a673e705183f64fd5da5bf36e7beddcb63a25ee2286e71ca48" }, - { file = "numpy-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c4913079974eeb5c16ccfd2b1f09354b8fed7e0d6f2cab933104a09a6419b1ee" }, - { file = "numpy-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:010ce9b4f00d5c036053ca684c77441f2f2c934fd23bee058b4d6f196efd8280" }, - { file = "numpy-2.3.1-cp313-cp313t-win32.whl", hash = "sha256:6269b9edfe32912584ec496d91b00b6d34282ca1d07eb10e82dfc780907d6c2e" }, - { file = "numpy-2.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2a809637460e88a113e186e87f228d74ae2852a2e0c44de275263376f17b5bdc" }, - { file = "numpy-2.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:eccb9a159db9aed60800187bc47a6d3451553f0e1b08b068d8b277ddfbb9b244" }, - { file = "numpy-2.3.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ad506d4b09e684394c42c966ec1527f6ebc25da7f4da4b1b056606ffe446b8a3" }, - { file = "numpy-2.3.1-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:ebb8603d45bc86bbd5edb0d63e52c5fd9e7945d3a503b77e486bd88dde67a19b" }, - { file = "numpy-2.3.1-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:15aa4c392ac396e2ad3d0a2680c0f0dee420f9fed14eef09bdb9450ee6dcb7b7" }, - { file = "numpy-2.3.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c6e0bf9d1a2f50d2b65a7cf56db37c095af17b59f6c132396f7c6d5dd76484df" }, - { file = "numpy-2.3.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:eabd7e8740d494ce2b4ea0ff05afa1b7b291e978c0ae075487c51e8bd93c0c68" }, - { file = "numpy-2.3.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:e610832418a2bc09d974cc9fecebfa51e9532d6190223bc5ef6a7402ebf3b5cb" }, - { file = "numpy-2.3.1.tar.gz", hash = "sha256:1ec9ae20a4226da374362cca3c62cd753faf2f951440b0e3b98e93c235441d2b" }, -] - -[[package]] -name = "overrides" -version = "7.7.0" -description = "A decorator to automatically detect mismatch when overriding a method." -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, - {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, -] - [[package]] name = "packaging" version = "25.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["dev"] files = [ - { file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484" }, - { file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f" }, + {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, + {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, ] [[package]] @@ -2327,144 +778,14 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - { file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591" }, - { file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945" }, + {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, + {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, ] [package.extras] dev = ["pytest", "tox"] lint = ["black"] -[[package]] -name = "pandas" -version = "2.3.1" -description = "Powerful data structures for data analysis, time series, and statistics" -optional = false -python-versions = ">=3.9" -groups = ["main"] -files = [ - { file = "pandas-2.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:22c2e866f7209ebc3a8f08d75766566aae02bcc91d196935a1d9e59c7b990ac9" }, - { file = "pandas-2.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3583d348546201aff730c8c47e49bc159833f971c2899d6097bce68b9112a4f1" }, - { file = "pandas-2.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f951fbb702dacd390561e0ea45cdd8ecfa7fb56935eb3dd78e306c19104b9b0" }, - { file = "pandas-2.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd05b72ec02ebfb993569b4931b2e16fbb4d6ad6ce80224a3ee838387d83a191" }, - { file = "pandas-2.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1b916a627919a247d865aed068eb65eb91a344b13f5b57ab9f610b7716c92de1" }, - { file = "pandas-2.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fe67dc676818c186d5a3d5425250e40f179c2a89145df477dd82945eaea89e97" }, - { file = "pandas-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:2eb789ae0274672acbd3c575b0598d213345660120a257b47b5dafdc618aec83" }, - { file = "pandas-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2b0540963d83431f5ce8870ea02a7430adca100cec8a050f0811f8e31035541b" }, - { file = "pandas-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fe7317f578c6a153912bd2292f02e40c1d8f253e93c599e82620c7f69755c74f" }, - { file = "pandas-2.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6723a27ad7b244c0c79d8e7007092d7c8f0f11305770e2f4cd778b3ad5f9f85" }, - { file = "pandas-2.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3462c3735fe19f2638f2c3a40bd94ec2dc5ba13abbb032dd2fa1f540a075509d" }, - { file = "pandas-2.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:98bcc8b5bf7afed22cc753a28bc4d9e26e078e777066bc53fac7904ddef9a678" }, - { file = "pandas-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4d544806b485ddf29e52d75b1f559142514e60ef58a832f74fb38e48d757b299" }, - { file = "pandas-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:b3cd4273d3cb3707b6fffd217204c52ed92859533e31dc03b7c5008aa933aaab" }, - { file = "pandas-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:689968e841136f9e542020698ee1c4fbe9caa2ed2213ae2388dc7b81721510d3" }, - { file = "pandas-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:025e92411c16cbe5bb2a4abc99732a6b132f439b8aab23a59fa593eb00704232" }, - { file = "pandas-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b7ff55f31c4fcb3e316e8f7fa194566b286d6ac430afec0d461163312c5841e" }, - { file = "pandas-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dcb79bf373a47d2a40cf7232928eb7540155abbc460925c2c96d2d30b006eb4" }, - { file = "pandas-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:56a342b231e8862c96bdb6ab97170e203ce511f4d0429589c8ede1ee8ece48b8" }, - { file = "pandas-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ca7ed14832bce68baef331f4d7f294411bed8efd032f8109d690df45e00c4679" }, - { file = "pandas-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:ac942bfd0aca577bef61f2bc8da8147c4ef6879965ef883d8e8d5d2dc3e744b8" }, - { file = "pandas-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9026bd4a80108fac2239294a15ef9003c4ee191a0f64b90f170b40cfb7cf2d22" }, - { file = "pandas-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6de8547d4fdb12421e2d047a2c446c623ff4c11f47fddb6b9169eb98ffba485a" }, - { file = "pandas-2.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:782647ddc63c83133b2506912cc6b108140a38a37292102aaa19c81c83db2928" }, - { file = "pandas-2.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba6aff74075311fc88504b1db890187a3cd0f887a5b10f5525f8e2ef55bfdb9" }, - { file = "pandas-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e5635178b387bd2ba4ac040f82bc2ef6e6b500483975c4ebacd34bec945fda12" }, - { file = "pandas-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6f3bf5ec947526106399a9e1d26d40ee2b259c66422efdf4de63c848492d91bb" }, - { file = "pandas-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:1c78cf43c8fde236342a1cb2c34bcff89564a7bfed7e474ed2fffa6aed03a956" }, - { file = "pandas-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8dfc17328e8da77be3cf9f47509e5637ba8f137148ed0e9b5241e1baf526e20a" }, - { file = "pandas-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ec6c851509364c59a5344458ab935e6451b31b818be467eb24b0fe89bd05b6b9" }, - { file = "pandas-2.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:911580460fc4884d9b05254b38a6bfadddfcc6aaef856fb5859e7ca202e45275" }, - { file = "pandas-2.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f4d6feeba91744872a600e6edbbd5b033005b431d5ae8379abee5bcfa479fab" }, - { file = "pandas-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fe37e757f462d31a9cd7580236a82f353f5713a80e059a29753cf938c6775d96" }, - { file = "pandas-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5db9637dbc24b631ff3707269ae4559bce4b7fd75c1c4d7e13f40edc42df4444" }, - { file = "pandas-2.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4645f770f98d656f11c69e81aeb21c6fca076a44bed3dcbb9396a4311bc7f6d8" }, - { file = "pandas-2.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:342e59589cc454aaff7484d75b816a433350b3d7964d7847327edda4d532a2e3" }, - { file = "pandas-2.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d12f618d80379fde6af007f65f0c25bd3e40251dbd1636480dfffce2cf1e6da" }, - { file = "pandas-2.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd71c47a911da120d72ef173aeac0bf5241423f9bfea57320110a978457e069e" }, - { file = "pandas-2.3.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:09e3b1587f0f3b0913e21e8b32c3119174551deb4a4eba4a89bc7377947977e7" }, - { file = "pandas-2.3.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2323294c73ed50f612f67e2bf3ae45aea04dce5690778e08a09391897f35ff88" }, - { file = "pandas-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:b4b0de34dc8499c2db34000ef8baad684cfa4cbd836ecee05f323ebfba348c7d" }, - { file = "pandas-2.3.1.tar.gz", hash = "sha256:0a95b9ac964fe83ce317827f80304d37388ea77616b1425f0ae41c9d2d0d7bb2" }, -] - -[package.dependencies] -numpy = {version = ">=1.26.0", markers = "python_version >= \"3.12\""} -python-dateutil = ">=2.8.2" -pytz = ">=2020.1" -tzdata = ">=2022.7" - -[package.extras] -all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] -aws = ["s3fs (>=2022.11.0)"] -clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] -compression = ["zstandard (>=0.19.0)"] -computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] -consortium-standard = ["dataframe-api-compat (>=0.1.7)"] -excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] -feather = ["pyarrow (>=10.0.1)"] -fss = ["fsspec (>=2022.11.0)"] -gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] -hdf5 = ["tables (>=3.8.0)"] -html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] -mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] -output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] -parquet = ["pyarrow (>=10.0.1)"] -performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] -plot = ["matplotlib (>=3.6.3)"] -postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] -pyarrow = ["pyarrow (>=10.0.1)"] -spss = ["pyreadstat (>=1.2.0)"] -sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] -test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] -xml = ["lxml (>=4.9.2)"] - -[[package]] -name = "pandocfilters" -version = "1.5.1" -description = "Utilities for writing pandoc filters in python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -groups = ["dev"] -files = [ - {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, - {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, -] - -[[package]] -name = "parso" -version = "0.8.4" -description = "A Python Parser" -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, - {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, -] - -[package.extras] -qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["docopt", "pytest"] - -[[package]] -name = "partd" -version = "1.4.2" -description = "Appendable key-value storage" -optional = false -python-versions = ">=3.9" -groups = ["main"] -files = [ - {file = "partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f"}, - {file = "partd-1.4.2.tar.gz", hash = "sha256:d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c"}, -] - -[package.dependencies] -locket = "*" -toolz = "*" - -[package.extras] -complete = ["blosc", "numpy (>=1.20.0)", "pandas (>=1.3)", "pyzmq"] - [[package]] name = "pathspec" version = "0.12.1" @@ -2477,22 +798,6 @@ files = [ {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] -[[package]] -name = "pexpect" -version = "4.9.0" -description = "Pexpect allows easy control of interactive console applications." -optional = false -python-versions = "*" -groups = ["dev"] -markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" -files = [ - {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, - {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, -] - -[package.dependencies] -ptyprocess = ">=0.5" - [[package]] name = "platformdirs" version = "4.3.8" @@ -2501,8 +806,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4" }, - { file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc" }, + {file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4"}, + {file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc"}, ] [package.extras] @@ -2518,24 +823,36 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746" }, - { file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3" }, + {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, + {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, ] [package.extras] dev = ["pre-commit", "tox"] testing = ["coverage", "pytest", "pytest-benchmark"] +[[package]] +name = "poetry-core" +version = "2.1.3" +description = "Poetry PEP 517 Build Backend" +optional = false +python-versions = "<4.0,>=3.9" +groups = ["dev"] +files = [ + {file = "poetry_core-2.1.3-py3-none-any.whl", hash = "sha256:2c704f05016698a54ca1d327f46ce2426d72eaca6ff614132c8477c292266771"}, + {file = "poetry_core-2.1.3.tar.gz", hash = "sha256:0522a015477ed622c89aad56a477a57813cace0c8e7ff2a2906b7ef4a2e296a4"}, +] + [[package]] name = "pre-commit" -version = "4.2.0" +version = "4.3.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd" }, - { file = "pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146" }, + {file = "pre_commit-4.3.0-py2.py3-none-any.whl", hash = "sha256:2b0747ad7e6e967169136edffee14c16e148a778a54e4f967921aa1ebf2308d8"}, + {file = "pre_commit-4.3.0.tar.gz", hash = "sha256:499fe450cc9d42e9d58e606262795ecb64dd05438943c62b66f6a8673da30b16"}, ] [package.dependencies] @@ -2545,117 +862,23 @@ nodeenv = ">=0.11.1" pyyaml = ">=5.1" virtualenv = ">=20.10.0" -[[package]] -name = "prometheus-client" -version = "0.22.1" -description = "Python client for the Prometheus monitoring system." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "prometheus_client-0.22.1-py3-none-any.whl", hash = "sha256:cca895342e308174341b2cbf99a56bef291fbc0ef7b9e5412a0f26d653ba7094" }, - { file = "prometheus_client-0.22.1.tar.gz", hash = "sha256:190f1331e783cf21eb60bca559354e0a4d4378facecf78f5428c39b675d20d28" }, -] - -[package.extras] -twisted = ["twisted"] - -[[package]] -name = "prompt-toolkit" -version = "3.0.51" -description = "Library for building powerful interactive command lines in Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07" }, - { file = "prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed" }, -] - -[package.dependencies] -wcwidth = "*" - -[[package]] -name = "psutil" -version = "7.0.0" -description = "Cross-platform lib for process and system monitoring in Python. NOTE: the syntax of this script MUST be kept compatible with Python 2.7." -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - { file = "psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25" }, - { file = "psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da" }, - { file = "psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91" }, - { file = "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" }, - { file = "psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993" }, - { file = "psutil-7.0.0-cp36-cp36m-win32.whl", hash = "sha256:84df4eb63e16849689f76b1ffcb36db7b8de703d1bc1fe41773db487621b6c17" }, - { file = "psutil-7.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1e744154a6580bc968a0195fd25e80432d3afec619daf145b9e5ba16cc1d688e" }, - { file = "psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99" }, - { file = "psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553" }, - { file = "psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456" }, -] - -[package.extras] -dev = ["abi3audit", "black (==24.10.0)", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest", "pytest-cov", "pytest-xdist", "requests", "rstcheck", "ruff", "setuptools", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "vulture", "wheel"] -test = ["pytest", "pytest-xdist", "setuptools"] - -[[package]] -name = "ptyprocess" -version = "0.7.0" -description = "Run a subprocess in a pseudo terminal" -optional = false -python-versions = "*" -groups = ["dev"] -markers = "os_name != \"nt\" or sys_platform != \"win32\" and sys_platform != \"emscripten\"" -files = [ - {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, - {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, -] - -[[package]] -name = "pure-eval" -version = "0.2.3" -description = "Safely evaluate AST nodes without side effects" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, - {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, -] - -[package.extras] -tests = ["pytest"] - -[[package]] -name = "pycparser" -version = "2.22" -description = "C parser in Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, - {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, -] - [[package]] name = "pydantic" -version = "2.11.7" +version = "2.12.3" description = "Data validation using Python type hints" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - { file = "pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b" }, - { file = "pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db" }, + {file = "pydantic-2.12.3-py3-none-any.whl", hash = "sha256:6986454a854bc3bc6e5443e1369e06a3a456af9d339eda45510f517d9ea5c6bf"}, + {file = "pydantic-2.12.3.tar.gz", hash = "sha256:1da1c82b0fc140bb0103bc1441ffe062154c8d38491189751ee00fd8ca65ce74"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.33.2" -typing-extensions = ">=4.12.2" -typing-inspection = ">=0.4.0" +pydantic-core = "2.41.4" +typing-extensions = ">=4.14.1" +typing-inspection = ">=0.4.2" [package.extras] email = ["email-validator (>=2.0.0)"] @@ -2663,115 +886,133 @@ timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows [[package]] name = "pydantic-core" -version = "2.33.2" +version = "2.41.4" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - { file = "pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8" }, - { file = "pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d53b22f2032c42eaaf025f7c40c2e3b94568ae077a606f006d206a463bc69572" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0405262705a123b7ce9f0b92f123334d67b70fd1f20a9372b907ce1080c7ba02" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b25d91e288e2c4e0662b8038a28c6a07eaac3e196cfc4ff69de4ea3db992a1b" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bdfe4b3789761f3bcb4b1ddf33355a71079858958e3a552f16d5af19768fef2" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:efec8db3266b76ef9607c2c4c419bdb06bf335ae433b80816089ea7585816f6a" }, - { file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:031c57d67ca86902726e0fae2214ce6770bbe2f710dc33063187a68744a5ecac" }, - { file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:f8de619080e944347f5f20de29a975c2d815d9ddd8be9b9b7268e2e3ef68605a" }, - { file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73662edf539e72a9440129f231ed3757faab89630d291b784ca99237fb94db2b" }, - { file = "pydantic_core-2.33.2-cp310-cp310-win32.whl", hash = "sha256:0a39979dcbb70998b0e505fb1556a1d550a0781463ce84ebf915ba293ccb7e22" }, - { file = "pydantic_core-2.33.2-cp310-cp310-win_amd64.whl", hash = "sha256:b0379a2b24882fef529ec3b4987cb5d003b9cda32256024e6fe1586ac45fc640" }, - { file = "pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7" }, - { file = "pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e" }, - { file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d" }, - { file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30" }, - { file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf" }, - { file = "pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51" }, - { file = "pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab" }, - { file = "pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65" }, - { file = "pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc" }, - { file = "pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b" }, - { file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1" }, - { file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6" }, - { file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea" }, - { file = "pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290" }, - { file = "pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2" }, - { file = "pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab" }, - { file = "pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f" }, - { file = "pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56" }, - { file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5" }, - { file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e" }, - { file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162" }, - { file = "pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849" }, - { file = "pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9" }, - { file = "pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9" }, - { file = "pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac" }, - { file = "pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5" }, - { file = "pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9" }, - { file = "pydantic_core-2.33.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a2b911a5b90e0374d03813674bf0a5fbbb7741570dcd4b4e85a2e48d17def29d" }, - { file = "pydantic_core-2.33.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6fa6dfc3e4d1f734a34710f391ae822e0a8eb8559a85c6979e14e65ee6ba2954" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c54c939ee22dc8e2d545da79fc5381f1c020d6d3141d3bd747eab59164dc89fb" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53a57d2ed685940a504248187d5685e49eb5eef0f696853647bf37c418c538f7" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09fb9dd6571aacd023fe6aaca316bd01cf60ab27240d7eb39ebd66a3a15293b4" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e6116757f7959a712db11f3e9c0a99ade00a5bbedae83cb801985aa154f071b" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d55ab81c57b8ff8548c3e4947f119551253f4e3787a7bbc0b6b3ca47498a9d3" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c20c462aa4434b33a2661701b861604913f912254e441ab8d78d30485736115a" }, - { file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44857c3227d3fb5e753d5fe4a3420d6376fa594b07b621e220cd93703fe21782" }, - { file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:eb9b459ca4df0e5c87deb59d37377461a538852765293f9e6ee834f0435a93b9" }, - { file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9fcd347d2cc5c23b06de6d3b7b8275be558a0c90549495c699e379a80bf8379e" }, - { file = "pydantic_core-2.33.2-cp39-cp39-win32.whl", hash = "sha256:83aa99b1285bc8f038941ddf598501a86f1536789740991d7d8756e34f1e74d9" }, - { file = "pydantic_core-2.33.2-cp39-cp39-win_amd64.whl", hash = "sha256:f481959862f57f29601ccced557cc2e817bce7533ab8e01a797a48b49c9692b3" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c4aa4e82353f65e548c476b37e64189783aa5384903bfea4f41580f255fddfa" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d946c8bf0d5c24bf4fe333af284c59a19358aa3ec18cb3dc4370080da1e8ad29" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87b31b6846e361ef83fedb187bb5b4372d0da3f7e28d85415efa92d6125d6e6d" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa9d91b338f2df0508606f7009fde642391425189bba6d8c653afd80fd6bb64e" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2058a32994f1fde4ca0480ab9d1e75a0e8c87c22b53a3ae66554f9af78f2fe8c" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:0e03262ab796d986f978f79c943fc5f620381be7287148b8010b4097f79a39ec" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1a8695a8d00c73e50bff9dfda4d540b7dee29ff9b8053e38380426a85ef10052" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fa754d1850735a0b0e03bcffd9d4b4343eb417e47196e4485d9cca326073a42c" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a11c8d26a50bfab49002947d3d237abe4d9e4b5bdc8846a63537b6488e197808" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:87acbfcf8e90ca885206e98359d7dca4bcbb35abdc0ff66672a293e1d7a19101" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7f92c15cd1e97d4b12acd1cc9004fa092578acfa57b67ad5e43a197175d01a64" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3f26877a748dc4251cfcfda9dfb5f13fcb034f5308388066bcfe9031b63ae7d" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac89aea9af8cd672fa7b510e7b8c33b0bba9a43186680550ccf23020f32d535" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:970919794d126ba8645f3837ab6046fb4e72bbc057b3709144066204c19a455d" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3eb3fe62804e8f859c49ed20a8451342de53ed764150cb14ca71357c765dc2a6" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:3abcd9392a36025e3bd55f9bd38d908bd17962cc49bc6da8e7e96285336e2bca" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3a1c81334778f9e3af2f8aeb7a960736e5cab1dfebfb26aabca09afd2906c039" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2807668ba86cb38c6817ad9bc66215ab8584d1d304030ce4f0887336f28a5e27" }, - { file = "pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc" }, -] - -[package.dependencies] -typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + {file = "pydantic_core-2.41.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2442d9a4d38f3411f22eb9dd0912b7cbf4b7d5b6c92c4173b75d3e1ccd84e36e"}, + {file = "pydantic_core-2.41.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:30a9876226dda131a741afeab2702e2d127209bde3c65a2b8133f428bc5d006b"}, + {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d55bbac04711e2980645af68b97d445cdbcce70e5216de444a6c4b6943ebcccd"}, + {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e1d778fb7849a42d0ee5927ab0f7453bf9f85eef8887a546ec87db5ddb178945"}, + {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b65077a4693a98b90ec5ad8f203ad65802a1b9b6d4a7e48066925a7e1606706"}, + {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:62637c769dee16eddb7686bf421be48dfc2fae93832c25e25bc7242e698361ba"}, + {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dfe3aa529c8f501babf6e502936b9e8d4698502b2cfab41e17a028d91b1ac7b"}, + {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ca2322da745bf2eeb581fc9ea3bbb31147702163ccbcbf12a3bb630e4bf05e1d"}, + {file = "pydantic_core-2.41.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e8cd3577c796be7231dcf80badcf2e0835a46665eaafd8ace124d886bab4d700"}, + {file = "pydantic_core-2.41.4-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:1cae8851e174c83633f0833e90636832857297900133705ee158cf79d40f03e6"}, + {file = "pydantic_core-2.41.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a26d950449aae348afe1ac8be5525a00ae4235309b729ad4d3399623125b43c9"}, + {file = "pydantic_core-2.41.4-cp310-cp310-win32.whl", hash = "sha256:0cf2a1f599efe57fa0051312774280ee0f650e11152325e41dfd3018ef2c1b57"}, + {file = "pydantic_core-2.41.4-cp310-cp310-win_amd64.whl", hash = "sha256:a8c2e340d7e454dc3340d3d2e8f23558ebe78c98aa8f68851b04dcb7bc37abdc"}, + {file = "pydantic_core-2.41.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:28ff11666443a1a8cf2a044d6a545ebffa8382b5f7973f22c36109205e65dc80"}, + {file = "pydantic_core-2.41.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:61760c3925d4633290292bad462e0f737b840508b4f722247d8729684f6539ae"}, + {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eae547b7315d055b0de2ec3965643b0ab82ad0106a7ffd29615ee9f266a02827"}, + {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef9ee5471edd58d1fcce1c80ffc8783a650e3e3a193fe90d52e43bb4d87bff1f"}, + {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:15dd504af121caaf2c95cb90c0ebf71603c53de98305621b94da0f967e572def"}, + {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3a926768ea49a8af4d36abd6a8968b8790f7f76dd7cbd5a4c180db2b4ac9a3a2"}, + {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6916b9b7d134bff5440098a4deb80e4cb623e68974a87883299de9124126c2a8"}, + {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5cf90535979089df02e6f17ffd076f07237efa55b7343d98760bde8743c4b265"}, + {file = "pydantic_core-2.41.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7533c76fa647fade2d7ec75ac5cc079ab3f34879626dae5689b27790a6cf5a5c"}, + {file = "pydantic_core-2.41.4-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:37e516bca9264cbf29612539801ca3cd5d1be465f940417b002905e6ed79d38a"}, + {file = "pydantic_core-2.41.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0c19cb355224037c83642429b8ce261ae108e1c5fbf5c028bac63c77b0f8646e"}, + {file = "pydantic_core-2.41.4-cp311-cp311-win32.whl", hash = "sha256:09c2a60e55b357284b5f31f5ab275ba9f7f70b7525e18a132ec1f9160b4f1f03"}, + {file = "pydantic_core-2.41.4-cp311-cp311-win_amd64.whl", hash = "sha256:711156b6afb5cb1cb7c14a2cc2c4a8b4c717b69046f13c6b332d8a0a8f41ca3e"}, + {file = "pydantic_core-2.41.4-cp311-cp311-win_arm64.whl", hash = "sha256:6cb9cf7e761f4f8a8589a45e49ed3c0d92d1d696a45a6feaee8c904b26efc2db"}, + {file = "pydantic_core-2.41.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ab06d77e053d660a6faaf04894446df7b0a7e7aba70c2797465a0a1af00fc887"}, + {file = "pydantic_core-2.41.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c53ff33e603a9c1179a9364b0a24694f183717b2e0da2b5ad43c316c956901b2"}, + {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:304c54176af2c143bd181d82e77c15c41cbacea8872a2225dd37e6544dce9999"}, + {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:025ba34a4cf4fb32f917d5d188ab5e702223d3ba603be4d8aca2f82bede432a4"}, + {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9f5f30c402ed58f90c70e12eff65547d3ab74685ffe8283c719e6bead8ef53f"}, + {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd96e5d15385d301733113bcaa324c8bcf111275b7675a9c6e88bfb19fc05e3b"}, + {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98f348cbb44fae6e9653c1055db7e29de67ea6a9ca03a5fa2c2e11a47cff0e47"}, + {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec22626a2d14620a83ca583c6f5a4080fa3155282718b6055c2ea48d3ef35970"}, + {file = "pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3a95d4590b1f1a43bf33ca6d647b990a88f4a3824a8c4572c708f0b45a5290ed"}, + {file = "pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:f9672ab4d398e1b602feadcffcdd3af44d5f5e6ddc15bc7d15d376d47e8e19f8"}, + {file = "pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:84d8854db5f55fead3b579f04bda9a36461dab0730c5d570e1526483e7bb8431"}, + {file = "pydantic_core-2.41.4-cp312-cp312-win32.whl", hash = "sha256:9be1c01adb2ecc4e464392c36d17f97e9110fbbc906bcbe1c943b5b87a74aabd"}, + {file = "pydantic_core-2.41.4-cp312-cp312-win_amd64.whl", hash = "sha256:d682cf1d22bab22a5be08539dca3d1593488a99998f9f412137bc323179067ff"}, + {file = "pydantic_core-2.41.4-cp312-cp312-win_arm64.whl", hash = "sha256:833eebfd75a26d17470b58768c1834dfc90141b7afc6eb0429c21fc5a21dcfb8"}, + {file = "pydantic_core-2.41.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:85e050ad9e5f6fe1004eec65c914332e52f429bc0ae12d6fa2092407a462c746"}, + {file = "pydantic_core-2.41.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7393f1d64792763a48924ba31d1e44c2cfbc05e3b1c2c9abb4ceeadd912cced"}, + {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94dab0940b0d1fb28bcab847adf887c66a27a40291eedf0b473be58761c9799a"}, + {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:de7c42f897e689ee6f9e93c4bec72b99ae3b32a2ade1c7e4798e690ff5246e02"}, + {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:664b3199193262277b8b3cd1e754fb07f2c6023289c815a1e1e8fb415cb247b1"}, + {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d95b253b88f7d308b1c0b417c4624f44553ba4762816f94e6986819b9c273fb2"}, + {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1351f5bbdbbabc689727cb91649a00cb9ee7203e0a6e54e9f5ba9e22e384b84"}, + {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1affa4798520b148d7182da0615d648e752de4ab1a9566b7471bc803d88a062d"}, + {file = "pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7b74e18052fea4aa8dea2fb7dbc23d15439695da6cbe6cfc1b694af1115df09d"}, + {file = "pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:285b643d75c0e30abda9dc1077395624f314a37e3c09ca402d4015ef5979f1a2"}, + {file = "pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:f52679ff4218d713b3b33f88c89ccbf3a5c2c12ba665fb80ccc4192b4608dbab"}, + {file = "pydantic_core-2.41.4-cp313-cp313-win32.whl", hash = "sha256:ecde6dedd6fff127c273c76821bb754d793be1024bc33314a120f83a3c69460c"}, + {file = "pydantic_core-2.41.4-cp313-cp313-win_amd64.whl", hash = "sha256:d081a1f3800f05409ed868ebb2d74ac39dd0c1ff6c035b5162356d76030736d4"}, + {file = "pydantic_core-2.41.4-cp313-cp313-win_arm64.whl", hash = "sha256:f8e49c9c364a7edcbe2a310f12733aad95b022495ef2a8d653f645e5d20c1564"}, + {file = "pydantic_core-2.41.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ed97fd56a561f5eb5706cebe94f1ad7c13b84d98312a05546f2ad036bafe87f4"}, + {file = "pydantic_core-2.41.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a870c307bf1ee91fc58a9a61338ff780d01bfae45922624816878dce784095d2"}, + {file = "pydantic_core-2.41.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d25e97bc1f5f8f7985bdc2335ef9e73843bb561eb1fa6831fdfc295c1c2061cf"}, + {file = "pydantic_core-2.41.4-cp313-cp313t-win_amd64.whl", hash = "sha256:d405d14bea042f166512add3091c1af40437c2e7f86988f3915fabd27b1e9cd2"}, + {file = "pydantic_core-2.41.4-cp313-cp313t-win_arm64.whl", hash = "sha256:19f3684868309db5263a11bace3c45d93f6f24afa2ffe75a647583df22a2ff89"}, + {file = "pydantic_core-2.41.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:e9205d97ed08a82ebb9a307e92914bb30e18cdf6f6b12ca4bedadb1588a0bfe1"}, + {file = "pydantic_core-2.41.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:82df1f432b37d832709fbcc0e24394bba04a01b6ecf1ee87578145c19cde12ac"}, + {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc3b4cc4539e055cfa39a3763c939f9d409eb40e85813257dcd761985a108554"}, + {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b1eb1754fce47c63d2ff57fdb88c351a6c0150995890088b33767a10218eaa4e"}, + {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e6ab5ab30ef325b443f379ddb575a34969c333004fca5a1daa0133a6ffaad616"}, + {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:31a41030b1d9ca497634092b46481b937ff9397a86f9f51bd41c4767b6fc04af"}, + {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a44ac1738591472c3d020f61c6df1e4015180d6262ebd39bf2aeb52571b60f12"}, + {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d72f2b5e6e82ab8f94ea7d0d42f83c487dc159c5240d8f83beae684472864e2d"}, + {file = "pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:c4d1e854aaf044487d31143f541f7aafe7b482ae72a022c664b2de2e466ed0ad"}, + {file = "pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b568af94267729d76e6ee5ececda4e283d07bbb28e8148bb17adad93d025d25a"}, + {file = "pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:6d55fb8b1e8929b341cc313a81a26e0d48aa3b519c1dbaadec3a6a2b4fcad025"}, + {file = "pydantic_core-2.41.4-cp314-cp314-win32.whl", hash = "sha256:5b66584e549e2e32a1398df11da2e0a7eff45d5c2d9db9d5667c5e6ac764d77e"}, + {file = "pydantic_core-2.41.4-cp314-cp314-win_amd64.whl", hash = "sha256:557a0aab88664cc552285316809cab897716a372afaf8efdbef756f8b890e894"}, + {file = "pydantic_core-2.41.4-cp314-cp314-win_arm64.whl", hash = "sha256:3f1ea6f48a045745d0d9f325989d8abd3f1eaf47dd00485912d1a3a63c623a8d"}, + {file = "pydantic_core-2.41.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6c1fe4c5404c448b13188dd8bd2ebc2bdd7e6727fa61ff481bcc2cca894018da"}, + {file = "pydantic_core-2.41.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:523e7da4d43b113bf8e7b49fa4ec0c35bf4fe66b2230bfc5c13cc498f12c6c3e"}, + {file = "pydantic_core-2.41.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5729225de81fb65b70fdb1907fcf08c75d498f4a6f15af005aabb1fdadc19dfa"}, + {file = "pydantic_core-2.41.4-cp314-cp314t-win_amd64.whl", hash = "sha256:de2cfbb09e88f0f795fd90cf955858fc2c691df65b1f21f0aa00b99f3fbc661d"}, + {file = "pydantic_core-2.41.4-cp314-cp314t-win_arm64.whl", hash = "sha256:d34f950ae05a83e0ede899c595f312ca976023ea1db100cd5aa188f7005e3ab0"}, + {file = "pydantic_core-2.41.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:646e76293345954acea6966149683047b7b2ace793011922208c8e9da12b0062"}, + {file = "pydantic_core-2.41.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cc8e85a63085a137d286e2791037f5fdfff0aabb8b899483ca9c496dd5797338"}, + {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:692c622c8f859a17c156492783902d8370ac7e121a611bd6fe92cc71acf9ee8d"}, + {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d1e2906efb1031a532600679b424ef1d95d9f9fb507f813951f23320903adbd7"}, + {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e04e2f7f8916ad3ddd417a7abdd295276a0bf216993d9318a5d61cc058209166"}, + {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df649916b81822543d1c8e0e1d079235f68acdc7d270c911e8425045a8cfc57e"}, + {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c529f862fdba70558061bb936fe00ddbaaa0c647fd26e4a4356ef1d6561891"}, + {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3b4c5a1fd3a311563ed866c2c9b62da06cb6398bee186484ce95c820db71cb"}, + {file = "pydantic_core-2.41.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6e0fc40d84448f941df9b3334c4b78fe42f36e3bf631ad54c3047a0cdddc2514"}, + {file = "pydantic_core-2.41.4-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:44e7625332683b6c1c8b980461475cde9595eff94447500e80716db89b0da005"}, + {file = "pydantic_core-2.41.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:170ee6835f6c71081d031ef1c3b4dc4a12b9efa6a9540f93f95b82f3c7571ae8"}, + {file = "pydantic_core-2.41.4-cp39-cp39-win32.whl", hash = "sha256:3adf61415efa6ce977041ba9745183c0e1f637ca849773afa93833e04b163feb"}, + {file = "pydantic_core-2.41.4-cp39-cp39-win_amd64.whl", hash = "sha256:a238dd3feee263eeaeb7dc44aea4ba1364682c4f9f9467e6af5596ba322c2332"}, + {file = "pydantic_core-2.41.4-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:a1b2cfec3879afb742a7b0bcfa53e4f22ba96571c9e54d6a3afe1052d17d843b"}, + {file = "pydantic_core-2.41.4-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:d175600d975b7c244af6eb9c9041f10059f20b8bbffec9e33fdd5ee3f67cdc42"}, + {file = "pydantic_core-2.41.4-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f184d657fa4947ae5ec9c47bd7e917730fa1cbb78195037e32dcbab50aca5ee"}, + {file = "pydantic_core-2.41.4-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ed810568aeffed3edc78910af32af911c835cc39ebbfacd1f0ab5dd53028e5c"}, + {file = "pydantic_core-2.41.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:4f5d640aeebb438517150fdeec097739614421900e4a08db4a3ef38898798537"}, + {file = "pydantic_core-2.41.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:4a9ab037b71927babc6d9e7fc01aea9e66dc2a4a34dff06ef0724a4049629f94"}, + {file = "pydantic_core-2.41.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4dab9484ec605c3016df9ad4fd4f9a390bc5d816a3b10c6550f8424bb80b18c"}, + {file = "pydantic_core-2.41.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8a5028425820731d8c6c098ab642d7b8b999758e24acae03ed38a66eca8335"}, + {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e5ab4fc177dd41536b3c32b2ea11380dd3d4619a385860621478ac2d25ceb00"}, + {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:3d88d0054d3fa11ce936184896bed3c1c5441d6fa483b498fac6a5d0dd6f64a9"}, + {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b2a054a8725f05b4b6503357e0ac1c4e8234ad3b0c2ac130d6ffc66f0e170e2"}, + {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0d9db5a161c99375a0c68c058e227bee1d89303300802601d76a3d01f74e258"}, + {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:6273ea2c8ffdac7b7fda2653c49682db815aebf4a89243a6feccf5e36c18c347"}, + {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:4c973add636efc61de22530b2ef83a65f39b6d6f656df97f678720e20de26caa"}, + {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b69d1973354758007f46cf2d44a4f3d0933f10b6dc9bf15cf1356e037f6f731a"}, + {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3619320641fd212aaf5997b6ca505e97540b7e16418f4a241f44cdf108ffb50d"}, + {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:491535d45cd7ad7e4a2af4a5169b0d07bebf1adfd164b0368da8aa41e19907a5"}, + {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:54d86c0cada6aba4ec4c047d0e348cbad7063b87ae0f005d9f8c9ad04d4a92a2"}, + {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eca1124aced216b2500dc2609eade086d718e8249cb9696660ab447d50a758bd"}, + {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c9024169becccf0cb470ada03ee578d7348c119a0d42af3dcf9eda96e3a247c"}, + {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:26895a4268ae5a2849269f4991cdc97236e4b9c010e51137becf25182daac405"}, + {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:ca4df25762cf71308c446e33c9b1fdca2923a3f13de616e2a949f38bf21ff5a8"}, + {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:5a28fcedd762349519276c36634e71853b4541079cab4acaaac60c4421827308"}, + {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c173ddcd86afd2535e2b695217e82191580663a1d1928239f877f5a1649ef39f"}, + {file = "pydantic_core-2.41.4.tar.gz", hash = "sha256:70e47929a9d4a1905a67e4b687d5946026390568a8e952b92824118063cee4d5"}, +] + +[package.dependencies] +typing-extensions = ">=4.14.1" [[package]] name = "pygments" @@ -2781,8 +1022,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b" }, - { file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887" }, + {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"}, + {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, ] [package.extras] @@ -2790,14 +1031,14 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pymdown-extensions" -version = "10.16" +version = "10.16.1" description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pymdown_extensions-10.16-py3-none-any.whl", hash = "sha256:f5dd064a4db588cb2d95229fc4ee63a1b16cc8b4d0e6145c0899ed8723da1df2" }, - { file = "pymdown_extensions-10.16.tar.gz", hash = "sha256:71dac4fca63fabeffd3eb9038b756161a33ec6e8d230853d3cecf562155ab3de" }, + {file = "pymdown_extensions-10.16.1-py3-none-any.whl", hash = "sha256:d6ba157a6c03146a7fb122b2b9a121300056384eafeec9c9f9e584adfdb2a32d"}, + {file = "pymdown_extensions-10.16.1.tar.gz", hash = "sha256:aace82bcccba3efc03e25d584e6a22d27a8e17caa3f4dd9f207e49b787aa9a91"}, ] [package.dependencies] @@ -2805,174 +1046,72 @@ markdown = ">=3.6" pyyaml = "*" [package.extras] -extra = ["pygments (>=2.19.1)"] - -[[package]] -name = "pyproj" -version = "3.7.1" -description = "Python interface to PROJ (cartographic projections and coordinate transformations library)" -optional = false -python-versions = ">=3.10" -groups = ["main"] -files = [ - { file = "pyproj-3.7.1-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:bf09dbeb333c34e9c546364e7df1ff40474f9fddf9e70657ecb0e4f670ff0b0e" }, - { file = "pyproj-3.7.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:6575b2e53cc9e3e461ad6f0692a5564b96e7782c28631c7771c668770915e169" }, - { file = "pyproj-3.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cb516ee35ed57789b46b96080edf4e503fdb62dbb2e3c6581e0d6c83fca014b" }, - { file = "pyproj-3.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e47c4e93b88d99dd118875ee3ca0171932444cdc0b52d493371b5d98d0f30ee" }, - { file = "pyproj-3.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3e8d276caeae34fcbe4813855d0d97b9b825bab8d7a8b86d859c24a6213a5a0d" }, - { file = "pyproj-3.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f173f851ee75e54acdaa053382b6825b400cb2085663a9bb073728a59c60aebb" }, - { file = "pyproj-3.7.1-cp310-cp310-win32.whl", hash = "sha256:f550281ed6e5ea88fcf04a7c6154e246d5714be495c50c9e8e6b12d3fb63e158" }, - { file = "pyproj-3.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3537668992a709a2e7f068069192138618c00d0ba113572fdd5ee5ffde8222f3" }, - { file = "pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d" }, - { file = "pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067" }, - { file = "pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa" }, - { file = "pyproj-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5dcf24ede53d8abab7d8a77f69ff1936c6a8843ef4fcc574646e4be66e5739" }, - { file = "pyproj-3.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c2e7449840a44ce860d8bea2c6c1c4bc63fa07cba801dcce581d14dcb031a02" }, - { file = "pyproj-3.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0829865c1d3a3543f918b3919dc601eea572d6091c0dd175e1a054db9c109274" }, - { file = "pyproj-3.7.1-cp311-cp311-win32.whl", hash = "sha256:6181960b4b812e82e588407fe5c9c68ada267c3b084db078f248db5d7f45d18a" }, - { file = "pyproj-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ad0ff443a785d84e2b380869fdd82e6bfc11eba6057d25b4409a9bbfa867970" }, - { file = "pyproj-3.7.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:2781029d90df7f8d431e29562a3f2d8eafdf233c4010d6fc0381858dc7373217" }, - { file = "pyproj-3.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d61bf8ab04c73c1da08eedaf21a103b72fa5b0a9b854762905f65ff8b375d394" }, - { file = "pyproj-3.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04abc517a8555d1b05fcee768db3280143fe42ec39fdd926a2feef31631a1f2f" }, - { file = "pyproj-3.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084c0a475688f934d386c2ab3b6ce03398a473cd48adfda70d9ab8f87f2394a0" }, - { file = "pyproj-3.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a20727a23b1e49c7dc7fe3c3df8e56a8a7acdade80ac2f5cca29d7ca5564c145" }, - { file = "pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d" }, - { file = "pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274" }, - { file = "pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98" }, - { file = "pyproj-3.7.1-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:5f8d02ef4431dee414d1753d13fa82a21a2f61494737b5f642ea668d76164d6d" }, - { file = "pyproj-3.7.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:0b853ae99bda66cbe24b4ccfe26d70601d84375940a47f553413d9df570065e0" }, - { file = "pyproj-3.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83db380c52087f9e9bdd8a527943b2e7324f275881125e39475c4f9277bdeec4" }, - { file = "pyproj-3.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b35ed213892e211a3ce2bea002aa1183e1a2a9b79e51bb3c6b15549a831ae528" }, - { file = "pyproj-3.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a8b15b0463d1303bab113d1a6af2860a0d79013c3a66fcc5475ce26ef717fd4f" }, - { file = "pyproj-3.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:87229e42b75e89f4dad6459200f92988c5998dfb093c7c631fb48524c86cd5dc" }, - { file = "pyproj-3.7.1-cp313-cp313-win32.whl", hash = "sha256:d666c3a3faaf3b1d7fc4a544059c4eab9d06f84a604b070b7aa2f318e227798e" }, - { file = "pyproj-3.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:d3caac7473be22b6d6e102dde6c46de73b96bc98334e577dfaee9886f102ea2e" }, - { file = "pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47" }, -] - -[package.dependencies] -certifi = "*" - -[[package]] -name = "pytest" -version = "8.4.1" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7" }, - { file = "pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c" }, -] - -[package.dependencies] -colorama = { version = ">=0.4", markers = "sys_platform == \"win32\"" } -iniconfig = ">=1" -packaging = ">=20" -pluggy = ">=1.5,<2" -pygments = ">=2.7.2" - -[package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main", "dev"] -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" +extra = ["pygments (>=2.19.1)"] [[package]] -name = "python-json-logger" -version = "3.3.0" -description = "JSON Log Formatter for the Python Logging Package" +name = "pytest" +version = "8.4.1" +description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7" }, - { file = "python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84" }, + {file = "pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7"}, + {file = "pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c"}, ] -[package.extras] -dev = ["backports.zoneinfo ; python_version < \"3.9\"", "black", "build", "freezegun", "mdx_truly_sane_lists", "mike", "mkdocs", "mkdocs-awesome-pages-plugin", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-material (>=8.5)", "mkdocstrings[python]", "msgspec ; implementation_name != \"pypy\"", "mypy", "orjson ; implementation_name != \"pypy\"", "pylint", "pytest", "tzdata", "validate-pyproject[all]"] +[package.dependencies] +colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} +iniconfig = ">=1" +packaging = ">=20" +pluggy = ">=1.5,<2" +pygments = ">=2.7.2" -[[package]] -name = "pytz" -version = "2025.2" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -groups = ["main"] -files = [ - { file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00" }, - { file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3" }, -] +[package.extras] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] [[package]] -name = "pywin32" -version = "311" -description = "Python for Window Extensions" +name = "pytest-cov" +version = "6.2.1" +description = "Pytest plugin for measuring coverage." optional = false -python-versions = "*" +python-versions = ">=3.9" groups = ["dev"] -markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"" files = [ - { file = "pywin32-311-cp310-cp310-win32.whl", hash = "sha256:d03ff496d2a0cd4a5893504789d4a15399133fe82517455e78bad62efbb7f0a3" }, - { file = "pywin32-311-cp310-cp310-win_amd64.whl", hash = "sha256:797c2772017851984b97180b0bebe4b620bb86328e8a884bb626156295a63b3b" }, - { file = "pywin32-311-cp310-cp310-win_arm64.whl", hash = "sha256:0502d1facf1fed4839a9a51ccbcc63d952cf318f78ffc00a7e78528ac27d7a2b" }, - { file = "pywin32-311-cp311-cp311-win32.whl", hash = "sha256:184eb5e436dea364dcd3d2316d577d625c0351bf237c4e9a5fabbcfa5a58b151" }, - { file = "pywin32-311-cp311-cp311-win_amd64.whl", hash = "sha256:3ce80b34b22b17ccbd937a6e78e7225d80c52f5ab9940fe0506a1a16f3dab503" }, - { file = "pywin32-311-cp311-cp311-win_arm64.whl", hash = "sha256:a733f1388e1a842abb67ffa8e7aad0e70ac519e09b0f6a784e65a136ec7cefd2" }, - { file = "pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31" }, - { file = "pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067" }, - { file = "pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852" }, - { file = "pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d" }, - { file = "pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d" }, - { file = "pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a" }, - { file = "pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee" }, - { file = "pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87" }, - { file = "pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42" }, - { file = "pywin32-311-cp38-cp38-win32.whl", hash = "sha256:6c6f2969607b5023b0d9ce2541f8d2cbb01c4f46bc87456017cf63b73f1e2d8c" }, - { file = "pywin32-311-cp38-cp38-win_amd64.whl", hash = "sha256:c8015b09fb9a5e188f83b7b04de91ddca4658cee2ae6f3bc483f0b21a77ef6cd" }, - { file = "pywin32-311-cp39-cp39-win32.whl", hash = "sha256:aba8f82d551a942cb20d4a83413ccbac30790b50efb89a75e4f586ac0bb8056b" }, - { file = "pywin32-311-cp39-cp39-win_amd64.whl", hash = "sha256:e0c4cfb0621281fe40387df582097fd796e80430597cb9944f0ae70447bacd91" }, - { file = "pywin32-311-cp39-cp39-win_arm64.whl", hash = "sha256:62ea666235135fee79bb154e695f3ff67370afefd71bd7fea7512fc70ef31e3d" }, + {file = "pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5"}, + {file = "pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2"}, ] +[package.dependencies] +coverage = {version = ">=7.5", extras = ["toml"]} +pluggy = ">=1.2" +pytest = ">=6.2.5" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] + [[package]] -name = "pywinpty" -version = "2.0.15" -description = "Pseudo terminal support for Windows from Python." +name = "python-dateutil" +version = "2.9.0.post0" +description = "Extensions to the standard Python datetime module" optional = false -python-versions = ">=3.9" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" groups = ["dev"] -markers = "os_name == \"nt\"" files = [ - { file = "pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e" }, - { file = "pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca" }, - { file = "pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc" }, - { file = "pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408" }, - { file = "pywinpty-2.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:a4560ad8c01e537708d2790dbe7da7d986791de805d89dd0d3697ca59e9e4901" }, - { file = "pywinpty-2.0.15-cp39-cp39-win_amd64.whl", hash = "sha256:d261cd88fcd358cfb48a7ca0700db3e1c088c9c10403c9ebc0d8a8b57aa6a117" }, - { file = "pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2" }, + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, ] +[package.dependencies] +six = ">=1.5" + [[package]] name = "pyyaml" version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["dev"] files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -3037,121 +1176,13 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04" }, - { file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff" }, + {file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04"}, + {file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff"}, ] [package.dependencies] pyyaml = "*" -[[package]] -name = "pyzmq" -version = "27.0.0" -description = "Python bindings for 0MQ" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "pyzmq-27.0.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:b973ee650e8f442ce482c1d99ca7ab537c69098d53a3d046676a484fd710c87a" }, - { file = "pyzmq-27.0.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:661942bc7cd0223d569d808f2e5696d9cc120acc73bf3e88a1f1be7ab648a7e4" }, - { file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50360fb2a056ffd16e5f4177eee67f1dd1017332ea53fb095fe7b5bf29c70246" }, - { file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf209a6dc4b420ed32a7093642843cbf8703ed0a7d86c16c0b98af46762ebefb" }, - { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c2dace4a7041cca2fba5357a2d7c97c5effdf52f63a1ef252cfa496875a3762d" }, - { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:63af72b2955fc77caf0a77444baa2431fcabb4370219da38e1a9f8d12aaebe28" }, - { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e8c4adce8e37e75c4215297d7745551b8dcfa5f728f23ce09bf4e678a9399413" }, - { file = "pyzmq-27.0.0-cp310-cp310-win32.whl", hash = "sha256:5d5ef4718ecab24f785794e0e7536436698b459bfbc19a1650ef55280119d93b" }, - { file = "pyzmq-27.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:e40609380480b3d12c30f841323f42451c755b8fece84235236f5fe5ffca8c1c" }, - { file = "pyzmq-27.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:6b0397b0be277b46762956f576e04dc06ced265759e8c2ff41a0ee1aa0064198" }, - { file = "pyzmq-27.0.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:21457825249b2a53834fa969c69713f8b5a79583689387a5e7aed880963ac564" }, - { file = "pyzmq-27.0.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1958947983fef513e6e98eff9cb487b60bf14f588dc0e6bf35fa13751d2c8251" }, - { file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0dc628b5493f9a8cd9844b8bee9732ef587ab00002157c9329e4fc0ef4d3afa" }, - { file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7bbe9e1ed2c8d3da736a15694d87c12493e54cc9dc9790796f0321794bbc91f" }, - { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dc1091f59143b471d19eb64f54bae4f54bcf2a466ffb66fe45d94d8d734eb495" }, - { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7011ade88c8e535cf140f8d1a59428676fbbce7c6e54fefce58bf117aefb6667" }, - { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2c386339d7e3f064213aede5d03d054b237937fbca6dd2197ac8cf3b25a6b14e" }, - { file = "pyzmq-27.0.0-cp311-cp311-win32.whl", hash = "sha256:0546a720c1f407b2172cb04b6b094a78773491497e3644863cf5c96c42df8cff" }, - { file = "pyzmq-27.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:15f39d50bd6c9091c67315ceb878a4f531957b121d2a05ebd077eb35ddc5efed" }, - { file = "pyzmq-27.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c5817641eebb391a2268c27fecd4162448e03538387093cdbd8bf3510c316b38" }, - { file = "pyzmq-27.0.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:cbabc59dcfaac66655c040dfcb8118f133fb5dde185e5fc152628354c1598e52" }, - { file = "pyzmq-27.0.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0ac5179cba4b2f94f1aa208fbb77b62c4c9bf24dd446278b8b602cf85fcda3" }, - { file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53a48f0228eab6cbf69fde3aa3c03cbe04e50e623ef92ae395fce47ef8a76152" }, - { file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:111db5f395e09f7e775f759d598f43cb815fc58e0147623c4816486e1a39dc22" }, - { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c8878011653dcdc27cc2c57e04ff96f0471e797f5c19ac3d7813a245bcb24371" }, - { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:c0ed2c1f335ba55b5fdc964622254917d6b782311c50e138863eda409fbb3b6d" }, - { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e918d70862d4cfd4b1c187310015646a14e1f5917922ab45b29f28f345eeb6be" }, - { file = "pyzmq-27.0.0-cp312-abi3-win32.whl", hash = "sha256:88b4e43cab04c3c0f0d55df3b1eef62df2b629a1a369b5289a58f6fa8b07c4f4" }, - { file = "pyzmq-27.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:dce4199bf5f648a902ce37e7b3afa286f305cd2ef7a8b6ec907470ccb6c8b371" }, - { file = "pyzmq-27.0.0-cp312-abi3-win_arm64.whl", hash = "sha256:56e46bbb85d52c1072b3f809cc1ce77251d560bc036d3a312b96db1afe76db2e" }, - { file = "pyzmq-27.0.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c36ad534c0c29b4afa088dc53543c525b23c0797e01b69fef59b1a9c0e38b688" }, - { file = "pyzmq-27.0.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:67855c14173aec36395d7777aaba3cc527b393821f30143fd20b98e1ff31fd38" }, - { file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8617c7d43cd8ccdb62aebe984bfed77ca8f036e6c3e46dd3dddda64b10f0ab7a" }, - { file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67bfbcbd0a04c575e8103a6061d03e393d9f80ffdb9beb3189261e9e9bc5d5e9" }, - { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5cd11d46d7b7e5958121b3eaf4cd8638eff3a720ec527692132f05a57f14341d" }, - { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b801c2e40c5aa6072c2f4876de8dccd100af6d9918d4d0d7aa54a1d982fd4f44" }, - { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20d5cb29e8c5f76a127c75b6e7a77e846bc4b655c373baa098c26a61b7ecd0ef" }, - { file = "pyzmq-27.0.0-cp313-cp313t-win32.whl", hash = "sha256:a20528da85c7ac7a19b7384e8c3f8fa707841fd85afc4ed56eda59d93e3d98ad" }, - { file = "pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f" }, - { file = "pyzmq-27.0.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:f4162dbbd9c5c84fb930a36f290b08c93e35fce020d768a16fc8891a2f72bab8" }, - { file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:4e7d0a8d460fba526cc047333bdcbf172a159b8bd6be8c3eb63a416ff9ba1477" }, - { file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:29f44e3c26b9783816ba9ce274110435d8f5b19bbd82f7a6c7612bb1452a3597" }, - { file = "pyzmq-27.0.0-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e435540fa1da54667f0026cf1e8407fe6d8a11f1010b7f06b0b17214ebfcf5e" }, - { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:51f5726de3532b8222e569990c8aa34664faa97038304644679a51d906e60c6e" }, - { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:42c7555123679637c99205b1aa9e8f7d90fe29d4c243c719e347d4852545216c" }, - { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a979b7cf9e33d86c4949df527a3018767e5f53bc3b02adf14d4d8db1db63ccc0" }, - { file = "pyzmq-27.0.0-cp38-cp38-win32.whl", hash = "sha256:26b72c5ae20bf59061c3570db835edb81d1e0706ff141747055591c4b41193f8" }, - { file = "pyzmq-27.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:55a0155b148fe0428285a30922f7213539aa84329a5ad828bca4bbbc665c70a4" }, - { file = "pyzmq-27.0.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:100f6e5052ba42b2533011d34a018a5ace34f8cac67cb03cfa37c8bdae0ca617" }, - { file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:bf6c6b061efd00404b9750e2cfbd9507492c8d4b3721ded76cb03786131be2ed" }, - { file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ee05728c0b0b2484a9fc20466fa776fffb65d95f7317a3419985b8c908563861" }, - { file = "pyzmq-27.0.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7cdf07fe0a557b131366f80727ec8ccc4b70d89f1e3f920d94a594d598d754f0" }, - { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:90252fa2ff3a104219db1f5ced7032a7b5fc82d7c8d2fec2b9a3e6fd4e25576b" }, - { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ea6d441c513bf18c578c73c323acf7b4184507fc244762193aa3a871333c9045" }, - { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ae2b34bcfaae20c064948a4113bf8709eee89fd08317eb293ae4ebd69b4d9740" }, - { file = "pyzmq-27.0.0-cp39-cp39-win32.whl", hash = "sha256:5b10bd6f008937705cf6e7bf8b6ece5ca055991e3eb130bca8023e20b86aa9a3" }, - { file = "pyzmq-27.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:00387d12a8af4b24883895f7e6b9495dc20a66027b696536edac35cb988c38f3" }, - { file = "pyzmq-27.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:4c19d39c04c29a6619adfeb19e3735c421b3bfee082f320662f52e59c47202ba" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:656c1866505a5735d0660b7da6d7147174bbf59d4975fc2b7f09f43c9bc25745" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:74175b9e12779382432dd1d1f5960ebe7465d36649b98a06c6b26be24d173fab" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8c6de908465697a8708e4d6843a1e884f567962fc61eb1706856545141d0cbb" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c644aaacc01d0df5c7072826df45e67301f191c55f68d7b2916d83a9ddc1b551" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:10f70c1d9a446a85013a36871a296007f6fe4232b530aa254baf9da3f8328bc0" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd1dc59763effd1576f8368047c9c31468fce0af89d76b5067641137506792ae" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:60e8cc82d968174650c1860d7b716366caab9973787a1c060cf8043130f7d0f7" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:14fe7aaac86e4e93ea779a821967360c781d7ac5115b3f1a171ced77065a0174" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6ad0562d4e6abb785be3e4dd68599c41be821b521da38c402bc9ab2a8e7ebc7e" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:9df43a2459cd3a3563404c1456b2c4c69564daa7dbaf15724c09821a3329ce46" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8c86ea8fe85e2eb0ffa00b53192c401477d5252f6dd1db2e2ed21c1c30d17e5e" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:c45fee3968834cd291a13da5fac128b696c9592a9493a0f7ce0b47fa03cc574d" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cae73bb6898c4e045fbed5024cb587e4110fddb66f6163bcab5f81f9d4b9c496" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:26d542258c7a1f35a9cff3d887687d3235006134b0ac1c62a6fe1ad3ac10440e" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:04cd50ef3b28e35ced65740fb9956a5b3f77a6ff32fcd887e3210433f437dd0f" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:39ddd3ba0a641f01d8f13a3cfd4c4924eb58e660d8afe87e9061d6e8ca6f7ac3" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:8ca7e6a0388dd9e1180b14728051068f4efe83e0d2de058b5ff92c63f399a73f" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2524c40891be6a3106885a3935d58452dd83eb7a5742a33cc780a1ad4c49dec0" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a56e3e5bd2d62a01744fd2f1ce21d760c7c65f030e9522738d75932a14ab62a" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:096af9e133fec3a72108ddefba1e42985cb3639e9de52cfd336b6fc23aa083e9" }, - { file = "pyzmq-27.0.0.tar.gz", hash = "sha256:b1f08eeb9ce1510e6939b6e5dcd46a17765e2333daae78ecf4606808442e52cf" }, -] - -[package.dependencies] -cffi = {version = "*", markers = "implementation_name == \"pypy\""} - -[[package]] -name = "referencing" -version = "0.36.2" -description = "JSON Referencing + Python" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0" }, - { file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa" }, -] - -[package.dependencies] -attrs = ">=22.2.0" -rpds-py = ">=0.7.0" - [[package]] name = "requests" version = "2.32.4" @@ -3160,8 +1191,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c" }, - { file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422" }, + {file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c"}, + {file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"}, ] [package.dependencies] @@ -3174,440 +1205,57 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] -[[package]] -name = "rfc3339-validator" -version = "0.1.4" -description = "A pure python RFC3339 validator" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["dev"] -files = [ - {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, - {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "rfc3986-validator" -version = "0.1.1" -description = "Pure python rfc3986 validator" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["dev"] -files = [ - {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, - {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, -] - -[[package]] -name = "rfc3987-syntax" -version = "1.1.0" -description = "Helper functions to syntactically validate strings according to RFC 3987." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "rfc3987_syntax-1.1.0-py3-none-any.whl", hash = "sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f" }, - { file = "rfc3987_syntax-1.1.0.tar.gz", hash = "sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d" }, -] - -[package.dependencies] -lark = ">=1.2.2" - -[package.extras] -testing = ["pytest (>=8.3.5)"] - -[[package]] -name = "rpds-py" -version = "0.26.0" -description = "Python bindings to Rust's persistent data structures (rpds)" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "rpds_py-0.26.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4c70c70f9169692b36307a95f3d8c0a9fcd79f7b4a383aad5eaa0e9718b79b37" }, - { file = "rpds_py-0.26.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:777c62479d12395bfb932944e61e915741e364c843afc3196b694db3d669fcd0" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec671691e72dff75817386aa02d81e708b5a7ec0dec6669ec05213ff6b77e1bd" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a1cb5d6ce81379401bbb7f6dbe3d56de537fb8235979843f0d53bc2e9815a79" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f789e32fa1fb6a7bf890e0124e7b42d1e60d28ebff57fe806719abb75f0e9a3" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c55b0a669976cf258afd718de3d9ad1b7d1fe0a91cd1ab36f38b03d4d4aeaaf" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c70d9ec912802ecfd6cd390dadb34a9578b04f9bcb8e863d0a7598ba5e9e7ccc" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3021933c2cb7def39d927b9862292e0f4c75a13d7de70eb0ab06efed4c508c19" }, - { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8a7898b6ca3b7d6659e55cdac825a2e58c638cbf335cde41f4619e290dd0ad11" }, - { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:12bff2ad9447188377f1b2794772f91fe68bb4bbfa5a39d7941fbebdbf8c500f" }, - { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:191aa858f7d4902e975d4cf2f2d9243816c91e9605070aeb09c0a800d187e323" }, - { file = "rpds_py-0.26.0-cp310-cp310-win32.whl", hash = "sha256:b37a04d9f52cb76b6b78f35109b513f6519efb481d8ca4c321f6a3b9580b3f45" }, - { file = "rpds_py-0.26.0-cp310-cp310-win_amd64.whl", hash = "sha256:38721d4c9edd3eb6670437d8d5e2070063f305bfa2d5aa4278c51cedcd508a84" }, - { file = "rpds_py-0.26.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9e8cb77286025bdb21be2941d64ac6ca016130bfdcd228739e8ab137eb4406ed" }, - { file = "rpds_py-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e09330b21d98adc8ccb2dbb9fc6cb434e8908d4c119aeaa772cb1caab5440a0" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9c1b92b774b2e68d11193dc39620d62fd8ab33f0a3c77ecdabe19c179cdbc1" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:824e6d3503ab990d7090768e4dfd9e840837bae057f212ff9f4f05ec6d1975e7" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ad7fd2258228bf288f2331f0a6148ad0186b2e3643055ed0db30990e59817a6" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dc23bbb3e06ec1ea72d515fb572c1fea59695aefbffb106501138762e1e915e" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d80bf832ac7b1920ee29a426cdca335f96a2b5caa839811803e999b41ba9030d" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0919f38f5542c0a87e7b4afcafab6fd2c15386632d249e9a087498571250abe3" }, - { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d422b945683e409000c888e384546dbab9009bb92f7c0b456e217988cf316107" }, - { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a7711fa562ba2da1aa757e11024ad6d93bad6ad7ede5afb9af144623e5f76a" }, - { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238e8c8610cb7c29460e37184f6799547f7e09e6a9bdbdab4e8edb90986a2318" }, - { file = "rpds_py-0.26.0-cp311-cp311-win32.whl", hash = "sha256:893b022bfbdf26d7bedb083efeea624e8550ca6eb98bf7fea30211ce95b9201a" }, - { file = "rpds_py-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:87a5531de9f71aceb8af041d72fc4cab4943648d91875ed56d2e629bef6d4c03" }, - { file = "rpds_py-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:de2713f48c1ad57f89ac25b3cb7daed2156d8e822cf0eca9b96a6f990718cc41" }, - { file = "rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d" }, - { file = "rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323" }, - { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158" }, - { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3" }, - { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2" }, - { file = "rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44" }, - { file = "rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c" }, - { file = "rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8" }, - { file = "rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d" }, - { file = "rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1" }, - { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9" }, - { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9" }, - { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba" }, - { file = "rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b" }, - { file = "rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5" }, - { file = "rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256" }, - { file = "rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618" }, - { file = "rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed" }, - { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632" }, - { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c" }, - { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0" }, - { file = "rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9" }, - { file = "rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9" }, - { file = "rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a" }, - { file = "rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387" }, - { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af" }, - { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33" }, - { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953" }, - { file = "rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9" }, - { file = "rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37" }, - { file = "rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867" }, - { file = "rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da" }, - { file = "rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b" }, - { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a" }, - { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170" }, - { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e" }, - { file = "rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f" }, - { file = "rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7" }, - { file = "rpds_py-0.26.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:7a48af25d9b3c15684059d0d1fc0bc30e8eee5ca521030e2bffddcab5be40226" }, - { file = "rpds_py-0.26.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0c71c2f6bf36e61ee5c47b2b9b5d47e4d1baad6426bfed9eea3e858fc6ee8806" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d815d48b1804ed7867b539236b6dd62997850ca1c91cad187f2ddb1b7bbef19" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84cfbd4d4d2cdeb2be61a057a258d26b22877266dd905809e94172dff01a42ae" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fbaa70553ca116c77717f513e08815aec458e6b69a028d4028d403b3bc84ff37" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39bfea47c375f379d8e87ab4bb9eb2c836e4f2069f0f65731d85e55d74666387" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1533b7eb683fb5f38c1d68a3c78f5fdd8f1412fa6b9bf03b40f450785a0ab915" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c5ab0ee51f560d179b057555b4f601b7df909ed31312d301b99f8b9fc6028284" }, - { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e5162afc9e0d1f9cae3b577d9c29ddbab3505ab39012cb794d94a005825bde21" }, - { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:43f10b007033f359bc3fa9cd5e6c1e76723f056ffa9a6b5c117cc35720a80292" }, - { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e3730a48e5622e598293eee0762b09cff34dd3f271530f47b0894891281f051d" }, - { file = "rpds_py-0.26.0-cp39-cp39-win32.whl", hash = "sha256:4b1f66eb81eab2e0ff5775a3a312e5e2e16bf758f7b06be82fb0d04078c7ac51" }, - { file = "rpds_py-0.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:519067e29f67b5c90e64fb1a6b6e9d2ec0ba28705c51956637bac23a2f4ddae1" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3c0909c5234543ada2515c05dc08595b08d621ba919629e94427e8e03539c958" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c1fb0cda2abcc0ac62f64e2ea4b4e64c57dfd6b885e693095460c61bde7bb18e" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84d142d2d6cf9b31c12aa4878d82ed3b2324226270b89b676ac62ccd7df52d08" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a547e21c5610b7e9093d870be50682a6a6cf180d6da0f42c47c306073bfdbbf6" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:35e9a70a0f335371275cdcd08bc5b8051ac494dd58bff3bbfb421038220dc871" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dfa6115c6def37905344d56fb54c03afc49104e2ca473d5dedec0f6606913b4" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:313cfcd6af1a55a286a3c9a25f64af6d0e46cf60bc5798f1db152d97a216ff6f" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f7bf2496fa563c046d05e4d232d7b7fd61346e2402052064b773e5c378bf6f73" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:aa81873e2c8c5aa616ab8e017a481a96742fdf9313c40f14338ca7dbf50cb55f" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:68ffcf982715f5b5b7686bdd349ff75d422e8f22551000c24b30eaa1b7f7ae84" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6188de70e190847bb6db3dc3981cbadff87d27d6fe9b4f0e18726d55795cee9b" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1c962145c7473723df9722ba4c058de12eb5ebedcb4e27e7d902920aa3831ee8" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f61a9326f80ca59214d1cceb0a09bb2ece5b2563d4e0cd37bfd5515c28510674" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:183f857a53bcf4b1b42ef0f57ca553ab56bdd170e49d8091e96c51c3d69ca696" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:941c1cfdf4799d623cf3aa1d326a6b4fdb7a5799ee2687f3516738216d2262fb" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72a8d9564a717ee291f554eeb4bfeafe2309d5ec0aa6c475170bdab0f9ee8e88" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:511d15193cbe013619dd05414c35a7dedf2088fcee93c6bbb7c77859765bd4e8" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aea1f9741b603a8d8fedb0ed5502c2bc0accbc51f43e2ad1337fe7259c2b77a5" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4019a9d473c708cf2f16415688ef0b4639e07abaa569d72f74745bbeffafa2c7" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:093d63b4b0f52d98ebae33b8c50900d3d67e0666094b1be7a12fffd7f65de74b" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2abe21d8ba64cded53a2a677e149ceb76dcf44284202d737178afe7ba540c1eb" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:4feb7511c29f8442cbbc28149a92093d32e815a28aa2c50d333826ad2a20fdf0" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e99685fc95d386da368013e7fb4269dd39c30d99f812a8372d62f244f662709c" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a90a13408a7a856b87be8a9f008fff53c5080eea4e4180f6c2e546e4a972fb5d" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ac51b65e8dc76cf4949419c54c5528adb24fc721df722fd452e5fbc236f5c40" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59b2093224a18c6508d95cfdeba8db9cbfd6f3494e94793b58972933fcee4c6d" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f01a5d6444a3258b00dc07b6ea4733e26f8072b788bef750baa37b370266137" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6e2c12160c72aeda9d1283e612f68804621f448145a210f1bf1d79151c47090" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb28c1f569f8d33b2b5dcd05d0e6ef7005d8639c54c2f0be824f05aedf715255" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1766b5724c3f779317d5321664a343c07773c8c5fd1532e4039e6cc7d1a815be" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b6d9e5a2ed9c4988c8f9b28b3bc0e3e5b1aaa10c28d210a594ff3a8c02742daf" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b5f7a446ddaf6ca0fad9a5535b56fbfc29998bf0e0b450d174bbec0d600e1d72" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:eed5ac260dd545fbc20da5f4f15e7efe36a55e0e7cf706e4ec005b491a9546a0" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:582462833ba7cee52e968b0341b85e392ae53d44c0f9af6a5927c80e539a8b67" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:69a607203441e07e9a8a529cff1d5b73f6a160f22db1097211e6212a68567d11" }, - { file = "rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0" }, -] - [[package]] name = "ruff" -version = "0.12.4" +version = "0.12.9" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - { file = "ruff-0.12.4-py3-none-linux_armv6l.whl", hash = "sha256:cb0d261dac457ab939aeb247e804125a5d521b21adf27e721895b0d3f83a0d0a" }, - { file = "ruff-0.12.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:55c0f4ca9769408d9b9bac530c30d3e66490bd2beb2d3dae3e4128a1f05c7442" }, - { file = "ruff-0.12.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a8224cc3722c9ad9044da7f89c4c1ec452aef2cfe3904365025dd2f51daeae0e" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9949d01d64fa3672449a51ddb5d7548b33e130240ad418884ee6efa7a229586" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:be0593c69df9ad1465e8a2d10e3defd111fdb62dcd5be23ae2c06da77e8fcffb" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7dea966bcb55d4ecc4cc3270bccb6f87a337326c9dcd3c07d5b97000dbff41c" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:afcfa3ab5ab5dd0e1c39bf286d829e042a15e966b3726eea79528e2e24d8371a" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c057ce464b1413c926cdb203a0f858cd52f3e73dcb3270a3318d1630f6395bb3" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e64b90d1122dc2713330350626b10d60818930819623abbb56535c6466cce045" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2abc48f3d9667fdc74022380b5c745873499ff827393a636f7a59da1515e7c57" }, - { file = "ruff-0.12.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2b2449dc0c138d877d629bea151bee8c0ae3b8e9c43f5fcaafcd0c0d0726b184" }, - { file = "ruff-0.12.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:56e45bb11f625db55f9b70477062e6a1a04d53628eda7784dce6e0f55fd549eb" }, - { file = "ruff-0.12.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:478fccdb82ca148a98a9ff43658944f7ab5ec41c3c49d77cd99d44da019371a1" }, - { file = "ruff-0.12.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0fc426bec2e4e5f4c4f182b9d2ce6a75c85ba9bcdbe5c6f2a74fcb8df437df4b" }, - { file = "ruff-0.12.4-py3-none-win32.whl", hash = "sha256:4de27977827893cdfb1211d42d84bc180fceb7b72471104671c59be37041cf93" }, - { file = "ruff-0.12.4-py3-none-win_amd64.whl", hash = "sha256:fe0b9e9eb23736b453143d72d2ceca5db323963330d5b7859d60d101147d461a" }, - { file = "ruff-0.12.4-py3-none-win_arm64.whl", hash = "sha256:0618ec4442a83ab545e5b71202a5c0ed7791e8471435b94e655b570a5031a98e" }, - { file = "ruff-0.12.4.tar.gz", hash = "sha256:13efa16df6c6eeb7d0f091abae50f58e9522f3843edb40d56ad52a5a4a4b6873" }, -] - -[[package]] -name = "send2trash" -version = "1.8.3" -description = "Send file to trash natively under Mac OS X, Windows and Linux" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -groups = ["dev"] -files = [ - {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, - {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, -] - -[package.extras] -nativelib = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\"", "pywin32 ; sys_platform == \"win32\""] -objc = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\""] -win32 = ["pywin32 ; sys_platform == \"win32\""] - -[[package]] -name = "setuptools" -version = "80.9.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922" }, - { file = "setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c" }, + {file = "ruff-0.12.9-py3-none-linux_armv6l.whl", hash = "sha256:fcebc6c79fcae3f220d05585229463621f5dbf24d79fdc4936d9302e177cfa3e"}, + {file = "ruff-0.12.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:aed9d15f8c5755c0e74467731a007fcad41f19bcce41cd75f768bbd687f8535f"}, + {file = "ruff-0.12.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5b15ea354c6ff0d7423814ba6d44be2807644d0c05e9ed60caca87e963e93f70"}, + {file = "ruff-0.12.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d596c2d0393c2502eaabfef723bd74ca35348a8dac4267d18a94910087807c53"}, + {file = "ruff-0.12.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b15599931a1a7a03c388b9c5df1bfa62be7ede6eb7ef753b272381f39c3d0ff"}, + {file = "ruff-0.12.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3d02faa2977fb6f3f32ddb7828e212b7dd499c59eb896ae6c03ea5c303575756"}, + {file = "ruff-0.12.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:17d5b6b0b3a25259b69ebcba87908496e6830e03acfb929ef9fd4c58675fa2ea"}, + {file = "ruff-0.12.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:72db7521860e246adbb43f6ef464dd2a532ef2ef1f5dd0d470455b8d9f1773e0"}, + {file = "ruff-0.12.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a03242c1522b4e0885af63320ad754d53983c9599157ee33e77d748363c561ce"}, + {file = "ruff-0.12.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fc83e4e9751e6c13b5046d7162f205d0a7bac5840183c5beebf824b08a27340"}, + {file = "ruff-0.12.9-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:881465ed56ba4dd26a691954650de6ad389a2d1fdb130fe51ff18a25639fe4bb"}, + {file = "ruff-0.12.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:43f07a3ccfc62cdb4d3a3348bf0588358a66da756aa113e071b8ca8c3b9826af"}, + {file = "ruff-0.12.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:07adb221c54b6bba24387911e5734357f042e5669fa5718920ee728aba3cbadc"}, + {file = "ruff-0.12.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f5cd34fabfdea3933ab85d72359f118035882a01bff15bd1d2b15261d85d5f66"}, + {file = "ruff-0.12.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:f6be1d2ca0686c54564da8e7ee9e25f93bdd6868263805f8c0b8fc6a449db6d7"}, + {file = "ruff-0.12.9-py3-none-win32.whl", hash = "sha256:cc7a37bd2509974379d0115cc5608a1a4a6c4bff1b452ea69db83c8855d53f93"}, + {file = "ruff-0.12.9-py3-none-win_amd64.whl", hash = "sha256:6fb15b1977309741d7d098c8a3cb7a30bc112760a00fb6efb7abc85f00ba5908"}, + {file = "ruff-0.12.9-py3-none-win_arm64.whl", hash = "sha256:63c8c819739d86b96d500cce885956a1a48ab056bbcbc61b747ad494b2485089"}, + {file = "ruff-0.12.9.tar.gz", hash = "sha256:fbd94b2e3c623f659962934e52c2bea6fc6da11f667a427a368adaf3af2c866a"}, ] -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.8.0) ; sys_platform != \"cygwin\""] -core = ["importlib_metadata (>=6) ; python_version < \"3.10\"", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.14.*)", "pytest-mypy"] - [[package]] name = "six" version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main", "dev"] -files = [ - { file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274" }, - { file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" }, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - -[[package]] -name = "soupsieve" -version = "2.7" -description = "A modern CSS selector implementation for Beautiful Soup." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4" }, - { file = "soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a" }, -] - -[[package]] -name = "stack-data" -version = "0.6.3" -description = "Extract data from python stack frames and tracebacks for informative displays" -optional = false -python-versions = "*" groups = ["dev"] files = [ - {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, - {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, -] - -[package.dependencies] -asttokens = ">=2.1.0" -executing = ">=1.2.0" -pure-eval = "*" - -[package.extras] -tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] - -[[package]] -name = "terminado" -version = "0.18.1" -description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, - {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, -] - -[package.dependencies] -ptyprocess = {version = "*", markers = "os_name != \"nt\""} -pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""} -tornado = ">=6.1.0" - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"] -typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"] - -[[package]] -name = "tinycss2" -version = "1.4.0" -description = "A tiny CSS parser" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, - {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, -] - -[package.dependencies] -webencodings = ">=0.4" - -[package.extras] -doc = ["sphinx", "sphinx_rtd_theme"] -test = ["pytest", "ruff"] - -[[package]] -name = "toolz" -version = "1.0.0" -description = "List processing tools and functional utilities" -optional = false -python-versions = ">=3.8" -groups = ["main"] -files = [ - {file = "toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236"}, - {file = "toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02"}, -] - -[[package]] -name = "tornado" -version = "6.5.1" -description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7" }, - { file = "tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6" }, - { file = "tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888" }, - { file = "tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331" }, - { file = "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" }, - { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401" }, - { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692" }, - { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a" }, - { file = "tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365" }, - { file = "tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b" }, - { file = "tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7" }, - { file = "tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c" }, -] - -[[package]] -name = "traitlets" -version = "5.14.3" -description = "Traitlets Python configuration system" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, - {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, -] - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] - -[[package]] -name = "types-python-dateutil" -version = "2.9.0.20250708" -description = "Typing stubs for python-dateutil" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "types_python_dateutil-2.9.0.20250708-py3-none-any.whl", hash = "sha256:4d6d0cc1cc4d24a2dc3816024e502564094497b713f7befda4d5bc7a8e3fd21f" }, - { file = "types_python_dateutil-2.9.0.20250708.tar.gz", hash = "sha256:ccdbd75dab2d6c9696c350579f34cffe2c281e4c5f27a585b2a2438dd1d5c8ab" }, + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] [[package]] name = "types-pyyaml" -version = "6.0.12.20250516" +version = "6.0.12.20250809" description = "Typing stubs for PyYAML" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530" }, - { file = "types_pyyaml-6.0.12.20250516.tar.gz", hash = "sha256:9f21a70216fc0fa1b216a8176db5f9e0af6eb35d2f2932acb87689d03a5bf6ba" }, + {file = "types_pyyaml-6.0.12.20250809-py3-none-any.whl", hash = "sha256:032b6003b798e7de1a1ddfeefee32fac6486bdfe4845e0ae0e7fb3ee4512b52f"}, + {file = "types_pyyaml-6.0.12.20250809.tar.gz", hash = "sha256:af4a1aca028f18e75297da2ee0da465f799627370d74073e96fee876524f61b5"}, ] [[package]] @@ -3618,52 +1266,25 @@ optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - { file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76" }, - { file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36" }, + {file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76"}, + {file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36"}, ] [[package]] name = "typing-inspection" -version = "0.4.1" +version = "0.4.2" description = "Runtime typing introspection tools" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - { file = "typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51" }, - { file = "typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28" }, + {file = "typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7"}, + {file = "typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464"}, ] [package.dependencies] typing-extensions = ">=4.12.0" -[[package]] -name = "tzdata" -version = "2025.2" -description = "Provider of IANA time zone data" -optional = false -python-versions = ">=2" -groups = ["main"] -files = [ - { file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8" }, - { file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9" }, -] - -[[package]] -name = "uri-template" -version = "1.3.0" -description = "RFC 6570 URI Template Processor" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, - {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, -] - -[package.extras] -dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"] - [[package]] name = "urllib3" version = "2.5.0" @@ -3672,8 +1293,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc" }, - { file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760" }, + {file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"}, + {file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760"}, ] [package.extras] @@ -3684,14 +1305,14 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.31.2" +version = "20.34.0" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11" }, - { file = "virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af" }, + {file = "virtualenv-20.34.0-py3-none-any.whl", hash = "sha256:341f5afa7eee943e4984a9207c025feedd768baff6753cd660c857ceb3e36026"}, + {file = "virtualenv-20.34.0.tar.gz", hash = "sha256:44815b2c9dee7ed86e387b842a84f20b93f7f417f95886ca1996a72a4138eb1a"}, ] [package.dependencies] @@ -3711,160 +1332,42 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26" }, - { file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112" }, - { file = "watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3" }, - { file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c" }, - { file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2" }, - { file = "watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c" }, - { file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948" }, - { file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860" }, - { file = "watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0" }, - { file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c" }, - { file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134" }, - { file = "watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b" }, - { file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8" }, - { file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a" }, - { file = "watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c" }, - { file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881" }, - { file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11" }, - { file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa" }, - { file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2" }, - { file = "watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a" }, - { file = "watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680" }, - { file = "watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f" }, - { file = "watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282" }, + {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26"}, + {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112"}, + {file = "watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c"}, + {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881"}, + {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11"}, + {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa"}, + {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2"}, + {file = "watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a"}, + {file = "watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680"}, + {file = "watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f"}, + {file = "watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282"}, ] [package.extras] watchmedo = ["PyYAML (>=3.10)"] -[[package]] -name = "wcwidth" -version = "0.2.13" -description = "Measures the displayed width of unicode strings in a terminal" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, - {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, -] - -[[package]] -name = "webcolors" -version = "24.11.1" -description = "A library for working with the color formats defined by HTML and CSS." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9" }, - { file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6" }, -] - -[[package]] -name = "webencodings" -version = "0.5.1" -description = "Character encoding aliases for legacy web content" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, - {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, -] - -[[package]] -name = "websocket-client" -version = "1.8.0" -description = "WebSocket client for Python with low level API options" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, - {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, -] - -[package.extras] -docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"] -optional = ["python-socks", "wsaccel"] -test = ["websockets"] - -[[package]] -name = "widgetsnbextension" -version = "4.0.14" -description = "Jupyter interactive widgets for Jupyter Notebook" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - { file = "widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575" }, - { file = "widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af" }, -] - -[[package]] -name = "xarray" -version = "2025.7.1" -description = "N-D labeled arrays and datasets in Python" -optional = false -python-versions = ">=3.11" -groups = ["main"] -files = [ - { file = "xarray-2025.7.1-py3-none-any.whl", hash = "sha256:e8647b659e53bd350d7c5a91c34dd4122ad6a3ca0bc41399d424a7c0273c7635" }, - { file = "xarray-2025.7.1.tar.gz", hash = "sha256:2884bf5672b540fcc6ff8c20a3196bda0d78fbfb4d67398d60526e97c2faceef" }, -] - -[package.dependencies] -numpy = ">=1.26" -packaging = ">=24.1" -pandas = ">=2.2" - -[package.extras] -accel = ["bottleneck", "flox (>=0.9)", "numba (>=0.59)", "numbagg (>=0.8)", "opt_einsum", "scipy (>=1.13)"] -complete = ["xarray[accel,etc,io,parallel,viz]"] -etc = ["sparse (>=0.15)"] -io = ["cftime", "fsspec", "h5netcdf", "netCDF4 (>=1.6.0)", "pooch", "pydap", "scipy (>=1.13)", "zarr (>=2.18)"] -parallel = ["dask[complete]"] -types = ["pandas-stubs", "scipy-stubs", "types-PyYAML", "types-Pygments", "types-colorama", "types-decorator", "types-defusedxml", "types-docutils", "types-networkx", "types-openpyxl", "types-pexpect", "types-psutil", "types-pycurl", "types-python-dateutil", "types-pytz", "types-setuptools"] -viz = ["cartopy (>=0.23)", "matplotlib", "nc-time-axis", "seaborn"] - -[[package]] -name = "zarr" -version = "3.1.0" -description = "An implementation of chunked, compressed, N-dimensional arrays for Python" -optional = false -python-versions = ">=3.11" -groups = ["main"] -files = [ - { file = "zarr-3.1.0-py3-none-any.whl", hash = "sha256:bd3d2f88d602d43f81df82e26dd115ea66635a2af5bf6da261d3c640bb4c1ce4" }, - { file = "zarr-3.1.0.tar.gz", hash = "sha256:ace5b111dc69d5315cb1655dfd0f816c5acf9798d2ad92f43b608a52c8c8ac2b" }, -] - -[package.dependencies] -donfig = ">=0.8" -numcodecs = { version = ">=0.14", extras = ["crc32c"] } -numpy = ">=1.26" -packaging = ">=22.0" -typing-extensions = ">=4.9" - -[package.extras] -docs = ["astroid (<4)", "numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "pytest", "rich", "s3fs (>=2023.10.0)", "sphinx (==8.1.3)", "sphinx-autoapi (==3.4.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx-copybutton", "sphinx-design", "sphinx-issues", "sphinx-reredirects", "towncrier"] -gpu = ["cupy-cuda12x"] -optional = ["rich", "universal-pathlib"] -remote = ["fsspec (>=2023.10.0)", "obstore (>=0.5.1)"] -remote-tests = ["botocore", "fsspec (>=2023.10.0)", "moto[s3,server]", "obstore (>=0.5.1)", "requests", "s3fs (>=2023.10.0)"] -test = ["coverage", "hypothesis", "mypy", "packaging", "pytest (<8.4)", "pytest-accept", "pytest-asyncio", "pytest-cov", "pytest-xdist", "rich", "tomlkit", "uv"] - [metadata] lock-version = "2.1" -python-versions = ">=3.13" -content-hash = "3ca97b9e51214f096f076795391e3d64556d52f47c53450bcf99ffd0c495f64b" +python-versions = ">=3.13,<3.15.0" +content-hash = "1db325c51badf87c9a1b8435aa6a233e47204df736d2ed3256a3799ba819ed50" diff --git a/pyproject.toml b/pyproject.toml index 81c3d03..a11dd15 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ authors = [ ] license = { text = "MPL2.0" } readme = "README.md" -requires-python = ">=3.13" +requires-python = ">=3.13,<3.15.0" dynamic = ["dependencies"] [tool.poetry.urls] @@ -16,18 +16,10 @@ repository = "https://github.com/alliander-opensource/meteoforge" documentation = "https://github.com/alliander-opensource/meteoforge" [tool.poetry.dependencies] -dask = "^2025.7" -netcdf4 = "^1.7.2" -numpy = "^2.3.1" -pydantic = "^2.11.7" -pyproj = "^3.7.1" -xarray = "^2025.7.1" -zarr = "^3.1.0" -colorlog = "^6.9.0" +pydantic = "^2.12.3" +colorlog = "^6.10.1" [tool.poetry.group.dev.dependencies] -coverage = "^7.9.2" -jupyter = "^1.1.1" mkdocs = "^1.6.1" mkdocs-material = "^9.6.15" mkdocstrings = { extras = ["python"], version = "^0.29.1" } @@ -36,6 +28,8 @@ pre-commit = "^4.2.0" pytest = "^8.4.1" ruff = "^0.12.4" types-pyyaml = "^6.0.12.20250516" +poetry-core = "^2.1.3" +pytest-cov = "^6.2.1" [build-system] requires = ["poetry-core"] @@ -105,7 +99,7 @@ addopts = [ "--cov-report=xml", "--cov-report=term-missing" ] -minversion = "8.3.2" +minversion = "8.4.1" testpaths = ["tests"] [tool.coverage.run] From 5304f886c4d211b88eca79379d1f7baf8de636a2 Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 21:55:43 +0200 Subject: [PATCH 27/50] feature: Partial copy and adjustment --- src/meteoforge/spatial_temporal/locations.py | 87 ++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/src/meteoforge/spatial_temporal/locations.py b/src/meteoforge/spatial_temporal/locations.py index 0a5cd78..ed13f74 100644 --- a/src/meteoforge/spatial_temporal/locations.py +++ b/src/meteoforge/spatial_temporal/locations.py @@ -1,2 +1,89 @@ # SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project # SPDX-License-Identifier: MPL-2.0 +from pyproj import CRS +from pyproj.exceptions import CRSError + +from src.meteoforge.logging.logging import logger + + +class MFLocation: + """The base class for representing geographic locations in MeteoForge. + + This class serves as a base for various location based formats, such as coordinates, bounding boxes, and polygons. + It provides a common interface for working with these different formats, allowing for the easy conversion and + manipulation of geographic data. + + Attributes + ---------- + x (float): + The x-coordinate of the location. Typically, this represents longitude, but this can vary based on the + Coordinate Reference System (CRS) used. + y (float): + The y-coordinate of the location. Typically, this represents latitude, but this can vary based on the + Coordinate Reference System (CRS) used. + crs (int): + The coordinate reference system of the location, if applicable via EPSG numerical code. This is used to + properly interpret the x and y coordinates in a geographic context. The default setting is EPSG code 4326, + which represents the WGS 84 geographic coordinate system. + + """ + + def __init__(self, *, x: int | float, y: int | float, epsg_code: int = 4326): + """Initializes the MFLocation with x, y coordinates and an optional EPSG code.""" + # Validate the input parameters + if self.valid_location(x, y, epsg_code): + # Set the instance variables + self.x = float(x) + self.y = float(y) + self.crs = epsg_code + else: + raise ValueError("Invalid location parameters") + + @staticmethod + def valid_location(x: float, y: float, epsg_code: int = 4326) -> bool: + """Validates the location parameters for type and existence.""" + logger.debug(f"Validating location: x={x}, y={y}, epgs_code={epsg_code}") + + # Validate the types of x, y, and epgs_code + if not isinstance(x, (int, float)): + raise ValueError("x must be a number") + if not isinstance(y, (int, float)): + raise ValueError("y must be a number") + if not isinstance(epsg_code, int): + raise ValueError("epgs_code must be an integer") + + logger.debug(f"Type validation passed: x={type(x)}, y={type(y)}, epgs_code={type(epsg_code)}") + + # Validate the CRS type suggested by the EPSG code + MFLocation.valid_crs(epsg_code) + + logger.debug(f"CRS validation passed for EPSG code: {epsg_code}") + + # Check that x and y are within valid ranges for geographic coordinates on the given CRS + ... + + logger.debug(f"Location validation passed and valid: x={x}, y={y}, epsg_code={epsg_code}") + + @staticmethod + def valid_crs(epsg_code: int) -> bool: + """Validates the EPSG code for known coordinate reference systems.""" + logger.debug(f"Validating CRS with EPSG code: {epsg_code}") + + try: + crs = CRS.from_epsg(epsg_code) + except CRSError as e: + raise ValueError(f"invalid EPSG code '{crs}': --<<-- {e} -->>--") from e + + # Check that the CRS is not deprecated + if crs.is_deprecated: + raise ValueError( + f"The CRS with EPSG code {epsg_code} is deprecated. Please use a different (non-deprecated) CRS." + ) + + # Check that the CRS is for an x,y based geographic coordinate system + if not crs.is_geographic and not crs.is_geocentric: + raise ValueError( + "The MFLocation class type only supports Geographic (CRS.is_geographic=True) and Geocentric Coordinate " + "Systems (CRS.is_geocentric=True)." + ) + return True From aaa8a5ea24affcdeeba0f067667158f24f4f1808 Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sun, 12 Oct 2025 11:33:20 +0200 Subject: [PATCH 28/50] feature: In between commit Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- CODE_OF_CONDUCT.rst => CODE_OF_CONDUCT.md | 63 +- SECURITY.md | 4 + poetry.lock | 3975 +++++++++++++++--- pyproject.toml | 19 +- src/__init__.py | 2 + src/meteoforge/core/__init__.py | 2 + src/meteoforge/logging/__init__.py | 2 + src/meteoforge/parameters/__init__.py | 2 + src/meteoforge/spatial_temporal/__init__.py | 2 + src/meteoforge/spatial_temporal/locations.py | 39 +- 10 files changed, 3405 insertions(+), 705 deletions(-) rename CODE_OF_CONDUCT.rst => CODE_OF_CONDUCT.md (58%) create mode 100644 src/__init__.py create mode 100644 src/meteoforge/core/__init__.py create mode 100644 src/meteoforge/logging/__init__.py create mode 100644 src/meteoforge/parameters/__init__.py create mode 100644 src/meteoforge/spatial_temporal/__init__.py diff --git a/CODE_OF_CONDUCT.rst b/CODE_OF_CONDUCT.md similarity index 58% rename from CODE_OF_CONDUCT.rst rename to CODE_OF_CONDUCT.md index 91f4640..067546c 100644 --- a/CODE_OF_CONDUCT.rst +++ b/CODE_OF_CONDUCT.md @@ -1,15 +1,9 @@ [//]: # (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) [//]: # (SPDX-License-Identifier: MPL-2.0) -.. _code-of-conduct: +# Code of Conduct -=============== -Code of Conduct -=============== - ----------- -Our Pledge ----------- +## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and @@ -18,33 +12,29 @@ size, disability, ethnicity, gender identity and expression, level of experience, education, socioeconomic status, nationality, personal appearance, race, religion, or sexual identity and orientation. -------------- -Our Standards -------------- +## Our Standards Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting +- The use of sexualized language or imagery and unwelcome sexual attention or + advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic + address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting --------------------- -Our Responsibilities --------------------- +## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in @@ -56,9 +46,7 @@ not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ------ -Scope ------ +## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of @@ -67,18 +55,17 @@ address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. -------------------- -Conflict Resolution -------------------- +## Conflict Resolution -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at OSPO@alliander. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at * +*OSPO@alliander**. All complaints will be reviewed and investigated and will result in a response that is deemed +necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to +the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership. ------------ -Attribution ------------ +## Attribution This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at -https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + diff --git a/SECURITY.md b/SECURITY.md index 4c4821f..5ebbfca 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -19,6 +19,10 @@ Please describe clearly how the issue can be reproduced, so we can fix it quickl the affected system and a description of the vulnerability are sufficient. We may contact you if we need more information about a complex vulnerability. +## Other issues + +For non-security related issues, please use the [issue tracker]( + ## Thanks We don't have a bug bounty program, but we're grateful for all the reports we get. We offer an Alliander Security hoodie diff --git a/poetry.lock b/poetry.lock index eae691b..3b274e4 100644 --- a/poetry.lock +++ b/poetry.lock @@ -6,12 +6,167 @@ version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" -groups = ["main"] +groups = ["main", "dev"] files = [ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] +[[package]] +name = "anyio" +version = "4.9.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c" }, + { file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028" }, +] + +[package.dependencies] +idna = ">=2.8" +sniffio = ">=1.1" + +[package.extras] +doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] +test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] +trio = ["trio (>=0.26.1)"] + +[[package]] +name = "appnope" +version = "0.1.4" +description = "Disable App Nap on macOS >= 10.9" +optional = false +python-versions = ">=3.6" +groups = ["dev"] +markers = "platform_system == \"Darwin\"" +files = [ + {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, + {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, +] + +[[package]] +name = "argon2-cffi" +version = "25.1.0" +description = "Argon2 for Python" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741" }, + { file = "argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1" }, +] + +[package.dependencies] +argon2-cffi-bindings = "*" + +[[package]] +name = "argon2-cffi-bindings" +version = "21.2.0" +description = "Low-level CFFI bindings for Argon2" +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"}, + {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, +] + +[package.dependencies] +cffi = ">=1.0.1" + +[package.extras] +dev = ["cogapp", "pre-commit", "pytest", "wheel"] +tests = ["pytest"] + +[[package]] +name = "arrow" +version = "1.3.0" +description = "Better dates & times for Python" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, + {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, +] + +[package.dependencies] +python-dateutil = ">=2.7.0" +types-python-dateutil = ">=2.8.10" + +[package.extras] +doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] +test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"] + +[[package]] +name = "asttokens" +version = "3.0.0" +description = "Annotate AST trees with source code positions" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2" }, + { file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7" }, +] + +[package.extras] +astroid = ["astroid (>=2,<4)"] +test = ["astroid (>=2,<4)", "pytest", "pytest-cov", "pytest-xdist"] + +[[package]] +name = "async-lru" +version = "2.0.5" +description = "Simple LRU cache for asyncio" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943" }, + { file = "async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb" }, +] + +[[package]] +name = "attrs" +version = "25.3.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3" }, + { file = "attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b" }, +] + +[package.extras] +benchmark = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +cov = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier"] +tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\""] + [[package]] name = "babel" version = "2.17.0" @@ -20,8 +175,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, - {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, + { file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2" }, + { file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d" }, ] [package.extras] @@ -35,30 +190,152 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f"}, - {file = "backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf"}, - {file = "backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa"}, - {file = "backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b"}, - {file = "backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9"}, - {file = "backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60"}, - {file = "backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59"}, + { file = "backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f" }, + { file = "backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf" }, + { file = "backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa" }, + { file = "backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b" }, + { file = "backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9" }, + { file = "backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60" }, + { file = "backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59" }, ] [package.extras] extras = ["regex"] +[[package]] +name = "beautifulsoup4" +version = "4.13.4" +description = "Screen-scraping library" +optional = false +python-versions = ">=3.7.0" +groups = ["dev"] +files = [ + { file = "beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b" }, + { file = "beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195" }, +] + +[package.dependencies] +soupsieve = ">1.2" +typing-extensions = ">=4.0.0" + +[package.extras] +cchardet = ["cchardet"] +chardet = ["chardet"] +charset-normalizer = ["charset-normalizer"] +html5lib = ["html5lib"] +lxml = ["lxml"] + +[[package]] +name = "bleach" +version = "6.2.0" +description = "An easy safelist-based HTML-sanitizing tool." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e" }, + { file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f" }, +] + +[package.dependencies] +tinycss2 = { version = ">=1.1.0,<1.5", optional = true, markers = "extra == \"css\"" } +webencodings = "*" + +[package.extras] +css = ["tinycss2 (>=1.1.0,<1.5)"] + [[package]] name = "certifi" -version = "2025.8.3" +version = "2025.7.14" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.7" +groups = ["main", "dev"] +files = [ + { file = "certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2" }, + { file = "certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995" }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +description = "Foreign Function Interface for Python calling C code." +optional = false +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5"}, - {file = "certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] +[package.dependencies] +pycparser = "*" + [[package]] name = "cfgv" version = "3.4.0" @@ -71,93 +348,155 @@ files = [ {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, ] +[[package]] +name = "cftime" +version = "1.6.4.post1" +description = "Time-handling functionality from netcdf4-python" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "cftime-1.6.4.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0baa9bc4850929da9f92c25329aa1f651e2d6f23e237504f337ee9e12a769f5d"}, + {file = "cftime-1.6.4.post1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6bb6b087f4b2513c37670bccd457e2a666ca489c5f2aad6e2c0e94604dc1b5b9"}, + {file = "cftime-1.6.4.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d9bdeb9174962c9ca00015190bfd693de6b0ec3ec0b3dbc35c693a4f48efdcc"}, + {file = "cftime-1.6.4.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e735cfd544878eb94d0108ff5a093bd1a332dba90f979a31a357756d609a90d5"}, + {file = "cftime-1.6.4.post1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1dcd1b140bf50da6775c56bd7ca179e84bd258b2f159b53eefd5c514b341f2bf"}, + {file = "cftime-1.6.4.post1-cp310-cp310-win_amd64.whl", hash = "sha256:e60b8f24b20753f7548f410f7510e28b941f336f84bd34e3cfd7874af6e70281"}, + {file = "cftime-1.6.4.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1bf7be0a0afc87628cb8c8483412aac6e48e83877004faa0936afb5bf8a877ba"}, + {file = "cftime-1.6.4.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f64ca83acc4e3029f737bf3a32530ffa1fbf53124f5bee70b47548bc58671a7"}, + {file = "cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ebdfd81726b0cfb8b524309224fa952898dfa177c13d5f6af5b18cefbf497d"}, + {file = "cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ea0965a4c87739aebd84fe8eed966e5809d10065eeffd35c99c274b6f8da15"}, + {file = "cftime-1.6.4.post1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:800a18aea4e8cb2b206450397cb8a53b154798738af3cdd3c922ce1ca198b0e6"}, + {file = "cftime-1.6.4.post1-cp311-cp311-win_amd64.whl", hash = "sha256:5dcfc872f455db1f12eabe3c3ba98e93757cd60ed3526a53246e966ccde46c8a"}, + {file = "cftime-1.6.4.post1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a590f73506f4704ba5e154ef55bfbaed5e1b4ac170f3caeb8c58e4f2c619ee4e"}, + {file = "cftime-1.6.4.post1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:933cb10e1af4e362e77f513e3eb92b34a688729ddbf938bbdfa5ac20a7f44ba0"}, + {file = "cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf17a1b36f62e9e73c4c9363dd811e1bbf1170f5ac26d343fb26012ccf482908"}, + {file = "cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e18021f421aa26527bad8688c1acf0c85fa72730beb6efce969c316743294f2"}, + {file = "cftime-1.6.4.post1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5835b9d622f9304d1c23a35603a0f068739f428d902860f25e6e7e5a1b7cd8ea"}, + {file = "cftime-1.6.4.post1-cp312-cp312-win_amd64.whl", hash = "sha256:7f50bf0d1b664924aaee636eb2933746b942417d1f8b82ab6c1f6e8ba0da6885"}, + {file = "cftime-1.6.4.post1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5c89766ebf088c097832ea618c24ed5075331f0b7bf8e9c2d4144aefbf2f1850"}, + {file = "cftime-1.6.4.post1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7f27113f7ccd1ca32881fdcb9a4bec806a5f54ae621fc1c374f1171f3ed98ef2"}, + {file = "cftime-1.6.4.post1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da367b23eea7cf4df071c88e014a1600d6c5bbf22e3393a4af409903fa397e28"}, + {file = "cftime-1.6.4.post1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6579c5c83cdf09d73aa94c7bc34925edd93c5f2c7dd28e074f568f7e376271a0"}, + {file = "cftime-1.6.4.post1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6b731c7133d17b479ca0c3c46a7a04f96197f0a4d753f4c2284c3ff0447279b4"}, + {file = "cftime-1.6.4.post1-cp313-cp313-win_amd64.whl", hash = "sha256:d2a8c223faea7f1248ab469cc0d7795dd46f2a423789038f439fee7190bae259"}, + {file = "cftime-1.6.4.post1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9df3e2d49e548c62d1939e923800b08d2ab732d3ac8d75b857edd7982c878552"}, + {file = "cftime-1.6.4.post1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2892b7e7654142d825655f60eb66c3e1af745901890316907071d44cf9a18d8a"}, + {file = "cftime-1.6.4.post1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4ab54e6c04e68395d454cd4001188fc4ade2fe48035589ed65af80c4527ef08"}, + {file = "cftime-1.6.4.post1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:568b69fc52f406e361db62a4d7a219c6fb0ced138937144c3b3a511648dd6c50"}, + {file = "cftime-1.6.4.post1-cp38-cp38-win_amd64.whl", hash = "sha256:640911d2629f4a8f81f6bc0163a983b6b94f86d1007449b8cbfd926136cda253"}, + {file = "cftime-1.6.4.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:44e9f8052600803b55f8cb6bcac2be49405c21efa900ec77a9fb7f692db2f7a6"}, + {file = "cftime-1.6.4.post1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a90b6ef4a3fc65322c212a2c99cec75d1886f1ebaf0ff6189f7b327566762222"}, + {file = "cftime-1.6.4.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:652700130dbcca3ae36dbb5b61ff360e62aa09fabcabc42ec521091a14389901"}, + {file = "cftime-1.6.4.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a7fb6cc541a027dab37fdeb695f8a2b21cd7d200be606f81b5abc38f2391e2"}, + {file = "cftime-1.6.4.post1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:fc2c0abe2dbd147e1b1e6d0f3de19a5ea8b04956acc204830fd8418066090989"}, + {file = "cftime-1.6.4.post1-cp39-cp39-win_amd64.whl", hash = "sha256:0ee2f5af8643aa1b47b7e388763a1a6e0dc05558cd2902cffb9cbcf954397648"}, + {file = "cftime-1.6.4.post1.tar.gz", hash = "sha256:50ac76cc9f10ab7bd46e44a71c51a6927051b499b4407df4f29ab13d741b942f"}, +] + +[package.dependencies] +numpy = {version = ">=1.26.0b1", markers = "python_version >= \"3.12.0.rc1\""} + [[package]] name = "charset-normalizer" -version = "3.4.3" +version = "3.4.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "charset_normalizer-3.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fb7f67a1bfa6e40b438170ebdc8158b78dc465a5a67b6dde178a46987b244a72"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc9370a2da1ac13f0153780040f465839e6cccb4a1e44810124b4e22483c93fe"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:07a0eae9e2787b586e129fdcbe1af6997f8d0e5abaa0bc98c0e20e124d67e601"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:74d77e25adda8581ffc1c720f1c81ca082921329452eba58b16233ab1842141c"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0e909868420b7049dafd3a31d45125b31143eec59235311fc4c57ea26a4acd2"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c6f162aabe9a91a309510d74eeb6507fab5fff92337a15acbe77753d88d9dcf0"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4ca4c094de7771a98d7fbd67d9e5dbf1eb73efa4f744a730437d8a3a5cf994f0"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:02425242e96bcf29a49711b0ca9f37e451da7c70562bc10e8ed992a5a7a25cc0"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:78deba4d8f9590fe4dae384aeff04082510a709957e968753ff3c48399f6f92a"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-win32.whl", hash = "sha256:d79c198e27580c8e958906f803e63cddb77653731be08851c7df0b1a14a8fc0f"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:c6e490913a46fa054e03699c70019ab869e990270597018cef1d8562132c2669"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-win32.whl", hash = "sha256:6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0f2be7e0cf7754b9a30eb01f4295cc3d4358a479843b31f328afd210e2c7598c"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c60e092517a73c632ec38e290eba714e9627abe9d301c8c8a12ec32c314a2a4b"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:252098c8c7a873e17dd696ed98bbe91dbacd571da4b87df3736768efa7a792e4"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3653fad4fe3ed447a596ae8638b437f827234f01a8cd801842e43f3d0a6b281b"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8999f965f922ae054125286faf9f11bc6932184b93011d138925a1773830bbe9"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d95bfb53c211b57198bb91c46dd5a2d8018b3af446583aab40074bf7988401cb"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:5b413b0b1bfd94dbf4023ad6945889f374cd24e3f62de58d6bb102c4d9ae534a"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:b5e3b2d152e74e100a9e9573837aba24aab611d39428ded46f4e4022ea7d1942"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a2d08ac246bb48479170408d6c19f6385fa743e7157d716e144cad849b2dd94b"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-win32.whl", hash = "sha256:ec557499516fc90fd374bf2e32349a2887a876fbf162c160e3c01b6849eaf557"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:5d8d01eac18c423815ed4f4a2ec3b439d654e55ee4ad610e153cf02faf67ea40"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:70bfc5f2c318afece2f5838ea5e4c3febada0be750fcf4775641052bbba14d05"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23b6b24d74478dc833444cbd927c338349d6ae852ba53a0d02a2de1fce45b96e"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:34a7f768e3f985abdb42841e20e17b330ad3aaf4bb7e7aeeb73db2e70f077b99"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fb731e5deb0c7ef82d698b0f4c5bb724633ee2a489401594c5c88b02e6cb15f7"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:257f26fed7d7ff59921b78244f3cd93ed2af1800ff048c33f624c87475819dd7"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1ef99f0456d3d46a50945c98de1774da86f8e992ab5c77865ea8b8195341fc19"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:2c322db9c8c89009a990ef07c3bcc9f011a3269bc06782f916cd3d9eed7c9312"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:511729f456829ef86ac41ca78c63a5cb55240ed23b4b737faca0eb1abb1c41bc"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:88ab34806dea0671532d3f82d82b85e8fc23d7b2dd12fa837978dad9bb392a34"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-win32.whl", hash = "sha256:16a8770207946ac75703458e2c743631c79c59c5890c80011d536248f8eaa432"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:d22dbedd33326a4a5190dd4fe9e9e693ef12160c77382d9e87919bce54f3d4ca"}, - {file = "charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a"}, - {file = "charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14"}, + { file = "charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-win32.whl", hash = "sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a" }, + { file = "charset_normalizer-3.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a" }, + { file = "charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c" }, + { file = "charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7" }, + { file = "charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cad5f45b3146325bb38d6855642f6fd609c3f7cad4dbaf75549bf3b904d3184" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2680962a4848b3c4f155dc2ee64505a9c57186d0d56b43123b17ca3de18f0fa" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:36b31da18b8890a76ec181c3cf44326bf2c48e36d393ca1b72b3f484113ea344" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4074c5a429281bf056ddd4c5d3b740ebca4d43ffffe2ef4bf4d2d05114299da" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9e36a97bee9b86ef9a1cf7bb96747eb7a15c2f22bdb5b516434b00f2a599f02" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:1b1bde144d98e446b056ef98e59c256e9294f6b74d7af6846bf5ffdafd687a7d" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:915f3849a011c1f593ab99092f3cecfcb4d65d8feb4a64cf1bf2d22074dc0ec4" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:fb707f3e15060adf5b7ada797624a6c6e0138e2a26baa089df64c68ee98e040f" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:25a23ea5c7edc53e0f29bae2c44fcb5a1aa10591aae107f2a2b2583a9c5cbc64" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:770cab594ecf99ae64c236bc9ee3439c3f46be49796e265ce0cc8bc17b10294f" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-win32.whl", hash = "sha256:6a0289e4589e8bdfef02a80478f1dfcb14f0ab696b5a00e1f4b8a14a307a3c58" }, + { file = "charset_normalizer-3.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6fc1f5b51fa4cecaa18f2bd7a003f3dd039dd615cd69a2afd6d3b19aed6775f2" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76af085e67e56c8816c3ccf256ebd136def2ed9654525348cfa744b6802b69eb" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45ba65510e2647721e35323d6ef54c7974959f6081b58d4ef5d87c60c84919a" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:046595208aae0120559a67693ecc65dd75d46f7bf687f159127046628178dc45" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75d10d37a47afee94919c4fab4c22b9bc2a8bf7d4f46f87363bcf0573f3ff4f5" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6333b3aa5a12c26b2a4d4e7335a28f1475e0e5e17d69d55141ee3cab736f66d1" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8323a9b031aa0393768b87f04b4164a40037fb2a3c11ac06a03ffecd3618027" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:24498ba8ed6c2e0b56d4acbf83f2d989720a93b41d712ebd4f4979660db4417b" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:844da2b5728b5ce0e32d863af26f32b5ce61bc4273a9c720a9f3aa9df73b1455" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:65c981bdbd3f57670af8b59777cbfae75364b483fa8a9f420f08094531d54a01" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3c21d4fca343c805a52c0c78edc01e3477f6dd1ad7c47653241cf2a206d4fc58" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dc7039885fa1baf9be153a0626e337aa7ec8bf96b0128605fb0d77788ddc1681" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-win32.whl", hash = "sha256:8272b73e1c5603666618805fe821edba66892e2870058c94c53147602eab29c7" }, + { file = "charset_normalizer-3.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:70f7172939fdf8790425ba31915bfbe8335030f05b9913d7ae00a87d4395620a" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:005fa3432484527f9732ebd315da8da8001593e2cf46a3d817669f062c3d9ed4" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e92fca20c46e9f5e1bb485887d074918b13543b1c2a1185e69bb8d17ab6236a7" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50bf98d5e563b83cc29471fa114366e6806bc06bc7a25fd59641e41445327836" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:721c76e84fe669be19c5791da68232ca2e05ba5185575086e384352e2c309597" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82d8fd25b7f4675d0c47cf95b594d4e7b158aca33b76aa63d07186e13c0e0ab7" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3daeac64d5b371dea99714f08ffc2c208522ec6b06fbc7866a450dd446f5c0f" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dccab8d5fa1ef9bfba0590ecf4d46df048d18ffe3eec01eeb73a42e0d9e7a8ba" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:aaf27faa992bfee0264dc1f03f4c75e9fcdda66a519db6b957a3f826e285cf12" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:eb30abc20df9ab0814b5a2524f23d75dcf83cde762c161917a2b4b7b55b1e518" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:c72fbbe68c6f32f251bdc08b8611c7b3060612236e960ef848e0a517ddbe76c5" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:982bb1e8b4ffda883b3d0a521e23abcd6fd17418f6d2c4118d257a10199c0ce3" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-win32.whl", hash = "sha256:43e0933a0eff183ee85833f341ec567c0980dae57c464d8a508e1b2ceb336471" }, + { file = "charset_normalizer-3.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:d11b54acf878eef558599658b0ffca78138c8c3655cf4f3a4a673c437e67732e" }, + { file = "charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0" }, + { file = "charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63" }, ] [[package]] @@ -166,263 +505,1219 @@ version = "8.2.1" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.10" -groups = ["dev"] +groups = ["main", "dev"] files = [ - {file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b"}, - {file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202"}, + { file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b" }, + { file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202" }, ] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} +[[package]] +name = "cloudpickle" +version = "3.1.1" +description = "Pickler class to extend the standard pickle.Pickler functionality" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + { file = "cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e" }, + { file = "cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64" }, +] + [[package]] name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["main", "dev"] +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main", "dev"] +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] +markers = { main = "platform_system == \"Windows\" or sys_platform == \"win32\"" } + +[[package]] +name = "colorlog" +version = "6.9.0" +description = "Add colours to the output of Python's logging module." +optional = false +python-versions = ">=3.6" +groups = ["main"] +files = [ + { file = "colorlog-6.9.0-py3-none-any.whl", hash = "sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff" }, + { file = "colorlog-6.9.0.tar.gz", hash = "sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2" }, +] + +[package.dependencies] +colorama = { version = "*", markers = "sys_platform == \"win32\"" } + +[package.extras] +development = ["black", "flake8", "mypy", "pytest", "types-colorama"] + +[[package]] +name = "comm" +version = "0.2.2" +description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, + {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, +] + +[package.dependencies] +traitlets = ">=4" + +[package.extras] +test = ["pytest"] + +[[package]] +name = "coverage" +version = "7.9.2" +description = "Code coverage measurement for Python" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "coverage-7.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:66283a192a14a3854b2e7f3418d7db05cdf411012ab7ff5db98ff3b181e1f912" }, + { file = "coverage-7.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4e01d138540ef34fcf35c1aa24d06c3de2a4cffa349e29a10056544f35cca15f" }, + { file = "coverage-7.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f22627c1fe2745ee98d3ab87679ca73a97e75ca75eb5faee48660d060875465f" }, + { file = "coverage-7.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b1c2d8363247b46bd51f393f86c94096e64a1cf6906803fa8d5a9d03784bdbf" }, + { file = "coverage-7.9.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c10c882b114faf82dbd33e876d0cbd5e1d1ebc0d2a74ceef642c6152f3f4d547" }, + { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:de3c0378bdf7066c3988d66cd5232d161e933b87103b014ab1b0b4676098fa45" }, + { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1e2f097eae0e5991e7623958a24ced3282676c93c013dde41399ff63e230fcf2" }, + { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:28dc1f67e83a14e7079b6cea4d314bc8b24d1aed42d3582ff89c0295f09b181e" }, + { file = "coverage-7.9.2-cp310-cp310-win32.whl", hash = "sha256:bf7d773da6af9e10dbddacbf4e5cab13d06d0ed93561d44dae0188a42c65be7e" }, + { file = "coverage-7.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:0c0378ba787681ab1897f7c89b415bd56b0b2d9a47e5a3d8dc0ea55aac118d6c" }, + { file = "coverage-7.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a7a56a2964a9687b6aba5b5ced6971af308ef6f79a91043c05dd4ee3ebc3e9ba" }, + { file = "coverage-7.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:123d589f32c11d9be7fe2e66d823a236fe759b0096f5db3fb1b75b2fa414a4fa" }, + { file = "coverage-7.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:333b2e0ca576a7dbd66e85ab402e35c03b0b22f525eed82681c4b866e2e2653a" }, + { file = "coverage-7.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:326802760da234baf9f2f85a39e4a4b5861b94f6c8d95251f699e4f73b1835dc" }, + { file = "coverage-7.9.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19e7be4cfec248df38ce40968c95d3952fbffd57b400d4b9bb580f28179556d2" }, + { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0b4a4cb73b9f2b891c1788711408ef9707666501ba23684387277ededab1097c" }, + { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:2c8937fa16c8c9fbbd9f118588756e7bcdc7e16a470766a9aef912dd3f117dbd" }, + { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:42da2280c4d30c57a9b578bafd1d4494fa6c056d4c419d9689e66d775539be74" }, + { file = "coverage-7.9.2-cp311-cp311-win32.whl", hash = "sha256:14fa8d3da147f5fdf9d298cacc18791818f3f1a9f542c8958b80c228320e90c6" }, + { file = "coverage-7.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:549cab4892fc82004f9739963163fd3aac7a7b0df430669b75b86d293d2df2a7" }, + { file = "coverage-7.9.2-cp311-cp311-win_arm64.whl", hash = "sha256:c2667a2b913e307f06aa4e5677f01a9746cd08e4b35e14ebcde6420a9ebb4c62" }, + { file = "coverage-7.9.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ae9eb07f1cfacd9cfe8eaee6f4ff4b8a289a668c39c165cd0c8548484920ffc0" }, + { file = "coverage-7.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9ce85551f9a1119f02adc46d3014b5ee3f765deac166acf20dbb851ceb79b6f3" }, + { file = "coverage-7.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8f6389ac977c5fb322e0e38885fbbf901743f79d47f50db706e7644dcdcb6e1" }, + { file = "coverage-7.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff0d9eae8cdfcd58fe7893b88993723583a6ce4dfbfd9f29e001922544f95615" }, + { file = "coverage-7.9.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fae939811e14e53ed8a9818dad51d434a41ee09df9305663735f2e2d2d7d959b" }, + { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:31991156251ec202c798501e0a42bbdf2169dcb0f137b1f5c0f4267f3fc68ef9" }, + { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d0d67963f9cbfc7c7f96d4ac74ed60ecbebd2ea6eeb51887af0f8dce205e545f" }, + { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:49b752a2858b10580969ec6af6f090a9a440a64a301ac1528d7ca5f7ed497f4d" }, + { file = "coverage-7.9.2-cp312-cp312-win32.whl", hash = "sha256:88d7598b8ee130f32f8a43198ee02edd16d7f77692fa056cb779616bbea1b355" }, + { file = "coverage-7.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:9dfb070f830739ee49d7c83e4941cc767e503e4394fdecb3b54bfdac1d7662c0" }, + { file = "coverage-7.9.2-cp312-cp312-win_arm64.whl", hash = "sha256:4e2c058aef613e79df00e86b6d42a641c877211384ce5bd07585ed7ba71ab31b" }, + { file = "coverage-7.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:985abe7f242e0d7bba228ab01070fde1d6c8fa12f142e43debe9ed1dde686038" }, + { file = "coverage-7.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82c3939264a76d44fde7f213924021ed31f55ef28111a19649fec90c0f109e6d" }, + { file = "coverage-7.9.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae5d563e970dbe04382f736ec214ef48103d1b875967c89d83c6e3f21706d5b3" }, + { file = "coverage-7.9.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bdd612e59baed2a93c8843c9a7cb902260f181370f1d772f4842987535071d14" }, + { file = "coverage-7.9.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:256ea87cb2a1ed992bcdfc349d8042dcea1b80436f4ddf6e246d6bee4b5d73b6" }, + { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f44ae036b63c8ea432f610534a2668b0c3aee810e7037ab9d8ff6883de480f5b" }, + { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:82d76ad87c932935417a19b10cfe7abb15fd3f923cfe47dbdaa74ef4e503752d" }, + { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:619317bb86de4193debc712b9e59d5cffd91dc1d178627ab2a77b9870deb2868" }, + { file = "coverage-7.9.2-cp313-cp313-win32.whl", hash = "sha256:0a07757de9feb1dfafd16ab651e0f628fd7ce551604d1bf23e47e1ddca93f08a" }, + { file = "coverage-7.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:115db3d1f4d3f35f5bb021e270edd85011934ff97c8797216b62f461dd69374b" }, + { file = "coverage-7.9.2-cp313-cp313-win_arm64.whl", hash = "sha256:48f82f889c80af8b2a7bb6e158d95a3fbec6a3453a1004d04e4f3b5945a02694" }, + { file = "coverage-7.9.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:55a28954545f9d2f96870b40f6c3386a59ba8ed50caf2d949676dac3ecab99f5" }, + { file = "coverage-7.9.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cdef6504637731a63c133bb2e6f0f0214e2748495ec15fe42d1e219d1b133f0b" }, + { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcd5ebe66c7a97273d5d2ddd4ad0ed2e706b39630ed4b53e713d360626c3dbb3" }, + { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9303aed20872d7a3c9cb39c5d2b9bdbe44e3a9a1aecb52920f7e7495410dfab8" }, + { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc18ea9e417a04d1920a9a76fe9ebd2f43ca505b81994598482f938d5c315f46" }, + { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6406cff19880aaaadc932152242523e892faff224da29e241ce2fca329866584" }, + { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2d0d4f6ecdf37fcc19c88fec3e2277d5dee740fb51ffdd69b9579b8c31e4232e" }, + { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c33624f50cf8de418ab2b4d6ca9eda96dc45b2c4231336bac91454520e8d1fac" }, + { file = "coverage-7.9.2-cp313-cp313t-win32.whl", hash = "sha256:1df6b76e737c6a92210eebcb2390af59a141f9e9430210595251fbaf02d46926" }, + { file = "coverage-7.9.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f5fd54310b92741ebe00d9c0d1d7b2b27463952c022da6d47c175d246a98d1bd" }, + { file = "coverage-7.9.2-cp313-cp313t-win_arm64.whl", hash = "sha256:c48c2375287108c887ee87d13b4070a381c6537d30e8487b24ec721bf2a781cb" }, + { file = "coverage-7.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ddc39510ac922a5c4c27849b739f875d3e1d9e590d1e7b64c98dadf037a16cce" }, + { file = "coverage-7.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a535c0c7364acd55229749c2b3e5eebf141865de3a8f697076a3291985f02d30" }, + { file = "coverage-7.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df0f9ef28e0f20c767ccdccfc5ae5f83a6f4a2fbdfbcbcc8487a8a78771168c8" }, + { file = "coverage-7.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f3da12e0ccbcb348969221d29441ac714bbddc4d74e13923d3d5a7a0bebef7a" }, + { file = "coverage-7.9.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a17eaf46f56ae0f870f14a3cbc2e4632fe3771eab7f687eda1ee59b73d09fe4" }, + { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:669135a9d25df55d1ed56a11bf555f37c922cf08d80799d4f65d77d7d6123fcf" }, + { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:9d3a700304d01a627df9db4322dc082a0ce1e8fc74ac238e2af39ced4c083193" }, + { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:71ae8b53855644a0b1579d4041304ddc9995c7b21c8a1f16753c4d8903b4dfed" }, + { file = "coverage-7.9.2-cp39-cp39-win32.whl", hash = "sha256:dd7a57b33b5cf27acb491e890720af45db05589a80c1ffc798462a765be6d4d7" }, + { file = "coverage-7.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:f65bb452e579d5540c8b37ec105dd54d8b9307b07bcaa186818c104ffda22441" }, + { file = "coverage-7.9.2-pp39.pp310.pp311-none-any.whl", hash = "sha256:8a1166db2fb62473285bcb092f586e081e92656c7dfa8e9f62b4d39d7e6b5050" }, + { file = "coverage-7.9.2-py3-none-any.whl", hash = "sha256:e425cd5b00f6fc0ed7cdbd766c70be8baab4b7839e4d4fe5fac48581dd968ea4" }, + { file = "coverage-7.9.2.tar.gz", hash = "sha256:997024fa51e3290264ffd7492ec97d0690293ccd2b45a6cd7d82d945a4a80c8b" }, +] + +[package.extras] +toml = ["tomli ; python_full_version <= \"3.11.0a6\""] + +[[package]] +name = "crc32c" +version = "2.7.1" +description = "A python package implementing the crc32c algorithm in hardware and software" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1fd1f9c6b50d7357736676278a1b8c8986737b8a1c76d7eab4baa71d0b6af67f" }, + { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:805c2be1bc0e251c48439a62b0422385899c15289483692bc70e78473c1039f1" }, + { file = "crc32c-2.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f4333e62b7844dfde112dbb8489fd2970358eddc3310db21e943a9f6994df749" }, + { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f0fadc741e79dc705e2d9ee967473e8a061d26b04310ed739f1ee292f33674f" }, + { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91ced31055d26d59385d708bbd36689e1a1d604d4b0ceb26767eb5a83156f85d" }, + { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36ffa999b72e3c17f6a066ae9e970b40f8c65f38716e436c39a33b809bc6ed9f" }, + { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e80114dd7f462297e54d5da1b9ff472e5249c5a2b406aa51c371bb0edcbf76bd" }, + { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:676f5b46da268b5190f9fb91b3f037a00d114b411313664438525db876adc71f" }, + { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8d0e660c9ed269e90692993a4457a932fc22c9cc96caf79dd1f1a84da85bb312" }, + { file = "crc32c-2.7.1-cp310-cp310-win32.whl", hash = "sha256:17a2c3f8c6d85b04b5511af827b5dbbda4e672d188c0b9f20a8156e93a1aa7b6" }, + { file = "crc32c-2.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3208764c29688f91a35392073229975dd7687b6cb9f76b919dae442cabcd5126" }, + { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:19e03a50545a3ef400bd41667d5525f71030488629c57d819e2dd45064f16192" }, + { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c03286b1e5ce9bed7090084f206aacd87c5146b4b10de56fe9e86cbbbf851cf" }, + { file = "crc32c-2.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:80ebbf144a1a56a532b353e81fa0f3edca4f4baa1bf92b1dde2c663a32bb6a15" }, + { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96b794fd11945298fdd5eb1290a812efb497c14bc42592c5c992ca077458eeba" }, + { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9df7194dd3c0efb5a21f5d70595b7a8b4fd9921fbbd597d6d8e7a11eca3e2d27" }, + { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d698eec444b18e296a104d0b9bb6c596c38bdcb79d24eba49604636e9d747305" }, + { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e07cf10ef852d219d179333fd706d1c415626f1f05e60bd75acf0143a4d8b225" }, + { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d2a051f296e6e92e13efee3b41db388931cdb4a2800656cd1ed1d9fe4f13a086" }, + { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1738259802978cdf428f74156175da6a5fdfb7256f647fdc0c9de1bc6cd7173" }, + { file = "crc32c-2.7.1-cp311-cp311-win32.whl", hash = "sha256:f7786d219a1a1bf27d0aa1869821d11a6f8e90415cfffc1e37791690d4a848a1" }, + { file = "crc32c-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:887f6844bb3ad35f0778cd10793ad217f7123a5422e40041231b8c4c7329649d" }, + { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f7d1c4e761fe42bf856130daf8b2658df33fe0ced3c43dadafdfeaa42b57b950" }, + { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:73361c79a6e4605204457f19fda18b042a94508a52e53d10a4239da5fb0f6a34" }, + { file = "crc32c-2.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:afd778fc8ac0ed2ffbfb122a9aa6a0e409a8019b894a1799cda12c01534493e0" }, + { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56ef661b34e9f25991fface7f9ad85e81bbc1b3fe3b916fd58c893eabe2fa0b8" }, + { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:571aa4429444b5d7f588e4377663592145d2d25eb1635abb530f1281794fc7c9" }, + { file = "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" }, + { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:99d17637c4867672cb8adeea007294e3c3df9d43964369516cfe2c1f47ce500a" }, + { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f4a400ac3c69a32e180d8753fd7ec7bccb80ade7ab0812855dce8a208e72495f" }, + { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:588587772e55624dd9c7a906ec9e8773ae0b6ac5e270fc0bc84ee2758eba90d5" }, + { file = "crc32c-2.7.1-cp312-cp312-win32.whl", hash = "sha256:9f14b60e5a14206e8173dd617fa0c4df35e098a305594082f930dae5488da428" }, + { file = "crc32c-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:7c810a246660a24dc818047dc5f89c7ce7b2814e1e08a8e99993f4103f7219e8" }, + { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:24949bffb06fc411cc18188d33357923cb935273642164d0bb37a5f375654169" }, + { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2d5d326e7e118d4fa60187770d86b66af2fdfc63ce9eeb265f0d3e7d49bebe0b" }, + { file = "crc32c-2.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba110df60c64c8e2d77a9425b982a520ccdb7abe42f06604f4d98a45bb1fff62" }, + { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c277f9d16a3283e064d54854af0976b72abaa89824955579b2b3f37444f89aae" }, + { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:881af0478a01331244e27197356929edbdeaef6a9f81b5c6bacfea18d2139289" }, + { file = "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" }, + { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2416c4d88696ac322632555c0f81ab35e15f154bc96055da6cf110d642dbc10" }, + { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:60254251b88ec9b9795215f0f9ec015a6b5eef8b2c5fba1267c672d83c78fc02" }, + { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:edefc0e46f3c37372183f70338e5bdee42f6789b62fcd36ec53aa933e9dfbeaf" }, + { file = "crc32c-2.7.1-cp313-cp313-win32.whl", hash = "sha256:813af8111218970fe2adb833c5e5239f091b9c9e76f03b4dd91aaba86e99b499" }, + { file = "crc32c-2.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:7d9ede7be8e4ec1c9e90aaf6884decbeef10e3473e6ddac032706d710cab5888" }, + { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:db9ac92294284b22521356715784b91cc9094eee42a5282ab281b872510d1831" }, + { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8fcd7f2f29a30dc92af64a9ee3d38bde0c82bd20ad939999427aac94bbd87373" }, + { file = "crc32c-2.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5c056ef043393085523e149276a7ce0cb534b872e04f3e20d74d9a94a75c0ad7" }, + { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03a92551a343702629af91f78d205801219692b6909f8fa126b830e332bfb0e0" }, + { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb9424ec1a8ca54763155a703e763bcede82e6569fe94762614bb2de1412d4e1" }, + { file = "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" }, + { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:57a20dfc27995f568f64775eea2bbb58ae269f1a1144561df5e4a4955f79db32" }, + { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:f7186d098bfd2cff25eac6880b7c7ad80431b90610036131c1c7dd0eab42a332" }, + { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:55a77e29a265418fa34bef15bd0f2c60afae5348988aaf35ed163b4bbf93cf37" }, + { file = "crc32c-2.7.1-cp313-cp313t-win32.whl", hash = "sha256:ae38a4b6aa361595d81cab441405fbee905c72273e80a1c010fb878ae77ac769" }, + { file = "crc32c-2.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:eee2a43b663feb6c79a6c1c6e5eae339c2b72cfac31ee54ec0209fa736cf7ee5" }, + { file = "crc32c-2.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:04a56e9f4995559fa86bcf5d0ed5c48505a36e2be1c41d70cae5c080d9a00b74" }, + { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88c5c9c21cd9fff593bb7dfe97d3287438c8aecbcc73d227f2366860a0663521" }, + { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:595146cb94ba0055301d273113add2af5859b467db41b50367f47870c2d0a81c" }, + { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9f3792872f1320961f33aaf0198edea371aee393bcc221fab66d10ecffd77d" }, + { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:999a40d75cd1696e779f6f99c29fa52be777197d1d9e3ae69cb919a05a369c1e" }, + { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:eff485526172cee7e6d1fa9c23913f92c7d38ab05674b0b578767c7b693faf5d" }, + { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:541dac90c64ed9ce05f85a71066567e854c1b40743a01d83fa2c66419a2e97b6" }, + { file = "crc32c-2.7.1-cp37-cp37m-win32.whl", hash = "sha256:7138ec26e79100c4cf4294ef40027a1cff26a1e23b7e5eb70efe5d7ff37cbc66" }, + { file = "crc32c-2.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:35a3ed12ac2e2551a07d246b7e6512ac39db021e006205a40c1cfd32ea73fcc3" }, + { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af062f11aea283b7e9c95f3a97fb6bb96ac08a9063f71621c2140237df141ada" }, + { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8f25ca521ecf7cccfff0ecae4d0538b5c0c7235d27bf098241f3e2bf86aed713" }, + { file = "crc32c-2.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1410bcd909be36ccbf8a52c45e4bddca77adfd4e80789ac3cd575c024086516d" }, + { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33fc8cb32f82685ebefd078e740925ea9da37a008ed5f43b68fc8324f8ca4a37" }, + { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad3dc6283ce53ad7d1dc5775003460110ab7eebf348efebe0486a531b28f8184" }, + { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:758ead20e122496764ae50db26bb90fb47fc4b6d242c8e99e87c3f1dae1f1dce" }, + { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e436d9044bbd51936f7aeb8b322543c516bf22371a17970a370a10af1661fa54" }, + { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:47e5be99057264b603e3cd88cf091985f33c16d3c8609f1c83ed6e72ec4179b4" }, + { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:280509210e622a236f16f031856847fd0d6704df662d7209da819ccfb40c6167" }, + { file = "crc32c-2.7.1-cp38-cp38-win32.whl", hash = "sha256:4ab48e048cfa123a9f9bdc5d4d687a3461723132c749c721a6d358605e6d470d" }, + { file = "crc32c-2.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:65471d1b1b6e10a404ca8200a4271d5bc0a552c3f5dcd943c1c7835f766ea02d" }, + { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:39ca842586084bca24f9c4ab43e2d99191b1186b2f89b2122b470d0730254d1b" }, + { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a911abc33d453b3f171a3200b1e18b3fc39c204670b5b0a353cca99e4c664332" }, + { file = "crc32c-2.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:22a72e81ec08a7ece6a35ac68d1ed32dd4a8be7949b164db88d4b4a4bade5c5a" }, + { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54d6f8c5be6815eabd6e3e90fa0bc13045183a6aa33a30dd684eb0f062b92213" }, + { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c855726d71dee7ae25f81c6b54293455fc66802f34d334d22bea1f6ce8bc21c" }, + { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98d5f7fc364bb9c4c4123d149406fbee063f2e8c2cff19a12f13e50faa146237" }, + { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:51ffba582c95a281e5a3f71eacdafc96b9a1835ddae245385639458fff197034" }, + { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3950d3c340c9d70889630ef81fba8666abfd0cf0aa19fd9c3a55634e0b383b0f" }, + { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:522fba1770aad8f7eb189f21fca591a51d96dcc749859088f462281324aec30b" }, + { file = "crc32c-2.7.1-cp39-cp39-win32.whl", hash = "sha256:812723e222b6a9fe0562554d72f4f072c3a95720c60ee500984e7d0e568caac3" }, + { file = "crc32c-2.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:6793fcfe9d4130230d196abbe4021c01ffe8e85c92633bf3c8559f9836c227f5" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:2e83fedebcdeb80c19e76b7a0e5103528bb062521c40702bf34516a429e81df3" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30004a7383538ef93bda9b22f7b3805bc0aa5625ab2675690e1b676b19417d4b" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a01b0983aa87f517c12418f9898ecf2083bf86f4ea04122e053357c3edb0d73f" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb2b963c42128b38872e9ed63f04a73ce1ff89a1dfad7ea38add6fe6296497b8" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cdd5e576fee5d255c1e68a4dae4420f21e57e6f05900b38d5ae47c713fc3330d" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:79f0ff50863aeb441fbfa87e9db6542ddfe3e941189dece832b0af2e454dbab0" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cd27a1e400d77e9872fa1303e8f9d30bd050df35ee4858354ce0b59f8227d32" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:274739b3e1591bd4b7ec98764f2f79c6fbcc0f7d7676d5f17369832fe14ee4f0" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:050f52045b4a033a245e0ee4357e1a793de5af6496c82250ef13d8cb90a21e20" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ceb4ca126f75694bda020a307221563d3c522719c0acedcc81ffb985b4867c94" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:eabefe7a6fb5dfc6318fb35f4d98893baef17ebda9b311498e870526d32168e7" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:217edd9ba8c5f0c3ad60c82a11fa78f01162fa106fd7f5d17175dac6bf1eedf9" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15d640d9d4aa213aec6c837f602081a17d1522f8cd78b52334b62ee27b083410" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:519878822bf9bdead63c25a5e4bdc26d2eae9da6056f92b9b5f3023c08f1d016" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:2bf69cfa4c3ea9f060fe06db00b7e34f771c83f73dd2c3568c2c9019479e34c2" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e89d51c90f6730b67b12c97d49099ba18d0fdce18541fab94d2be95d1c939adb" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:488a0feba1bb005d0dd2f702c1da4849d083e88d82cd27b83ac2d2d93af80755" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:919262b7a12ef63f222ec19c0e092f39268802652e11669315257ae6249ec79f" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4181240f6080c38eec9dd1539cd23a304a12100d3f4ffe43234f32064fae5ef0" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fedde1e53507d0ede1980e8109442edd108c04ab100abcd5145c274820dacd4f" }, + { file = "crc32c-2.7.1.tar.gz", hash = "sha256:f91b144a21eef834d64178e01982bb9179c354b3e9e5f4c803b0e5096384968c" }, +] + +[[package]] +name = "dask" +version = "2025.9.1" +description = "Parallel PyData with Task Scheduling" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + { file = "dask-2025.9.1-py3-none-any.whl", hash = "sha256:2a8a7dc933caaea2f47745a65a6ec93d9e616e12aab53b4f03ee161d31939110" }, + { file = "dask-2025.9.1.tar.gz", hash = "sha256:718df73e1fd3d7e2b8546e0f04ce08e1ed7f9aa3da1eecd0c1f44c8b6d52f7e0" }, +] + +[package.dependencies] +click = ">=8.1" +cloudpickle = ">=3.0.0" +fsspec = ">=2021.09.0" +packaging = ">=20.0" +partd = ">=1.4.0" +pyyaml = ">=5.3.1" +toolz = ">=0.10.0" + +[package.extras] +array = ["numpy (>=1.24)"] +complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=14.0.1)"] +dataframe = ["dask[array]", "pandas (>=2.0)", "pyarrow (>=14.0.1)"] +diagnostics = ["bokeh (>=3.1.0)", "jinja2 (>=2.10.3)"] +distributed = ["distributed (==2025.9.1)"] +test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] + +[[package]] +name = "debugpy" +version = "1.8.15" +description = "An implementation of the Debug Adapter Protocol for Python" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "debugpy-1.8.15-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e9a8125c85172e3ec30985012e7a81ea5e70bbb836637f8a4104f454f9b06c97" }, + { file = "debugpy-1.8.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fd0b6b5eccaa745c214fd240ea82f46049d99ef74b185a3517dad3ea1ec55d9" }, + { file = "debugpy-1.8.15-cp310-cp310-win32.whl", hash = "sha256:8181cce4d344010f6bfe94a531c351a46a96b0f7987750932b2908e7a1e14a55" }, + { file = "debugpy-1.8.15-cp310-cp310-win_amd64.whl", hash = "sha256:af2dcae4e4cd6e8b35f982ccab29fe65f7e8766e10720a717bc80c464584ee21" }, + { file = "debugpy-1.8.15-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:babc4fb1962dd6a37e94d611280e3d0d11a1f5e6c72ac9b3d87a08212c4b6dd3" }, + { file = "debugpy-1.8.15-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f778e68f2986a58479d0ac4f643e0b8c82fdd97c2e200d4d61e7c2d13838eb53" }, + { file = "debugpy-1.8.15-cp311-cp311-win32.whl", hash = "sha256:f9d1b5abd75cd965e2deabb1a06b0e93a1546f31f9f621d2705e78104377c702" }, + { file = "debugpy-1.8.15-cp311-cp311-win_amd64.whl", hash = "sha256:62954fb904bec463e2b5a415777f6d1926c97febb08ef1694da0e5d1463c5c3b" }, + { file = "debugpy-1.8.15-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:3dcc7225cb317469721ab5136cda9ff9c8b6e6fb43e87c9e15d5b108b99d01ba" }, + { file = "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" }, + { file = "debugpy-1.8.15-cp312-cp312-win32.whl", hash = "sha256:b08e9b0bc260cf324c890626961dad4ffd973f7568fbf57feb3c3a65ab6b6327" }, + { file = "debugpy-1.8.15-cp312-cp312-win_amd64.whl", hash = "sha256:e2a4fe357c92334272eb2845fcfcdbec3ef9f22c16cf613c388ac0887aed15fa" }, + { file = "debugpy-1.8.15-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:f5e01291ad7d6649aed5773256c5bba7a1a556196300232de1474c3c372592bf" }, + { file = "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" }, + { file = "debugpy-1.8.15-cp313-cp313-win32.whl", hash = "sha256:fcf0748d4f6e25f89dc5e013d1129ca6f26ad4da405e0723a4f704583896a709" }, + { file = "debugpy-1.8.15-cp313-cp313-win_amd64.whl", hash = "sha256:73c943776cb83e36baf95e8f7f8da765896fd94b05991e7bc162456d25500683" }, + { file = "debugpy-1.8.15-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:054cd4935bd2e4964dfe1aeee4d6bca89d0c833366776fc35387f8a2f517dd00" }, + { file = "debugpy-1.8.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21c4288e662997df3176c4b9d93ee1393913fbaf320732be332d538000c53208" }, + { file = "debugpy-1.8.15-cp38-cp38-win32.whl", hash = "sha256:aaa8ce6a37d764f93fe583d7c6ca58eb7550b36941387483db113125f122bb0d" }, + { file = "debugpy-1.8.15-cp38-cp38-win_amd64.whl", hash = "sha256:71cdf7f676af78e70f005c7fad2ef9da0edc2a24befbf3ab146a51f0d58048c2" }, + { file = "debugpy-1.8.15-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:085b6d0adb3eb457c2823ac497a0690b10a99eff8b01c01a041e84579f114b56" }, + { file = "debugpy-1.8.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd546a405381d17527814852642df0a74b7da8acc20ae5f3cfad0b7c86419511" }, + { file = "debugpy-1.8.15-cp39-cp39-win32.whl", hash = "sha256:ae0d445fe11ff4351428e6c2389e904e1cdcb4a47785da5a5ec4af6c5b95fce5" }, + { file = "debugpy-1.8.15-cp39-cp39-win_amd64.whl", hash = "sha256:de7db80189ca97ab4b10a87e4039cfe4dd7ddfccc8f33b5ae40fcd33792fc67a" }, + { file = "debugpy-1.8.15-py2.py3-none-any.whl", hash = "sha256:bce2e6c5ff4f2e00b98d45e7e01a49c7b489ff6df5f12d881c67d2f1ac635f3d" }, + { file = "debugpy-1.8.15.tar.gz", hash = "sha256:58d7a20b7773ab5ee6bdfb2e6cf622fdf1e40c9d5aef2857d85391526719ac00" }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +description = "Decorators for Humans" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a" }, + { file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360" }, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +description = "XML bomb protection for Python stdlib modules" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] +files = [ + {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, + {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, +] + +[[package]] +name = "distlib" +version = "0.4.0" +description = "Distribution utilities" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + { file = "distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16" }, + { file = "distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d" }, +] + +[[package]] +name = "donfig" +version = "0.8.1.post1" +description = "Python package for configuring a python package" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + { file = "donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d" }, + { file = "donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52" }, +] + +[package.dependencies] +pyyaml = "*" + +[package.extras] +docs = ["cloudpickle", "numpydoc", "pytest", "sphinx (>=4.0.0)"] +test = ["cloudpickle", "pytest"] + +[[package]] +name = "executing" +version = "2.2.0" +description = "Get the currently executing AST node of a frame, and other information" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa" }, + { file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755" }, +] + +[package.extras] +tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich ; python_version >= \"3.11\""] + +[[package]] +name = "fastjsonschema" +version = "2.21.1" +description = "Fastest Python implementation of JSON schema" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + { file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667" }, + { file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4" }, +] + +[package.extras] +devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] + +[[package]] +name = "fawltydeps" +version = "0.20.0" +description = "Find undeclared and unused 3rd-party dependencies in your Python project." +optional = false +python-versions = ">=3.9.2" +groups = ["dev"] +files = [ + { file = "fawltydeps-0.20.0-py3-none-any.whl", hash = "sha256:d3bfb260c54135ec5dfa2583a7381c45d2759deb23f6de6f4905da9adac67512" }, + { file = "fawltydeps-0.20.0.tar.gz", hash = "sha256:ad080b284a2278c9940540b643483aff8b57794a1362735d3024c270810c0182" }, +] + +[package.dependencies] +importlib_metadata = ">=6.6.0" +isort = ">=5.10" +packaging = ">=24.0" +pip-requirements-parser = ">=32.0.1" +pydantic = ">=1.10.4,<3.0.0" +PyYAML = ">=6.0.1" + +[package.extras] +uv = ["uv (>=0.1.6)"] + +[[package]] +name = "filelock" +version = "3.18.0" +description = "A platform independent file lock." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de" }, + { file = "filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2" }, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] +typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] + +[[package]] +name = "fqdn" +version = "1.4.0" +description = "Validate fully-qualified domain names compliant to RFC 1035 and the preferred form in RFC 3686 s. 2." +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + { file = "fqdn-1.4.0-py3-none-any.whl", hash = "sha256:e935616ae81c9c60a22267593fe8e6af68cecc68549cc71bb9bfbcbbcb383386" }, + { file = "fqdn-1.4.0.tar.gz", hash = "sha256:30e8f2e685ce87cdace4712fd97c5d09f5e6fa519bbb66e8f188f6a7cb3a5c4e" }, +] + +[[package]] +name = "fsspec" +version = "2025.7.0" +description = "File-system specification" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + { file = "fsspec-2025.7.0-py3-none-any.whl", hash = "sha256:8b012e39f63c7d5f10474de957f3ab793b47b45ae7d39f2fb735f8bbe25c0e21" }, + { file = "fsspec-2025.7.0.tar.gz", hash = "sha256:786120687ffa54b8283d942929540d8bc5ccfa820deb555a2b5d0ed2b737bf58" }, +] + +[package.extras] +abfs = ["adlfs"] +adl = ["adlfs"] +arrow = ["pyarrow (>=1)"] +dask = ["dask", "distributed"] +dev = ["pre-commit", "ruff (>=0.5)"] +doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"] +dropbox = ["dropbox", "dropboxdrivefs", "requests"] +full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] +fuse = ["fusepy"] +gcs = ["gcsfs"] +git = ["pygit2"] +github = ["requests"] +gs = ["gcsfs"] +gui = ["panel"] +hdfs = ["pyarrow (>=1)"] +http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] +libarchive = ["libarchive-c"] +oci = ["ocifs"] +s3 = ["s3fs"] +sftp = ["paramiko"] +smb = ["smbprotocol"] +ssh = ["paramiko"] +test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"] +test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] +test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard ; python_version < \"3.14\""] +tqdm = ["tqdm"] + +[[package]] +name = "ghp-import" +version = "2.1.0" +description = "Copy your docs directly to the gh-pages branch." +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + { file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343" }, + { file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619" }, +] + +[package.dependencies] +python-dateutil = ">=2.8.1" + +[package.extras] +dev = ["flake8", "markdown", "twine", "wheel"] + +[[package]] +name = "griffe" +version = "1.7.3" +description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "griffe-1.7.3-py3-none-any.whl", hash = "sha256:c6b3ee30c2f0f17f30bcdef5068d6ab7a2a4f1b8bf1a3e74b56fffd21e1c5f75" }, + { file = "griffe-1.7.3.tar.gz", hash = "sha256:52ee893c6a3a968b639ace8015bec9d36594961e156e23315c8e8e51401fa50b" }, +] + +[package.dependencies] +colorama = ">=0.4" + +[[package]] +name = "h11" +version = "0.16.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86" }, + { file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55" }, + { file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8" }, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.16" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<1.0)"] + +[[package]] +name = "httpx" +version = "0.28.1" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad" }, + { file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc" }, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" + +[package.extras] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "identify" +version = "2.6.12" +description = "File identification library for Python" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2" }, + { file = "identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6" }, +] + +[package.extras] +license = ["ukkonen"] + +[[package]] +name = "idna" +version = "3.10" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, +] + +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + +[[package]] +name = "importlib-metadata" +version = "8.7.0" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd" }, + { file = "importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000" }, +] + +[package.dependencies] +zipp = ">=3.20" + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +perf = ["ipython"] +test = ["flufl.flake8", "importlib_resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +type = ["pytest-mypy"] + +[[package]] +name = "iniconfig" +version = "2.1.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760" }, + { file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7" }, +] + +[[package]] +name = "ipykernel" +version = "6.29.5" +description = "IPython Kernel for Jupyter" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, + {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, +] + +[package.dependencies] +appnope = {version = "*", markers = "platform_system == \"Darwin\""} +comm = ">=0.1.1" +debugpy = ">=1.6.5" +ipython = ">=7.23.1" +jupyter-client = ">=6.1.12" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +matplotlib-inline = ">=0.1" +nest-asyncio = "*" +packaging = "*" +psutil = "*" +pyzmq = ">=24" +tornado = ">=6.1" +traitlets = ">=5.4.0" + +[package.extras] +cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] +pyqt5 = ["pyqt5"] +pyside6 = ["pyside6"] +test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "ipython" +version = "9.4.0" +description = "IPython: Productive Interactive Computing" +optional = false +python-versions = ">=3.11" +groups = ["dev"] +files = [ + { file = "ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066" }, + { file = "ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270" }, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +decorator = "*" +ipython-pygments-lexers = "*" +jedi = ">=0.16" +matplotlib-inline = "*" +pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} +prompt_toolkit = ">=3.0.41,<3.1.0" +pygments = ">=2.4.0" +stack_data = "*" +traitlets = ">=5.13.0" + +[package.extras] +all = ["ipython[doc,matplotlib,test,test-extra]"] +black = ["black"] +doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinx_toml (==0.0.4)", "typing_extensions"] +matplotlib = ["matplotlib"] +test = ["packaging", "pytest", "pytest-asyncio (<0.22)", "testpath"] +test-extra = ["curio", "ipykernel", "ipython[test]", "jupyter_ai", "matplotlib (!=3.2.0)", "nbclient", "nbformat", "numpy (>=1.23)", "pandas", "trio"] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +description = "Defines a variety of Pygments lexers for highlighting IPython code." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c" }, + { file = "ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81" }, +] + +[package.dependencies] +pygments = "*" + +[[package]] +name = "ipywidgets" +version = "8.1.7" +description = "Jupyter interactive widgets" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + { file = "ipywidgets-8.1.7-py3-none-any.whl", hash = "sha256:764f2602d25471c213919b8a1997df04bef869251db4ca8efba1b76b1bd9f7bb" }, + { file = "ipywidgets-8.1.7.tar.gz", hash = "sha256:15f1ac050b9ccbefd45dccfbb2ef6bed0029d8278682d569d71b8dd96bee0376" }, +] + +[package.dependencies] +comm = ">=0.1.3" +ipython = ">=6.1.0" +jupyterlab_widgets = ">=3.0.15,<3.1.0" +traitlets = ">=4.3.1" +widgetsnbextension = ">=4.0.14,<4.1.0" + +[package.extras] +test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] + +[[package]] +name = "isoduration" +version = "20.11.0" +description = "Operations with ISO 8601 durations" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, + {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, +] + +[package.dependencies] +arrow = ">=0.15.0" + +[[package]] +name = "isort" +version = "7.0.0" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.10.0" +groups = ["dev"] +files = [ + { file = "isort-7.0.0-py3-none-any.whl", hash = "sha256:1bcabac8bc3c36c7fb7b98a76c8abb18e0f841a3ba81decac7691008592499c1" }, + { file = "isort-7.0.0.tar.gz", hash = "sha256:5513527951aadb3ac4292a41a16cbc50dd1642432f5e8c20057d414bdafb4187" }, +] + +[package.extras] +colors = ["colorama"] +plugins = ["setuptools"] + +[[package]] +name = "jedi" +version = "0.19.2" +description = "An autocompletion tool for Python that can be used for text editors." +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + { file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9" }, + { file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0" }, +] + +[package.dependencies] +parso = ">=0.8.4,<0.9.0" + +[package.extras] +docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] +qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] +testing = ["Django", "attrs", "colorama", "docopt", "pytest (<9.0.0)"] + +[[package]] +name = "jinja2" +version = "3.1.6" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + { file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67" }, + { file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d" }, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "json5" +version = "0.12.0" +description = "A Python implementation of the JSON5 data format." +optional = false +python-versions = ">=3.8.0" +groups = ["dev"] +files = [ + { file = "json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db" }, + { file = "json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a" }, +] + +[package.extras] +dev = ["build (==1.2.2.post1)", "coverage (==7.5.4) ; python_version < \"3.9\"", "coverage (==7.8.0) ; python_version >= \"3.9\"", "mypy (==1.14.1) ; python_version < \"3.9\"", "mypy (==1.15.0) ; python_version >= \"3.9\"", "pip (==25.0.1)", "pylint (==3.2.7) ; python_version < \"3.9\"", "pylint (==3.3.6) ; python_version >= \"3.9\"", "ruff (==0.11.2)", "twine (==6.1.0)", "uv (==0.6.11)"] + +[[package]] +name = "jsonpointer" +version = "3.0.0" +description = "Identify specific nodes in a JSON document (RFC 6901)" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, + {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, +] + +[[package]] +name = "jsonschema" +version = "4.25.0" +description = "An implementation of JSON Schema validation for Python" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "jsonschema-4.25.0-py3-none-any.whl", hash = "sha256:24c2e8da302de79c8b9382fee3e76b355e44d2a4364bb207159ce10b517bd716" }, + { file = "jsonschema-4.25.0.tar.gz", hash = "sha256:e63acf5c11762c0e6672ffb61482bdf57f0876684d8d249c0fe2d730d48bc55f" }, +] + +[package.dependencies] +attrs = ">=22.2.0" +fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""} +jsonschema-specifications = ">=2023.03.6" +referencing = ">=0.28.4" +rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} +rfc3987-syntax = { version = ">=1.1.0", optional = true, markers = "extra == \"format-nongpl\"" } +rpds-py = ">=0.7.1" +uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +webcolors = {version = ">=24.6.0", optional = true, markers = "extra == \"format-nongpl\""} + +[package.extras] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "rfc3987-syntax (>=1.1.0)", "uri-template", "webcolors (>=24.6.0)"] + +[[package]] +name = "jsonschema-specifications" +version = "2025.4.1" +description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af" }, + { file = "jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608" }, +] + +[package.dependencies] +referencing = ">=0.31.0" + +[[package]] +name = "jupyter" +version = "1.1.1" +description = "Jupyter metapackage. Install all the Jupyter components in one go." +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83"}, + {file = "jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a"}, +] + +[package.dependencies] +ipykernel = "*" +ipywidgets = "*" +jupyter-console = "*" +jupyterlab = "*" +nbconvert = "*" +notebook = "*" + +[[package]] +name = "jupyter-client" +version = "8.6.3" +description = "Jupyter protocol implementation and client libraries" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, + {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, +] + +[package.dependencies] +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +python-dateutil = ">=2.8.2" +pyzmq = ">=23.0" +tornado = ">=6.2" +traitlets = ">=5.3" + +[package.extras] +docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko ; sys_platform == \"win32\"", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] + +[[package]] +name = "jupyter-console" +version = "6.6.3" +description = "Jupyter terminal console" +optional = false +python-versions = ">=3.7" +groups = ["dev"] files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, + {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"}, + {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"}, ] -markers = {main = "sys_platform == \"win32\""} + +[package.dependencies] +ipykernel = ">=6.14" +ipython = "*" +jupyter-client = ">=7.0.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +prompt-toolkit = ">=3.0.30" +pygments = "*" +pyzmq = ">=17" +traitlets = ">=5.4" + +[package.extras] +test = ["flaky", "pexpect", "pytest"] [[package]] -name = "colorlog" -version = "6.10.1" -description = "Add colours to the output of Python's logging module." +name = "jupyter-core" +version = "5.8.1" +description = "Jupyter core package. A base package on which Jupyter projects rely." optional = false -python-versions = ">=3.6" -groups = ["main"] +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "colorlog-6.10.1-py3-none-any.whl", hash = "sha256:2d7e8348291948af66122cff006c9f8da6255d224e7cf8e37d8de2df3bad8c9c"}, - {file = "colorlog-6.10.1.tar.gz", hash = "sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321"}, + { file = "jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0" }, + { file = "jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941" }, ] [package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} +platformdirs = ">=2.5" +pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} +traitlets = ">=5.3" [package.extras] -development = ["black", "flake8", "mypy", "pytest", "types-colorama"] +docs = ["intersphinx-registry", "myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-spelling", "traitlets"] +test = ["ipykernel", "pre-commit", "pytest (<9)", "pytest-cov", "pytest-timeout"] [[package]] -name = "coverage" -version = "7.10.4" -description = "Code coverage measurement for Python" +name = "jupyter-events" +version = "0.12.0" +description = "Jupyter Event System library" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "coverage-7.10.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d92d6edb0ccafd20c6fbf9891ca720b39c2a6a4b4a6f9cf323ca2c986f33e475"}, - {file = "coverage-7.10.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7202da14dc0236884fcc45665ffb2d79d4991a53fbdf152ab22f69f70923cc22"}, - {file = "coverage-7.10.4-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ada418633ae24ec8d0fcad5efe6fc7aa3c62497c6ed86589e57844ad04365674"}, - {file = "coverage-7.10.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b828e33eca6c3322adda3b5884456f98c435182a44917ded05005adfa1415500"}, - {file = "coverage-7.10.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:802793ba397afcfdbe9f91f89d65ae88b958d95edc8caf948e1f47d8b6b2b606"}, - {file = "coverage-7.10.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d0b23512338c54101d3bf7a1ab107d9d75abda1d5f69bc0887fd079253e4c27e"}, - {file = "coverage-7.10.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f36b7dcf72d06a8c5e2dd3aca02be2b1b5db5f86404627dff834396efce958f2"}, - {file = "coverage-7.10.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fce316c367a1dc2c411821365592eeb335ff1781956d87a0410eae248188ba51"}, - {file = "coverage-7.10.4-cp310-cp310-win32.whl", hash = "sha256:8c5dab29fc8070b3766b5fc85f8d89b19634584429a2da6d42da5edfadaf32ae"}, - {file = "coverage-7.10.4-cp310-cp310-win_amd64.whl", hash = "sha256:4b0d114616f0fccb529a1817457d5fb52a10e106f86c5fb3b0bd0d45d0d69b93"}, - {file = "coverage-7.10.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:05d5f98ec893d4a2abc8bc5f046f2f4367404e7e5d5d18b83de8fde1093ebc4f"}, - {file = "coverage-7.10.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9267efd28f8994b750d171e58e481e3bbd69e44baed540e4c789f8e368b24b88"}, - {file = "coverage-7.10.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:4456a039fdc1a89ea60823d0330f1ac6f97b0dbe9e2b6fb4873e889584b085fb"}, - {file = "coverage-7.10.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c2bfbd2a9f7e68a21c5bd191be94bfdb2691ac40d325bac9ef3ae45ff5c753d9"}, - {file = "coverage-7.10.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ab7765f10ae1df7e7fe37de9e64b5a269b812ee22e2da3f84f97b1c7732a0d8"}, - {file = "coverage-7.10.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a09b13695166236e171ec1627ff8434b9a9bae47528d0ba9d944c912d33b3d2"}, - {file = "coverage-7.10.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5c9e75dfdc0167d5675e9804f04a56b2cf47fb83a524654297000b578b8adcb7"}, - {file = "coverage-7.10.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c751261bfe6481caba15ec005a194cb60aad06f29235a74c24f18546d8377df0"}, - {file = "coverage-7.10.4-cp311-cp311-win32.whl", hash = "sha256:051c7c9e765f003c2ff6e8c81ccea28a70fb5b0142671e4e3ede7cebd45c80af"}, - {file = "coverage-7.10.4-cp311-cp311-win_amd64.whl", hash = "sha256:1a647b152f10be08fb771ae4a1421dbff66141e3d8ab27d543b5eb9ea5af8e52"}, - {file = "coverage-7.10.4-cp311-cp311-win_arm64.whl", hash = "sha256:b09b9e4e1de0d406ca9f19a371c2beefe3193b542f64a6dd40cfcf435b7d6aa0"}, - {file = "coverage-7.10.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a1f0264abcabd4853d4cb9b3d164adbf1565da7dab1da1669e93f3ea60162d79"}, - {file = "coverage-7.10.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:536cbe6b118a4df231b11af3e0f974a72a095182ff8ec5f4868c931e8043ef3e"}, - {file = "coverage-7.10.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:9a4c0d84134797b7bf3f080599d0cd501471f6c98b715405166860d79cfaa97e"}, - {file = "coverage-7.10.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7c155fc0f9cee8c9803ea0ad153ab6a3b956baa5d4cd993405dc0b45b2a0b9e0"}, - {file = "coverage-7.10.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a5f2ab6e451d4b07855d8bcf063adf11e199bff421a4ba57f5bb95b7444ca62"}, - {file = "coverage-7.10.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:685b67d99b945b0c221be0780c336b303a7753b3e0ec0d618c795aada25d5e7a"}, - {file = "coverage-7.10.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0c079027e50c2ae44da51c2e294596cbc9dbb58f7ca45b30651c7e411060fc23"}, - {file = "coverage-7.10.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3749aa72b93ce516f77cf5034d8e3c0dfd45c6e8a163a602ede2dc5f9a0bb927"}, - {file = "coverage-7.10.4-cp312-cp312-win32.whl", hash = "sha256:fecb97b3a52fa9bcd5a7375e72fae209088faf671d39fae67261f37772d5559a"}, - {file = "coverage-7.10.4-cp312-cp312-win_amd64.whl", hash = "sha256:26de58f355626628a21fe6a70e1e1fad95702dafebfb0685280962ae1449f17b"}, - {file = "coverage-7.10.4-cp312-cp312-win_arm64.whl", hash = "sha256:67e8885408f8325198862bc487038a4980c9277d753cb8812510927f2176437a"}, - {file = "coverage-7.10.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2b8e1d2015d5dfdbf964ecef12944c0c8c55b885bb5c0467ae8ef55e0e151233"}, - {file = "coverage-7.10.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:25735c299439018d66eb2dccf54f625aceb78645687a05f9f848f6e6c751e169"}, - {file = "coverage-7.10.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:715c06cb5eceac4d9b7cdf783ce04aa495f6aff657543fea75c30215b28ddb74"}, - {file = "coverage-7.10.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e017ac69fac9aacd7df6dc464c05833e834dc5b00c914d7af9a5249fcccf07ef"}, - {file = "coverage-7.10.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bad180cc40b3fccb0f0e8c702d781492654ac2580d468e3ffc8065e38c6c2408"}, - {file = "coverage-7.10.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:becbdcd14f685fada010a5f792bf0895675ecf7481304fe159f0cd3f289550bd"}, - {file = "coverage-7.10.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0b485ca21e16a76f68060911f97ebbe3e0d891da1dbbce6af7ca1ab3f98b9097"}, - {file = "coverage-7.10.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6c1d098ccfe8e1e0a1ed9a0249138899948afd2978cbf48eb1cc3fcd38469690"}, - {file = "coverage-7.10.4-cp313-cp313-win32.whl", hash = "sha256:8630f8af2ca84b5c367c3df907b1706621abe06d6929f5045fd628968d421e6e"}, - {file = "coverage-7.10.4-cp313-cp313-win_amd64.whl", hash = "sha256:f68835d31c421736be367d32f179e14ca932978293fe1b4c7a6a49b555dff5b2"}, - {file = "coverage-7.10.4-cp313-cp313-win_arm64.whl", hash = "sha256:6eaa61ff6724ca7ebc5326d1fae062d85e19b38dd922d50903702e6078370ae7"}, - {file = "coverage-7.10.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:702978108876bfb3d997604930b05fe769462cc3000150b0e607b7b444f2fd84"}, - {file = "coverage-7.10.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e8f978e8c5521d9c8f2086ac60d931d583fab0a16f382f6eb89453fe998e2484"}, - {file = "coverage-7.10.4-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:df0ac2ccfd19351411c45e43ab60932b74472e4648b0a9edf6a3b58846e246a9"}, - {file = "coverage-7.10.4-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:73a0d1aaaa3796179f336448e1576a3de6fc95ff4f07c2d7251d4caf5d18cf8d"}, - {file = "coverage-7.10.4-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:873da6d0ed6b3ffc0bc01f2c7e3ad7e2023751c0d8d86c26fe7322c314b031dc"}, - {file = "coverage-7.10.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c6446c75b0e7dda5daa876a1c87b480b2b52affb972fedd6c22edf1aaf2e00ec"}, - {file = "coverage-7.10.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:6e73933e296634e520390c44758d553d3b573b321608118363e52113790633b9"}, - {file = "coverage-7.10.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:52073d4b08d2cb571234c8a71eb32af3c6923149cf644a51d5957ac128cf6aa4"}, - {file = "coverage-7.10.4-cp313-cp313t-win32.whl", hash = "sha256:e24afb178f21f9ceb1aefbc73eb524769aa9b504a42b26857243f881af56880c"}, - {file = "coverage-7.10.4-cp313-cp313t-win_amd64.whl", hash = "sha256:be04507ff1ad206f4be3d156a674e3fb84bbb751ea1b23b142979ac9eebaa15f"}, - {file = "coverage-7.10.4-cp313-cp313t-win_arm64.whl", hash = "sha256:f3e3ff3f69d02b5dad67a6eac68cc9c71ae343b6328aae96e914f9f2f23a22e2"}, - {file = "coverage-7.10.4-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:a59fe0af7dd7211ba595cf7e2867458381f7e5d7b4cffe46274e0b2f5b9f4eb4"}, - {file = "coverage-7.10.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3a6c35c5b70f569ee38dc3350cd14fdd0347a8b389a18bb37538cc43e6f730e6"}, - {file = "coverage-7.10.4-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:acb7baf49f513554c4af6ef8e2bd6e8ac74e6ea0c7386df8b3eb586d82ccccc4"}, - {file = "coverage-7.10.4-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a89afecec1ed12ac13ed203238b560cbfad3522bae37d91c102e690b8b1dc46c"}, - {file = "coverage-7.10.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:480442727f464407d8ade6e677b7f21f3b96a9838ab541b9a28ce9e44123c14e"}, - {file = "coverage-7.10.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a89bf193707f4a17f1ed461504031074d87f035153239f16ce86dfb8f8c7ac76"}, - {file = "coverage-7.10.4-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:3ddd912c2fc440f0fb3229e764feec85669d5d80a988ff1b336a27d73f63c818"}, - {file = "coverage-7.10.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:8a538944ee3a42265e61c7298aeba9ea43f31c01271cf028f437a7b4075592cf"}, - {file = "coverage-7.10.4-cp314-cp314-win32.whl", hash = "sha256:fd2e6002be1c62476eb862b8514b1ba7e7684c50165f2a8d389e77da6c9a2ebd"}, - {file = "coverage-7.10.4-cp314-cp314-win_amd64.whl", hash = "sha256:ec113277f2b5cf188d95fb66a65c7431f2b9192ee7e6ec9b72b30bbfb53c244a"}, - {file = "coverage-7.10.4-cp314-cp314-win_arm64.whl", hash = "sha256:9744954bfd387796c6a091b50d55ca7cac3d08767795b5eec69ad0f7dbf12d38"}, - {file = "coverage-7.10.4-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:5af4829904dda6aabb54a23879f0f4412094ba9ef153aaa464e3c1b1c9bc98e6"}, - {file = "coverage-7.10.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7bba5ed85e034831fac761ae506c0644d24fd5594727e174b5a73aff343a7508"}, - {file = "coverage-7.10.4-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d57d555b0719834b55ad35045de6cc80fc2b28e05adb6b03c98479f9553b387f"}, - {file = "coverage-7.10.4-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ba62c51a72048bb1ea72db265e6bd8beaabf9809cd2125bbb5306c6ce105f214"}, - {file = "coverage-7.10.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0acf0c62a6095f07e9db4ec365cc58c0ef5babb757e54745a1aa2ea2a2564af1"}, - {file = "coverage-7.10.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e1033bf0f763f5cf49ffe6594314b11027dcc1073ac590b415ea93463466deec"}, - {file = "coverage-7.10.4-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:92c29eff894832b6a40da1789b1f252305af921750b03ee4535919db9179453d"}, - {file = "coverage-7.10.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:822c4c830989c2093527e92acd97be4638a44eb042b1bdc0e7a278d84a070bd3"}, - {file = "coverage-7.10.4-cp314-cp314t-win32.whl", hash = "sha256:e694d855dac2e7cf194ba33653e4ba7aad7267a802a7b3fc4347d0517d5d65cd"}, - {file = "coverage-7.10.4-cp314-cp314t-win_amd64.whl", hash = "sha256:efcc54b38ef7d5bfa98050f220b415bc5bb3d432bd6350a861cf6da0ede2cdcd"}, - {file = "coverage-7.10.4-cp314-cp314t-win_arm64.whl", hash = "sha256:6f3a3496c0fa26bfac4ebc458747b778cff201c8ae94fa05e1391bab0dbc473c"}, - {file = "coverage-7.10.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:48fd4d52600c2a9d5622e52dfae674a7845c5e1dceaf68b88c99feb511fbcfd6"}, - {file = "coverage-7.10.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:56217b470d09d69e6b7dcae38200f95e389a77db801cb129101697a4553b18b6"}, - {file = "coverage-7.10.4-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:44ac3f21a6e28c5ff7f7a47bca5f87885f6a1e623e637899125ba47acd87334d"}, - {file = "coverage-7.10.4-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3387739d72c84d17b4d2f7348749cac2e6700e7152026912b60998ee9a40066b"}, - {file = "coverage-7.10.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3f111ff20d9a6348e0125be892608e33408dd268f73b020940dfa8511ad05503"}, - {file = "coverage-7.10.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:01a852f0a9859734b018a3f483cc962d0b381d48d350b1a0c47d618c73a0c398"}, - {file = "coverage-7.10.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:225111dd06759ba4e37cee4c0b4f3df2b15c879e9e3c37bf986389300b9917c3"}, - {file = "coverage-7.10.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2178d4183bd1ba608f0bb12e71e55838ba1b7dbb730264f8b08de9f8ef0c27d0"}, - {file = "coverage-7.10.4-cp39-cp39-win32.whl", hash = "sha256:93d175fe81913aee7a6ea430abbdf2a79f1d9fd451610e12e334e4fe3264f563"}, - {file = "coverage-7.10.4-cp39-cp39-win_amd64.whl", hash = "sha256:2221a823404bb941c7721cf0ef55ac6ee5c25d905beb60c0bba5e5e85415d353"}, - {file = "coverage-7.10.4-py3-none-any.whl", hash = "sha256:065d75447228d05121e5c938ca8f0e91eed60a1eb2d1258d42d5084fecfc3302"}, - {file = "coverage-7.10.4.tar.gz", hash = "sha256:25f5130af6c8e7297fd14634955ba9e1697f47143f289e2a23284177c0061d27"}, + { file = "jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb" }, + { file = "jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b" }, ] +[package.dependencies] +jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]} +packaging = "*" +python-json-logger = ">=2.0.4" +pyyaml = ">=5.3" +referencing = "*" +rfc3339-validator = "*" +rfc3986-validator = ">=0.1.1" +traitlets = ">=5.3" + [package.extras] -toml = ["tomli ; python_full_version <= \"3.11.0a6\""] +cli = ["click", "rich"] +docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme (>=0.16)", "sphinx (>=8)", "sphinxcontrib-spelling"] +test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"] [[package]] -name = "distlib" -version = "0.4.0" -description = "Distribution utilities" +name = "jupyter-lsp" +version = "2.2.6" +description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" optional = false -python-versions = "*" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16"}, - {file = "distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d"}, + { file = "jupyter_lsp-2.2.6-py3-none-any.whl", hash = "sha256:283783752bf0b459ee7fa88effa72104d87dd343b82d5c06cf113ef755b15b6d" }, + { file = "jupyter_lsp-2.2.6.tar.gz", hash = "sha256:0566bd9bb04fd9e6774a937ed01522b555ba78be37bebef787c8ab22de4c0361" }, ] +[package.dependencies] +jupyter_server = ">=1.1.2" + [[package]] -name = "filelock" -version = "3.19.1" -description = "A platform independent file lock." +name = "jupyter-server" +version = "2.16.0" +description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "filelock-3.19.1-py3-none-any.whl", hash = "sha256:d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d"}, - {file = "filelock-3.19.1.tar.gz", hash = "sha256:66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58"}, + { file = "jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e" }, + { file = "jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6" }, ] +[package.dependencies] +anyio = ">=3.1.0" +argon2-cffi = ">=21.1" +jinja2 = ">=3.0.3" +jupyter-client = ">=7.4.4" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +jupyter-events = ">=0.11.0" +jupyter-server-terminals = ">=0.4.4" +nbconvert = ">=6.4.4" +nbformat = ">=5.3.0" +overrides = ">=5.0" +packaging = ">=22.0" +prometheus-client = ">=0.9" +pywinpty = {version = ">=2.0.1", markers = "os_name == \"nt\""} +pyzmq = ">=24" +send2trash = ">=1.8.2" +terminado = ">=0.8.3" +tornado = ">=6.2.0" +traitlets = ">=5.6.0" +websocket-client = ">=1.7" + +[package.extras] +docs = ["ipykernel", "jinja2", "jupyter-client", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"] +test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0,<9)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.7)", "pytest-timeout", "requests"] + [[package]] -name = "ghp-import" -version = "2.1.0" -description = "Copy your docs directly to the gh-pages branch." +name = "jupyter-server-terminals" +version = "0.5.3" +description = "A Jupyter Server Extension Providing Terminals." optional = false -python-versions = "*" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, - {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, + {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, + {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, ] [package.dependencies] -python-dateutil = ">=2.8.1" +pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""} +terminado = ">=0.8.3" [package.extras] -dev = ["flake8", "markdown", "twine", "wheel"] +docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"] +test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"] [[package]] -name = "griffe" -version = "1.12.1" -description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." +name = "jupyterlab" +version = "4.4.4" +description = "JupyterLab computational environment" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "griffe-1.12.1-py3-none-any.whl", hash = "sha256:2d7c12334de00089c31905424a00abcfd931b45b8b516967f224133903d302cc"}, - {file = "griffe-1.12.1.tar.gz", hash = "sha256:29f5a6114c0aeda7d9c86a570f736883f8a2c5b38b57323d56b3d1c000565567"}, + { file = "jupyterlab-4.4.4-py3-none-any.whl", hash = "sha256:711611e4f59851152eb93316c3547c3ec6291f16bb455f1f4fa380d25637e0dd" }, + { file = "jupyterlab-4.4.4.tar.gz", hash = "sha256:163fee1ef702e0a057f75d2eed3ed1da8a986d59eb002cbeb6f0c2779e6cd153" }, ] [package.dependencies] -colorama = ">=0.4" +async-lru = ">=1.0.0" +httpx = ">=0.25.0" +ipykernel = ">=6.5.0" +jinja2 = ">=3.0.3" +jupyter-core = "*" +jupyter-lsp = ">=2.0.0" +jupyter-server = ">=2.4.0,<3" +jupyterlab-server = ">=2.27.1,<3" +notebook-shim = ">=0.2" +packaging = "*" +setuptools = ">=41.1.0" +tornado = ">=6.2.0" +traitlets = "*" + +[package.extras] +dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.11.4)"] +docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<8.2.0)", "sphinx-copybutton"] +docs-screenshots = ["altair (==5.5.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.5)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.3.post1)", "matplotlib (==3.10.0)", "nbconvert (>=7.0.0)", "pandas (==2.2.3)", "scipy (==1.15.1)", "vega-datasets (==0.9.0)"] +test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] +upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)", "pyyaml-include (<3.0)", "tomli-w (<2.0)"] [[package]] -name = "identify" -version = "2.6.13" -description = "File identification library for Python" +name = "jupyterlab-pygments" +version = "0.3.0" +description = "Pygments theme using JupyterLab CSS variables" optional = false -python-versions = ">=3.9" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "identify-2.6.13-py2.py3-none-any.whl", hash = "sha256:60381139b3ae39447482ecc406944190f690d4a2997f2584062089848361b33b"}, - {file = "identify-2.6.13.tar.gz", hash = "sha256:da8d6c828e773620e13bfa86ea601c5a5310ba4bcd65edf378198b56a1f9fb32"}, + {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, + {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, ] -[package.extras] -license = ["ukkonen"] - [[package]] -name = "idna" -version = "3.10" -description = "Internationalized Domain Names in Applications (IDNA)" +name = "jupyterlab-server" +version = "2.27.3" +description = "A set of server components for JupyterLab and JupyterLab like applications." optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, + {file = "jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4"}, + {file = "jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4"}, ] +[package.dependencies] +babel = ">=2.10" +jinja2 = ">=3.0.3" +json5 = ">=0.9.0" +jsonschema = ">=4.18.0" +jupyter-server = ">=1.21,<3" +packaging = ">=21.3" +requests = ">=2.31" + [package.extras] -all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] +docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"] +openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"] +test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0,<8)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] [[package]] -name = "iniconfig" -version = "2.1.0" -description = "brain-dead simple config-ini parsing" +name = "jupyterlab-widgets" +version = "3.0.15" +description = "Jupyter interactive widgets for JupyterLab" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, - {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, + { file = "jupyterlab_widgets-3.0.15-py3-none-any.whl", hash = "sha256:d59023d7d7ef71400d51e6fee9a88867f6e65e10a4201605d2d7f3e8f012a31c" }, + { file = "jupyterlab_widgets-3.0.15.tar.gz", hash = "sha256:2920888a0c2922351a9202817957a68c07d99673504d6cd37345299e971bb08b" }, ] [[package]] -name = "jinja2" -version = "3.1.6" -description = "A very fast and expressive template engine." +name = "lark" +version = "1.2.2" +description = "a modern parsing library" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, - {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, + { file = "lark-1.2.2-py3-none-any.whl", hash = "sha256:c2276486b02f0f1b90be155f2c8ba4a8e194d42775786db622faccd652d8e80c" }, + { file = "lark-1.2.2.tar.gz", hash = "sha256:ca807d0162cd16cef15a8feecb862d7319e7a09bdb13aef927968e45040fed80" }, ] -[package.dependencies] -MarkupSafe = ">=2.0" - [package.extras] -i18n = ["Babel (>=2.7)"] +atomic-cache = ["atomicwrites"] +interegular = ["interegular (>=0.3.1,<0.4.0)"] +nearley = ["js2py"] +regex = ["regex"] + +[[package]] +name = "locket" +version = "1.0.0" +description = "File-based locks for Python on Linux and Windows" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["main"] +files = [ + {file = "locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3"}, + {file = "locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632"}, +] [[package]] name = "markdown" @@ -432,8 +1727,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24"}, - {file = "markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45"}, + { file = "markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24" }, + { file = "markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45" }, ] [package.extras] @@ -511,6 +1806,21 @@ files = [ {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, ] +[[package]] +name = "matplotlib-inline" +version = "0.1.7" +description = "Inline Matplotlib backend for Jupyter" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, + {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, +] + +[package.dependencies] +traitlets = "*" + [[package]] name = "mergedeep" version = "1.3.4" @@ -519,8 +1829,20 @@ optional = false python-versions = ">=3.6" groups = ["dev"] files = [ - {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, - {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, + { file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307" }, + { file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8" }, +] + +[[package]] +name = "mistune" +version = "3.1.3" +description = "A sane and fast Markdown parser with useful plugins and renderers" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9" }, + { file = "mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0" }, ] [[package]] @@ -531,13 +1853,13 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e"}, - {file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2"}, + { file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e" }, + { file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2" }, ] [package.dependencies] click = ">=7.0" -colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} +colorama = { version = ">=0.4", markers = "platform_system == \"Windows\"" } ghp-import = ">=1.0" jinja2 = ">=2.11.1" markdown = ">=3.3.6" @@ -562,200 +1884,513 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13"}, - {file = "mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749"}, + { file = "mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13" }, + { file = "mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749" }, +] + +[package.dependencies] +Markdown = ">=3.3" +markupsafe = ">=2.0.1" +mkdocs = ">=1.1" + +[[package]] +name = "mkdocs-get-deps" +version = "0.2.0" +description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134" }, + { file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c" }, +] + +[package.dependencies] +mergedeep = ">=1.3.4" +platformdirs = ">=2.2.0" +pyyaml = ">=5.1" + +[[package]] +name = "mkdocs-material" +version = "9.6.15" +description = "Documentation that simply works" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "mkdocs_material-9.6.15-py3-none-any.whl", hash = "sha256:ac969c94d4fe5eb7c924b6d2f43d7db41159ea91553d18a9afc4780c34f2717a" }, + { file = "mkdocs_material-9.6.15.tar.gz", hash = "sha256:64adf8fa8dba1a17905b6aee1894a5aafd966d4aeb44a11088519b0f5ca4f1b5" }, +] + +[package.dependencies] +babel = ">=2.10,<3.0" +backrefs = ">=5.7.post1,<6.0" +colorama = ">=0.4,<1.0" +jinja2 = ">=3.1,<4.0" +markdown = ">=3.2,<4.0" +mkdocs = ">=1.6,<2.0" +mkdocs-material-extensions = ">=1.3,<2.0" +paginate = ">=0.5,<1.0" +pygments = ">=2.16,<3.0" +pymdown-extensions = ">=10.2,<11.0" +requests = ">=2.26,<3.0" + +[package.extras] +git = ["mkdocs-git-committers-plugin-2 (>=1.1,<3)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] +imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] +recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] + +[[package]] +name = "mkdocs-material-extensions" +version = "1.3.1" +description = "Extension pack for Python Markdown and MkDocs Material." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31" }, + { file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443" }, +] + +[[package]] +name = "mkdocstrings" +version = "0.29.1" +description = "Automatic documentation from sources, for MkDocs." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "mkdocstrings-0.29.1-py3-none-any.whl", hash = "sha256:37a9736134934eea89cbd055a513d40a020d87dfcae9e3052c2a6b8cd4af09b6" }, + { file = "mkdocstrings-0.29.1.tar.gz", hash = "sha256:8722f8f8c5cd75da56671e0a0c1bbed1df9946c0cef74794d6141b34011abd42" }, +] + +[package.dependencies] +Jinja2 = ">=2.11.1" +Markdown = ">=3.6" +MarkupSafe = ">=1.1" +mkdocs = ">=1.6" +mkdocs-autorefs = ">=1.4" +mkdocstrings-python = { version = ">=1.16.2", optional = true, markers = "extra == \"python\"" } +pymdown-extensions = ">=6.3" + +[package.extras] +crystal = ["mkdocstrings-crystal (>=0.3.4)"] +python = ["mkdocstrings-python (>=1.16.2)"] +python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] + +[[package]] +name = "mkdocstrings-python" +version = "1.16.12" +description = "A Python handler for mkdocstrings." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "mkdocstrings_python-1.16.12-py3-none-any.whl", hash = "sha256:22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374" }, + { file = "mkdocstrings_python-1.16.12.tar.gz", hash = "sha256:9b9eaa066e0024342d433e332a41095c4e429937024945fea511afe58f63175d" }, +] + +[package.dependencies] +griffe = ">=1.6.2" +mkdocs-autorefs = ">=1.4" +mkdocstrings = ">=0.28.3" + +[[package]] +name = "mypy" +version = "1.17.0" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "mypy-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8e08de6138043108b3b18f09d3f817a4783912e48828ab397ecf183135d84d6" }, + { file = "mypy-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce4a17920ec144647d448fc43725b5873548b1aae6c603225626747ededf582d" }, + { file = "mypy-1.17.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ff25d151cc057fdddb1cb1881ef36e9c41fa2a5e78d8dd71bee6e4dcd2bc05b" }, + { file = "mypy-1.17.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93468cf29aa9a132bceb103bd8475f78cacde2b1b9a94fd978d50d4bdf616c9a" }, + { file = "mypy-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:98189382b310f16343151f65dd7e6867386d3e35f7878c45cfa11383d175d91f" }, + { file = "mypy-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:c004135a300ab06a045c1c0d8e3f10215e71d7b4f5bb9a42ab80236364429937" }, + { file = "mypy-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9d4fe5c72fd262d9c2c91c1117d16aac555e05f5beb2bae6a755274c6eec42be" }, + { file = "mypy-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96b196e5c16f41b4f7736840e8455958e832871990c7ba26bf58175e357ed61" }, + { file = "mypy-1.17.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:73a0ff2dd10337ceb521c080d4147755ee302dcde6e1a913babd59473904615f" }, + { file = "mypy-1.17.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:24cfcc1179c4447854e9e406d3af0f77736d631ec87d31c6281ecd5025df625d" }, + { file = "mypy-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3c56f180ff6430e6373db7a1d569317675b0a451caf5fef6ce4ab365f5f2f6c3" }, + { file = "mypy-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:eafaf8b9252734400f9b77df98b4eee3d2eecab16104680d51341c75702cad70" }, + { file = "mypy-1.17.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f986f1cab8dbec39ba6e0eaa42d4d3ac6686516a5d3dccd64be095db05ebc6bb" }, + { file = "mypy-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:51e455a54d199dd6e931cd7ea987d061c2afbaf0960f7f66deef47c90d1b304d" }, + { file = "mypy-1.17.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3204d773bab5ff4ebbd1f8efa11b498027cd57017c003ae970f310e5b96be8d8" }, + { file = "mypy-1.17.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1051df7ec0886fa246a530ae917c473491e9a0ba6938cfd0ec2abc1076495c3e" }, + { file = "mypy-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f773c6d14dcc108a5b141b4456b0871df638eb411a89cd1c0c001fc4a9d08fc8" }, + { file = "mypy-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:1619a485fd0e9c959b943c7b519ed26b712de3002d7de43154a489a2d0fd817d" }, + { file = "mypy-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c41aa59211e49d717d92b3bb1238c06d387c9325d3122085113c79118bebb06" }, + { file = "mypy-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e69db1fb65b3114f98c753e3930a00514f5b68794ba80590eb02090d54a5d4a" }, + { file = "mypy-1.17.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:03ba330b76710f83d6ac500053f7727270b6b8553b0423348ffb3af6f2f7b889" }, + { file = "mypy-1.17.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:037bc0f0b124ce46bfde955c647f3e395c6174476a968c0f22c95a8d2f589bba" }, + { file = "mypy-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c38876106cb6132259683632b287238858bd58de267d80defb6f418e9ee50658" }, + { file = "mypy-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:d30ba01c0f151998f367506fab31c2ac4527e6a7b2690107c7a7f9e3cb419a9c" }, + { file = "mypy-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:63e751f1b5ab51d6f3d219fe3a2fe4523eaa387d854ad06906c63883fde5b1ab" }, + { file = "mypy-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7fb09d05e0f1c329a36dcd30e27564a3555717cde87301fae4fb542402ddfad" }, + { file = "mypy-1.17.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b72c34ce05ac3a1361ae2ebb50757fb6e3624032d91488d93544e9f82db0ed6c" }, + { file = "mypy-1.17.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:434ad499ad8dde8b2f6391ddfa982f41cb07ccda8e3c67781b1bfd4e5f9450a8" }, + { file = "mypy-1.17.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f105f61a5eff52e137fd73bee32958b2add9d9f0a856f17314018646af838e97" }, + { file = "mypy-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:ba06254a5a22729853209550d80f94e28690d5530c661f9416a68ac097b13fc4" }, + { file = "mypy-1.17.0-py3-none-any.whl", hash = "sha256:15d9d0018237ab058e5de3d8fce61b6fa72cc59cc78fd91f1b474bce12abf496" }, + { file = "mypy-1.17.0.tar.gz", hash = "sha256:e5d7ccc08ba089c06e2f5629c660388ef1fee708444f1dee0b9203fa031dee03" }, +] + +[package.dependencies] +mypy_extensions = ">=1.0.0" +pathspec = ">=0.9.0" +typing_extensions = ">=4.6.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +faster-cache = ["orjson"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505" }, + { file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558" }, +] + +[[package]] +name = "nbclient" +version = "0.10.2" +description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." +optional = false +python-versions = ">=3.9.0" +groups = ["dev"] +files = [ + { file = "nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d" }, + { file = "nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193" }, +] + +[package.dependencies] +jupyter-client = ">=6.1.12" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +nbformat = ">=5.1" +traitlets = ">=5.4" + +[package.extras] +dev = ["pre-commit"] +docs = ["autodoc-traits", "flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "mock", "moto", "myst-parser", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling", "testpath", "xmltodict"] +test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] + +[[package]] +name = "nbconvert" +version = "7.16.6" +description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b" }, + { file = "nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582" }, +] + +[package.dependencies] +beautifulsoup4 = "*" +bleach = { version = "!=5.0.0", extras = ["css"] } +defusedxml = "*" +jinja2 = ">=3.0" +jupyter-core = ">=4.7" +jupyterlab-pygments = "*" +markupsafe = ">=2.0" +mistune = ">=2.0.3,<4" +nbclient = ">=0.5.0" +nbformat = ">=5.7" +packaging = "*" +pandocfilters = ">=1.4.1" +pygments = ">=2.4.1" +traitlets = ">=5.1" + +[package.extras] +all = ["flaky", "ipykernel", "ipython", "ipywidgets (>=7.5)", "myst-parser", "nbsphinx (>=0.2.12)", "playwright", "pydata-sphinx-theme", "pyqtwebengine (>=5.15)", "pytest (>=7)", "sphinx (==5.0.2)", "sphinxcontrib-spelling", "tornado (>=6.1)"] +docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"] +qtpdf = ["pyqtwebengine (>=5.15)"] +qtpng = ["pyqtwebengine (>=5.15)"] +serve = ["tornado (>=6.1)"] +test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest (>=7)"] +webpdf = ["playwright"] + +[[package]] +name = "nbformat" +version = "5.10.4" +description = "The Jupyter Notebook format" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, + {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, ] [package.dependencies] -Markdown = ">=3.3" -markupsafe = ">=2.0.1" -mkdocs = ">=1.1" +fastjsonschema = ">=2.15" +jsonschema = ">=2.6" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +traitlets = ">=5.1" + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["pep440", "pre-commit", "pytest", "testpath"] [[package]] -name = "mkdocs-get-deps" -version = "0.2.0" -description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" +name = "nest-asyncio" +version = "1.6.0" +description = "Patch asyncio to allow nested event loops" optional = false -python-versions = ">=3.8" +python-versions = ">=3.5" groups = ["dev"] files = [ - {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, - {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, + {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, + {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, ] -[package.dependencies] -mergedeep = ">=1.3.4" -platformdirs = ">=2.2.0" -pyyaml = ">=5.1" - [[package]] -name = "mkdocs-material" -version = "9.6.17" -description = "Documentation that simply works" +name = "netcdf4" +version = "1.7.2" +description = "Provides an object-oriented python interface to the netCDF version 4 library" optional = false python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] files = [ - {file = "mkdocs_material-9.6.17-py3-none-any.whl", hash = "sha256:221dd8b37a63f52e580bcab4a7e0290e4a6f59bd66190be9c3d40767e05f9417"}, - {file = "mkdocs_material-9.6.17.tar.gz", hash = "sha256:48ae7aec72a3f9f501a70be3fbd329c96ff5f5a385b67a1563e5ed5ce064affe"}, + {file = "netCDF4-1.7.2-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:5e9b485e3bd9294d25ff7dc9addefce42b3d23c1ee7e3627605277d159819392"}, + {file = "netCDF4-1.7.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:118b476fd00d7e3ab9aa7771186d547da645ae3b49c0c7bdab866793ebf22f07"}, + {file = "netCDF4-1.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abe5b1837ff209185ecfe50bd71884c866b3ee69691051833e410e57f177e059"}, + {file = "netCDF4-1.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28021c7e886e5bccf9a8ce504c032d1d7f98d86f67495fb7cf2c9564eba04510"}, + {file = "netCDF4-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:7460b638e41c8ce4179d082a81cb6456f0ce083d4d959f4d9e87a95cd86f64cb"}, + {file = "netCDF4-1.7.2-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:09d61c2ddb6011afb51e77ea0f25cd0bdc28887fb426ffbbc661d920f20c9749"}, + {file = "netCDF4-1.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:fd2a16dbddeb8fa7cf48c37bfc1967290332f2862bb82f984eec2007bb120aeb"}, + {file = "netCDF4-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f54f5d39ffbcf1726a1e6fd90cb5fa74277ecea739a5fa0f424636d71beafe24"}, + {file = "netCDF4-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:902aa50d70f49d002d896212a171d344c38f7b8ca520837c56c922ac1535c4a3"}, + {file = "netCDF4-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3291f9ad0c98c49a4dd16aefad1a9abd3a1b884171db6c81bdcee94671cfabe3"}, + {file = "netCDF4-1.7.2-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e73e3baa0b74afc414e53ff5095748fdbec7fb346eda351e567c23f2f0d247f1"}, + {file = "netCDF4-1.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a51da09258b31776f474c1d47e484fc7214914cdc59edf4cee789ba632184591"}, + {file = "netCDF4-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb95b11804fe051897d1f2044b05d82a1847bc2549631cdd2f655dde7de77a9c"}, + {file = "netCDF4-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d8a848373723f41ef662590b4f5e1832227501c9fd4513e8ad8da58c269977"}, + {file = "netCDF4-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:568ea369e00b581302d77fc5fd0b8f78e520c7e08d0b5af5219ba51f3f1cd694"}, + {file = "netCDF4-1.7.2-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:205a5f1de3ddb993c7c97fb204a923a22408cc2e5facf08d75a8eb89b3e7e1a8"}, + {file = "netCDF4-1.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:96653fc75057df196010818367c63ba6d7e9af603df0a7fe43fcdad3fe0e9e56"}, + {file = "netCDF4-1.7.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30d20e56b9ba2c48884eb89c91b63e6c0612b4927881707e34402719153ef17f"}, + {file = "netCDF4-1.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d6bfd38ba0bde04d56f06c1554714a2ea9dab75811c89450dc3ec57a9d36b80"}, + {file = "netCDF4-1.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:5c5fbee6134ee1246c397e1508e5297d825aa19221fdf3fa8dc9727ad824d7a5"}, + {file = "netCDF4-1.7.2-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:6bf402c2c7c063474576e5cf89af877d0b0cd097d9316d5bc4fcb22b62f12567"}, + {file = "netCDF4-1.7.2-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:5bdf3b34e6fd4210e34fdc5d1a669a22c4863d96f8a20a3928366acae7b3cbbb"}, + {file = "netCDF4-1.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:657774404b9f78a5e4d26506ac9bfe106e4a37238282a70803cc7ce679c5a6cc"}, + {file = "netCDF4-1.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e896d92f01fbf365e33e2513d5a8c4cfe16ff406aae9b6034e5ba1538c8c7a8"}, + {file = "netCDF4-1.7.2-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:eb87c08d1700fe67c301898cf5ba3a3e1f8f2fbb417fcd0e2ac784846b60b058"}, + {file = "netCDF4-1.7.2-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:59b403032774c723ee749d7f2135be311bad7d00d1db284bebfab58b9d5cdb92"}, + {file = "netCDF4-1.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:572f71459ef4b30e8554dcc4e1e6f55de515acc82a50968b48fe622244a64548"}, + {file = "netCDF4-1.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f77e72281acc5f331f82271e5f7f014d46f5ca9bcaa5aafe3e46d66cee21320"}, + {file = "netCDF4-1.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:d0fa7a9674fae8ae4877e813173c3ff7a6beee166b8730bdc847f517b282ed31"}, + {file = "netcdf4-1.7.2.tar.gz", hash = "sha256:a4c6375540b19989896136943abb6d44850ff6f1fa7d3f063253b1ad3f8b7fce"}, ] [package.dependencies] -babel = ">=2.10,<3.0" -backrefs = ">=5.7.post1,<6.0" -click = "<8.2.2" -colorama = ">=0.4,<1.0" -jinja2 = ">=3.1,<4.0" -markdown = ">=3.2,<4.0" -mkdocs = ">=1.6,<2.0" -mkdocs-material-extensions = ">=1.3,<2.0" -paginate = ">=0.5,<1.0" -pygments = ">=2.16,<3.0" -pymdown-extensions = ">=10.2,<11.0" -requests = ">=2.26,<3.0" +certifi = "*" +cftime = "*" +numpy = "*" [package.extras] -git = ["mkdocs-git-committers-plugin-2 (>=1.1,<3)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] -imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] -recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] +tests = ["Cython", "packaging", "pytest"] [[package]] -name = "mkdocs-material-extensions" -version = "1.3.1" -description = "Extension pack for Python Markdown and MkDocs Material." +name = "nodeenv" +version = "1.9.1" +description = "Node.js virtual environment builder" optional = false -python-versions = ">=3.8" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" groups = ["dev"] files = [ - {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, - {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] [[package]] -name = "mkdocstrings" -version = "0.29.1" -description = "Automatic documentation from sources, for MkDocs." +name = "notebook" +version = "7.4.4" +description = "Jupyter Notebook - A web-based notebook environment for interactive computing" optional = false -python-versions = ">=3.9" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "mkdocstrings-0.29.1-py3-none-any.whl", hash = "sha256:37a9736134934eea89cbd055a513d40a020d87dfcae9e3052c2a6b8cd4af09b6"}, - {file = "mkdocstrings-0.29.1.tar.gz", hash = "sha256:8722f8f8c5cd75da56671e0a0c1bbed1df9946c0cef74794d6141b34011abd42"}, + { file = "notebook-7.4.4-py3-none-any.whl", hash = "sha256:32840f7f777b6bff79bb101159336e9b332bdbfba1495b8739e34d1d65cbc1c0" }, + { file = "notebook-7.4.4.tar.gz", hash = "sha256:392fd501e266f2fb3466c6fcd3331163a2184968cb5c5accf90292e01dfe528c" }, ] [package.dependencies] -Jinja2 = ">=2.11.1" -Markdown = ">=3.6" -MarkupSafe = ">=1.1" -mkdocs = ">=1.6" -mkdocs-autorefs = ">=1.4" -mkdocstrings-python = {version = ">=1.16.2", optional = true, markers = "extra == \"python\""} -pymdown-extensions = ">=6.3" +jupyter-server = ">=2.4.0,<3" +jupyterlab = ">=4.4.4,<4.5" +jupyterlab-server = ">=2.27.1,<3" +notebook-shim = ">=0.2,<0.3" +tornado = ">=6.2.0" [package.extras] -crystal = ["mkdocstrings-crystal (>=0.3.4)"] -python = ["mkdocstrings-python (>=1.16.2)"] -python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] +dev = ["hatch", "pre-commit"] +docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["importlib-resources (>=5.0) ; python_version < \"3.10\"", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] [[package]] -name = "mkdocstrings-python" -version = "1.16.12" -description = "A Python handler for mkdocstrings." +name = "notebook-shim" +version = "0.2.4" +description = "A shim layer for notebook traits and config" optional = false -python-versions = ">=3.9" +python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "mkdocstrings_python-1.16.12-py3-none-any.whl", hash = "sha256:22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374"}, - {file = "mkdocstrings_python-1.16.12.tar.gz", hash = "sha256:9b9eaa066e0024342d433e332a41095c4e429937024945fea511afe58f63175d"}, + {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, + {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, ] [package.dependencies] -griffe = ">=1.6.2" -mkdocs-autorefs = ">=1.4" -mkdocstrings = ">=0.28.3" +jupyter-server = ">=1.8,<3" + +[package.extras] +test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"] [[package]] -name = "mypy" -version = "1.17.1" -description = "Optional static typing for Python" +name = "numcodecs" +version = "0.16.1" +description = "A Python package providing buffer compression and transformation codecs for use in data storage and communication applications." optional = false -python-versions = ">=3.9" -groups = ["dev"] +python-versions = ">=3.11" +groups = ["main"] files = [ - {file = "mypy-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3fbe6d5555bf608c47203baa3e72dbc6ec9965b3d7c318aa9a4ca76f465bd972"}, - {file = "mypy-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80ef5c058b7bce08c83cac668158cb7edea692e458d21098c7d3bce35a5d43e7"}, - {file = "mypy-1.17.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4a580f8a70c69e4a75587bd925d298434057fe2a428faaf927ffe6e4b9a98df"}, - {file = "mypy-1.17.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd86bb649299f09d987a2eebb4d52d10603224500792e1bee18303bbcc1ce390"}, - {file = "mypy-1.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a76906f26bd8d51ea9504966a9c25419f2e668f012e0bdf3da4ea1526c534d94"}, - {file = "mypy-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:e79311f2d904ccb59787477b7bd5d26f3347789c06fcd7656fa500875290264b"}, - {file = "mypy-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad37544be07c5d7fba814eb370e006df58fed8ad1ef33ed1649cb1889ba6ff58"}, - {file = "mypy-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:064e2ff508e5464b4bd807a7c1625bc5047c5022b85c70f030680e18f37273a5"}, - {file = "mypy-1.17.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:70401bbabd2fa1aa7c43bb358f54037baf0586f41e83b0ae67dd0534fc64edfd"}, - {file = "mypy-1.17.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e92bdc656b7757c438660f775f872a669b8ff374edc4d18277d86b63edba6b8b"}, - {file = "mypy-1.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c1fdf4abb29ed1cb091cf432979e162c208a5ac676ce35010373ff29247bcad5"}, - {file = "mypy-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:ff2933428516ab63f961644bc49bc4cbe42bbffb2cd3b71cc7277c07d16b1a8b"}, - {file = "mypy-1.17.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:69e83ea6553a3ba79c08c6e15dbd9bfa912ec1e493bf75489ef93beb65209aeb"}, - {file = "mypy-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b16708a66d38abb1e6b5702f5c2c87e133289da36f6a1d15f6a5221085c6403"}, - {file = "mypy-1.17.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:89e972c0035e9e05823907ad5398c5a73b9f47a002b22359b177d40bdaee7056"}, - {file = "mypy-1.17.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03b6d0ed2b188e35ee6d5c36b5580cffd6da23319991c49ab5556c023ccf1341"}, - {file = "mypy-1.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c837b896b37cd103570d776bda106eabb8737aa6dd4f248451aecf53030cdbeb"}, - {file = "mypy-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:665afab0963a4b39dff7c1fa563cc8b11ecff7910206db4b2e64dd1ba25aed19"}, - {file = "mypy-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93378d3203a5c0800c6b6d850ad2f19f7a3cdf1a3701d3416dbf128805c6a6a7"}, - {file = "mypy-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:15d54056f7fe7a826d897789f53dd6377ec2ea8ba6f776dc83c2902b899fee81"}, - {file = "mypy-1.17.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:209a58fed9987eccc20f2ca94afe7257a8f46eb5df1fb69958650973230f91e6"}, - {file = "mypy-1.17.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:099b9a5da47de9e2cb5165e581f158e854d9e19d2e96b6698c0d64de911dd849"}, - {file = "mypy-1.17.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa6ffadfbe6994d724c5a1bb6123a7d27dd68fc9c059561cd33b664a79578e14"}, - {file = "mypy-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:9a2b7d9180aed171f033c9f2fc6c204c1245cf60b0cb61cf2e7acc24eea78e0a"}, - {file = "mypy-1.17.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:15a83369400454c41ed3a118e0cc58bd8123921a602f385cb6d6ea5df050c733"}, - {file = "mypy-1.17.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:55b918670f692fc9fba55c3298d8a3beae295c5cded0a55dccdc5bbead814acd"}, - {file = "mypy-1.17.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:62761474061feef6f720149d7ba876122007ddc64adff5ba6f374fda35a018a0"}, - {file = "mypy-1.17.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c49562d3d908fd49ed0938e5423daed8d407774a479b595b143a3d7f87cdae6a"}, - {file = "mypy-1.17.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:397fba5d7616a5bc60b45c7ed204717eaddc38f826e3645402c426057ead9a91"}, - {file = "mypy-1.17.1-cp314-cp314-win_amd64.whl", hash = "sha256:9d6b20b97d373f41617bd0708fd46aa656059af57f2ef72aa8c7d6a2b73b74ed"}, - {file = "mypy-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5d1092694f166a7e56c805caaf794e0585cabdbf1df36911c414e4e9abb62ae9"}, - {file = "mypy-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:79d44f9bfb004941ebb0abe8eff6504223a9c1ac51ef967d1263c6572bbebc99"}, - {file = "mypy-1.17.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b01586eed696ec905e61bd2568f48740f7ac4a45b3a468e6423a03d3788a51a8"}, - {file = "mypy-1.17.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43808d9476c36b927fbcd0b0255ce75efe1b68a080154a38ae68a7e62de8f0f8"}, - {file = "mypy-1.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:feb8cc32d319edd5859da2cc084493b3e2ce5e49a946377663cc90f6c15fb259"}, - {file = "mypy-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d7598cf74c3e16539d4e2f0b8d8c318e00041553d83d4861f87c7a72e95ac24d"}, - {file = "mypy-1.17.1-py3-none-any.whl", hash = "sha256:a9f52c0351c21fe24c21d8c0eb1f62967b262d6729393397b6f443c3b773c3b9"}, - {file = "mypy-1.17.1.tar.gz", hash = "sha256:25e01ec741ab5bb3eec8ba9cdb0f769230368a22c959c4937360efb89b7e9f01"}, + { file = "numcodecs-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5348a25aefbce37ea7c00c3363d36176155233c95597e5905a932e9620df960d" }, + { file = "numcodecs-0.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2058b0a985470809c720d2457758b61e6c9495a49d5f20dfac9b5ebabd8848eb" }, + { file = "numcodecs-0.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b216b6d7bc207b85d41fddbc25b09fd00d76e265454db6e3fb09d5da0216397" }, + { file = "numcodecs-0.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2308d56c4f84a5b942f8668b4adedd3d9cdd6a22e6e6e20768ec356c77050f38" }, + { file = "numcodecs-0.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:acd8d68b4b815e62cb91e6064a53dac51ee99849350784ee16dd52cdbb4bc70f" }, + { file = "numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122" }, + { file = "numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458" }, + { file = "numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40" }, + { file = "numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609" }, + { file = "numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df" }, + { file = "numcodecs-0.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2ad8ee940315f59188accfc3f2d39726a4ca0d76b49bf8d0018e121f01c49028" }, + { file = "numcodecs-0.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:179ca7bf3525a0f7379df7767d87dd495253de44597cb7e511198b28b09da633" }, + { file = "numcodecs-0.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e2babbb50bf348ae982818d5560af330eab0dcd925fb0e49509785ad57d11db" }, + { file = "numcodecs-0.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4b29d8d3284b72bfad4fb83d672a17f497ae86ee1ef8087bac7222b620d3d91" }, + { file = "numcodecs-0.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:06489635f43e1a959aea73cb830d78cf3adb07ac5f34daccb92091e4d9ac6b07" }, + { file = "numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1" }, ] [package.dependencies] -mypy_extensions = ">=1.0.0" -pathspec = ">=0.9.0" -typing_extensions = ">=4.6.0" +crc32c = { version = ">=2.7", optional = true, markers = "extra == \"crc32c\"" } +numpy = ">=1.24" +typing_extensions = "*" [package.extras] -dmypy = ["psutil (>=4.0)"] -faster-cache = ["orjson"] -install-types = ["pip"] -mypyc = ["setuptools (>=50)"] -reports = ["lxml"] +crc32c = ["crc32c (>=2.7)"] +docs = ["numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-issues"] +msgpack = ["msgpack"] +pcodec = ["pcodec (>=0.3,<0.4)"] +test = ["coverage", "pytest", "pytest-cov"] +test-extras = ["importlib_metadata"] +zfpy = ["zfpy (>=1.0.0)"] [[package]] -name = "mypy-extensions" -version = "1.1.0" -description = "Type system extensions for programs checked with the mypy type checker." +name = "numpy" +version = "2.3.3" +description = "Fundamental package for array computing in Python" optional = false -python-versions = ">=3.8" -groups = ["dev"] +python-versions = ">=3.11" +groups = ["main"] files = [ - {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, - {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, + { file = "numpy-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ffc4f5caba7dfcbe944ed674b7eef683c7e94874046454bb79ed7ee0236f59d" }, + { file = "numpy-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7e946c7170858a0295f79a60214424caac2ffdb0063d4d79cb681f9aa0aa569" }, + { file = "numpy-2.3.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:cd4260f64bc794c3390a63bf0728220dd1a68170c169088a1e0dfa2fde1be12f" }, + { file = "numpy-2.3.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:f0ddb4b96a87b6728df9362135e764eac3cfa674499943ebc44ce96c478ab125" }, + { file = "numpy-2.3.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:afd07d377f478344ec6ca2b8d4ca08ae8bd44706763d1efb56397de606393f48" }, + { file = "numpy-2.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc92a5dedcc53857249ca51ef29f5e5f2f8c513e22cfb90faeb20343b8c6f7a6" }, + { file = "numpy-2.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7af05ed4dc19f308e1d9fc759f36f21921eb7bbfc82843eeec6b2a2863a0aefa" }, + { file = "numpy-2.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:433bf137e338677cebdd5beac0199ac84712ad9d630b74eceeb759eaa45ddf30" }, + { file = "numpy-2.3.3-cp311-cp311-win32.whl", hash = "sha256:eb63d443d7b4ffd1e873f8155260d7f58e7e4b095961b01c91062935c2491e57" }, + { file = "numpy-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:ec9d249840f6a565f58d8f913bccac2444235025bbb13e9a4681783572ee3caa" }, + { file = "numpy-2.3.3-cp311-cp311-win_arm64.whl", hash = "sha256:74c2a948d02f88c11a3c075d9733f1ae67d97c6bdb97f2bb542f980458b257e7" }, + { file = "numpy-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cfdd09f9c84a1a934cde1eec2267f0a43a7cd44b2cca4ff95b7c0d14d144b0bf" }, + { file = "numpy-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb32e3cf0f762aee47ad1ddc6672988f7f27045b0783c887190545baba73aa25" }, + { file = "numpy-2.3.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396b254daeb0a57b1fe0ecb5e3cff6fa79a380fa97c8f7781a6d08cd429418fe" }, + { file = "numpy-2.3.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:067e3d7159a5d8f8a0b46ee11148fc35ca9b21f61e3c49fbd0a027450e65a33b" }, + { file = "numpy-2.3.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c02d0629d25d426585fb2e45a66154081b9fa677bc92a881ff1d216bc9919a8" }, + { file = "numpy-2.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9192da52b9745f7f0766531dcfa978b7763916f158bb63bdb8a1eca0068ab20" }, + { file = "numpy-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cd7de500a5b66319db419dc3c345244404a164beae0d0937283b907d8152e6ea" }, + { file = "numpy-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:93d4962d8f82af58f0b2eb85daaf1b3ca23fe0a85d0be8f1f2b7bb46034e56d7" }, + { file = "numpy-2.3.3-cp312-cp312-win32.whl", hash = "sha256:5534ed6b92f9b7dca6c0a19d6df12d41c68b991cef051d108f6dbff3babc4ebf" }, + { file = "numpy-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:497d7cad08e7092dba36e3d296fe4c97708c93daf26643a1ae4b03f6294d30eb" }, + { file = "numpy-2.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:ca0309a18d4dfea6fc6262a66d06c26cfe4640c3926ceec90e57791a82b6eee5" }, + { file = "numpy-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f5415fb78995644253370985342cd03572ef8620b934da27d77377a2285955bf" }, + { file = "numpy-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d00de139a3324e26ed5b95870ce63be7ec7352171bc69a4cf1f157a48e3eb6b7" }, + { file = "numpy-2.3.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9dc13c6a5829610cc07422bc74d3ac083bd8323f14e2827d992f9e52e22cd6a6" }, + { file = "numpy-2.3.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:d79715d95f1894771eb4e60fb23f065663b2298f7d22945d66877aadf33d00c7" }, + { file = "numpy-2.3.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:952cfd0748514ea7c3afc729a0fc639e61655ce4c55ab9acfab14bda4f402b4c" }, + { file = "numpy-2.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5b83648633d46f77039c29078751f80da65aa64d5622a3cd62aaef9d835b6c93" }, + { file = "numpy-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b001bae8cea1c7dfdb2ae2b017ed0a6f2102d7a70059df1e338e307a4c78a8ae" }, + { file = "numpy-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8e9aced64054739037d42fb84c54dd38b81ee238816c948c8f3ed134665dcd86" }, + { file = "numpy-2.3.3-cp313-cp313-win32.whl", hash = "sha256:9591e1221db3f37751e6442850429b3aabf7026d3b05542d102944ca7f00c8a8" }, + { file = "numpy-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f0dadeb302887f07431910f67a14d57209ed91130be0adea2f9793f1a4f817cf" }, + { file = "numpy-2.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:3c7cf302ac6e0b76a64c4aecf1a09e51abd9b01fc7feee80f6c43e3ab1b1dbc5" }, + { file = "numpy-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:eda59e44957d272846bb407aad19f89dc6f58fecf3504bd144f4c5cf81a7eacc" }, + { file = "numpy-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:823d04112bc85ef5c4fda73ba24e6096c8f869931405a80aa8b0e604510a26bc" }, + { file = "numpy-2.3.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:40051003e03db4041aa325da2a0971ba41cf65714e65d296397cc0e32de6018b" }, + { file = "numpy-2.3.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ee9086235dd6ab7ae75aba5662f582a81ced49f0f1c6de4260a78d8f2d91a19" }, + { file = "numpy-2.3.3-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94fcaa68757c3e2e668ddadeaa86ab05499a70725811e582b6a9858dd472fb30" }, + { file = "numpy-2.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da1a74b90e7483d6ce5244053399a614b1d6b7bc30a60d2f570e5071f8959d3e" }, + { file = "numpy-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2990adf06d1ecee3b3dcbb4977dfab6e9f09807598d647f04d385d29e7a3c3d3" }, + { file = "numpy-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ed635ff692483b8e3f0fcaa8e7eb8a75ee71aa6d975388224f70821421800cea" }, + { file = "numpy-2.3.3-cp313-cp313t-win32.whl", hash = "sha256:a333b4ed33d8dc2b373cc955ca57babc00cd6f9009991d9edc5ddbc1bac36bcd" }, + { file = "numpy-2.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4384a169c4d8f97195980815d6fcad04933a7e1ab3b530921c3fef7a1c63426d" }, + { file = "numpy-2.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:75370986cc0bc66f4ce5110ad35aae6d182cc4ce6433c40ad151f53690130bf1" }, + { file = "numpy-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cd052f1fa6a78dee696b58a914b7229ecfa41f0a6d96dc663c1220a55e137593" }, + { file = "numpy-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:414a97499480067d305fcac9716c29cf4d0d76db6ebf0bf3cbce666677f12652" }, + { file = "numpy-2.3.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:50a5fe69f135f88a2be9b6ca0481a68a136f6febe1916e4920e12f1a34e708a7" }, + { file = "numpy-2.3.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:b912f2ed2b67a129e6a601e9d93d4fa37bef67e54cac442a2f588a54afe5c67a" }, + { file = "numpy-2.3.3-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9e318ee0596d76d4cb3d78535dc005fa60e5ea348cd131a51e99d0bdbe0b54fe" }, + { file = "numpy-2.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce020080e4a52426202bdb6f7691c65bb55e49f261f31a8f506c9f6bc7450421" }, + { file = "numpy-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e6687dc183aa55dae4a705b35f9c0f8cb178bcaa2f029b241ac5356221d5c021" }, + { file = "numpy-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d8f3b1080782469fdc1718c4ed1d22549b5fb12af0d57d35e992158a772a37cf" }, + { file = "numpy-2.3.3-cp314-cp314-win32.whl", hash = "sha256:cb248499b0bc3be66ebd6578b83e5acacf1d6cb2a77f2248ce0e40fbec5a76d0" }, + { file = "numpy-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:691808c2b26b0f002a032c73255d0bd89751425f379f7bcd22d140db593a96e8" }, + { file = "numpy-2.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:9ad12e976ca7b10f1774b03615a2a4bab8addce37ecc77394d8e986927dc0dfe" }, + { file = "numpy-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9cc48e09feb11e1db00b320e9d30a4151f7369afb96bd0e48d942d09da3a0d00" }, + { file = "numpy-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:901bf6123879b7f251d3631967fd574690734236075082078e0571977c6a8e6a" }, + { file = "numpy-2.3.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:7f025652034199c301049296b59fa7d52c7e625017cae4c75d8662e377bf487d" }, + { file = "numpy-2.3.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:533ca5f6d325c80b6007d4d7fb1984c303553534191024ec6a524a4c92a5935a" }, + { file = "numpy-2.3.3-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0edd58682a399824633b66885d699d7de982800053acf20be1eaa46d92009c54" }, + { file = "numpy-2.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:367ad5d8fbec5d9296d18478804a530f1191e24ab4d75ab408346ae88045d25e" }, + { file = "numpy-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8f6ac61a217437946a1fa48d24c47c91a0c4f725237871117dea264982128097" }, + { file = "numpy-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:179a42101b845a816d464b6fe9a845dfaf308fdfc7925387195570789bb2c970" }, + { file = "numpy-2.3.3-cp314-cp314t-win32.whl", hash = "sha256:1250c5d3d2562ec4174bce2e3a1523041595f9b651065e4a4473f5f48a6bc8a5" }, + { file = "numpy-2.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:b37a0b2e5935409daebe82c1e42274d30d9dd355852529eab91dab8dcca7419f" }, + { file = "numpy-2.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:78c9f6560dc7e6b3990e32df7ea1a50bbd0e2a111e05209963f5ddcab7073b0b" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1e02c7159791cd481e1e6d5ddd766b62a4d5acf8df4d4d1afe35ee9c5c33a41e" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:dca2d0fc80b3893ae72197b39f69d55a3cd8b17ea1b50aa4c62de82419936150" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:99683cbe0658f8271b333a1b1b4bb3173750ad59c0c61f5bbdc5b318918fffe3" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:d9d537a39cc9de668e5cd0e25affb17aec17b577c6b3ae8a3d866b479fbe88d0" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8596ba2f8af5f93b01d97563832686d20206d303024777f6dfc2e7c7c3f1850e" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1ec5615b05369925bd1125f27df33f3b6c8bc10d788d5999ecd8769a1fa04db" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:2e267c7da5bf7309670523896df97f93f6e469fb931161f483cd6882b3b1a5dc" }, + { file = "numpy-2.3.3.tar.gz", hash = "sha256:ddc7c39727ba62b80dfdbedf400d1c10ddfa8eefbd7ec8dcb118be8b56d31029" }, ] [[package]] -name = "nodeenv" -version = "1.9.1" -description = "Node.js virtual environment builder" +name = "overrides" +version = "7.7.0" +description = "A decorator to automatically detect mismatch when overriding a method." optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +python-versions = ">=3.6" groups = ["dev"] files = [ - {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, - {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, + {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, + {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, ] [[package]] @@ -764,10 +2399,10 @@ version = "25.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" -groups = ["dev"] +groups = ["main", "dev"] files = [ - {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, - {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, + { file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484" }, + { file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f" }, ] [[package]] @@ -778,14 +2413,144 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, - {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, + { file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591" }, + { file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945" }, ] [package.extras] dev = ["pytest", "tox"] lint = ["black"] +[[package]] +name = "pandas" +version = "2.3.1" +description = "Powerful data structures for data analysis, time series, and statistics" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + { file = "pandas-2.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:22c2e866f7209ebc3a8f08d75766566aae02bcc91d196935a1d9e59c7b990ac9" }, + { file = "pandas-2.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3583d348546201aff730c8c47e49bc159833f971c2899d6097bce68b9112a4f1" }, + { file = "pandas-2.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f951fbb702dacd390561e0ea45cdd8ecfa7fb56935eb3dd78e306c19104b9b0" }, + { file = "pandas-2.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd05b72ec02ebfb993569b4931b2e16fbb4d6ad6ce80224a3ee838387d83a191" }, + { file = "pandas-2.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1b916a627919a247d865aed068eb65eb91a344b13f5b57ab9f610b7716c92de1" }, + { file = "pandas-2.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fe67dc676818c186d5a3d5425250e40f179c2a89145df477dd82945eaea89e97" }, + { file = "pandas-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:2eb789ae0274672acbd3c575b0598d213345660120a257b47b5dafdc618aec83" }, + { file = "pandas-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2b0540963d83431f5ce8870ea02a7430adca100cec8a050f0811f8e31035541b" }, + { file = "pandas-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fe7317f578c6a153912bd2292f02e40c1d8f253e93c599e82620c7f69755c74f" }, + { file = "pandas-2.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6723a27ad7b244c0c79d8e7007092d7c8f0f11305770e2f4cd778b3ad5f9f85" }, + { file = "pandas-2.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3462c3735fe19f2638f2c3a40bd94ec2dc5ba13abbb032dd2fa1f540a075509d" }, + { file = "pandas-2.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:98bcc8b5bf7afed22cc753a28bc4d9e26e078e777066bc53fac7904ddef9a678" }, + { file = "pandas-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4d544806b485ddf29e52d75b1f559142514e60ef58a832f74fb38e48d757b299" }, + { file = "pandas-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:b3cd4273d3cb3707b6fffd217204c52ed92859533e31dc03b7c5008aa933aaab" }, + { file = "pandas-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:689968e841136f9e542020698ee1c4fbe9caa2ed2213ae2388dc7b81721510d3" }, + { file = "pandas-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:025e92411c16cbe5bb2a4abc99732a6b132f439b8aab23a59fa593eb00704232" }, + { file = "pandas-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b7ff55f31c4fcb3e316e8f7fa194566b286d6ac430afec0d461163312c5841e" }, + { file = "pandas-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dcb79bf373a47d2a40cf7232928eb7540155abbc460925c2c96d2d30b006eb4" }, + { file = "pandas-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:56a342b231e8862c96bdb6ab97170e203ce511f4d0429589c8ede1ee8ece48b8" }, + { file = "pandas-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ca7ed14832bce68baef331f4d7f294411bed8efd032f8109d690df45e00c4679" }, + { file = "pandas-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:ac942bfd0aca577bef61f2bc8da8147c4ef6879965ef883d8e8d5d2dc3e744b8" }, + { file = "pandas-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9026bd4a80108fac2239294a15ef9003c4ee191a0f64b90f170b40cfb7cf2d22" }, + { file = "pandas-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6de8547d4fdb12421e2d047a2c446c623ff4c11f47fddb6b9169eb98ffba485a" }, + { file = "pandas-2.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:782647ddc63c83133b2506912cc6b108140a38a37292102aaa19c81c83db2928" }, + { file = "pandas-2.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba6aff74075311fc88504b1db890187a3cd0f887a5b10f5525f8e2ef55bfdb9" }, + { file = "pandas-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e5635178b387bd2ba4ac040f82bc2ef6e6b500483975c4ebacd34bec945fda12" }, + { file = "pandas-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6f3bf5ec947526106399a9e1d26d40ee2b259c66422efdf4de63c848492d91bb" }, + { file = "pandas-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:1c78cf43c8fde236342a1cb2c34bcff89564a7bfed7e474ed2fffa6aed03a956" }, + { file = "pandas-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8dfc17328e8da77be3cf9f47509e5637ba8f137148ed0e9b5241e1baf526e20a" }, + { file = "pandas-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ec6c851509364c59a5344458ab935e6451b31b818be467eb24b0fe89bd05b6b9" }, + { file = "pandas-2.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:911580460fc4884d9b05254b38a6bfadddfcc6aaef856fb5859e7ca202e45275" }, + { file = "pandas-2.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f4d6feeba91744872a600e6edbbd5b033005b431d5ae8379abee5bcfa479fab" }, + { file = "pandas-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fe37e757f462d31a9cd7580236a82f353f5713a80e059a29753cf938c6775d96" }, + { file = "pandas-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5db9637dbc24b631ff3707269ae4559bce4b7fd75c1c4d7e13f40edc42df4444" }, + { file = "pandas-2.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4645f770f98d656f11c69e81aeb21c6fca076a44bed3dcbb9396a4311bc7f6d8" }, + { file = "pandas-2.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:342e59589cc454aaff7484d75b816a433350b3d7964d7847327edda4d532a2e3" }, + { file = "pandas-2.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d12f618d80379fde6af007f65f0c25bd3e40251dbd1636480dfffce2cf1e6da" }, + { file = "pandas-2.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd71c47a911da120d72ef173aeac0bf5241423f9bfea57320110a978457e069e" }, + { file = "pandas-2.3.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:09e3b1587f0f3b0913e21e8b32c3119174551deb4a4eba4a89bc7377947977e7" }, + { file = "pandas-2.3.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2323294c73ed50f612f67e2bf3ae45aea04dce5690778e08a09391897f35ff88" }, + { file = "pandas-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:b4b0de34dc8499c2db34000ef8baad684cfa4cbd836ecee05f323ebfba348c7d" }, + { file = "pandas-2.3.1.tar.gz", hash = "sha256:0a95b9ac964fe83ce317827f80304d37388ea77616b1425f0ae41c9d2d0d7bb2" }, +] + +[package.dependencies] +numpy = {version = ">=1.26.0", markers = "python_version >= \"3.12\""} +python-dateutil = ">=2.8.2" +pytz = ">=2020.1" +tzdata = ">=2022.7" + +[package.extras] +all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] +aws = ["s3fs (>=2022.11.0)"] +clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] +compression = ["zstandard (>=0.19.0)"] +computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] +feather = ["pyarrow (>=10.0.1)"] +fss = ["fsspec (>=2022.11.0)"] +gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] +hdf5 = ["tables (>=3.8.0)"] +html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] +mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] +parquet = ["pyarrow (>=10.0.1)"] +performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] +plot = ["matplotlib (>=3.6.3)"] +postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] +spss = ["pyreadstat (>=1.2.0)"] +sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.9.2)"] + +[[package]] +name = "pandocfilters" +version = "1.5.1" +description = "Utilities for writing pandoc filters in python" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["dev"] +files = [ + {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, + {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, +] + +[[package]] +name = "parso" +version = "0.8.4" +description = "A Python Parser" +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, + {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, +] + +[package.extras] +qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] +testing = ["docopt", "pytest"] + +[[package]] +name = "partd" +version = "1.4.2" +description = "Appendable key-value storage" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f"}, + {file = "partd-1.4.2.tar.gz", hash = "sha256:d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c"}, +] + +[package.dependencies] +locket = "*" +toolz = "*" + +[package.extras] +complete = ["blosc", "numpy (>=1.20.0)", "pandas (>=1.3)", "pyzmq"] + [[package]] name = "pathspec" version = "0.12.1" @@ -798,6 +2563,42 @@ files = [ {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] +[[package]] +name = "pexpect" +version = "4.9.0" +description = "Pexpect allows easy control of interactive console applications." +optional = false +python-versions = "*" +groups = ["dev"] +markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" +files = [ + {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, + {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, +] + +[package.dependencies] +ptyprocess = ">=0.5" + +[[package]] +name = "pip-requirements-parser" +version = "32.0.1" +description = "pip requirements parser - a mostly correct pip requirements parsing library because it uses pip's own code." +optional = false +python-versions = ">=3.6.0" +groups = ["dev"] +files = [ + { file = "pip-requirements-parser-32.0.1.tar.gz", hash = "sha256:b4fa3a7a0be38243123cf9d1f3518da10c51bdb165a2b2985566247f9155a7d3" }, + { file = "pip_requirements_parser-32.0.1-py3-none-any.whl", hash = "sha256:4659bc2a667783e7a15d190f6fccf8b2486685b6dba4c19c3876314769c57526" }, +] + +[package.dependencies] +packaging = "*" +pyparsing = "*" + +[package.extras] +docs = ["Sphinx (>=3.3.1)", "doc8 (>=0.8.1)", "sphinx-rtd-theme (>=0.5.0)"] +testing = ["aboutcode-toolkit (>=6.0.0)", "black", "pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"] + [[package]] name = "platformdirs" version = "4.3.8" @@ -806,8 +2607,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4"}, - {file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc"}, + { file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4" }, + { file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc" }, ] [package.extras] @@ -823,36 +2624,24 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, - {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, + { file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746" }, + { file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3" }, ] [package.extras] dev = ["pre-commit", "tox"] testing = ["coverage", "pytest", "pytest-benchmark"] -[[package]] -name = "poetry-core" -version = "2.1.3" -description = "Poetry PEP 517 Build Backend" -optional = false -python-versions = "<4.0,>=3.9" -groups = ["dev"] -files = [ - {file = "poetry_core-2.1.3-py3-none-any.whl", hash = "sha256:2c704f05016698a54ca1d327f46ce2426d72eaca6ff614132c8477c292266771"}, - {file = "poetry_core-2.1.3.tar.gz", hash = "sha256:0522a015477ed622c89aad56a477a57813cace0c8e7ff2a2906b7ef4a2e296a4"}, -] - [[package]] name = "pre-commit" -version = "4.3.0" +version = "4.2.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pre_commit-4.3.0-py2.py3-none-any.whl", hash = "sha256:2b0747ad7e6e967169136edffee14c16e148a778a54e4f967921aa1ebf2308d8"}, - {file = "pre_commit-4.3.0.tar.gz", hash = "sha256:499fe450cc9d42e9d58e606262795ecb64dd05438943c62b66f6a8673da30b16"}, + { file = "pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd" }, + { file = "pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146" }, ] [package.dependencies] @@ -862,21 +2651,115 @@ nodeenv = ">=0.11.1" pyyaml = ">=5.1" virtualenv = ">=20.10.0" +[[package]] +name = "prometheus-client" +version = "0.22.1" +description = "Python client for the Prometheus monitoring system." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "prometheus_client-0.22.1-py3-none-any.whl", hash = "sha256:cca895342e308174341b2cbf99a56bef291fbc0ef7b9e5412a0f26d653ba7094" }, + { file = "prometheus_client-0.22.1.tar.gz", hash = "sha256:190f1331e783cf21eb60bca559354e0a4d4378facecf78f5428c39b675d20d28" }, +] + +[package.extras] +twisted = ["twisted"] + +[[package]] +name = "prompt-toolkit" +version = "3.0.51" +description = "Library for building powerful interactive command lines in Python" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07" }, + { file = "prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed" }, +] + +[package.dependencies] +wcwidth = "*" + +[[package]] +name = "psutil" +version = "7.0.0" +description = "Cross-platform lib for process and system monitoring in Python. NOTE: the syntax of this script MUST be kept compatible with Python 2.7." +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + { file = "psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25" }, + { file = "psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da" }, + { file = "psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91" }, + { file = "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" }, + { file = "psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993" }, + { file = "psutil-7.0.0-cp36-cp36m-win32.whl", hash = "sha256:84df4eb63e16849689f76b1ffcb36db7b8de703d1bc1fe41773db487621b6c17" }, + { file = "psutil-7.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1e744154a6580bc968a0195fd25e80432d3afec619daf145b9e5ba16cc1d688e" }, + { file = "psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99" }, + { file = "psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553" }, + { file = "psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456" }, +] + +[package.extras] +dev = ["abi3audit", "black (==24.10.0)", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest", "pytest-cov", "pytest-xdist", "requests", "rstcheck", "ruff", "setuptools", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "vulture", "wheel"] +test = ["pytest", "pytest-xdist", "setuptools"] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +description = "Run a subprocess in a pseudo terminal" +optional = false +python-versions = "*" +groups = ["dev"] +markers = "os_name != \"nt\" or sys_platform != \"win32\" and sys_platform != \"emscripten\"" +files = [ + {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, + {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +description = "Safely evaluate AST nodes without side effects" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, + {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, +] + +[package.extras] +tests = ["pytest"] + +[[package]] +name = "pycparser" +version = "2.22" +description = "C parser in Python" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, +] + [[package]] name = "pydantic" -version = "2.12.3" +version = "2.12.0" description = "Data validation using Python type hints" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["main", "dev"] files = [ - {file = "pydantic-2.12.3-py3-none-any.whl", hash = "sha256:6986454a854bc3bc6e5443e1369e06a3a456af9d339eda45510f517d9ea5c6bf"}, - {file = "pydantic-2.12.3.tar.gz", hash = "sha256:1da1c82b0fc140bb0103bc1441ffe062154c8d38491189751ee00fd8ca65ce74"}, + { file = "pydantic-2.12.0-py3-none-any.whl", hash = "sha256:f6a1da352d42790537e95e83a8bdfb91c7efbae63ffd0b86fa823899e807116f" }, + { file = "pydantic-2.12.0.tar.gz", hash = "sha256:c1a077e6270dbfb37bfd8b498b3981e2bb18f68103720e51fa6c306a5a9af563" }, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.41.4" +pydantic-core = "2.41.1" typing-extensions = ">=4.14.1" typing-inspection = ">=0.4.2" @@ -886,129 +2769,125 @@ timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows [[package]] name = "pydantic-core" -version = "2.41.4" +version = "2.41.1" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["main", "dev"] files = [ - {file = "pydantic_core-2.41.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2442d9a4d38f3411f22eb9dd0912b7cbf4b7d5b6c92c4173b75d3e1ccd84e36e"}, - {file = "pydantic_core-2.41.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:30a9876226dda131a741afeab2702e2d127209bde3c65a2b8133f428bc5d006b"}, - {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d55bbac04711e2980645af68b97d445cdbcce70e5216de444a6c4b6943ebcccd"}, - {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e1d778fb7849a42d0ee5927ab0f7453bf9f85eef8887a546ec87db5ddb178945"}, - {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b65077a4693a98b90ec5ad8f203ad65802a1b9b6d4a7e48066925a7e1606706"}, - {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:62637c769dee16eddb7686bf421be48dfc2fae93832c25e25bc7242e698361ba"}, - {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dfe3aa529c8f501babf6e502936b9e8d4698502b2cfab41e17a028d91b1ac7b"}, - {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ca2322da745bf2eeb581fc9ea3bbb31147702163ccbcbf12a3bb630e4bf05e1d"}, - {file = "pydantic_core-2.41.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e8cd3577c796be7231dcf80badcf2e0835a46665eaafd8ace124d886bab4d700"}, - {file = "pydantic_core-2.41.4-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:1cae8851e174c83633f0833e90636832857297900133705ee158cf79d40f03e6"}, - {file = "pydantic_core-2.41.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a26d950449aae348afe1ac8be5525a00ae4235309b729ad4d3399623125b43c9"}, - {file = "pydantic_core-2.41.4-cp310-cp310-win32.whl", hash = "sha256:0cf2a1f599efe57fa0051312774280ee0f650e11152325e41dfd3018ef2c1b57"}, - {file = "pydantic_core-2.41.4-cp310-cp310-win_amd64.whl", hash = "sha256:a8c2e340d7e454dc3340d3d2e8f23558ebe78c98aa8f68851b04dcb7bc37abdc"}, - {file = "pydantic_core-2.41.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:28ff11666443a1a8cf2a044d6a545ebffa8382b5f7973f22c36109205e65dc80"}, - {file = "pydantic_core-2.41.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:61760c3925d4633290292bad462e0f737b840508b4f722247d8729684f6539ae"}, - {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eae547b7315d055b0de2ec3965643b0ab82ad0106a7ffd29615ee9f266a02827"}, - {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef9ee5471edd58d1fcce1c80ffc8783a650e3e3a193fe90d52e43bb4d87bff1f"}, - {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:15dd504af121caaf2c95cb90c0ebf71603c53de98305621b94da0f967e572def"}, - {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3a926768ea49a8af4d36abd6a8968b8790f7f76dd7cbd5a4c180db2b4ac9a3a2"}, - {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6916b9b7d134bff5440098a4deb80e4cb623e68974a87883299de9124126c2a8"}, - {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5cf90535979089df02e6f17ffd076f07237efa55b7343d98760bde8743c4b265"}, - {file = "pydantic_core-2.41.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7533c76fa647fade2d7ec75ac5cc079ab3f34879626dae5689b27790a6cf5a5c"}, - {file = "pydantic_core-2.41.4-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:37e516bca9264cbf29612539801ca3cd5d1be465f940417b002905e6ed79d38a"}, - {file = "pydantic_core-2.41.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0c19cb355224037c83642429b8ce261ae108e1c5fbf5c028bac63c77b0f8646e"}, - {file = "pydantic_core-2.41.4-cp311-cp311-win32.whl", hash = "sha256:09c2a60e55b357284b5f31f5ab275ba9f7f70b7525e18a132ec1f9160b4f1f03"}, - {file = "pydantic_core-2.41.4-cp311-cp311-win_amd64.whl", hash = "sha256:711156b6afb5cb1cb7c14a2cc2c4a8b4c717b69046f13c6b332d8a0a8f41ca3e"}, - {file = "pydantic_core-2.41.4-cp311-cp311-win_arm64.whl", hash = "sha256:6cb9cf7e761f4f8a8589a45e49ed3c0d92d1d696a45a6feaee8c904b26efc2db"}, - {file = "pydantic_core-2.41.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ab06d77e053d660a6faaf04894446df7b0a7e7aba70c2797465a0a1af00fc887"}, - {file = "pydantic_core-2.41.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c53ff33e603a9c1179a9364b0a24694f183717b2e0da2b5ad43c316c956901b2"}, - {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:304c54176af2c143bd181d82e77c15c41cbacea8872a2225dd37e6544dce9999"}, - {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:025ba34a4cf4fb32f917d5d188ab5e702223d3ba603be4d8aca2f82bede432a4"}, - {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9f5f30c402ed58f90c70e12eff65547d3ab74685ffe8283c719e6bead8ef53f"}, - {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd96e5d15385d301733113bcaa324c8bcf111275b7675a9c6e88bfb19fc05e3b"}, - {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98f348cbb44fae6e9653c1055db7e29de67ea6a9ca03a5fa2c2e11a47cff0e47"}, - {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec22626a2d14620a83ca583c6f5a4080fa3155282718b6055c2ea48d3ef35970"}, - {file = "pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3a95d4590b1f1a43bf33ca6d647b990a88f4a3824a8c4572c708f0b45a5290ed"}, - {file = "pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:f9672ab4d398e1b602feadcffcdd3af44d5f5e6ddc15bc7d15d376d47e8e19f8"}, - {file = "pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:84d8854db5f55fead3b579f04bda9a36461dab0730c5d570e1526483e7bb8431"}, - {file = "pydantic_core-2.41.4-cp312-cp312-win32.whl", hash = "sha256:9be1c01adb2ecc4e464392c36d17f97e9110fbbc906bcbe1c943b5b87a74aabd"}, - {file = "pydantic_core-2.41.4-cp312-cp312-win_amd64.whl", hash = "sha256:d682cf1d22bab22a5be08539dca3d1593488a99998f9f412137bc323179067ff"}, - {file = "pydantic_core-2.41.4-cp312-cp312-win_arm64.whl", hash = "sha256:833eebfd75a26d17470b58768c1834dfc90141b7afc6eb0429c21fc5a21dcfb8"}, - {file = "pydantic_core-2.41.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:85e050ad9e5f6fe1004eec65c914332e52f429bc0ae12d6fa2092407a462c746"}, - {file = "pydantic_core-2.41.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7393f1d64792763a48924ba31d1e44c2cfbc05e3b1c2c9abb4ceeadd912cced"}, - {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94dab0940b0d1fb28bcab847adf887c66a27a40291eedf0b473be58761c9799a"}, - {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:de7c42f897e689ee6f9e93c4bec72b99ae3b32a2ade1c7e4798e690ff5246e02"}, - {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:664b3199193262277b8b3cd1e754fb07f2c6023289c815a1e1e8fb415cb247b1"}, - {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d95b253b88f7d308b1c0b417c4624f44553ba4762816f94e6986819b9c273fb2"}, - {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1351f5bbdbbabc689727cb91649a00cb9ee7203e0a6e54e9f5ba9e22e384b84"}, - {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1affa4798520b148d7182da0615d648e752de4ab1a9566b7471bc803d88a062d"}, - {file = "pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7b74e18052fea4aa8dea2fb7dbc23d15439695da6cbe6cfc1b694af1115df09d"}, - {file = "pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:285b643d75c0e30abda9dc1077395624f314a37e3c09ca402d4015ef5979f1a2"}, - {file = "pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:f52679ff4218d713b3b33f88c89ccbf3a5c2c12ba665fb80ccc4192b4608dbab"}, - {file = "pydantic_core-2.41.4-cp313-cp313-win32.whl", hash = "sha256:ecde6dedd6fff127c273c76821bb754d793be1024bc33314a120f83a3c69460c"}, - {file = "pydantic_core-2.41.4-cp313-cp313-win_amd64.whl", hash = "sha256:d081a1f3800f05409ed868ebb2d74ac39dd0c1ff6c035b5162356d76030736d4"}, - {file = "pydantic_core-2.41.4-cp313-cp313-win_arm64.whl", hash = "sha256:f8e49c9c364a7edcbe2a310f12733aad95b022495ef2a8d653f645e5d20c1564"}, - {file = "pydantic_core-2.41.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ed97fd56a561f5eb5706cebe94f1ad7c13b84d98312a05546f2ad036bafe87f4"}, - {file = "pydantic_core-2.41.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a870c307bf1ee91fc58a9a61338ff780d01bfae45922624816878dce784095d2"}, - {file = "pydantic_core-2.41.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d25e97bc1f5f8f7985bdc2335ef9e73843bb561eb1fa6831fdfc295c1c2061cf"}, - {file = "pydantic_core-2.41.4-cp313-cp313t-win_amd64.whl", hash = "sha256:d405d14bea042f166512add3091c1af40437c2e7f86988f3915fabd27b1e9cd2"}, - {file = "pydantic_core-2.41.4-cp313-cp313t-win_arm64.whl", hash = "sha256:19f3684868309db5263a11bace3c45d93f6f24afa2ffe75a647583df22a2ff89"}, - {file = "pydantic_core-2.41.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:e9205d97ed08a82ebb9a307e92914bb30e18cdf6f6b12ca4bedadb1588a0bfe1"}, - {file = "pydantic_core-2.41.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:82df1f432b37d832709fbcc0e24394bba04a01b6ecf1ee87578145c19cde12ac"}, - {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc3b4cc4539e055cfa39a3763c939f9d409eb40e85813257dcd761985a108554"}, - {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b1eb1754fce47c63d2ff57fdb88c351a6c0150995890088b33767a10218eaa4e"}, - {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e6ab5ab30ef325b443f379ddb575a34969c333004fca5a1daa0133a6ffaad616"}, - {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:31a41030b1d9ca497634092b46481b937ff9397a86f9f51bd41c4767b6fc04af"}, - {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a44ac1738591472c3d020f61c6df1e4015180d6262ebd39bf2aeb52571b60f12"}, - {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d72f2b5e6e82ab8f94ea7d0d42f83c487dc159c5240d8f83beae684472864e2d"}, - {file = "pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:c4d1e854aaf044487d31143f541f7aafe7b482ae72a022c664b2de2e466ed0ad"}, - {file = "pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b568af94267729d76e6ee5ececda4e283d07bbb28e8148bb17adad93d025d25a"}, - {file = "pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:6d55fb8b1e8929b341cc313a81a26e0d48aa3b519c1dbaadec3a6a2b4fcad025"}, - {file = "pydantic_core-2.41.4-cp314-cp314-win32.whl", hash = "sha256:5b66584e549e2e32a1398df11da2e0a7eff45d5c2d9db9d5667c5e6ac764d77e"}, - {file = "pydantic_core-2.41.4-cp314-cp314-win_amd64.whl", hash = "sha256:557a0aab88664cc552285316809cab897716a372afaf8efdbef756f8b890e894"}, - {file = "pydantic_core-2.41.4-cp314-cp314-win_arm64.whl", hash = "sha256:3f1ea6f48a045745d0d9f325989d8abd3f1eaf47dd00485912d1a3a63c623a8d"}, - {file = "pydantic_core-2.41.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6c1fe4c5404c448b13188dd8bd2ebc2bdd7e6727fa61ff481bcc2cca894018da"}, - {file = "pydantic_core-2.41.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:523e7da4d43b113bf8e7b49fa4ec0c35bf4fe66b2230bfc5c13cc498f12c6c3e"}, - {file = "pydantic_core-2.41.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5729225de81fb65b70fdb1907fcf08c75d498f4a6f15af005aabb1fdadc19dfa"}, - {file = "pydantic_core-2.41.4-cp314-cp314t-win_amd64.whl", hash = "sha256:de2cfbb09e88f0f795fd90cf955858fc2c691df65b1f21f0aa00b99f3fbc661d"}, - {file = "pydantic_core-2.41.4-cp314-cp314t-win_arm64.whl", hash = "sha256:d34f950ae05a83e0ede899c595f312ca976023ea1db100cd5aa188f7005e3ab0"}, - {file = "pydantic_core-2.41.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:646e76293345954acea6966149683047b7b2ace793011922208c8e9da12b0062"}, - {file = "pydantic_core-2.41.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cc8e85a63085a137d286e2791037f5fdfff0aabb8b899483ca9c496dd5797338"}, - {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:692c622c8f859a17c156492783902d8370ac7e121a611bd6fe92cc71acf9ee8d"}, - {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d1e2906efb1031a532600679b424ef1d95d9f9fb507f813951f23320903adbd7"}, - {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e04e2f7f8916ad3ddd417a7abdd295276a0bf216993d9318a5d61cc058209166"}, - {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df649916b81822543d1c8e0e1d079235f68acdc7d270c911e8425045a8cfc57e"}, - {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c529f862fdba70558061bb936fe00ddbaaa0c647fd26e4a4356ef1d6561891"}, - {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3b4c5a1fd3a311563ed866c2c9b62da06cb6398bee186484ce95c820db71cb"}, - {file = "pydantic_core-2.41.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6e0fc40d84448f941df9b3334c4b78fe42f36e3bf631ad54c3047a0cdddc2514"}, - {file = "pydantic_core-2.41.4-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:44e7625332683b6c1c8b980461475cde9595eff94447500e80716db89b0da005"}, - {file = "pydantic_core-2.41.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:170ee6835f6c71081d031ef1c3b4dc4a12b9efa6a9540f93f95b82f3c7571ae8"}, - {file = "pydantic_core-2.41.4-cp39-cp39-win32.whl", hash = "sha256:3adf61415efa6ce977041ba9745183c0e1f637ca849773afa93833e04b163feb"}, - {file = "pydantic_core-2.41.4-cp39-cp39-win_amd64.whl", hash = "sha256:a238dd3feee263eeaeb7dc44aea4ba1364682c4f9f9467e6af5596ba322c2332"}, - {file = "pydantic_core-2.41.4-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:a1b2cfec3879afb742a7b0bcfa53e4f22ba96571c9e54d6a3afe1052d17d843b"}, - {file = "pydantic_core-2.41.4-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:d175600d975b7c244af6eb9c9041f10059f20b8bbffec9e33fdd5ee3f67cdc42"}, - {file = "pydantic_core-2.41.4-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f184d657fa4947ae5ec9c47bd7e917730fa1cbb78195037e32dcbab50aca5ee"}, - {file = "pydantic_core-2.41.4-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ed810568aeffed3edc78910af32af911c835cc39ebbfacd1f0ab5dd53028e5c"}, - {file = "pydantic_core-2.41.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:4f5d640aeebb438517150fdeec097739614421900e4a08db4a3ef38898798537"}, - {file = "pydantic_core-2.41.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:4a9ab037b71927babc6d9e7fc01aea9e66dc2a4a34dff06ef0724a4049629f94"}, - {file = "pydantic_core-2.41.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4dab9484ec605c3016df9ad4fd4f9a390bc5d816a3b10c6550f8424bb80b18c"}, - {file = "pydantic_core-2.41.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8a5028425820731d8c6c098ab642d7b8b999758e24acae03ed38a66eca8335"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e5ab4fc177dd41536b3c32b2ea11380dd3d4619a385860621478ac2d25ceb00"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:3d88d0054d3fa11ce936184896bed3c1c5441d6fa483b498fac6a5d0dd6f64a9"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b2a054a8725f05b4b6503357e0ac1c4e8234ad3b0c2ac130d6ffc66f0e170e2"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0d9db5a161c99375a0c68c058e227bee1d89303300802601d76a3d01f74e258"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:6273ea2c8ffdac7b7fda2653c49682db815aebf4a89243a6feccf5e36c18c347"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:4c973add636efc61de22530b2ef83a65f39b6d6f656df97f678720e20de26caa"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b69d1973354758007f46cf2d44a4f3d0933f10b6dc9bf15cf1356e037f6f731a"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3619320641fd212aaf5997b6ca505e97540b7e16418f4a241f44cdf108ffb50d"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:491535d45cd7ad7e4a2af4a5169b0d07bebf1adfd164b0368da8aa41e19907a5"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:54d86c0cada6aba4ec4c047d0e348cbad7063b87ae0f005d9f8c9ad04d4a92a2"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eca1124aced216b2500dc2609eade086d718e8249cb9696660ab447d50a758bd"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c9024169becccf0cb470ada03ee578d7348c119a0d42af3dcf9eda96e3a247c"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:26895a4268ae5a2849269f4991cdc97236e4b9c010e51137becf25182daac405"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:ca4df25762cf71308c446e33c9b1fdca2923a3f13de616e2a949f38bf21ff5a8"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:5a28fcedd762349519276c36634e71853b4541079cab4acaaac60c4421827308"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c173ddcd86afd2535e2b695217e82191580663a1d1928239f877f5a1649ef39f"}, - {file = "pydantic_core-2.41.4.tar.gz", hash = "sha256:70e47929a9d4a1905a67e4b687d5946026390568a8e952b92824118063cee4d5"}, + { file = "pydantic_core-2.41.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:e63036298322e9aea1c8b7c0a6c1204d615dbf6ec0668ce5b83ff27f07404a61" }, + { file = "pydantic_core-2.41.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:241299ca91fc77ef64f11ed909d2d9220a01834e8e6f8de61275c4dd16b7c936" }, + { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ab7e594a2a5c24ab8013a7dc8cfe5f2260e80e490685814122081705c2cf2b0" }, + { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b054ef1a78519cb934b58e9c90c09e93b837c935dcd907b891f2b265b129eb6e" }, + { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f2ab7d10d0ab2ed6da54c757233eb0f48ebfb4f86e9b88ccecb3f92bbd61a538" }, + { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2757606b7948bb853a27e4040820306eaa0ccb9e8f9f8a0fa40cb674e170f350" }, + { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cec0e75eb61f606bad0a32f2be87507087514e26e8c73db6cbdb8371ccd27917" }, + { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0234236514f44a5bf552105cfe2543a12f48203397d9d0f866affa569345a5b5" }, + { file = "pydantic_core-2.41.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:1b974e41adfbb4ebb0f65fc4ca951347b17463d60893ba7d5f7b9bb087c83897" }, + { file = "pydantic_core-2.41.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:248dafb3204136113c383e91a4d815269f51562b6659b756cf3df14eefc7d0bb" }, + { file = "pydantic_core-2.41.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:678f9d76a91d6bcedd7568bbf6beb77ae8447f85d1aeebaab7e2f0829cfc3a13" }, + { file = "pydantic_core-2.41.1-cp310-cp310-win32.whl", hash = "sha256:dff5bee1d21ee58277900692a641925d2dddfde65182c972569b1a276d2ac8fb" }, + { file = "pydantic_core-2.41.1-cp310-cp310-win_amd64.whl", hash = "sha256:5042da12e5d97d215f91567110fdfa2e2595a25f17c19b9ff024f31c34f9b53e" }, + { file = "pydantic_core-2.41.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4f276a6134fe1fc1daa692642a3eaa2b7b858599c49a7610816388f5e37566a1" }, + { file = "pydantic_core-2.41.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07588570a805296ece009c59d9a679dc08fab72fb337365afb4f3a14cfbfc176" }, + { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28527e4b53400cd60ffbd9812ccb2b5135d042129716d71afd7e45bf42b855c0" }, + { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:46a1c935c9228bad738c8a41de06478770927baedf581d172494ab36a6b96575" }, + { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:447ddf56e2b7d28d200d3e9eafa936fe40485744b5a824b67039937580b3cb20" }, + { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:63892ead40c1160ac860b5debcc95c95c5a0035e543a8b5a4eac70dd22e995f4" }, + { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4a9543ca355e6df8fbe9c83e9faab707701e9103ae857ecb40f1c0cf8b0e94d" }, + { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f2611bdb694116c31e551ed82e20e39a90bea9b7ad9e54aaf2d045ad621aa7a1" }, + { file = "pydantic_core-2.41.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fecc130893a9b5f7bfe230be1bb8c61fe66a19db8ab704f808cb25a82aad0bc9" }, + { file = "pydantic_core-2.41.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:1e2df5f8344c99b6ea5219f00fdc8950b8e6f2c422fbc1cc122ec8641fac85a1" }, + { file = "pydantic_core-2.41.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:35291331e9d8ed94c257bab6be1cb3a380b5eee570a2784bffc055e18040a2ea" }, + { file = "pydantic_core-2.41.1-cp311-cp311-win32.whl", hash = "sha256:2876a095292668d753f1a868c4a57c4ac9f6acbd8edda8debe4218d5848cf42f" }, + { file = "pydantic_core-2.41.1-cp311-cp311-win_amd64.whl", hash = "sha256:b92d6c628e9a338846a28dfe3fcdc1a3279388624597898b105e078cdfc59298" }, + { file = "pydantic_core-2.41.1-cp311-cp311-win_arm64.whl", hash = "sha256:7d82ae99409eb69d507a89835488fb657faa03ff9968a9379567b0d2e2e56bc5" }, + { file = "pydantic_core-2.41.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:db2f82c0ccbce8f021ad304ce35cbe02aa2f95f215cac388eed542b03b4d5eb4" }, + { file = "pydantic_core-2.41.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:47694a31c710ced9205d5f1e7e8af3ca57cbb8a503d98cb9e33e27c97a501601" }, + { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93e9decce94daf47baf9e9d392f5f2557e783085f7c5e522011545d9d6858e00" }, + { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ab0adafdf2b89c8b84f847780a119437a0931eca469f7b44d356f2b426dd9741" }, + { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5da98cc81873f39fd56882e1569c4677940fbc12bce6213fad1ead784192d7c8" }, + { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:209910e88afb01fd0fd403947b809ba8dba0e08a095e1f703294fda0a8fdca51" }, + { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:365109d1165d78d98e33c5bfd815a9b5d7d070f578caefaabcc5771825b4ecb5" }, + { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:706abf21e60a2857acdb09502bc853ee5bce732955e7b723b10311114f033115" }, + { file = "pydantic_core-2.41.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bf0bd5417acf7f6a7ec3b53f2109f587be176cb35f9cf016da87e6017437a72d" }, + { file = "pydantic_core-2.41.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:2e71b1c6ceb9c78424ae9f63a07292fb769fb890a4e7efca5554c47f33a60ea5" }, + { file = "pydantic_core-2.41.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:80745b9770b4a38c25015b517451c817799bfb9d6499b0d13d8227ec941cb513" }, + { file = "pydantic_core-2.41.1-cp312-cp312-win32.whl", hash = "sha256:83b64d70520e7890453f1aa21d66fda44e7b35f1cfea95adf7b4289a51e2b479" }, + { file = "pydantic_core-2.41.1-cp312-cp312-win_amd64.whl", hash = "sha256:377defd66ee2003748ee93c52bcef2d14fde48fe28a0b156f88c3dbf9bc49a50" }, + { file = "pydantic_core-2.41.1-cp312-cp312-win_arm64.whl", hash = "sha256:c95caff279d49c1d6cdfe2996e6c2ad712571d3b9caaa209a404426c326c4bde" }, + { file = "pydantic_core-2.41.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70e790fce5f05204ef4403159857bfcd587779da78627b0babb3654f75361ebf" }, + { file = "pydantic_core-2.41.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9cebf1ca35f10930612d60bd0f78adfacee824c30a880e3534ba02c207cceceb" }, + { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:170406a37a5bc82c22c3274616bf6f17cc7df9c4a0a0a50449e559cb755db669" }, + { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:12d4257fc9187a0ccd41b8b327d6a4e57281ab75e11dda66a9148ef2e1fb712f" }, + { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a75a33b4db105dd1c8d57839e17ee12db8d5ad18209e792fa325dbb4baeb00f4" }, + { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08a589f850803a74e0fcb16a72081cafb0d72a3cdda500106942b07e76b7bf62" }, + { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a97939d6ea44763c456bd8a617ceada2c9b96bb5b8ab3dfa0d0827df7619014" }, + { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2ae423c65c556f09569524b80ffd11babff61f33055ef9773d7c9fabc11ed8d" }, + { file = "pydantic_core-2.41.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:4dc703015fbf8764d6a8001c327a87f1823b7328d40b47ce6000c65918ad2b4f" }, + { file = "pydantic_core-2.41.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:968e4ffdfd35698a5fe659e5e44c508b53664870a8e61c8f9d24d3d145d30257" }, + { file = "pydantic_core-2.41.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:fff2b76c8e172d34771cd4d4f0ade08072385310f214f823b5a6ad4006890d32" }, + { file = "pydantic_core-2.41.1-cp313-cp313-win32.whl", hash = "sha256:a38a5263185407ceb599f2f035faf4589d57e73c7146d64f10577f6449e8171d" }, + { file = "pydantic_core-2.41.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42ae7fd6760782c975897e1fdc810f483b021b32245b0105d40f6e7a3803e4b" }, + { file = "pydantic_core-2.41.1-cp313-cp313-win_arm64.whl", hash = "sha256:ad4111acc63b7384e205c27a2f15e23ac0ee21a9d77ad6f2e9cb516ec90965fb" }, + { file = "pydantic_core-2.41.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:440d0df7415b50084a4ba9d870480c16c5f67c0d1d4d5119e3f70925533a0edc" }, + { file = "pydantic_core-2.41.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71eaa38d342099405dae6484216dcf1e8e4b0bebd9b44a4e08c9b43db6a2ab67" }, + { file = "pydantic_core-2.41.1-cp313-cp313t-win_amd64.whl", hash = "sha256:555ecf7e50f1161d3f693bc49f23c82cf6cdeafc71fa37a06120772a09a38795" }, + { file = "pydantic_core-2.41.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:05226894a26f6f27e1deb735d7308f74ef5fa3a6de3e0135bb66cdcaee88f64b" }, + { file = "pydantic_core-2.41.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:85ff7911c6c3e2fd8d3779c50925f6406d770ea58ea6dde9c230d35b52b16b4a" }, + { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47f1f642a205687d59b52dc1a9a607f45e588f5a2e9eeae05edd80c7a8c47674" }, + { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df11c24e138876ace5ec6043e5cae925e34cf38af1a1b3d63589e8f7b5f5cdc4" }, + { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7f0bf7f5c8f7bf345c527e8a0d72d6b26eda99c1227b0c34e7e59e181260de31" }, + { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:82b887a711d341c2c47352375d73b029418f55b20bd7815446d175a70effa706" }, + { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5f1d5d6bbba484bdf220c72d8ecd0be460f4bd4c5e534a541bb2cd57589fb8b" }, + { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2bf1917385ebe0f968dc5c6ab1375886d56992b93ddfe6bf52bff575d03662be" }, + { file = "pydantic_core-2.41.1-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:4f94f3ab188f44b9a73f7295663f3ecb8f2e2dd03a69c8f2ead50d37785ecb04" }, + { file = "pydantic_core-2.41.1-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:3925446673641d37c30bd84a9d597e49f72eacee8b43322c8999fa17d5ae5bc4" }, + { file = "pydantic_core-2.41.1-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:49bd51cc27adb980c7b97357ae036ce9b3c4d0bb406e84fbe16fb2d368b602a8" }, + { file = "pydantic_core-2.41.1-cp314-cp314-win32.whl", hash = "sha256:a31ca0cd0e4d12ea0df0077df2d487fc3eb9d7f96bbb13c3c5b88dcc21d05159" }, + { file = "pydantic_core-2.41.1-cp314-cp314-win_amd64.whl", hash = "sha256:1b5c4374a152e10a22175d7790e644fbd8ff58418890e07e2073ff9d4414efae" }, + { file = "pydantic_core-2.41.1-cp314-cp314-win_arm64.whl", hash = "sha256:4fee76d757639b493eb600fba668f1e17475af34c17dd61db7a47e824d464ca9" }, + { file = "pydantic_core-2.41.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f9b9c968cfe5cd576fdd7361f47f27adeb120517e637d1b189eea1c3ece573f4" }, + { file = "pydantic_core-2.41.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1ebc7ab67b856384aba09ed74e3e977dded40e693de18a4f197c67d0d4e6d8e" }, + { file = "pydantic_core-2.41.1-cp314-cp314t-win_amd64.whl", hash = "sha256:8ae0dc57b62a762985bc7fbf636be3412394acc0ddb4ade07fe104230f1b9762" }, + { file = "pydantic_core-2.41.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:10ce489cf09a4956a1549af839b983edc59b0f60e1b068c21b10154e58f54f80" }, + { file = "pydantic_core-2.41.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ff548c908caffd9455fd1342366bcf8a1ec8a3fca42f35c7fc60883d6a901074" }, + { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d43bf082025082bda13be89a5f876cc2386b7727c7b322be2d2b706a45cea8e" }, + { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:666aee751faf1c6864b2db795775dd67b61fdcf646abefa309ed1da039a97209" }, + { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b83aaeff0d7bde852c32e856f3ee410842ebc08bc55c510771d87dcd1c01e1ed" }, + { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:055c7931b0329cb8acde20cdde6d9c2cbc2a02a0a8e54a792cddd91e2ea92c65" }, + { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:530bbb1347e3e5ca13a91ac087c4971d7da09630ef8febd27a20a10800c2d06d" }, + { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:65a0ea16cfea7bfa9e43604c8bd726e63a3788b61c384c37664b55209fcb1d74" }, + { file = "pydantic_core-2.41.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8fa93fadff794c6d15c345c560513b160197342275c6d104cc879f932b978afc" }, + { file = "pydantic_core-2.41.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:c8a1af9ac51969a494c6a82b563abae6859dc082d3b999e8fa7ba5ee1b05e8e8" }, + { file = "pydantic_core-2.41.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:30edab28829703f876897c9471a857e43d847b8799c3c9e2fbce644724b50aa4" }, + { file = "pydantic_core-2.41.1-cp39-cp39-win32.whl", hash = "sha256:84d0ff869f98be2e93efdf1ae31e5a15f0926d22af8677d51676e373abbfe57a" }, + { file = "pydantic_core-2.41.1-cp39-cp39-win_amd64.whl", hash = "sha256:b5674314987cdde5a5511b029fa5fb1556b3d147a367e01dd583b19cfa8e35df" }, + { file = "pydantic_core-2.41.1-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:68f2251559b8efa99041bb63571ec7cdd2d715ba74cc82b3bc9eff824ebc8bf0" }, + { file = "pydantic_core-2.41.1-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:c7bc140c596097cb53b30546ca257dbe3f19282283190b1b5142928e5d5d3a20" }, + { file = "pydantic_core-2.41.1-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2896510fce8f4725ec518f8b9d7f015a00db249d2fd40788f442af303480063d" }, + { file = "pydantic_core-2.41.1-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ced20e62cfa0f496ba68fa5d6c7ee71114ea67e2a5da3114d6450d7f4683572a" }, + { file = "pydantic_core-2.41.1-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:b04fa9ed049461a7398138c604b00550bc89e3e1151d84b81ad6dc93e39c4c06" }, + { file = "pydantic_core-2.41.1-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:b3b7d9cfbfdc43c80a16638c6dc2768e3956e73031fca64e8e1a3ae744d1faeb" }, + { file = "pydantic_core-2.41.1-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eec83fc6abef04c7f9bec616e2d76ee9a6a4ae2a359b10c21d0f680e24a247ca" }, + { file = "pydantic_core-2.41.1-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6771a2d9f83c4038dfad5970a3eef215940682b2175e32bcc817bdc639019b28" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fabcbdb12de6eada8d6e9a759097adb3c15440fafc675b3e94ae5c9cb8d678a0" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:80e97ccfaf0aaf67d55de5085b0ed0d994f57747d9d03f2de5cc9847ca737b08" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34df1fe8fea5d332484a763702e8b6a54048a9d4fe6ccf41e34a128238e01f52" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:421b5595f845842fc093f7250e24ee395f54ca62d494fdde96f43ecf9228ae01" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:dce8b22663c134583aaad24827863306a933f576c79da450be3984924e2031d1" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:300a9c162fea9906cc5c103893ca2602afd84f0ec90d3be36f4cc360125d22e1" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e019167628f6e6161ae7ab9fb70f6d076a0bf0d55aa9b20833f86a320c70dd65" }, + { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:13ab9cc2de6f9d4ab645a050ae5aee61a2424ac4d3a16ba23d4c2027705e0301" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:af2385d3f98243fb733862f806c5bb9122e5fba05b373e3af40e3c82d711cef1" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:6550617a0c2115be56f90c31a5370261d8ce9dbf051c3ed53b51172dd34da696" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc17b6ecf4983d298686014c92ebc955a9f9baf9f57dad4065e7906e7bee6222" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:42ae9352cf211f08b04ea110563d6b1e415878eea5b4c70f6bdb17dca3b932d2" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e82947de92068b0a21681a13dd2102387197092fbe7defcfb8453e0913866506" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e244c37d5471c9acdcd282890c6c4c83747b77238bfa19429b8473586c907656" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1e798b4b304a995110d41ec93653e57975620ccb2842ba9420037985e7d7284e" }, + { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f1fc716c0eb1663c59699b024428ad5ec2bcc6b928527b8fe28de6cb89f47efb" }, + { file = "pydantic_core-2.41.1.tar.gz", hash = "sha256:1ad375859a6d8c356b7704ec0f547a58e82ee80bb41baa811ad710e124bc8f2f" }, ] [package.dependencies] @@ -1022,8 +2901,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"}, - {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, + { file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b" }, + { file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887" }, ] [package.extras] @@ -1031,14 +2910,14 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pymdown-extensions" -version = "10.16.1" +version = "10.16" description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pymdown_extensions-10.16.1-py3-none-any.whl", hash = "sha256:d6ba157a6c03146a7fb122b2b9a121300056384eafeec9c9f9e584adfdb2a32d"}, - {file = "pymdown_extensions-10.16.1.tar.gz", hash = "sha256:aace82bcccba3efc03e25d584e6a22d27a8e17caa3f4dd9f207e49b787aa9a91"}, + { file = "pymdown_extensions-10.16-py3-none-any.whl", hash = "sha256:f5dd064a4db588cb2d95229fc4ee63a1b16cc8b4d0e6145c0899ed8723da1df2" }, + { file = "pymdown_extensions-10.16.tar.gz", hash = "sha256:71dac4fca63fabeffd3eb9038b756161a33ec6e8d230853d3cecf562155ab3de" }, ] [package.dependencies] @@ -1048,6 +2927,89 @@ pyyaml = "*" [package.extras] extra = ["pygments (>=2.19.1)"] +[[package]] +name = "pyparsing" +version = "3.2.5" +description = "pyparsing - Classes and methods to define and execute parsing grammars" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e" }, + { file = "pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6" }, +] + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + +[[package]] +name = "pyproj" +version = "3.7.2" +description = "Python interface to PROJ (cartographic projections and coordinate transformations library)" +optional = false +python-versions = ">=3.11" +groups = ["main"] +files = [ + { file = "pyproj-3.7.2-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:2514d61f24c4e0bb9913e2c51487ecdaeca5f8748d8313c933693416ca41d4d5" }, + { file = "pyproj-3.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:8693ca3892d82e70de077701ee76dd13d7bca4ae1c9d1e739d72004df015923a" }, + { file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5e26484d80fea56273ed1555abaea161e9661d81a6c07815d54b8e883d4ceb25" }, + { file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:281cb92847814e8018010c48b4069ff858a30236638631c1a91dd7bfa68f8a8a" }, + { file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9c8577f0b7bb09118ec2e57e3babdc977127dd66326d6c5d755c76b063e6d9dc" }, + { file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a23f59904fac3a5e7364b3aa44d288234af267ca041adb2c2b14a903cd5d3ac5" }, + { file = "pyproj-3.7.2-cp311-cp311-win32.whl", hash = "sha256:f2af4ed34b2cf3e031a2d85b067a3ecbd38df073c567e04b52fa7a0202afde8a" }, + { file = "pyproj-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:0b7cb633565129677b2a183c4d807c727d1c736fcb0568a12299383056e67433" }, + { file = "pyproj-3.7.2-cp311-cp311-win_arm64.whl", hash = "sha256:38b08d85e3a38e455625b80e9eb9f78027c8e2649a21dec4df1f9c3525460c71" }, + { file = "pyproj-3.7.2-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:0a9bb26a6356fb5b033433a6d1b4542158fb71e3c51de49b4c318a1dff3aeaab" }, + { file = "pyproj-3.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:567caa03021178861fad27fabde87500ec6d2ee173dd32f3e2d9871e40eebd68" }, + { file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:c203101d1dc3c038a56cff0447acc515dd29d6e14811406ac539c21eed422b2a" }, + { file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1edc34266c0c23ced85f95a1ee8b47c9035eae6aca5b6b340327250e8e281630" }, + { file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aa9f26c21bc0e2dc3d224cb1eb4020cf23e76af179a7c66fea49b828611e4260" }, + { file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9428b318530625cb389b9ddc9c51251e172808a4af79b82809376daaeabe5e9" }, + { file = "pyproj-3.7.2-cp312-cp312-win32.whl", hash = "sha256:b3d99ed57d319da042f175f4554fc7038aa4bcecc4ac89e217e350346b742c9d" }, + { file = "pyproj-3.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:11614a054cd86a2ed968a657d00987a86eeb91fdcbd9ad3310478685dc14a128" }, + { file = "pyproj-3.7.2-cp312-cp312-win_arm64.whl", hash = "sha256:509a146d1398bafe4f53273398c3bb0b4732535065fa995270e52a9d3676bca3" }, + { file = "pyproj-3.7.2-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:19466e529b1b15eeefdf8ff26b06fa745856c044f2f77bf0edbae94078c1dfa1" }, + { file = "pyproj-3.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:c79b9b84c4a626c5dc324c0d666be0bfcebd99f7538d66e8898c2444221b3da7" }, + { file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ceecf374cacca317bc09e165db38ac548ee3cad07c3609442bd70311c59c21aa" }, + { file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5141a538ffdbe4bfd157421828bb2e07123a90a7a2d6f30fa1462abcfb5ce681" }, + { file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f000841e98ea99acbb7b8ca168d67773b0191de95187228a16110245c5d954d5" }, + { file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8115faf2597f281a42ab608ceac346b4eb1383d3b45ab474fd37341c4bf82a67" }, + { file = "pyproj-3.7.2-cp313-cp313-win32.whl", hash = "sha256:f18c0579dd6be00b970cb1a6719197fceecc407515bab37da0066f0184aafdf3" }, + { file = "pyproj-3.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:bb41c29d5f60854b1075853fe80c58950b398d4ebb404eb532536ac8d2834ed7" }, + { file = "pyproj-3.7.2-cp313-cp313-win_arm64.whl", hash = "sha256:2b617d573be4118c11cd96b8891a0b7f65778fa7733ed8ecdb297a447d439100" }, + { file = "pyproj-3.7.2-cp313-cp313t-macosx_13_0_x86_64.whl", hash = "sha256:d27b48f0e81beeaa2b4d60c516c3a1cfbb0c7ff6ef71256d8e9c07792f735279" }, + { file = "pyproj-3.7.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:55a3610d75023c7b1c6e583e48ef8f62918e85a2ae81300569d9f104d6684bb6" }, + { file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8d7349182fa622696787cc9e195508d2a41a64765da9b8a6bee846702b9e6220" }, + { file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:d230b186eb876ed4f29a7c5ee310144c3a0e44e89e55f65fb3607e13f6db337c" }, + { file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:237499c7862c578d0369e2b8ac56eec550e391a025ff70e2af8417139dabb41c" }, + { file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8c225f5978abd506fd9a78eaaf794435e823c9156091cabaab5374efb29d7f69" }, + { file = "pyproj-3.7.2-cp313-cp313t-win32.whl", hash = "sha256:2da731876d27639ff9d2d81c151f6ab90a1546455fabd93368e753047be344a2" }, + { file = "pyproj-3.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f54d91ae18dd23b6c0ab48126d446820e725419da10617d86a1b69ada6d881d3" }, + { file = "pyproj-3.7.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fc52ba896cfc3214dc9f9ca3c0677a623e8fdd096b257c14a31e719d21ff3fdd" }, + { file = "pyproj-3.7.2-cp314-cp314-macosx_13_0_x86_64.whl", hash = "sha256:2aaa328605ace41db050d06bac1adc11f01b71fe95c18661497763116c3a0f02" }, + { file = "pyproj-3.7.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:35dccbce8201313c596a970fde90e33605248b66272595c061b511c8100ccc08" }, + { file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:25b0b7cb0042444c29a164b993c45c1b8013d6c48baa61dc1160d834a277e83b" }, + { file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:85def3a6388e9ba51f964619aa002a9d2098e77c6454ff47773bb68871024281" }, + { file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b1bccefec3875ab81eabf49059e2b2ea77362c178b66fd3528c3e4df242f1516" }, + { file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d5371ca114d6990b675247355a801925814eca53e6c4b2f1b5c0a956336ee36e" }, + { file = "pyproj-3.7.2-cp314-cp314-win32.whl", hash = "sha256:77f066626030f41be543274f5ac79f2a511fe89860ecd0914f22131b40a0ec25" }, + { file = "pyproj-3.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:5a964da1696b8522806f4276ab04ccfff8f9eb95133a92a25900697609d40112" }, + { file = "pyproj-3.7.2-cp314-cp314-win_arm64.whl", hash = "sha256:e258ab4dbd3cf627809067c0ba8f9884ea76c8e5999d039fb37a1619c6c3e1f6" }, + { file = "pyproj-3.7.2-cp314-cp314t-macosx_13_0_x86_64.whl", hash = "sha256:bbbac2f930c6d266f70ec75df35ef851d96fdb3701c674f42fd23a9314573b37" }, + { file = "pyproj-3.7.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:b7544e0a3d6339dc9151e9c8f3ea62a936ab7cc446a806ec448bbe86aebb979b" }, + { file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:f7f5133dca4c703e8acadf6f30bc567d39a42c6af321e7f81975c2518f3ed357" }, + { file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:5aff3343038d7426aa5076f07feb88065f50e0502d1b0d7c22ddfdd2c75a3f81" }, + { file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:b0552178c61f2ac1c820d087e8ba6e62b29442debddbb09d51c4bf8acc84d888" }, + { file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:47d87db2d2c436c5fd0409b34d70bb6cdb875cca2ebe7a9d1c442367b0ab8d59" }, + { file = "pyproj-3.7.2-cp314-cp314t-win32.whl", hash = "sha256:c9b6f1d8ad3e80a0ee0903a778b6ece7dca1d1d40f6d114ae01bc8ddbad971aa" }, + { file = "pyproj-3.7.2-cp314-cp314t-win_amd64.whl", hash = "sha256:1914e29e27933ba6f9822663ee0600f169014a2859f851c054c88cf5ea8a333c" }, + { file = "pyproj-3.7.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d9d25bae416a24397e0d85739f84d323b55f6511e45a522dd7d7eae70d10c7e4" }, + { file = "pyproj-3.7.2.tar.gz", hash = "sha256:39a0cf1ecc7e282d1d30f36594ebd55c9fae1fda8a2622cee5d100430628f88c" }, +] + +[package.dependencies] +certifi = "*" + [[package]] name = "pytest" version = "8.4.1" @@ -1056,54 +3018,110 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7"}, - {file = "pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c"}, + { file = "pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7" }, + { file = "pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c" }, ] [package.dependencies] -colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} +colorama = { version = ">=0.4", markers = "sys_platform == \"win32\"" } iniconfig = ">=1" packaging = ">=20" pluggy = ">=1.5,<2" pygments = ">=2.7.2" [package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main", "dev"] +files = [ + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "python-json-logger" +version = "3.3.0" +description = "JSON Log Formatter for the Python Logging Package" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7" }, + { file = "python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84" }, +] + +[package.extras] +dev = ["backports.zoneinfo ; python_version < \"3.9\"", "black", "build", "freezegun", "mdx_truly_sane_lists", "mike", "mkdocs", "mkdocs-awesome-pages-plugin", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-material (>=8.5)", "mkdocstrings[python]", "msgspec ; implementation_name != \"pypy\"", "mypy", "orjson ; implementation_name != \"pypy\"", "pylint", "pytest", "tzdata", "validate-pyproject[all]"] [[package]] -name = "pytest-cov" -version = "6.2.1" -description = "Pytest plugin for measuring coverage." +name = "pytz" +version = "2025.2" +description = "World timezone definitions, modern and historical" optional = false -python-versions = ">=3.9" -groups = ["dev"] +python-versions = "*" +groups = ["main"] files = [ - {file = "pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5"}, - {file = "pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2"}, + { file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00" }, + { file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3" }, ] -[package.dependencies] -coverage = {version = ">=7.5", extras = ["toml"]} -pluggy = ">=1.2" -pytest = ">=6.2.5" - -[package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] - [[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" +name = "pywin32" +version = "311" +description = "Python for Window Extensions" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +python-versions = "*" groups = ["dev"] +markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"" files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, + { file = "pywin32-311-cp310-cp310-win32.whl", hash = "sha256:d03ff496d2a0cd4a5893504789d4a15399133fe82517455e78bad62efbb7f0a3" }, + { file = "pywin32-311-cp310-cp310-win_amd64.whl", hash = "sha256:797c2772017851984b97180b0bebe4b620bb86328e8a884bb626156295a63b3b" }, + { file = "pywin32-311-cp310-cp310-win_arm64.whl", hash = "sha256:0502d1facf1fed4839a9a51ccbcc63d952cf318f78ffc00a7e78528ac27d7a2b" }, + { file = "pywin32-311-cp311-cp311-win32.whl", hash = "sha256:184eb5e436dea364dcd3d2316d577d625c0351bf237c4e9a5fabbcfa5a58b151" }, + { file = "pywin32-311-cp311-cp311-win_amd64.whl", hash = "sha256:3ce80b34b22b17ccbd937a6e78e7225d80c52f5ab9940fe0506a1a16f3dab503" }, + { file = "pywin32-311-cp311-cp311-win_arm64.whl", hash = "sha256:a733f1388e1a842abb67ffa8e7aad0e70ac519e09b0f6a784e65a136ec7cefd2" }, + { file = "pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31" }, + { file = "pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067" }, + { file = "pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852" }, + { file = "pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d" }, + { file = "pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d" }, + { file = "pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a" }, + { file = "pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee" }, + { file = "pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87" }, + { file = "pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42" }, + { file = "pywin32-311-cp38-cp38-win32.whl", hash = "sha256:6c6f2969607b5023b0d9ce2541f8d2cbb01c4f46bc87456017cf63b73f1e2d8c" }, + { file = "pywin32-311-cp38-cp38-win_amd64.whl", hash = "sha256:c8015b09fb9a5e188f83b7b04de91ddca4658cee2ae6f3bc483f0b21a77ef6cd" }, + { file = "pywin32-311-cp39-cp39-win32.whl", hash = "sha256:aba8f82d551a942cb20d4a83413ccbac30790b50efb89a75e4f586ac0bb8056b" }, + { file = "pywin32-311-cp39-cp39-win_amd64.whl", hash = "sha256:e0c4cfb0621281fe40387df582097fd796e80430597cb9944f0ae70447bacd91" }, + { file = "pywin32-311-cp39-cp39-win_arm64.whl", hash = "sha256:62ea666235135fee79bb154e695f3ff67370afefd71bd7fea7512fc70ef31e3d" }, ] -[package.dependencies] -six = ">=1.5" +[[package]] +name = "pywinpty" +version = "2.0.15" +description = "Pseudo terminal support for Windows from Python." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +markers = "os_name == \"nt\"" +files = [ + { file = "pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e" }, + { file = "pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca" }, + { file = "pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc" }, + { file = "pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408" }, + { file = "pywinpty-2.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:a4560ad8c01e537708d2790dbe7da7d986791de805d89dd0d3697ca59e9e4901" }, + { file = "pywinpty-2.0.15-cp39-cp39-win_amd64.whl", hash = "sha256:d261cd88fcd358cfb48a7ca0700db3e1c088c9c10403c9ebc0d8a8b57aa6a117" }, + { file = "pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2" }, +] [[package]] name = "pyyaml" @@ -1111,7 +3129,7 @@ version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" -groups = ["dev"] +groups = ["main", "dev"] files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -1176,13 +3194,121 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04"}, - {file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff"}, + { file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04" }, + { file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff" }, ] [package.dependencies] pyyaml = "*" +[[package]] +name = "pyzmq" +version = "27.0.0" +description = "Python bindings for 0MQ" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "pyzmq-27.0.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:b973ee650e8f442ce482c1d99ca7ab537c69098d53a3d046676a484fd710c87a" }, + { file = "pyzmq-27.0.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:661942bc7cd0223d569d808f2e5696d9cc120acc73bf3e88a1f1be7ab648a7e4" }, + { file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50360fb2a056ffd16e5f4177eee67f1dd1017332ea53fb095fe7b5bf29c70246" }, + { file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf209a6dc4b420ed32a7093642843cbf8703ed0a7d86c16c0b98af46762ebefb" }, + { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c2dace4a7041cca2fba5357a2d7c97c5effdf52f63a1ef252cfa496875a3762d" }, + { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:63af72b2955fc77caf0a77444baa2431fcabb4370219da38e1a9f8d12aaebe28" }, + { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e8c4adce8e37e75c4215297d7745551b8dcfa5f728f23ce09bf4e678a9399413" }, + { file = "pyzmq-27.0.0-cp310-cp310-win32.whl", hash = "sha256:5d5ef4718ecab24f785794e0e7536436698b459bfbc19a1650ef55280119d93b" }, + { file = "pyzmq-27.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:e40609380480b3d12c30f841323f42451c755b8fece84235236f5fe5ffca8c1c" }, + { file = "pyzmq-27.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:6b0397b0be277b46762956f576e04dc06ced265759e8c2ff41a0ee1aa0064198" }, + { file = "pyzmq-27.0.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:21457825249b2a53834fa969c69713f8b5a79583689387a5e7aed880963ac564" }, + { file = "pyzmq-27.0.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1958947983fef513e6e98eff9cb487b60bf14f588dc0e6bf35fa13751d2c8251" }, + { file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0dc628b5493f9a8cd9844b8bee9732ef587ab00002157c9329e4fc0ef4d3afa" }, + { file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7bbe9e1ed2c8d3da736a15694d87c12493e54cc9dc9790796f0321794bbc91f" }, + { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dc1091f59143b471d19eb64f54bae4f54bcf2a466ffb66fe45d94d8d734eb495" }, + { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7011ade88c8e535cf140f8d1a59428676fbbce7c6e54fefce58bf117aefb6667" }, + { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2c386339d7e3f064213aede5d03d054b237937fbca6dd2197ac8cf3b25a6b14e" }, + { file = "pyzmq-27.0.0-cp311-cp311-win32.whl", hash = "sha256:0546a720c1f407b2172cb04b6b094a78773491497e3644863cf5c96c42df8cff" }, + { file = "pyzmq-27.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:15f39d50bd6c9091c67315ceb878a4f531957b121d2a05ebd077eb35ddc5efed" }, + { file = "pyzmq-27.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c5817641eebb391a2268c27fecd4162448e03538387093cdbd8bf3510c316b38" }, + { file = "pyzmq-27.0.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:cbabc59dcfaac66655c040dfcb8118f133fb5dde185e5fc152628354c1598e52" }, + { file = "pyzmq-27.0.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0ac5179cba4b2f94f1aa208fbb77b62c4c9bf24dd446278b8b602cf85fcda3" }, + { file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53a48f0228eab6cbf69fde3aa3c03cbe04e50e623ef92ae395fce47ef8a76152" }, + { file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:111db5f395e09f7e775f759d598f43cb815fc58e0147623c4816486e1a39dc22" }, + { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c8878011653dcdc27cc2c57e04ff96f0471e797f5c19ac3d7813a245bcb24371" }, + { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:c0ed2c1f335ba55b5fdc964622254917d6b782311c50e138863eda409fbb3b6d" }, + { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e918d70862d4cfd4b1c187310015646a14e1f5917922ab45b29f28f345eeb6be" }, + { file = "pyzmq-27.0.0-cp312-abi3-win32.whl", hash = "sha256:88b4e43cab04c3c0f0d55df3b1eef62df2b629a1a369b5289a58f6fa8b07c4f4" }, + { file = "pyzmq-27.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:dce4199bf5f648a902ce37e7b3afa286f305cd2ef7a8b6ec907470ccb6c8b371" }, + { file = "pyzmq-27.0.0-cp312-abi3-win_arm64.whl", hash = "sha256:56e46bbb85d52c1072b3f809cc1ce77251d560bc036d3a312b96db1afe76db2e" }, + { file = "pyzmq-27.0.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c36ad534c0c29b4afa088dc53543c525b23c0797e01b69fef59b1a9c0e38b688" }, + { file = "pyzmq-27.0.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:67855c14173aec36395d7777aaba3cc527b393821f30143fd20b98e1ff31fd38" }, + { file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8617c7d43cd8ccdb62aebe984bfed77ca8f036e6c3e46dd3dddda64b10f0ab7a" }, + { file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67bfbcbd0a04c575e8103a6061d03e393d9f80ffdb9beb3189261e9e9bc5d5e9" }, + { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5cd11d46d7b7e5958121b3eaf4cd8638eff3a720ec527692132f05a57f14341d" }, + { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b801c2e40c5aa6072c2f4876de8dccd100af6d9918d4d0d7aa54a1d982fd4f44" }, + { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20d5cb29e8c5f76a127c75b6e7a77e846bc4b655c373baa098c26a61b7ecd0ef" }, + { file = "pyzmq-27.0.0-cp313-cp313t-win32.whl", hash = "sha256:a20528da85c7ac7a19b7384e8c3f8fa707841fd85afc4ed56eda59d93e3d98ad" }, + { file = "pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f" }, + { file = "pyzmq-27.0.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:f4162dbbd9c5c84fb930a36f290b08c93e35fce020d768a16fc8891a2f72bab8" }, + { file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:4e7d0a8d460fba526cc047333bdcbf172a159b8bd6be8c3eb63a416ff9ba1477" }, + { file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:29f44e3c26b9783816ba9ce274110435d8f5b19bbd82f7a6c7612bb1452a3597" }, + { file = "pyzmq-27.0.0-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e435540fa1da54667f0026cf1e8407fe6d8a11f1010b7f06b0b17214ebfcf5e" }, + { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:51f5726de3532b8222e569990c8aa34664faa97038304644679a51d906e60c6e" }, + { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:42c7555123679637c99205b1aa9e8f7d90fe29d4c243c719e347d4852545216c" }, + { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a979b7cf9e33d86c4949df527a3018767e5f53bc3b02adf14d4d8db1db63ccc0" }, + { file = "pyzmq-27.0.0-cp38-cp38-win32.whl", hash = "sha256:26b72c5ae20bf59061c3570db835edb81d1e0706ff141747055591c4b41193f8" }, + { file = "pyzmq-27.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:55a0155b148fe0428285a30922f7213539aa84329a5ad828bca4bbbc665c70a4" }, + { file = "pyzmq-27.0.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:100f6e5052ba42b2533011d34a018a5ace34f8cac67cb03cfa37c8bdae0ca617" }, + { file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:bf6c6b061efd00404b9750e2cfbd9507492c8d4b3721ded76cb03786131be2ed" }, + { file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ee05728c0b0b2484a9fc20466fa776fffb65d95f7317a3419985b8c908563861" }, + { file = "pyzmq-27.0.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7cdf07fe0a557b131366f80727ec8ccc4b70d89f1e3f920d94a594d598d754f0" }, + { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:90252fa2ff3a104219db1f5ced7032a7b5fc82d7c8d2fec2b9a3e6fd4e25576b" }, + { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ea6d441c513bf18c578c73c323acf7b4184507fc244762193aa3a871333c9045" }, + { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ae2b34bcfaae20c064948a4113bf8709eee89fd08317eb293ae4ebd69b4d9740" }, + { file = "pyzmq-27.0.0-cp39-cp39-win32.whl", hash = "sha256:5b10bd6f008937705cf6e7bf8b6ece5ca055991e3eb130bca8023e20b86aa9a3" }, + { file = "pyzmq-27.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:00387d12a8af4b24883895f7e6b9495dc20a66027b696536edac35cb988c38f3" }, + { file = "pyzmq-27.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:4c19d39c04c29a6619adfeb19e3735c421b3bfee082f320662f52e59c47202ba" }, + { file = "pyzmq-27.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:656c1866505a5735d0660b7da6d7147174bbf59d4975fc2b7f09f43c9bc25745" }, + { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:74175b9e12779382432dd1d1f5960ebe7465d36649b98a06c6b26be24d173fab" }, + { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8c6de908465697a8708e4d6843a1e884f567962fc61eb1706856545141d0cbb" }, + { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c644aaacc01d0df5c7072826df45e67301f191c55f68d7b2916d83a9ddc1b551" }, + { file = "pyzmq-27.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:10f70c1d9a446a85013a36871a296007f6fe4232b530aa254baf9da3f8328bc0" }, + { file = "pyzmq-27.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd1dc59763effd1576f8368047c9c31468fce0af89d76b5067641137506792ae" }, + { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:60e8cc82d968174650c1860d7b716366caab9973787a1c060cf8043130f7d0f7" }, + { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:14fe7aaac86e4e93ea779a821967360c781d7ac5115b3f1a171ced77065a0174" }, + { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6ad0562d4e6abb785be3e4dd68599c41be821b521da38c402bc9ab2a8e7ebc7e" }, + { file = "pyzmq-27.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:9df43a2459cd3a3563404c1456b2c4c69564daa7dbaf15724c09821a3329ce46" }, + { file = "pyzmq-27.0.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8c86ea8fe85e2eb0ffa00b53192c401477d5252f6dd1db2e2ed21c1c30d17e5e" }, + { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:c45fee3968834cd291a13da5fac128b696c9592a9493a0f7ce0b47fa03cc574d" }, + { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cae73bb6898c4e045fbed5024cb587e4110fddb66f6163bcab5f81f9d4b9c496" }, + { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:26d542258c7a1f35a9cff3d887687d3235006134b0ac1c62a6fe1ad3ac10440e" }, + { file = "pyzmq-27.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:04cd50ef3b28e35ced65740fb9956a5b3f77a6ff32fcd887e3210433f437dd0f" }, + { file = "pyzmq-27.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:39ddd3ba0a641f01d8f13a3cfd4c4924eb58e660d8afe87e9061d6e8ca6f7ac3" }, + { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:8ca7e6a0388dd9e1180b14728051068f4efe83e0d2de058b5ff92c63f399a73f" }, + { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2524c40891be6a3106885a3935d58452dd83eb7a5742a33cc780a1ad4c49dec0" }, + { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a56e3e5bd2d62a01744fd2f1ce21d760c7c65f030e9522738d75932a14ab62a" }, + { file = "pyzmq-27.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:096af9e133fec3a72108ddefba1e42985cb3639e9de52cfd336b6fc23aa083e9" }, + { file = "pyzmq-27.0.0.tar.gz", hash = "sha256:b1f08eeb9ce1510e6939b6e5dcd46a17765e2333daae78ecf4606808442e52cf" }, +] + +[package.dependencies] +cffi = {version = "*", markers = "implementation_name == \"pypy\""} + +[[package]] +name = "referencing" +version = "0.36.2" +description = "JSON Referencing + Python" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0" }, + { file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa" }, +] + +[package.dependencies] +attrs = ">=22.2.0" +rpds-py = ">=0.7.0" + [[package]] name = "requests" version = "2.32.4" @@ -1191,8 +3317,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c"}, - {file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"}, + { file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c" }, + { file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422" }, ] [package.dependencies] @@ -1205,57 +3331,440 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] +[[package]] +name = "rfc3339-validator" +version = "0.1.4" +description = "A pure python RFC3339 validator" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] +files = [ + {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, + {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, +] + +[package.dependencies] +six = "*" + +[[package]] +name = "rfc3986-validator" +version = "0.1.1" +description = "Pure python rfc3986 validator" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] +files = [ + {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, + {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, +] + +[[package]] +name = "rfc3987-syntax" +version = "1.1.0" +description = "Helper functions to syntactically validate strings according to RFC 3987." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "rfc3987_syntax-1.1.0-py3-none-any.whl", hash = "sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f" }, + { file = "rfc3987_syntax-1.1.0.tar.gz", hash = "sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d" }, +] + +[package.dependencies] +lark = ">=1.2.2" + +[package.extras] +testing = ["pytest (>=8.3.5)"] + +[[package]] +name = "rpds-py" +version = "0.26.0" +description = "Python bindings to Rust's persistent data structures (rpds)" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "rpds_py-0.26.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4c70c70f9169692b36307a95f3d8c0a9fcd79f7b4a383aad5eaa0e9718b79b37" }, + { file = "rpds_py-0.26.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:777c62479d12395bfb932944e61e915741e364c843afc3196b694db3d669fcd0" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec671691e72dff75817386aa02d81e708b5a7ec0dec6669ec05213ff6b77e1bd" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a1cb5d6ce81379401bbb7f6dbe3d56de537fb8235979843f0d53bc2e9815a79" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f789e32fa1fb6a7bf890e0124e7b42d1e60d28ebff57fe806719abb75f0e9a3" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c55b0a669976cf258afd718de3d9ad1b7d1fe0a91cd1ab36f38b03d4d4aeaaf" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c70d9ec912802ecfd6cd390dadb34a9578b04f9bcb8e863d0a7598ba5e9e7ccc" }, + { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3021933c2cb7def39d927b9862292e0f4c75a13d7de70eb0ab06efed4c508c19" }, + { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8a7898b6ca3b7d6659e55cdac825a2e58c638cbf335cde41f4619e290dd0ad11" }, + { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:12bff2ad9447188377f1b2794772f91fe68bb4bbfa5a39d7941fbebdbf8c500f" }, + { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:191aa858f7d4902e975d4cf2f2d9243816c91e9605070aeb09c0a800d187e323" }, + { file = "rpds_py-0.26.0-cp310-cp310-win32.whl", hash = "sha256:b37a04d9f52cb76b6b78f35109b513f6519efb481d8ca4c321f6a3b9580b3f45" }, + { file = "rpds_py-0.26.0-cp310-cp310-win_amd64.whl", hash = "sha256:38721d4c9edd3eb6670437d8d5e2070063f305bfa2d5aa4278c51cedcd508a84" }, + { file = "rpds_py-0.26.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9e8cb77286025bdb21be2941d64ac6ca016130bfdcd228739e8ab137eb4406ed" }, + { file = "rpds_py-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e09330b21d98adc8ccb2dbb9fc6cb434e8908d4c119aeaa772cb1caab5440a0" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9c1b92b774b2e68d11193dc39620d62fd8ab33f0a3c77ecdabe19c179cdbc1" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:824e6d3503ab990d7090768e4dfd9e840837bae057f212ff9f4f05ec6d1975e7" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ad7fd2258228bf288f2331f0a6148ad0186b2e3643055ed0db30990e59817a6" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dc23bbb3e06ec1ea72d515fb572c1fea59695aefbffb106501138762e1e915e" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d80bf832ac7b1920ee29a426cdca335f96a2b5caa839811803e999b41ba9030d" }, + { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0919f38f5542c0a87e7b4afcafab6fd2c15386632d249e9a087498571250abe3" }, + { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d422b945683e409000c888e384546dbab9009bb92f7c0b456e217988cf316107" }, + { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a7711fa562ba2da1aa757e11024ad6d93bad6ad7ede5afb9af144623e5f76a" }, + { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238e8c8610cb7c29460e37184f6799547f7e09e6a9bdbdab4e8edb90986a2318" }, + { file = "rpds_py-0.26.0-cp311-cp311-win32.whl", hash = "sha256:893b022bfbdf26d7bedb083efeea624e8550ca6eb98bf7fea30211ce95b9201a" }, + { file = "rpds_py-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:87a5531de9f71aceb8af041d72fc4cab4943648d91875ed56d2e629bef6d4c03" }, + { file = "rpds_py-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:de2713f48c1ad57f89ac25b3cb7daed2156d8e822cf0eca9b96a6f990718cc41" }, + { file = "rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d" }, + { file = "rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a" }, + { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323" }, + { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158" }, + { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3" }, + { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2" }, + { file = "rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44" }, + { file = "rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c" }, + { file = "rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8" }, + { file = "rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d" }, + { file = "rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04" }, + { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1" }, + { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9" }, + { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9" }, + { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba" }, + { file = "rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b" }, + { file = "rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5" }, + { file = "rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256" }, + { file = "rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618" }, + { file = "rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f" }, + { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed" }, + { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632" }, + { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c" }, + { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0" }, + { file = "rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9" }, + { file = "rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9" }, + { file = "rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a" }, + { file = "rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246" }, + { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387" }, + { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af" }, + { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33" }, + { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953" }, + { file = "rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9" }, + { file = "rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37" }, + { file = "rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867" }, + { file = "rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da" }, + { file = "rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8" }, + { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b" }, + { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a" }, + { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170" }, + { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e" }, + { file = "rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f" }, + { file = "rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7" }, + { file = "rpds_py-0.26.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:7a48af25d9b3c15684059d0d1fc0bc30e8eee5ca521030e2bffddcab5be40226" }, + { file = "rpds_py-0.26.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0c71c2f6bf36e61ee5c47b2b9b5d47e4d1baad6426bfed9eea3e858fc6ee8806" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d815d48b1804ed7867b539236b6dd62997850ca1c91cad187f2ddb1b7bbef19" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84cfbd4d4d2cdeb2be61a057a258d26b22877266dd905809e94172dff01a42ae" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fbaa70553ca116c77717f513e08815aec458e6b69a028d4028d403b3bc84ff37" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39bfea47c375f379d8e87ab4bb9eb2c836e4f2069f0f65731d85e55d74666387" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1533b7eb683fb5f38c1d68a3c78f5fdd8f1412fa6b9bf03b40f450785a0ab915" }, + { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c5ab0ee51f560d179b057555b4f601b7df909ed31312d301b99f8b9fc6028284" }, + { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e5162afc9e0d1f9cae3b577d9c29ddbab3505ab39012cb794d94a005825bde21" }, + { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:43f10b007033f359bc3fa9cd5e6c1e76723f056ffa9a6b5c117cc35720a80292" }, + { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e3730a48e5622e598293eee0762b09cff34dd3f271530f47b0894891281f051d" }, + { file = "rpds_py-0.26.0-cp39-cp39-win32.whl", hash = "sha256:4b1f66eb81eab2e0ff5775a3a312e5e2e16bf758f7b06be82fb0d04078c7ac51" }, + { file = "rpds_py-0.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:519067e29f67b5c90e64fb1a6b6e9d2ec0ba28705c51956637bac23a2f4ddae1" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3c0909c5234543ada2515c05dc08595b08d621ba919629e94427e8e03539c958" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c1fb0cda2abcc0ac62f64e2ea4b4e64c57dfd6b885e693095460c61bde7bb18e" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84d142d2d6cf9b31c12aa4878d82ed3b2324226270b89b676ac62ccd7df52d08" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a547e21c5610b7e9093d870be50682a6a6cf180d6da0f42c47c306073bfdbbf6" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:35e9a70a0f335371275cdcd08bc5b8051ac494dd58bff3bbfb421038220dc871" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dfa6115c6def37905344d56fb54c03afc49104e2ca473d5dedec0f6606913b4" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:313cfcd6af1a55a286a3c9a25f64af6d0e46cf60bc5798f1db152d97a216ff6f" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f7bf2496fa563c046d05e4d232d7b7fd61346e2402052064b773e5c378bf6f73" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:aa81873e2c8c5aa616ab8e017a481a96742fdf9313c40f14338ca7dbf50cb55f" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:68ffcf982715f5b5b7686bdd349ff75d422e8f22551000c24b30eaa1b7f7ae84" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6188de70e190847bb6db3dc3981cbadff87d27d6fe9b4f0e18726d55795cee9b" }, + { file = "rpds_py-0.26.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1c962145c7473723df9722ba4c058de12eb5ebedcb4e27e7d902920aa3831ee8" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f61a9326f80ca59214d1cceb0a09bb2ece5b2563d4e0cd37bfd5515c28510674" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:183f857a53bcf4b1b42ef0f57ca553ab56bdd170e49d8091e96c51c3d69ca696" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:941c1cfdf4799d623cf3aa1d326a6b4fdb7a5799ee2687f3516738216d2262fb" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72a8d9564a717ee291f554eeb4bfeafe2309d5ec0aa6c475170bdab0f9ee8e88" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:511d15193cbe013619dd05414c35a7dedf2088fcee93c6bbb7c77859765bd4e8" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aea1f9741b603a8d8fedb0ed5502c2bc0accbc51f43e2ad1337fe7259c2b77a5" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4019a9d473c708cf2f16415688ef0b4639e07abaa569d72f74745bbeffafa2c7" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:093d63b4b0f52d98ebae33b8c50900d3d67e0666094b1be7a12fffd7f65de74b" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2abe21d8ba64cded53a2a677e149ceb76dcf44284202d737178afe7ba540c1eb" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:4feb7511c29f8442cbbc28149a92093d32e815a28aa2c50d333826ad2a20fdf0" }, + { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e99685fc95d386da368013e7fb4269dd39c30d99f812a8372d62f244f662709c" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a90a13408a7a856b87be8a9f008fff53c5080eea4e4180f6c2e546e4a972fb5d" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ac51b65e8dc76cf4949419c54c5528adb24fc721df722fd452e5fbc236f5c40" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59b2093224a18c6508d95cfdeba8db9cbfd6f3494e94793b58972933fcee4c6d" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f01a5d6444a3258b00dc07b6ea4733e26f8072b788bef750baa37b370266137" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6e2c12160c72aeda9d1283e612f68804621f448145a210f1bf1d79151c47090" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb28c1f569f8d33b2b5dcd05d0e6ef7005d8639c54c2f0be824f05aedf715255" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1766b5724c3f779317d5321664a343c07773c8c5fd1532e4039e6cc7d1a815be" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b6d9e5a2ed9c4988c8f9b28b3bc0e3e5b1aaa10c28d210a594ff3a8c02742daf" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b5f7a446ddaf6ca0fad9a5535b56fbfc29998bf0e0b450d174bbec0d600e1d72" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:eed5ac260dd545fbc20da5f4f15e7efe36a55e0e7cf706e4ec005b491a9546a0" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:582462833ba7cee52e968b0341b85e392ae53d44c0f9af6a5927c80e539a8b67" }, + { file = "rpds_py-0.26.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:69a607203441e07e9a8a529cff1d5b73f6a160f22db1097211e6212a68567d11" }, + { file = "rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0" }, +] + [[package]] name = "ruff" -version = "0.12.9" +version = "0.12.4" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "ruff-0.12.9-py3-none-linux_armv6l.whl", hash = "sha256:fcebc6c79fcae3f220d05585229463621f5dbf24d79fdc4936d9302e177cfa3e"}, - {file = "ruff-0.12.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:aed9d15f8c5755c0e74467731a007fcad41f19bcce41cd75f768bbd687f8535f"}, - {file = "ruff-0.12.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5b15ea354c6ff0d7423814ba6d44be2807644d0c05e9ed60caca87e963e93f70"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d596c2d0393c2502eaabfef723bd74ca35348a8dac4267d18a94910087807c53"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b15599931a1a7a03c388b9c5df1bfa62be7ede6eb7ef753b272381f39c3d0ff"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3d02faa2977fb6f3f32ddb7828e212b7dd499c59eb896ae6c03ea5c303575756"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:17d5b6b0b3a25259b69ebcba87908496e6830e03acfb929ef9fd4c58675fa2ea"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:72db7521860e246adbb43f6ef464dd2a532ef2ef1f5dd0d470455b8d9f1773e0"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a03242c1522b4e0885af63320ad754d53983c9599157ee33e77d748363c561ce"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fc83e4e9751e6c13b5046d7162f205d0a7bac5840183c5beebf824b08a27340"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:881465ed56ba4dd26a691954650de6ad389a2d1fdb130fe51ff18a25639fe4bb"}, - {file = "ruff-0.12.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:43f07a3ccfc62cdb4d3a3348bf0588358a66da756aa113e071b8ca8c3b9826af"}, - {file = "ruff-0.12.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:07adb221c54b6bba24387911e5734357f042e5669fa5718920ee728aba3cbadc"}, - {file = "ruff-0.12.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f5cd34fabfdea3933ab85d72359f118035882a01bff15bd1d2b15261d85d5f66"}, - {file = "ruff-0.12.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:f6be1d2ca0686c54564da8e7ee9e25f93bdd6868263805f8c0b8fc6a449db6d7"}, - {file = "ruff-0.12.9-py3-none-win32.whl", hash = "sha256:cc7a37bd2509974379d0115cc5608a1a4a6c4bff1b452ea69db83c8855d53f93"}, - {file = "ruff-0.12.9-py3-none-win_amd64.whl", hash = "sha256:6fb15b1977309741d7d098c8a3cb7a30bc112760a00fb6efb7abc85f00ba5908"}, - {file = "ruff-0.12.9-py3-none-win_arm64.whl", hash = "sha256:63c8c819739d86b96d500cce885956a1a48ab056bbcbc61b747ad494b2485089"}, - {file = "ruff-0.12.9.tar.gz", hash = "sha256:fbd94b2e3c623f659962934e52c2bea6fc6da11f667a427a368adaf3af2c866a"}, + { file = "ruff-0.12.4-py3-none-linux_armv6l.whl", hash = "sha256:cb0d261dac457ab939aeb247e804125a5d521b21adf27e721895b0d3f83a0d0a" }, + { file = "ruff-0.12.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:55c0f4ca9769408d9b9bac530c30d3e66490bd2beb2d3dae3e4128a1f05c7442" }, + { file = "ruff-0.12.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a8224cc3722c9ad9044da7f89c4c1ec452aef2cfe3904365025dd2f51daeae0e" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9949d01d64fa3672449a51ddb5d7548b33e130240ad418884ee6efa7a229586" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:be0593c69df9ad1465e8a2d10e3defd111fdb62dcd5be23ae2c06da77e8fcffb" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7dea966bcb55d4ecc4cc3270bccb6f87a337326c9dcd3c07d5b97000dbff41c" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:afcfa3ab5ab5dd0e1c39bf286d829e042a15e966b3726eea79528e2e24d8371a" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c057ce464b1413c926cdb203a0f858cd52f3e73dcb3270a3318d1630f6395bb3" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e64b90d1122dc2713330350626b10d60818930819623abbb56535c6466cce045" }, + { file = "ruff-0.12.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2abc48f3d9667fdc74022380b5c745873499ff827393a636f7a59da1515e7c57" }, + { file = "ruff-0.12.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2b2449dc0c138d877d629bea151bee8c0ae3b8e9c43f5fcaafcd0c0d0726b184" }, + { file = "ruff-0.12.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:56e45bb11f625db55f9b70477062e6a1a04d53628eda7784dce6e0f55fd549eb" }, + { file = "ruff-0.12.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:478fccdb82ca148a98a9ff43658944f7ab5ec41c3c49d77cd99d44da019371a1" }, + { file = "ruff-0.12.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0fc426bec2e4e5f4c4f182b9d2ce6a75c85ba9bcdbe5c6f2a74fcb8df437df4b" }, + { file = "ruff-0.12.4-py3-none-win32.whl", hash = "sha256:4de27977827893cdfb1211d42d84bc180fceb7b72471104671c59be37041cf93" }, + { file = "ruff-0.12.4-py3-none-win_amd64.whl", hash = "sha256:fe0b9e9eb23736b453143d72d2ceca5db323963330d5b7859d60d101147d461a" }, + { file = "ruff-0.12.4-py3-none-win_arm64.whl", hash = "sha256:0618ec4442a83ab545e5b71202a5c0ed7791e8471435b94e655b570a5031a98e" }, + { file = "ruff-0.12.4.tar.gz", hash = "sha256:13efa16df6c6eeb7d0f091abae50f58e9522f3843edb40d56ad52a5a4a4b6873" }, +] + +[[package]] +name = "send2trash" +version = "1.8.3" +description = "Send file to trash natively under Mac OS X, Windows and Linux" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +groups = ["dev"] +files = [ + {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, + {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, +] + +[package.extras] +nativelib = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\"", "pywin32 ; sys_platform == \"win32\""] +objc = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\""] +win32 = ["pywin32 ; sys_platform == \"win32\""] + +[[package]] +name = "setuptools" +version = "80.9.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922" }, + { file = "setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c" }, ] +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.8.0) ; sys_platform != \"cygwin\""] +core = ["importlib_metadata (>=6) ; python_version < \"3.10\"", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.14.*)", "pytest-mypy"] + [[package]] name = "six" version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main", "dev"] +files = [ + { file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274" }, + { file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + +[[package]] +name = "soupsieve" +version = "2.7" +description = "A modern CSS selector implementation for Beautiful Soup." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4" }, + { file = "soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a" }, +] + +[[package]] +name = "stack-data" +version = "0.6.3" +description = "Extract data from python stack frames and tracebacks for informative displays" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, + {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, +] + +[package.dependencies] +asttokens = ">=2.1.0" +executing = ">=1.2.0" +pure-eval = "*" + +[package.extras] +tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] + +[[package]] +name = "terminado" +version = "0.18.1" +description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." +optional = false +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, - {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, + {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, + {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, +] + +[package.dependencies] +ptyprocess = {version = "*", markers = "os_name != \"nt\""} +pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""} +tornado = ">=6.1.0" + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] +test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"] +typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"] + +[[package]] +name = "tinycss2" +version = "1.4.0" +description = "A tiny CSS parser" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, + {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, +] + +[package.dependencies] +webencodings = ">=0.4" + +[package.extras] +doc = ["sphinx", "sphinx_rtd_theme"] +test = ["pytest", "ruff"] + +[[package]] +name = "toolz" +version = "1.0.0" +description = "List processing tools and functional utilities" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236"}, + {file = "toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02"}, +] + +[[package]] +name = "tornado" +version = "6.5.1" +description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7" }, + { file = "tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6" }, + { file = "tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888" }, + { file = "tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331" }, + { file = "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" }, + { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401" }, + { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692" }, + { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a" }, + { file = "tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365" }, + { file = "tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b" }, + { file = "tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7" }, + { file = "tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c" }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +description = "Traitlets Python configuration system" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, + {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, +] + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] +test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] + +[[package]] +name = "types-python-dateutil" +version = "2.9.0.20250708" +description = "Typing stubs for python-dateutil" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "types_python_dateutil-2.9.0.20250708-py3-none-any.whl", hash = "sha256:4d6d0cc1cc4d24a2dc3816024e502564094497b713f7befda4d5bc7a8e3fd21f" }, + { file = "types_python_dateutil-2.9.0.20250708.tar.gz", hash = "sha256:ccdbd75dab2d6c9696c350579f34cffe2c281e4c5f27a585b2a2438dd1d5c8ab" }, ] [[package]] name = "types-pyyaml" -version = "6.0.12.20250809" +version = "6.0.12.20250516" description = "Typing stubs for PyYAML" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "types_pyyaml-6.0.12.20250809-py3-none-any.whl", hash = "sha256:032b6003b798e7de1a1ddfeefee32fac6486bdfe4845e0ae0e7fb3ee4512b52f"}, - {file = "types_pyyaml-6.0.12.20250809.tar.gz", hash = "sha256:af4a1aca028f18e75297da2ee0da465f799627370d74073e96fee876524f61b5"}, + { file = "types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530" }, + { file = "types_pyyaml-6.0.12.20250516.tar.gz", hash = "sha256:9f21a70216fc0fa1b216a8176db5f9e0af6eb35d2f2932acb87689d03a5bf6ba" }, ] [[package]] @@ -1266,8 +3775,8 @@ optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - {file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76"}, - {file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36"}, + { file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76" }, + { file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36" }, ] [[package]] @@ -1276,15 +3785,42 @@ version = "0.4.2" description = "Runtime typing introspection tools" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["main", "dev"] files = [ - {file = "typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7"}, - {file = "typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464"}, + { file = "typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7" }, + { file = "typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464" }, ] [package.dependencies] typing-extensions = ">=4.12.0" +[[package]] +name = "tzdata" +version = "2025.2" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +groups = ["main"] +files = [ + { file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8" }, + { file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9" }, +] + +[[package]] +name = "uri-template" +version = "1.3.0" +description = "RFC 6570 URI Template Processor" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, + {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, +] + +[package.extras] +dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"] + [[package]] name = "urllib3" version = "2.5.0" @@ -1293,8 +3829,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"}, - {file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760"}, + { file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc" }, + { file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760" }, ] [package.extras] @@ -1305,14 +3841,14 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.34.0" +version = "20.31.2" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "virtualenv-20.34.0-py3-none-any.whl", hash = "sha256:341f5afa7eee943e4984a9207c025feedd768baff6753cd660c857ceb3e36026"}, - {file = "virtualenv-20.34.0.tar.gz", hash = "sha256:44815b2c9dee7ed86e387b842a84f20b93f7f417f95886ca1996a72a4138eb1a"}, + { file = "virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11" }, + { file = "virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af" }, ] [package.dependencies] @@ -1332,42 +3868,181 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26"}, - {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112"}, - {file = "watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3"}, - {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c"}, - {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2"}, - {file = "watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c"}, - {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948"}, - {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860"}, - {file = "watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0"}, - {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c"}, - {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134"}, - {file = "watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b"}, - {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8"}, - {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a"}, - {file = "watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c"}, - {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881"}, - {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11"}, - {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa"}, - {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2"}, - {file = "watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a"}, - {file = "watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680"}, - {file = "watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f"}, - {file = "watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282"}, + { file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26" }, + { file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112" }, + { file = "watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3" }, + { file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c" }, + { file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2" }, + { file = "watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c" }, + { file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948" }, + { file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860" }, + { file = "watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0" }, + { file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c" }, + { file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134" }, + { file = "watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b" }, + { file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8" }, + { file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a" }, + { file = "watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c" }, + { file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881" }, + { file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11" }, + { file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa" }, + { file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c" }, + { file = "watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2" }, + { file = "watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a" }, + { file = "watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680" }, + { file = "watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f" }, + { file = "watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282" }, ] [package.extras] watchmedo = ["PyYAML (>=3.10)"] +[[package]] +name = "wcwidth" +version = "0.2.13" +description = "Measures the displayed width of unicode strings in a terminal" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, +] + +[[package]] +name = "webcolors" +version = "24.11.1" +description = "A library for working with the color formats defined by HTML and CSS." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9" }, + { file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6" }, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] + +[[package]] +name = "websocket-client" +version = "1.8.0" +description = "WebSocket client for Python with low level API options" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, + {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, +] + +[package.extras] +docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"] +optional = ["python-socks", "wsaccel"] +test = ["websockets"] + +[[package]] +name = "widgetsnbextension" +version = "4.0.14" +description = "Jupyter interactive widgets for Jupyter Notebook" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + { file = "widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575" }, + { file = "widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af" }, +] + +[[package]] +name = "xarray" +version = "2025.10.1" +description = "N-D labeled arrays and datasets in Python" +optional = false +python-versions = ">=3.11" +groups = ["main"] +files = [ + { file = "xarray-2025.10.1-py3-none-any.whl", hash = "sha256:a4e699433b87a7fac340951bc36648645eeef72bdd915ff055ac2fd99865a73d" }, + { file = "xarray-2025.10.1.tar.gz", hash = "sha256:3c2b5ad7389825bd624ada5ff26b01ac54b1aae72e2fe0d724d81d40a2bf5785" }, +] + +[package.dependencies] +numpy = ">=1.26" +packaging = ">=24.1" +pandas = ">=2.2" + +[package.extras] +accel = ["bottleneck", "flox (>=0.9)", "numba (>=0.62)", "numbagg (>=0.8)", "opt_einsum", "scipy (>=1.13)"] +complete = ["xarray[accel,etc,io,parallel,viz]"] +etc = ["sparse (>=0.15)"] +io = ["cftime", "fsspec", "h5netcdf", "netCDF4 (>=1.6.0)", "pooch", "pydap", "scipy (>=1.13)", "zarr (>=2.18)"] +parallel = ["dask[complete]"] +types = ["pandas-stubs", "scipy-stubs", "types-PyYAML", "types-Pygments", "types-colorama", "types-decorator", "types-defusedxml", "types-docutils", "types-networkx", "types-openpyxl", "types-pexpect", "types-psutil", "types-pycurl", "types-python-dateutil", "types-pytz", "types-requests", "types-setuptools"] +viz = ["cartopy (>=0.23)", "matplotlib", "nc-time-axis", "seaborn"] + +[[package]] +name = "zarr" +version = "3.1.3" +description = "An implementation of chunked, compressed, N-dimensional arrays for Python" +optional = false +python-versions = ">=3.11" +groups = ["main"] +files = [ + { file = "zarr-3.1.3-py3-none-any.whl", hash = "sha256:45f67f87f65f14fa453f99dd8110a5936b7ac69f3a21981d33e90407c80c302a" }, + { file = "zarr-3.1.3.tar.gz", hash = "sha256:01342f3e26a02ed5670db608a5576fbdb8d76acb5c280bd2d0082454b1ba6f79" }, +] + +[package.dependencies] +donfig = ">=0.8" +numcodecs = { version = ">=0.14", extras = ["crc32c"] } +numpy = ">=1.26" +packaging = ">=22.0" +typing-extensions = ">=4.9" + +[package.extras] +cli = ["typer"] +docs = ["astroid (<4)", "numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "pytest", "rich", "s3fs (>=2023.10.0)", "sphinx (==8.1.3)", "sphinx-autoapi (==3.4.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx-copybutton", "sphinx-design", "sphinx-issues", "sphinx-reredirects", "towncrier"] +gpu = ["cupy-cuda12x"] +optional = ["rich", "universal-pathlib"] +remote = ["fsspec (>=2023.10.0)", "obstore (>=0.5.1)"] +remote-tests = ["botocore", "fsspec (>=2023.10.0)", "moto[s3,server]", "obstore (>=0.5.1)", "requests", "s3fs (>=2023.10.0)"] +test = ["coverage (>=7.10)", "hypothesis", "mypy", "numpydoc", "packaging", "pytest (<8.4)", "pytest-accept", "pytest-asyncio", "pytest-cov", "pytest-xdist", "rich", "tomlkit", "uv"] + +[[package]] +name = "zipp" +version = "3.23.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e" }, + { file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166" }, +] + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more_itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] + [metadata] lock-version = "2.1" -python-versions = ">=3.13,<3.15.0" -content-hash = "1db325c51badf87c9a1b8435aa6a233e47204df736d2ed3256a3799ba819ed50" +python-versions = ">=3.13" +content-hash = "3a6cd56008c43cebabb3ffdbf2d79955b7d239934c00123eb283588d71e66b6a" diff --git a/pyproject.toml b/pyproject.toml index a11dd15..6277846 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ authors = [ ] license = { text = "MPL2.0" } readme = "README.md" -requires-python = ">=3.13,<3.15.0" +requires-python = ">=3.13" dynamic = ["dependencies"] [tool.poetry.urls] @@ -16,10 +16,18 @@ repository = "https://github.com/alliander-opensource/meteoforge" documentation = "https://github.com/alliander-opensource/meteoforge" [tool.poetry.dependencies] -pydantic = "^2.12.3" -colorlog = "^6.10.1" +dask = "^2025.9.1" +netcdf4 = "^1.7.2" +numpy = "^2.3.3" +pydantic = "^2.12.0" +pyproj = "^3.7.2" +xarray = "^2025.10.1" +zarr = "^3.1.3" +colorlog = "^6.9.0" # For colored logging output [tool.poetry.group.dev.dependencies] +coverage = "^7.9.2" +jupyter = "^1.1.1" mkdocs = "^1.6.1" mkdocs-material = "^9.6.15" mkdocstrings = { extras = ["python"], version = "^0.29.1" } @@ -28,8 +36,7 @@ pre-commit = "^4.2.0" pytest = "^8.4.1" ruff = "^0.12.4" types-pyyaml = "^6.0.12.20250516" -poetry-core = "^2.1.3" -pytest-cov = "^6.2.1" +fawltydeps = "^0.20.0" [build-system] requires = ["poetry-core"] @@ -99,7 +106,7 @@ addopts = [ "--cov-report=xml", "--cov-report=term-missing" ] -minversion = "8.4.1" +minversion = "8.3.2" testpaths = ["tests"] [tool.coverage.run] diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/__init__.py b/src/meteoforge/core/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/core/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/logging/__init__.py b/src/meteoforge/logging/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/logging/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/parameters/__init__.py b/src/meteoforge/parameters/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/parameters/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/__init__.py b/src/meteoforge/spatial_temporal/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/spatial_temporal/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/locations.py b/src/meteoforge/spatial_temporal/locations.py index ed13f74..efb3b36 100644 --- a/src/meteoforge/spatial_temporal/locations.py +++ b/src/meteoforge/spatial_temporal/locations.py @@ -29,9 +29,9 @@ class MFLocation: """ def __init__(self, *, x: int | float, y: int | float, epsg_code: int = 4326): - """Initializes the MFLocation with x, y coordinates and an optional EPSG code.""" + """Initialize the MFLocation class.""" # Validate the input parameters - if self.valid_location(x, y, epsg_code): + if self.validate_location(x, y, epsg_code): # Set the instance variables self.x = float(x) self.y = float(y) @@ -40,14 +40,14 @@ def __init__(self, *, x: int | float, y: int | float, epsg_code: int = 4326): raise ValueError("Invalid location parameters") @staticmethod - def valid_location(x: float, y: float, epsg_code: int = 4326) -> bool: - """Validates the location parameters for type and existence.""" + def validate_location(x: float, y: float, epsg_code: int = 4326) -> bool: + """Validate a given x,y location with an EPSG code as an existing coordinate.""" logger.debug(f"Validating location: x={x}, y={y}, epgs_code={epsg_code}") # Validate the types of x, y, and epgs_code - if not isinstance(x, (int, float)): + if not isinstance(x, int | float): raise ValueError("x must be a number") - if not isinstance(y, (int, float)): + if not isinstance(y, int | float): raise ValueError("y must be a number") if not isinstance(epsg_code, int): raise ValueError("epgs_code must be an integer") @@ -63,27 +63,44 @@ def valid_location(x: float, y: float, epsg_code: int = 4326) -> bool: ... logger.debug(f"Location validation passed and valid: x={x}, y={y}, epsg_code={epsg_code}") + return True @staticmethod - def valid_crs(epsg_code: int) -> bool: - """Validates the EPSG code for known coordinate reference systems.""" + def validate_crs(epsg_code: int) -> bool: + """Validate a given EPSG code for valid and known coordinate reference systems. + + A valid CRS is one that exists, is not deprecated, and is either geographic or geocentric. This helps exclude + CRS values that are unsuitable for representing x,y coordinates in a geographic context. + """ logger.debug(f"Validating CRS with EPSG code: {epsg_code}") try: crs = CRS.from_epsg(epsg_code) except CRSError as e: - raise ValueError(f"invalid EPSG code '{crs}': --<<-- {e} -->>--") from e + raise ValueError(f"invalid EPSG code '{epsg_code}': --<<-- {e} -->>--") from e - # Check that the CRS is not deprecated + # Check that the CRS is not deprecated if crs.is_deprecated: raise ValueError( f"The CRS with EPSG code {epsg_code} is deprecated. Please use a different (non-deprecated) CRS." ) - # Check that the CRS is for an x,y based geographic coordinate system + # Check that the CRS is for an x,y based geographic coordinate system if not crs.is_geographic and not crs.is_geocentric: raise ValueError( "The MFLocation class type only supports Geographic (CRS.is_geographic=True) and Geocentric Coordinate " "Systems (CRS.is_geocentric=True)." ) return True + + +class MFLocationList: + """A list of MFLocation objects representing multiple geographic locations.""" + + ... + + +class MFLocationVector: + """A vector of MFLocation objects representing a sequence of geographic locations.""" + + ... From 5a870e5f220ebbeb5d19d2f07ce15df0817e029c Mon Sep 17 00:00:00 2001 From: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Mon, 23 Mar 2026 16:50:08 +0100 Subject: [PATCH 29/50] feature : First version --- .pre-commit-config.yaml | 20 +- .vscode/settings.json | 32 + README.md | 5 +- poetry.lock | 4528 ++++++----------- pyproject.toml | 57 +- src/__init__.py | 4 +- src/meteoforge/__init__.py | 4 +- src/meteoforge/core/controller.py | 4 +- src/meteoforge/core/manager.py | 4 +- src/meteoforge/core/model.py | 4 +- src/meteoforge/core/source.py | 4 +- src/meteoforge/logging/__init__.py | 4 +- src/meteoforge/logging/logging.py | 6 +- src/meteoforge/parameters/__init__.py | 4 +- src/meteoforge/parameters/parameters.py | 4 +- src/meteoforge/spatial_temporal/__init__.py | 4 +- src/meteoforge/spatial_temporal/locations.py | 276 +- src/meteoforge/spatial_temporal/periods.py | 4 +- src/meteoforge/spatial_temporal/validators.py | 138 + src/meteoforge_tools/README.md | 3 + src/meteoforge_tools/__init__.py | 4 +- .../netfcd_to_zarr_conversion.py | 4 +- tests/conftest.py | 4 +- tests/test_example_test.py | 7 - tests/test_locations.py | 118 + typings/meteoforge/__init__.pyi | 0 typings/meteoforge/core/__init__.pyi | 0 typings/meteoforge/core/controller.pyi | 0 typings/meteoforge/core/manager.pyi | 0 typings/meteoforge/core/model.pyi | 0 typings/meteoforge/core/source.pyi | 0 typings/meteoforge/logging/__init__.pyi | 0 typings/meteoforge/logging/logging.pyi | 5 + typings/meteoforge/parameters/__init__.pyi | 0 typings/meteoforge/parameters/parameters.pyi | 0 .../meteoforge/spatial_temporal/__init__.pyi | 0 .../meteoforge/spatial_temporal/locations.pyi | 43 + .../meteoforge/spatial_temporal/periods.pyi | 0 .../spatial_temporal/validators.pyi | 10 + 39 files changed, 2107 insertions(+), 3197 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 src/meteoforge/spatial_temporal/validators.py delete mode 100644 tests/test_example_test.py create mode 100644 tests/test_locations.py create mode 100644 typings/meteoforge/__init__.pyi create mode 100644 typings/meteoforge/core/__init__.pyi create mode 100644 typings/meteoforge/core/controller.pyi create mode 100644 typings/meteoforge/core/manager.pyi create mode 100644 typings/meteoforge/core/model.pyi create mode 100644 typings/meteoforge/core/source.pyi create mode 100644 typings/meteoforge/logging/__init__.pyi create mode 100644 typings/meteoforge/logging/logging.pyi create mode 100644 typings/meteoforge/parameters/__init__.pyi create mode 100644 typings/meteoforge/parameters/parameters.pyi create mode 100644 typings/meteoforge/spatial_temporal/__init__.pyi create mode 100644 typings/meteoforge/spatial_temporal/locations.pyi create mode 100644 typings/meteoforge/spatial_temporal/periods.pyi create mode 100644 typings/meteoforge/spatial_temporal/validators.pyi diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 98bf8b7..965bd5b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,8 +3,12 @@ # Hooks repos: + - repo: https://github.com/fsfe/reuse-tool + rev: v6.2.0 + hooks: + - id: reuse - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.6.0 + rev: v6.0.0 hooks: - id: check-yaml - id: end-of-file-fixer @@ -14,7 +18,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.5.7 + rev: v0.15.7 hooks: # Run the linter. - id: ruff @@ -23,24 +27,26 @@ repos: - id: ruff-format - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.11.1 + rev: v1.19.1 hooks: - id: mypy + additional_dependencies: ["types-shapely"] - repo: https://github.com/compilerla/conventional-pre-commit - rev: v3.2.0 + rev: v4.4.0 hooks: - id: conventional-pre-commit stages: [commit-msg] args: [] - repo: https://github.com/codespell-project/codespell - rev: v2.3.0 + rev: v2.4.2 hooks: - id: codespell exclude: > (?x)^( - .*\.svg + LICENSES/.* + | .*\.svg | .*\.lock )$ @@ -51,7 +57,7 @@ repos: args: ['--lock'] - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.41.0 + rev: v0.48.0 hooks: - id: markdownlint args: [ "--config", ".markdownlint.yaml" ] diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..10af52f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,32 @@ +{ + "sonarlint.connectedMode.project": { + "connectionId": "alliander-opensource", + "projectKey": "alliander-opensource_meteoforge" + }, + "python.defaultInterpreterPath": "/home/linnr02/.cache/pypoetry/virtualenvs/meteoforge-Xj3O_PoL-py3.14/bin/python", + "psi-header.lang-config": [ + { + "language": "python", + "begin": "", + "prefix": "# ", + "end": "", + "blankLinesAfter": 1 + } + ], + "psi-header.templates": [ + { + "language": "*", + "template": [ + "SPDX-FileCopyrightText: 2025-<> Contributors to the MeteoForge project", + "SPDX-License-Identifier: MPL-2.0" + ] + } + ], + "psi-header.config.forceToTop": true, + "psi-header.changes-tracking.enforceHeader": true, + "python.testing.pytestArgs": [ + "tests" + ], + "python.testing.unittestEnabled": false, + "python.testing.pytestEnabled": true +} diff --git a/README.md b/README.md index 1166b54..981628e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ [//]: # (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) - [//]: # (SPDX-License-Identifier: MPL-2.0) # MeteoForge - Core System @@ -12,9 +11,7 @@ [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=bugs)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=coverage)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) -
- MeteoForge -
+![MeteoForge logo](/docs/images/meteoforge_logo.png) ## Index diff --git a/poetry.lock b/poetry.lock index 3b274e4..1ab1edc 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.4 and should not be changed by hand. [[package]] name = "annotated-types" @@ -12,171 +12,28 @@ files = [ {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] -[[package]] -name = "anyio" -version = "4.9.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c" }, - { file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028" }, -] - -[package.dependencies] -idna = ">=2.8" -sniffio = ">=1.1" - -[package.extras] -doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] -test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] -trio = ["trio (>=0.26.1)"] - -[[package]] -name = "appnope" -version = "0.1.4" -description = "Disable App Nap on macOS >= 10.9" -optional = false -python-versions = ">=3.6" -groups = ["dev"] -markers = "platform_system == \"Darwin\"" -files = [ - {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, - {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, -] - -[[package]] -name = "argon2-cffi" -version = "25.1.0" -description = "Argon2 for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741" }, - { file = "argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1" }, -] - -[package.dependencies] -argon2-cffi-bindings = "*" - -[[package]] -name = "argon2-cffi-bindings" -version = "21.2.0" -description = "Low-level CFFI bindings for Argon2" -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"}, - {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, -] - -[package.dependencies] -cffi = ">=1.0.1" - -[package.extras] -dev = ["cogapp", "pre-commit", "pytest", "wheel"] -tests = ["pytest"] - -[[package]] -name = "arrow" -version = "1.3.0" -description = "Better dates & times for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, - {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, -] - -[package.dependencies] -python-dateutil = ">=2.7.0" -types-python-dateutil = ">=2.8.10" - -[package.extras] -doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] -test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"] - -[[package]] -name = "asttokens" -version = "3.0.0" -description = "Annotate AST trees with source code positions" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2" }, - { file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7" }, -] - -[package.extras] -astroid = ["astroid (>=2,<4)"] -test = ["astroid (>=2,<4)", "pytest", "pytest-cov", "pytest-xdist"] - -[[package]] -name = "async-lru" -version = "2.0.5" -description = "Simple LRU cache for asyncio" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943" }, - { file = "async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb" }, -] - [[package]] name = "attrs" -version = "25.3.0" +version = "26.1.0" description = "Classes Without Boilerplate" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3" }, - { file = "attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b" }, + {file = "attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309"}, + {file = "attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32"}, ] -[package.extras] -benchmark = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -cov = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier"] -tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\""] - [[package]] name = "babel" -version = "2.17.0" +version = "2.18.0" description = "Internationalization utilities" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2" }, - { file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d" }, + {file = "babel-2.18.0-py3-none-any.whl", hash = "sha256:e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35"}, + {file = "babel-2.18.0.tar.gz", hash = "sha256:b80b99a14bd085fcacfa15c9165f651fbb3406e66cc603abf11c5750937c992d"}, ] [package.extras] @@ -184,331 +41,253 @@ dev = ["backports.zoneinfo ; python_version < \"3.9\"", "freezegun (>=1.0,<2.0)" [[package]] name = "backrefs" -version = "5.9" +version = "6.2" description = "A wrapper around re and regex that adds additional back references." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f" }, - { file = "backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf" }, - { file = "backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa" }, - { file = "backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b" }, - { file = "backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9" }, - { file = "backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60" }, - { file = "backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59" }, + {file = "backrefs-6.2-py310-none-any.whl", hash = "sha256:0fdc7b012420b6b144410342caeb8adc54c6866cf12064abc9bb211302e496f8"}, + {file = "backrefs-6.2-py311-none-any.whl", hash = "sha256:08aa7fae530c6b2361d7bdcbda1a7c454e330cc9dbcd03f5c23205e430e5c3be"}, + {file = "backrefs-6.2-py312-none-any.whl", hash = "sha256:c3f4b9cb2af8cda0d87ab4f57800b57b95428488477be164dd2b47be54db0c90"}, + {file = "backrefs-6.2-py313-none-any.whl", hash = "sha256:12df81596ab511f783b7d87c043ce26bc5b0288cf3bb03610fe76b8189282b2b"}, + {file = "backrefs-6.2-py314-none-any.whl", hash = "sha256:e5f805ae09819caa1aa0623b4a83790e7028604aa2b8c73ba602c4454e665de7"}, + {file = "backrefs-6.2-py39-none-any.whl", hash = "sha256:664e33cd88c6840b7625b826ecf2555f32d491800900f5a541f772c485f7cda7"}, + {file = "backrefs-6.2.tar.gz", hash = "sha256:f44ff4d48808b243b6c0cdc6231e22195c32f77046018141556c66f8bab72a49"}, ] [package.extras] extras = ["regex"] [[package]] -name = "beautifulsoup4" -version = "4.13.4" -description = "Screen-scraping library" -optional = false -python-versions = ">=3.7.0" -groups = ["dev"] -files = [ - { file = "beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b" }, - { file = "beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195" }, -] - -[package.dependencies] -soupsieve = ">1.2" -typing-extensions = ">=4.0.0" - -[package.extras] -cchardet = ["cchardet"] -chardet = ["chardet"] -charset-normalizer = ["charset-normalizer"] -html5lib = ["html5lib"] -lxml = ["lxml"] - -[[package]] -name = "bleach" -version = "6.2.0" -description = "An easy safelist-based HTML-sanitizing tool." +name = "boolean-py" +version = "5.0" +description = "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL." optional = false -python-versions = ">=3.9" +python-versions = "*" groups = ["dev"] files = [ - { file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e" }, - { file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f" }, + {file = "boolean_py-5.0-py3-none-any.whl", hash = "sha256:ef28a70bd43115208441b53a045d1549e2f0ec6e3d08a9d142cbc41c1938e8d9"}, + {file = "boolean_py-5.0.tar.gz", hash = "sha256:60cbc4bad079753721d32649545505362c754e121570ada4658b852a3a318d95"}, ] -[package.dependencies] -tinycss2 = { version = ">=1.1.0,<1.5", optional = true, markers = "extra == \"css\"" } -webencodings = "*" - [package.extras] -css = ["tinycss2 (>=1.1.0,<1.5)"] +dev = ["build", "twine"] +docs = ["Sphinx (>=3.3.1)", "doc8 (>=0.8.1)", "sphinx-rtd-theme (>=0.5.0)", "sphinxcontrib-apidoc (>=0.3.0)"] +linting = ["black", "isort", "pycodestyle"] +testing = ["pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"] [[package]] name = "certifi" -version = "2025.7.14" +version = "2026.1.4" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.7" groups = ["main", "dev"] files = [ - { file = "certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2" }, - { file = "certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995" }, -] - -[[package]] -name = "cffi" -version = "1.17.1" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, - {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, - {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, - {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, - {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, - {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, - {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, - {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, - {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, - {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, - {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, - {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, - {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, - {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, - {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, - {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, + {file = "certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c"}, + {file = "certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120"}, ] -[package.dependencies] -pycparser = "*" - [[package]] name = "cfgv" -version = "3.4.0" +version = "3.5.0" description = "Validate configuration and produce human readable error messages." optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, - {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, + {file = "cfgv-3.5.0-py2.py3-none-any.whl", hash = "sha256:a8dc6b26ad22ff227d2634a65cb388215ce6cc96bbcc5cfde7641ae87e8dacc0"}, + {file = "cfgv-3.5.0.tar.gz", hash = "sha256:d5b1034354820651caa73ede66a6294d6e95c1b00acc5e9b098e917404669132"}, ] [[package]] name = "cftime" -version = "1.6.4.post1" +version = "1.6.5" description = "Time-handling functionality from netcdf4-python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" groups = ["main"] files = [ - {file = "cftime-1.6.4.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0baa9bc4850929da9f92c25329aa1f651e2d6f23e237504f337ee9e12a769f5d"}, - {file = "cftime-1.6.4.post1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6bb6b087f4b2513c37670bccd457e2a666ca489c5f2aad6e2c0e94604dc1b5b9"}, - {file = "cftime-1.6.4.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d9bdeb9174962c9ca00015190bfd693de6b0ec3ec0b3dbc35c693a4f48efdcc"}, - {file = "cftime-1.6.4.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e735cfd544878eb94d0108ff5a093bd1a332dba90f979a31a357756d609a90d5"}, - {file = "cftime-1.6.4.post1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1dcd1b140bf50da6775c56bd7ca179e84bd258b2f159b53eefd5c514b341f2bf"}, - {file = "cftime-1.6.4.post1-cp310-cp310-win_amd64.whl", hash = "sha256:e60b8f24b20753f7548f410f7510e28b941f336f84bd34e3cfd7874af6e70281"}, - {file = "cftime-1.6.4.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1bf7be0a0afc87628cb8c8483412aac6e48e83877004faa0936afb5bf8a877ba"}, - {file = "cftime-1.6.4.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f64ca83acc4e3029f737bf3a32530ffa1fbf53124f5bee70b47548bc58671a7"}, - {file = "cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ebdfd81726b0cfb8b524309224fa952898dfa177c13d5f6af5b18cefbf497d"}, - {file = "cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ea0965a4c87739aebd84fe8eed966e5809d10065eeffd35c99c274b6f8da15"}, - {file = "cftime-1.6.4.post1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:800a18aea4e8cb2b206450397cb8a53b154798738af3cdd3c922ce1ca198b0e6"}, - {file = "cftime-1.6.4.post1-cp311-cp311-win_amd64.whl", hash = "sha256:5dcfc872f455db1f12eabe3c3ba98e93757cd60ed3526a53246e966ccde46c8a"}, - {file = "cftime-1.6.4.post1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a590f73506f4704ba5e154ef55bfbaed5e1b4ac170f3caeb8c58e4f2c619ee4e"}, - {file = "cftime-1.6.4.post1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:933cb10e1af4e362e77f513e3eb92b34a688729ddbf938bbdfa5ac20a7f44ba0"}, - {file = "cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf17a1b36f62e9e73c4c9363dd811e1bbf1170f5ac26d343fb26012ccf482908"}, - {file = "cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e18021f421aa26527bad8688c1acf0c85fa72730beb6efce969c316743294f2"}, - {file = "cftime-1.6.4.post1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5835b9d622f9304d1c23a35603a0f068739f428d902860f25e6e7e5a1b7cd8ea"}, - {file = "cftime-1.6.4.post1-cp312-cp312-win_amd64.whl", hash = "sha256:7f50bf0d1b664924aaee636eb2933746b942417d1f8b82ab6c1f6e8ba0da6885"}, - {file = "cftime-1.6.4.post1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5c89766ebf088c097832ea618c24ed5075331f0b7bf8e9c2d4144aefbf2f1850"}, - {file = "cftime-1.6.4.post1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7f27113f7ccd1ca32881fdcb9a4bec806a5f54ae621fc1c374f1171f3ed98ef2"}, - {file = "cftime-1.6.4.post1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da367b23eea7cf4df071c88e014a1600d6c5bbf22e3393a4af409903fa397e28"}, - {file = "cftime-1.6.4.post1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6579c5c83cdf09d73aa94c7bc34925edd93c5f2c7dd28e074f568f7e376271a0"}, - {file = "cftime-1.6.4.post1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6b731c7133d17b479ca0c3c46a7a04f96197f0a4d753f4c2284c3ff0447279b4"}, - {file = "cftime-1.6.4.post1-cp313-cp313-win_amd64.whl", hash = "sha256:d2a8c223faea7f1248ab469cc0d7795dd46f2a423789038f439fee7190bae259"}, - {file = "cftime-1.6.4.post1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9df3e2d49e548c62d1939e923800b08d2ab732d3ac8d75b857edd7982c878552"}, - {file = "cftime-1.6.4.post1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2892b7e7654142d825655f60eb66c3e1af745901890316907071d44cf9a18d8a"}, - {file = "cftime-1.6.4.post1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4ab54e6c04e68395d454cd4001188fc4ade2fe48035589ed65af80c4527ef08"}, - {file = "cftime-1.6.4.post1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:568b69fc52f406e361db62a4d7a219c6fb0ced138937144c3b3a511648dd6c50"}, - {file = "cftime-1.6.4.post1-cp38-cp38-win_amd64.whl", hash = "sha256:640911d2629f4a8f81f6bc0163a983b6b94f86d1007449b8cbfd926136cda253"}, - {file = "cftime-1.6.4.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:44e9f8052600803b55f8cb6bcac2be49405c21efa900ec77a9fb7f692db2f7a6"}, - {file = "cftime-1.6.4.post1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a90b6ef4a3fc65322c212a2c99cec75d1886f1ebaf0ff6189f7b327566762222"}, - {file = "cftime-1.6.4.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:652700130dbcca3ae36dbb5b61ff360e62aa09fabcabc42ec521091a14389901"}, - {file = "cftime-1.6.4.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a7fb6cc541a027dab37fdeb695f8a2b21cd7d200be606f81b5abc38f2391e2"}, - {file = "cftime-1.6.4.post1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:fc2c0abe2dbd147e1b1e6d0f3de19a5ea8b04956acc204830fd8418066090989"}, - {file = "cftime-1.6.4.post1-cp39-cp39-win_amd64.whl", hash = "sha256:0ee2f5af8643aa1b47b7e388763a1a6e0dc05558cd2902cffb9cbcf954397648"}, - {file = "cftime-1.6.4.post1.tar.gz", hash = "sha256:50ac76cc9f10ab7bd46e44a71c51a6927051b499b4407df4f29ab13d741b942f"}, -] - -[package.dependencies] -numpy = {version = ">=1.26.0b1", markers = "python_version >= \"3.12.0.rc1\""} + {file = "cftime-1.6.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8ad81e8cb0eb873b33c3d1e22c6168163fdc64daa8f7aeb4da8092f272575f4d"}, + {file = "cftime-1.6.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:12d95c6af852114a13301c5a61e41afdbd1542e72939c1083796f8418b9b8b0e"}, + {file = "cftime-1.6.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2659b7df700e27d9e3671f686ce474dfb5fc274966961edf996acc148dfa094a"}, + {file = "cftime-1.6.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:94cebdfcda6a985b8e69aed22d00d6b8aa1f421495adbdcff1d59b3e896d81e2"}, + {file = "cftime-1.6.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:179681b023349a2fe277ceccc89d4fc52c0dd105cb59b7187b5bc5d442875133"}, + {file = "cftime-1.6.5-cp310-cp310-win_amd64.whl", hash = "sha256:d8b9fdecb466879cfe8ca4472b229b6f8d0bb65e4ffd44266ae17484bac2cf38"}, + {file = "cftime-1.6.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:474e728f5a387299418f8d7cb9c52248dcd5d977b2a01de7ec06bba572e26b02"}, + {file = "cftime-1.6.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ab9e80d4de815cac2e2d88a2335231254980e545d0196eb34ee8f7ed612645f1"}, + {file = "cftime-1.6.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ad24a563784e4795cb3d04bd985895b5db49ace2cbb71fcf1321fd80141f9a52"}, + {file = "cftime-1.6.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a3cda6fd12c7fb25eff40a6a857a2bf4d03e8cc71f80485d8ddc65ccbd80f16a"}, + {file = "cftime-1.6.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:28cda78d685397ba23d06273b9c916c3938d8d9e6872a537e76b8408a321369b"}, + {file = "cftime-1.6.5-cp311-cp311-win_amd64.whl", hash = "sha256:93ead088e3a216bdeb9368733a0ef89a7451dfc1d2de310c1c0366a56ad60dc8"}, + {file = "cftime-1.6.5-cp311-cp311-win_arm64.whl", hash = "sha256:3384d69a0a7f3d45bded21a8cbcce66c8ba06c13498eac26c2de41b1b9b6e890"}, + {file = "cftime-1.6.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:eef25caed5ebd003a38719bd3ff8847cd52ef2ea56c3ebdb2c9345ba131fc7c5"}, + {file = "cftime-1.6.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c87d2f3b949e45463e559233c69e6a9cf691b2b378c1f7556166adfabbd1c6b0"}, + {file = "cftime-1.6.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:82cb413973cc51b55642b3a1ca5b28db5b93a294edbef7dc049c074b478b4647"}, + {file = "cftime-1.6.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:85ba8e7356d239cfe56ef7707ac30feaf67964642ac760a82e507ee3c5db4ac4"}, + {file = "cftime-1.6.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:456039af7907a3146689bb80bfd8edabd074c7f3b4eca61f91b9c2670addd7ad"}, + {file = "cftime-1.6.5-cp312-cp312-win_amd64.whl", hash = "sha256:da84534c43699960dc980a9a765c33433c5de1a719a4916748c2d0e97a071e44"}, + {file = "cftime-1.6.5-cp312-cp312-win_arm64.whl", hash = "sha256:c62cd8db9ea40131eea7d4523691c5d806d3265d31279e4a58574a42c28acd77"}, + {file = "cftime-1.6.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4aba66fd6497711a47c656f3a732c2d1755ad15f80e323c44a8716ebde39ddd5"}, + {file = "cftime-1.6.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:89e7cba699242366e67d6fb5aee579440e791063f92a93853610c91647167c0d"}, + {file = "cftime-1.6.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2f1eb43d7a7b919ec99aee709fb62ef87ef1cf0679829ef93d37cc1c725781e9"}, + {file = "cftime-1.6.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e02a1d80ffc33fe469c7db68aa24c4a87f01da0c0c621373e5edadc92964900b"}, + {file = "cftime-1.6.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18ab754805233cdd889614b2b3b86a642f6d51a57a1ec327c48053f3414f87d8"}, + {file = "cftime-1.6.5-cp313-cp313-win_amd64.whl", hash = "sha256:6c27add8f907f4a4cd400e89438f2ea33e2eb5072541a157a4d013b7dbe93f9c"}, + {file = "cftime-1.6.5-cp313-cp313-win_arm64.whl", hash = "sha256:31d1ff8f6bbd4ca209099d24459ec16dea4fb4c9ab740fbb66dd057ccbd9b1b9"}, + {file = "cftime-1.6.5-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:c69ce3bdae6a322cbb44e9ebc20770d47748002fb9d68846a1e934f1bd5daf0b"}, + {file = "cftime-1.6.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e62e9f2943e014c5ef583245bf2e878398af131c97e64f8cd47c1d7baef5c4e2"}, + {file = "cftime-1.6.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7da5fdaa4360d8cb89b71b8ded9314f2246aa34581e8105c94ad58d6102d9e4f"}, + {file = "cftime-1.6.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bff865b4ea4304f2744a1ad2b8149b8328b321dd7a2b9746ef926d229bd7cd49"}, + {file = "cftime-1.6.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e552c5d1c8a58f25af7521e49237db7ca52ed2953e974fe9f7c4491e95fdd36c"}, + {file = "cftime-1.6.5-cp314-cp314-win_amd64.whl", hash = "sha256:e645b095dc50a38ac454b7e7f0742f639e7d7f6b108ad329358544a6ff8c9ba2"}, + {file = "cftime-1.6.5-cp314-cp314-win_arm64.whl", hash = "sha256:b9044d7ac82d3d8af189df1032fdc871bbd3f3dd41a6ec79edceb5029b71e6e0"}, + {file = "cftime-1.6.5-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:9ef56460cb0576e1a9161e1428c9e1a633f809a23fa9d598f313748c1ae5064e"}, + {file = "cftime-1.6.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:4f4873d38b10032f9f3111c547a1d485519ae64eee6a7a2d091f1f8b08e1ba50"}, + {file = "cftime-1.6.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ccce0f4c9d3f38dd948a117e578b50d0e0db11e2ca9435fb358fd524813e4b61"}, + {file = "cftime-1.6.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:19cbfc5152fb0b34ce03acf9668229af388d7baa63a78f936239cb011ccbe6b1"}, + {file = "cftime-1.6.5-cp314-cp314t-win_amd64.whl", hash = "sha256:4470cd5ef3c2514566f53efbcbb64dd924fa0584637d90285b2f983bd4ee7d97"}, + {file = "cftime-1.6.5-cp314-cp314t-win_arm64.whl", hash = "sha256:034c15a67144a0a5590ef150c99f844897618b148b87131ed34fda7072614662"}, + {file = "cftime-1.6.5.tar.gz", hash = "sha256:8225fed6b9b43fb87683ebab52130450fc1730011150d3092096a90e54d1e81e"}, +] + +[package.dependencies] +numpy = ">=1.21.2" [[package]] name = "charset-normalizer" -version = "3.4.2" +version = "3.4.4" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - { file = "charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-win32.whl", hash = "sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cad5f45b3146325bb38d6855642f6fd609c3f7cad4dbaf75549bf3b904d3184" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2680962a4848b3c4f155dc2ee64505a9c57186d0d56b43123b17ca3de18f0fa" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:36b31da18b8890a76ec181c3cf44326bf2c48e36d393ca1b72b3f484113ea344" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4074c5a429281bf056ddd4c5d3b740ebca4d43ffffe2ef4bf4d2d05114299da" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9e36a97bee9b86ef9a1cf7bb96747eb7a15c2f22bdb5b516434b00f2a599f02" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:1b1bde144d98e446b056ef98e59c256e9294f6b74d7af6846bf5ffdafd687a7d" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:915f3849a011c1f593ab99092f3cecfcb4d65d8feb4a64cf1bf2d22074dc0ec4" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:fb707f3e15060adf5b7ada797624a6c6e0138e2a26baa089df64c68ee98e040f" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:25a23ea5c7edc53e0f29bae2c44fcb5a1aa10591aae107f2a2b2583a9c5cbc64" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:770cab594ecf99ae64c236bc9ee3439c3f46be49796e265ce0cc8bc17b10294f" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-win32.whl", hash = "sha256:6a0289e4589e8bdfef02a80478f1dfcb14f0ab696b5a00e1f4b8a14a307a3c58" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6fc1f5b51fa4cecaa18f2bd7a003f3dd039dd615cd69a2afd6d3b19aed6775f2" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76af085e67e56c8816c3ccf256ebd136def2ed9654525348cfa744b6802b69eb" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45ba65510e2647721e35323d6ef54c7974959f6081b58d4ef5d87c60c84919a" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:046595208aae0120559a67693ecc65dd75d46f7bf687f159127046628178dc45" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75d10d37a47afee94919c4fab4c22b9bc2a8bf7d4f46f87363bcf0573f3ff4f5" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6333b3aa5a12c26b2a4d4e7335a28f1475e0e5e17d69d55141ee3cab736f66d1" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8323a9b031aa0393768b87f04b4164a40037fb2a3c11ac06a03ffecd3618027" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:24498ba8ed6c2e0b56d4acbf83f2d989720a93b41d712ebd4f4979660db4417b" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:844da2b5728b5ce0e32d863af26f32b5ce61bc4273a9c720a9f3aa9df73b1455" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:65c981bdbd3f57670af8b59777cbfae75364b483fa8a9f420f08094531d54a01" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3c21d4fca343c805a52c0c78edc01e3477f6dd1ad7c47653241cf2a206d4fc58" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dc7039885fa1baf9be153a0626e337aa7ec8bf96b0128605fb0d77788ddc1681" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-win32.whl", hash = "sha256:8272b73e1c5603666618805fe821edba66892e2870058c94c53147602eab29c7" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:70f7172939fdf8790425ba31915bfbe8335030f05b9913d7ae00a87d4395620a" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:005fa3432484527f9732ebd315da8da8001593e2cf46a3d817669f062c3d9ed4" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e92fca20c46e9f5e1bb485887d074918b13543b1c2a1185e69bb8d17ab6236a7" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50bf98d5e563b83cc29471fa114366e6806bc06bc7a25fd59641e41445327836" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:721c76e84fe669be19c5791da68232ca2e05ba5185575086e384352e2c309597" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82d8fd25b7f4675d0c47cf95b594d4e7b158aca33b76aa63d07186e13c0e0ab7" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3daeac64d5b371dea99714f08ffc2c208522ec6b06fbc7866a450dd446f5c0f" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dccab8d5fa1ef9bfba0590ecf4d46df048d18ffe3eec01eeb73a42e0d9e7a8ba" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:aaf27faa992bfee0264dc1f03f4c75e9fcdda66a519db6b957a3f826e285cf12" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:eb30abc20df9ab0814b5a2524f23d75dcf83cde762c161917a2b4b7b55b1e518" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:c72fbbe68c6f32f251bdc08b8611c7b3060612236e960ef848e0a517ddbe76c5" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:982bb1e8b4ffda883b3d0a521e23abcd6fd17418f6d2c4118d257a10199c0ce3" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-win32.whl", hash = "sha256:43e0933a0eff183ee85833f341ec567c0980dae57c464d8a508e1b2ceb336471" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:d11b54acf878eef558599658b0ffca78138c8c3655cf4f3a4a673c437e67732e" }, - { file = "charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0" }, - { file = "charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63" }, + {file = "charset_normalizer-3.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-win32.whl", hash = "sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-win_arm64.whl", hash = "sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-win32.whl", hash = "sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ce8a0633f41a967713a59c4139d29110c07e826d131a316b50ce11b1d79b4f84"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaabd426fe94daf8fd157c32e571c85cb12e66692f15516a83a03264b08d06c3"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c4ef880e27901b6cc782f1b95f82da9313c0eb95c3af699103088fa0ac3ce9ac"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2aaba3b0819274cc41757a1da876f810a3e4d7b6eb25699253a4effef9e8e4af"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:778d2e08eda00f4256d7f672ca9fef386071c9202f5e4607920b86d7803387f2"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f155a433c2ec037d4e8df17d18922c3a0d9b3232a396690f17175d2946f0218d"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a8bf8d0f749c5757af2142fe7903a9df1d2e8aa3841559b2bad34b08d0e2bcf3"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:194f08cbb32dc406d6e1aea671a68be0823673db2832b38405deba2fb0d88f63"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:6aee717dcfead04c6eb1ce3bd29ac1e22663cdea57f943c87d1eab9a025438d7"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:cd4b7ca9984e5e7985c12bc60a6f173f3c958eae74f3ef6624bb6b26e2abbae4"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_riscv64.whl", hash = "sha256:b7cf1017d601aa35e6bb650b6ad28652c9cd78ee6caff19f3c28d03e1c80acbf"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e912091979546adf63357d7e2ccff9b44f026c075aeaf25a52d0e95ad2281074"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5cb4d72eea50c8868f5288b7f7f33ed276118325c1dfd3957089f6b519e1382a"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-win32.whl", hash = "sha256:837c2ce8c5a65a2035be9b3569c684358dfbf109fd3b6969630a87535495ceaa"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:44c2a8734b333e0578090c4cd6b16f275e07aa6614ca8715e6c038e865e70576"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a9768c477b9d7bd54bc0c86dbaebdec6f03306675526c9927c0e8a04e8f94af9"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1bee1e43c28aa63cb16e5c14e582580546b08e535299b8b6158a7c9c768a1f3d"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fd44c878ea55ba351104cb93cc85e74916eb8fa440ca7903e57575e97394f608"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f04b14ffe5fdc8c4933862d8306109a2c51e0704acfa35d51598eb45a1e89fc"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:cd09d08005f958f370f539f186d10aec3377d55b9eeb0d796025d4886119d76e"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4fe7859a4e3e8457458e2ff592f15ccb02f3da787fcd31e0183879c3ad4692a1"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fa09f53c465e532f4d3db095e0c55b615f010ad81803d383195b6b5ca6cbf5f3"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7fa17817dc5625de8a027cb8b26d9fefa3ea28c8253929b8d6649e705d2835b6"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:5947809c8a2417be3267efc979c47d76a079758166f7d43ef5ae8e9f92751f88"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:4902828217069c3c5c71094537a8e623f5d097858ac6ca8252f7b4d10b7560f1"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:7c308f7e26e4363d79df40ca5b2be1c6ba9f02bdbccfed5abddb7859a6ce72cf"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2c9d3c380143a1fedbff95a312aa798578371eb29da42106a29019368a475318"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cb01158d8b88ee68f15949894ccc6712278243d95f344770fa7593fa2d94410c"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-win32.whl", hash = "sha256:2677acec1a2f8ef614c6888b5b4ae4060cc184174a938ed4e8ef690e15d3e505"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:f8e160feb2aed042cd657a72acc0b481212ed28b1b9a95c0cee1621b524e1966"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-win_arm64.whl", hash = "sha256:b5d84d37db046c5ca74ee7bb47dd6cbc13f80665fdde3e8040bdd3fb015ecb50"}, + {file = "charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f"}, + {file = "charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a"}, ] [[package]] name = "click" -version = "8.2.1" +version = "8.3.1" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.10" groups = ["main", "dev"] files = [ - { file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b" }, - { file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202" }, + {file = "click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6"}, + {file = "click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a"}, ] [package.dependencies] @@ -516,14 +295,14 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "cloudpickle" -version = "3.1.1" +version = "3.1.2" description = "Pickler class to extend the standard pickle.Pickler functionality" optional = false python-versions = ">=3.8" groups = ["main"] files = [ - { file = "cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e" }, - { file = "cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64" }, + {file = "cloudpickle-3.1.2-py3-none-any.whl", hash = "sha256:9acb47f6afd73f60dc1df93bb801b472f05ff42fa6c84167d25cb206be1fbf4a"}, + {file = "cloudpickle-3.1.2.tar.gz", hash = "sha256:7fda9eb655c9c230dab534f1983763de5835249750e85fbcef43aaa30a9a2414"}, ] [[package]] @@ -537,251 +316,155 @@ files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -markers = { main = "platform_system == \"Windows\" or sys_platform == \"win32\"" } +markers = {main = "platform_system == \"Windows\" or sys_platform == \"win32\""} [[package]] name = "colorlog" -version = "6.9.0" +version = "6.10.1" description = "Add colours to the output of Python's logging module." optional = false python-versions = ">=3.6" groups = ["main"] files = [ - { file = "colorlog-6.9.0-py3-none-any.whl", hash = "sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff" }, - { file = "colorlog-6.9.0.tar.gz", hash = "sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2" }, + {file = "colorlog-6.10.1-py3-none-any.whl", hash = "sha256:2d7e8348291948af66122cff006c9f8da6255d224e7cf8e37d8de2df3bad8c9c"}, + {file = "colorlog-6.10.1.tar.gz", hash = "sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321"}, ] [package.dependencies] -colorama = { version = "*", markers = "sys_platform == \"win32\"" } +colorama = {version = "*", markers = "sys_platform == \"win32\""} [package.extras] development = ["black", "flake8", "mypy", "pytest", "types-colorama"] -[[package]] -name = "comm" -version = "0.2.2" -description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, - {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, -] - -[package.dependencies] -traitlets = ">=4" - -[package.extras] -test = ["pytest"] - [[package]] name = "coverage" -version = "7.9.2" +version = "7.13.4" description = "Code coverage measurement for Python" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ - { file = "coverage-7.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:66283a192a14a3854b2e7f3418d7db05cdf411012ab7ff5db98ff3b181e1f912" }, - { file = "coverage-7.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4e01d138540ef34fcf35c1aa24d06c3de2a4cffa349e29a10056544f35cca15f" }, - { file = "coverage-7.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f22627c1fe2745ee98d3ab87679ca73a97e75ca75eb5faee48660d060875465f" }, - { file = "coverage-7.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b1c2d8363247b46bd51f393f86c94096e64a1cf6906803fa8d5a9d03784bdbf" }, - { file = "coverage-7.9.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c10c882b114faf82dbd33e876d0cbd5e1d1ebc0d2a74ceef642c6152f3f4d547" }, - { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:de3c0378bdf7066c3988d66cd5232d161e933b87103b014ab1b0b4676098fa45" }, - { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1e2f097eae0e5991e7623958a24ced3282676c93c013dde41399ff63e230fcf2" }, - { file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:28dc1f67e83a14e7079b6cea4d314bc8b24d1aed42d3582ff89c0295f09b181e" }, - { file = "coverage-7.9.2-cp310-cp310-win32.whl", hash = "sha256:bf7d773da6af9e10dbddacbf4e5cab13d06d0ed93561d44dae0188a42c65be7e" }, - { file = "coverage-7.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:0c0378ba787681ab1897f7c89b415bd56b0b2d9a47e5a3d8dc0ea55aac118d6c" }, - { file = "coverage-7.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a7a56a2964a9687b6aba5b5ced6971af308ef6f79a91043c05dd4ee3ebc3e9ba" }, - { file = "coverage-7.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:123d589f32c11d9be7fe2e66d823a236fe759b0096f5db3fb1b75b2fa414a4fa" }, - { file = "coverage-7.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:333b2e0ca576a7dbd66e85ab402e35c03b0b22f525eed82681c4b866e2e2653a" }, - { file = "coverage-7.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:326802760da234baf9f2f85a39e4a4b5861b94f6c8d95251f699e4f73b1835dc" }, - { file = "coverage-7.9.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19e7be4cfec248df38ce40968c95d3952fbffd57b400d4b9bb580f28179556d2" }, - { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0b4a4cb73b9f2b891c1788711408ef9707666501ba23684387277ededab1097c" }, - { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:2c8937fa16c8c9fbbd9f118588756e7bcdc7e16a470766a9aef912dd3f117dbd" }, - { file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:42da2280c4d30c57a9b578bafd1d4494fa6c056d4c419d9689e66d775539be74" }, - { file = "coverage-7.9.2-cp311-cp311-win32.whl", hash = "sha256:14fa8d3da147f5fdf9d298cacc18791818f3f1a9f542c8958b80c228320e90c6" }, - { file = "coverage-7.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:549cab4892fc82004f9739963163fd3aac7a7b0df430669b75b86d293d2df2a7" }, - { file = "coverage-7.9.2-cp311-cp311-win_arm64.whl", hash = "sha256:c2667a2b913e307f06aa4e5677f01a9746cd08e4b35e14ebcde6420a9ebb4c62" }, - { file = "coverage-7.9.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ae9eb07f1cfacd9cfe8eaee6f4ff4b8a289a668c39c165cd0c8548484920ffc0" }, - { file = "coverage-7.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9ce85551f9a1119f02adc46d3014b5ee3f765deac166acf20dbb851ceb79b6f3" }, - { file = "coverage-7.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8f6389ac977c5fb322e0e38885fbbf901743f79d47f50db706e7644dcdcb6e1" }, - { file = "coverage-7.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff0d9eae8cdfcd58fe7893b88993723583a6ce4dfbfd9f29e001922544f95615" }, - { file = "coverage-7.9.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fae939811e14e53ed8a9818dad51d434a41ee09df9305663735f2e2d2d7d959b" }, - { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:31991156251ec202c798501e0a42bbdf2169dcb0f137b1f5c0f4267f3fc68ef9" }, - { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d0d67963f9cbfc7c7f96d4ac74ed60ecbebd2ea6eeb51887af0f8dce205e545f" }, - { file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:49b752a2858b10580969ec6af6f090a9a440a64a301ac1528d7ca5f7ed497f4d" }, - { file = "coverage-7.9.2-cp312-cp312-win32.whl", hash = "sha256:88d7598b8ee130f32f8a43198ee02edd16d7f77692fa056cb779616bbea1b355" }, - { file = "coverage-7.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:9dfb070f830739ee49d7c83e4941cc767e503e4394fdecb3b54bfdac1d7662c0" }, - { file = "coverage-7.9.2-cp312-cp312-win_arm64.whl", hash = "sha256:4e2c058aef613e79df00e86b6d42a641c877211384ce5bd07585ed7ba71ab31b" }, - { file = "coverage-7.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:985abe7f242e0d7bba228ab01070fde1d6c8fa12f142e43debe9ed1dde686038" }, - { file = "coverage-7.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82c3939264a76d44fde7f213924021ed31f55ef28111a19649fec90c0f109e6d" }, - { file = "coverage-7.9.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae5d563e970dbe04382f736ec214ef48103d1b875967c89d83c6e3f21706d5b3" }, - { file = "coverage-7.9.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bdd612e59baed2a93c8843c9a7cb902260f181370f1d772f4842987535071d14" }, - { file = "coverage-7.9.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:256ea87cb2a1ed992bcdfc349d8042dcea1b80436f4ddf6e246d6bee4b5d73b6" }, - { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f44ae036b63c8ea432f610534a2668b0c3aee810e7037ab9d8ff6883de480f5b" }, - { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:82d76ad87c932935417a19b10cfe7abb15fd3f923cfe47dbdaa74ef4e503752d" }, - { file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:619317bb86de4193debc712b9e59d5cffd91dc1d178627ab2a77b9870deb2868" }, - { file = "coverage-7.9.2-cp313-cp313-win32.whl", hash = "sha256:0a07757de9feb1dfafd16ab651e0f628fd7ce551604d1bf23e47e1ddca93f08a" }, - { file = "coverage-7.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:115db3d1f4d3f35f5bb021e270edd85011934ff97c8797216b62f461dd69374b" }, - { file = "coverage-7.9.2-cp313-cp313-win_arm64.whl", hash = "sha256:48f82f889c80af8b2a7bb6e158d95a3fbec6a3453a1004d04e4f3b5945a02694" }, - { file = "coverage-7.9.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:55a28954545f9d2f96870b40f6c3386a59ba8ed50caf2d949676dac3ecab99f5" }, - { file = "coverage-7.9.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cdef6504637731a63c133bb2e6f0f0214e2748495ec15fe42d1e219d1b133f0b" }, - { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcd5ebe66c7a97273d5d2ddd4ad0ed2e706b39630ed4b53e713d360626c3dbb3" }, - { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9303aed20872d7a3c9cb39c5d2b9bdbe44e3a9a1aecb52920f7e7495410dfab8" }, - { file = "coverage-7.9.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc18ea9e417a04d1920a9a76fe9ebd2f43ca505b81994598482f938d5c315f46" }, - { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6406cff19880aaaadc932152242523e892faff224da29e241ce2fca329866584" }, - { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2d0d4f6ecdf37fcc19c88fec3e2277d5dee740fb51ffdd69b9579b8c31e4232e" }, - { file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c33624f50cf8de418ab2b4d6ca9eda96dc45b2c4231336bac91454520e8d1fac" }, - { file = "coverage-7.9.2-cp313-cp313t-win32.whl", hash = "sha256:1df6b76e737c6a92210eebcb2390af59a141f9e9430210595251fbaf02d46926" }, - { file = "coverage-7.9.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f5fd54310b92741ebe00d9c0d1d7b2b27463952c022da6d47c175d246a98d1bd" }, - { file = "coverage-7.9.2-cp313-cp313t-win_arm64.whl", hash = "sha256:c48c2375287108c887ee87d13b4070a381c6537d30e8487b24ec721bf2a781cb" }, - { file = "coverage-7.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ddc39510ac922a5c4c27849b739f875d3e1d9e590d1e7b64c98dadf037a16cce" }, - { file = "coverage-7.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a535c0c7364acd55229749c2b3e5eebf141865de3a8f697076a3291985f02d30" }, - { file = "coverage-7.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df0f9ef28e0f20c767ccdccfc5ae5f83a6f4a2fbdfbcbcc8487a8a78771168c8" }, - { file = "coverage-7.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f3da12e0ccbcb348969221d29441ac714bbddc4d74e13923d3d5a7a0bebef7a" }, - { file = "coverage-7.9.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a17eaf46f56ae0f870f14a3cbc2e4632fe3771eab7f687eda1ee59b73d09fe4" }, - { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:669135a9d25df55d1ed56a11bf555f37c922cf08d80799d4f65d77d7d6123fcf" }, - { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:9d3a700304d01a627df9db4322dc082a0ce1e8fc74ac238e2af39ced4c083193" }, - { file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:71ae8b53855644a0b1579d4041304ddc9995c7b21c8a1f16753c4d8903b4dfed" }, - { file = "coverage-7.9.2-cp39-cp39-win32.whl", hash = "sha256:dd7a57b33b5cf27acb491e890720af45db05589a80c1ffc798462a765be6d4d7" }, - { file = "coverage-7.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:f65bb452e579d5540c8b37ec105dd54d8b9307b07bcaa186818c104ffda22441" }, - { file = "coverage-7.9.2-pp39.pp310.pp311-none-any.whl", hash = "sha256:8a1166db2fb62473285bcb092f586e081e92656c7dfa8e9f62b4d39d7e6b5050" }, - { file = "coverage-7.9.2-py3-none-any.whl", hash = "sha256:e425cd5b00f6fc0ed7cdbd766c70be8baab4b7839e4d4fe5fac48581dd968ea4" }, - { file = "coverage-7.9.2.tar.gz", hash = "sha256:997024fa51e3290264ffd7492ec97d0690293ccd2b45a6cd7d82d945a4a80c8b" }, + {file = "coverage-7.13.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0fc31c787a84f8cd6027eba44010517020e0d18487064cd3d8968941856d1415"}, + {file = "coverage-7.13.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a32ebc02a1805adf637fc8dec324b5cdacd2e493515424f70ee33799573d661b"}, + {file = "coverage-7.13.4-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e24f9156097ff9dc286f2f913df3a7f63c0e333dcafa3c196f2c18b4175ca09a"}, + {file = "coverage-7.13.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8041b6c5bfdc03257666e9881d33b1abc88daccaf73f7b6340fb7946655cd10f"}, + {file = "coverage-7.13.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2a09cfa6a5862bc2fc6ca7c3def5b2926194a56b8ab78ffcf617d28911123012"}, + {file = "coverage-7.13.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:296f8b0af861d3970c2a4d8c91d48eb4dd4771bcef9baedec6a9b515d7de3def"}, + {file = "coverage-7.13.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e101609bcbbfb04605ea1027b10dc3735c094d12d40826a60f897b98b1c30256"}, + {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:aa3feb8db2e87ff5e6d00d7e1480ae241876286691265657b500886c98f38bda"}, + {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4fc7fa81bbaf5a02801b65346c8b3e657f1d93763e58c0abdf7c992addd81a92"}, + {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:33901f604424145c6e9c2398684b92e176c0b12df77d52db81c20abd48c3794c"}, + {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:bb28c0f2cf2782508a40cec377935829d5fcc3ad9a3681375af4e84eb34b6b58"}, + {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9d107aff57a83222ddbd8d9ee705ede2af2cc926608b57abed8ef96b50b7e8f9"}, + {file = "coverage-7.13.4-cp310-cp310-win32.whl", hash = "sha256:a6f94a7d00eb18f1b6d403c91a88fd58cfc92d4b16080dfdb774afc8294469bf"}, + {file = "coverage-7.13.4-cp310-cp310-win_amd64.whl", hash = "sha256:2cb0f1e000ebc419632bbe04366a8990b6e32c4e0b51543a6484ffe15eaeda95"}, + {file = "coverage-7.13.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d490ba50c3f35dd7c17953c68f3270e7ccd1c6642e2d2afe2d8e720b98f5a053"}, + {file = "coverage-7.13.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:19bc3c88078789f8ef36acb014d7241961dbf883fd2533d18cb1e7a5b4e28b11"}, + {file = "coverage-7.13.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3998e5a32e62fdf410c0dbd3115df86297995d6e3429af80b8798aad894ca7aa"}, + {file = "coverage-7.13.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8e264226ec98e01a8e1054314af91ee6cde0eacac4f465cc93b03dbe0bce2fd7"}, + {file = "coverage-7.13.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a3aa4e7b9e416774b21797365b358a6e827ffadaaca81b69ee02946852449f00"}, + {file = "coverage-7.13.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:71ca20079dd8f27fcf808817e281e90220475cd75115162218d0e27549f95fef"}, + {file = "coverage-7.13.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e2f25215f1a359ab17320b47bcdaca3e6e6356652e8256f2441e4ef972052903"}, + {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d65b2d373032411e86960604dc4edac91fdfb5dca539461cf2cbe78327d1e64f"}, + {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94eb63f9b363180aff17de3e7c8760c3ba94664ea2695c52f10111244d16a299"}, + {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e856bf6616714c3a9fbc270ab54103f4e685ba236fa98c054e8f87f266c93505"}, + {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:65dfcbe305c3dfe658492df2d85259e0d79ead4177f9ae724b6fb245198f55d6"}, + {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b507778ae8a4c915436ed5c2e05b4a6cecfa70f734e19c22a005152a11c7b6a9"}, + {file = "coverage-7.13.4-cp311-cp311-win32.whl", hash = "sha256:784fc3cf8be001197b652d51d3fd259b1e2262888693a4636e18879f613a62a9"}, + {file = "coverage-7.13.4-cp311-cp311-win_amd64.whl", hash = "sha256:2421d591f8ca05b308cf0092807308b2facbefe54af7c02ac22548b88b95c98f"}, + {file = "coverage-7.13.4-cp311-cp311-win_arm64.whl", hash = "sha256:79e73a76b854d9c6088fe5d8b2ebe745f8681c55f7397c3c0a016192d681045f"}, + {file = "coverage-7.13.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:02231499b08dabbe2b96612993e5fc34217cdae907a51b906ac7fca8027a4459"}, + {file = "coverage-7.13.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40aa8808140e55dc022b15d8aa7f651b6b3d68b365ea0398f1441e0b04d859c3"}, + {file = "coverage-7.13.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5b856a8ccf749480024ff3bd7310adaef57bf31fd17e1bfc404b7940b6986634"}, + {file = "coverage-7.13.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2c048ea43875fbf8b45d476ad79f179809c590ec7b79e2035c662e7afa3192e3"}, + {file = "coverage-7.13.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b7b38448866e83176e28086674fe7368ab8590e4610fb662b44e345b86d63ffa"}, + {file = "coverage-7.13.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:de6defc1c9badbf8b9e67ae90fd00519186d6ab64e5cc5f3d21359c2a9b2c1d3"}, + {file = "coverage-7.13.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7eda778067ad7ffccd23ecffce537dface96212576a07924cbf0d8799d2ded5a"}, + {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e87f6c587c3f34356c3759f0420693e35e7eb0e2e41e4c011cb6ec6ecbbf1db7"}, + {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8248977c2e33aecb2ced42fef99f2d319e9904a36e55a8a68b69207fb7e43edc"}, + {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:25381386e80ae727608e662474db537d4df1ecd42379b5ba33c84633a2b36d47"}, + {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:ee756f00726693e5ba94d6df2bdfd64d4852d23b09bb0bc700e3b30e6f333985"}, + {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fdfc1e28e7c7cdce44985b3043bc13bbd9c747520f94a4d7164af8260b3d91f0"}, + {file = "coverage-7.13.4-cp312-cp312-win32.whl", hash = "sha256:01d4cbc3c283a17fc1e42d614a119f7f438eabb593391283adca8dc86eff1246"}, + {file = "coverage-7.13.4-cp312-cp312-win_amd64.whl", hash = "sha256:9401ebc7ef522f01d01d45532c68c5ac40fb27113019b6b7d8b208f6e9baa126"}, + {file = "coverage-7.13.4-cp312-cp312-win_arm64.whl", hash = "sha256:b1ec7b6b6e93255f952e27ab58fbc68dcc468844b16ecbee881aeb29b6ab4d8d"}, + {file = "coverage-7.13.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b66a2da594b6068b48b2692f043f35d4d3693fb639d5ea8b39533c2ad9ac3ab9"}, + {file = "coverage-7.13.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3599eb3992d814d23b35c536c28df1a882caa950f8f507cef23d1cbf334995ac"}, + {file = "coverage-7.13.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:93550784d9281e374fb5a12bf1324cc8a963fd63b2d2f223503ef0fd4aa339ea"}, + {file = "coverage-7.13.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b720ce6a88a2755f7c697c23268ddc47a571b88052e6b155224347389fdf6a3b"}, + {file = "coverage-7.13.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7b322db1284a2ed3aa28ffd8ebe3db91c929b7a333c0820abec3d838ef5b3525"}, + {file = "coverage-7.13.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f4594c67d8a7c89cf922d9df0438c7c7bb022ad506eddb0fdb2863359ff78242"}, + {file = "coverage-7.13.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:53d133df809c743eb8bce33b24bcababb371f4441340578cd406e084d94a6148"}, + {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:76451d1978b95ba6507a039090ba076105c87cc76fc3efd5d35d72093964d49a"}, + {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7f57b33491e281e962021de110b451ab8a24182589be17e12a22c79047935e23"}, + {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1731dc33dc276dafc410a885cbf5992f1ff171393e48a21453b78727d090de80"}, + {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:bd60d4fe2f6fa7dff9223ca1bbc9f05d2b6697bc5961072e5d3b952d46e1b1ea"}, + {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9181a3ccead280b828fae232df12b16652702b49d41e99d657f46cc7b1f6ec7a"}, + {file = "coverage-7.13.4-cp313-cp313-win32.whl", hash = "sha256:f53d492307962561ac7de4cd1de3e363589b000ab69617c6156a16ba7237998d"}, + {file = "coverage-7.13.4-cp313-cp313-win_amd64.whl", hash = "sha256:e6f70dec1cc557e52df5306d051ef56003f74d56e9c4dd7ddb07e07ef32a84dd"}, + {file = "coverage-7.13.4-cp313-cp313-win_arm64.whl", hash = "sha256:fb07dc5da7e849e2ad31a5d74e9bece81f30ecf5a42909d0a695f8bd1874d6af"}, + {file = "coverage-7.13.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:40d74da8e6c4b9ac18b15331c4b5ebc35a17069410cad462ad4f40dcd2d50c0d"}, + {file = "coverage-7.13.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4223b4230a376138939a9173f1bdd6521994f2aff8047fae100d6d94d50c5a12"}, + {file = "coverage-7.13.4-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1d4be36a5114c499f9f1f9195e95ebf979460dbe2d88e6816ea202010ba1c34b"}, + {file = "coverage-7.13.4-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:200dea7d1e8095cc6e98cdabe3fd1d21ab17d3cee6dab00cadbb2fe35d9c15b9"}, + {file = "coverage-7.13.4-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8eb931ee8e6d8243e253e5ed7336deea6904369d2fd8ae6e43f68abbf167092"}, + {file = "coverage-7.13.4-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:75eab1ebe4f2f64d9509b984f9314d4aa788540368218b858dad56dc8f3e5eb9"}, + {file = "coverage-7.13.4-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c35eb28c1d085eb7d8c9b3296567a1bebe03ce72962e932431b9a61f28facf26"}, + {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:eb88b316ec33760714a4720feb2816a3a59180fd58c1985012054fa7aebee4c2"}, + {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7d41eead3cc673cbd38a4417deb7fd0b4ca26954ff7dc6078e33f6ff97bed940"}, + {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:fb26a934946a6afe0e326aebe0730cdff393a8bc0bbb65a2f41e30feddca399c"}, + {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:dae88bc0fc77edaa65c14be099bd57ee140cf507e6bfdeea7938457ab387efb0"}, + {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:845f352911777a8e722bfce168958214951e07e47e5d5d9744109fa5fe77f79b"}, + {file = "coverage-7.13.4-cp313-cp313t-win32.whl", hash = "sha256:2fa8d5f8de70688a28240de9e139fa16b153cc3cbb01c5f16d88d6505ebdadf9"}, + {file = "coverage-7.13.4-cp313-cp313t-win_amd64.whl", hash = "sha256:9351229c8c8407645840edcc277f4a2d44814d1bc34a2128c11c2a031d45a5dd"}, + {file = "coverage-7.13.4-cp313-cp313t-win_arm64.whl", hash = "sha256:30b8d0512f2dc8c8747557e8fb459d6176a2c9e5731e2b74d311c03b78451997"}, + {file = "coverage-7.13.4-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:300deaee342f90696ed186e3a00c71b5b3d27bffe9e827677954f4ee56969601"}, + {file = "coverage-7.13.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:29e3220258d682b6226a9b0925bc563ed9a1ebcff3cad30f043eceea7eaf2689"}, + {file = "coverage-7.13.4-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:391ee8f19bef69210978363ca930f7328081c6a0152f1166c91f0b5fdd2a773c"}, + {file = "coverage-7.13.4-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0dd7ab8278f0d58a0128ba2fca25824321f05d059c1441800e934ff2efa52129"}, + {file = "coverage-7.13.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:78cdf0d578b15148b009ccf18c686aa4f719d887e76e6b40c38ffb61d264a552"}, + {file = "coverage-7.13.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:48685fee12c2eb3b27c62f2658e7ea21e9c3239cba5a8a242801a0a3f6a8c62a"}, + {file = "coverage-7.13.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4e83efc079eb39480e6346a15a1bcb3e9b04759c5202d157e1dd4303cd619356"}, + {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ecae9737b72408d6a950f7e525f30aca12d4bd8dd95e37342e5beb3a2a8c4f71"}, + {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ae4578f8528569d3cf303fef2ea569c7f4c4059a38c8667ccef15c6e1f118aa5"}, + {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:6fdef321fdfbb30a197efa02d48fcd9981f0d8ad2ae8903ac318adc653f5df98"}, + {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b0f6ccf3dbe577170bebfce1318707d0e8c3650003cb4b3a9dd744575daa8b5"}, + {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:75fcd519f2a5765db3f0e391eb3b7d150cce1a771bf4c9f861aeab86c767a3c0"}, + {file = "coverage-7.13.4-cp314-cp314-win32.whl", hash = "sha256:8e798c266c378da2bd819b0677df41ab46d78065fb2a399558f3f6cae78b2fbb"}, + {file = "coverage-7.13.4-cp314-cp314-win_amd64.whl", hash = "sha256:245e37f664d89861cf2329c9afa2c1fe9e6d4e1a09d872c947e70718aeeac505"}, + {file = "coverage-7.13.4-cp314-cp314-win_arm64.whl", hash = "sha256:ad27098a189e5838900ce4c2a99f2fe42a0bf0c2093c17c69b45a71579e8d4a2"}, + {file = "coverage-7.13.4-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:85480adfb35ffc32d40918aad81b89c69c9cc5661a9b8a81476d3e645321a056"}, + {file = "coverage-7.13.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:79be69cf7f3bf9b0deeeb062eab7ac7f36cd4cc4c4dd694bd28921ba4d8596cc"}, + {file = "coverage-7.13.4-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:caa421e2684e382c5d8973ac55e4f36bed6821a9bad5c953494de960c74595c9"}, + {file = "coverage-7.13.4-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:14375934243ee05f56c45393fe2ce81fe5cc503c07cee2bdf1725fb8bef3ffaf"}, + {file = "coverage-7.13.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:25a41c3104d08edb094d9db0d905ca54d0cd41c928bb6be3c4c799a54753af55"}, + {file = "coverage-7.13.4-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6f01afcff62bf9a08fb32b2c1d6e924236c0383c02c790732b6537269e466a72"}, + {file = "coverage-7.13.4-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:eb9078108fbf0bcdde37c3f4779303673c2fa1fe8f7956e68d447d0dd426d38a"}, + {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0e086334e8537ddd17e5f16a344777c1ab8194986ec533711cbe6c41cde841b6"}, + {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:725d985c5ab621268b2edb8e50dfe57633dc69bda071abc470fed55a14935fd3"}, + {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:3c06f0f1337c667b971ca2f975523347e63ec5e500b9aa5882d91931cd3ef750"}, + {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:590c0ed4bf8e85f745e6b805b2e1c457b2e33d5255dd9729743165253bc9ad39"}, + {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:eb30bf180de3f632cd043322dad5751390e5385108b2807368997d1a92a509d0"}, + {file = "coverage-7.13.4-cp314-cp314t-win32.whl", hash = "sha256:c4240e7eded42d131a2d2c4dec70374b781b043ddc79a9de4d55ca71f8e98aea"}, + {file = "coverage-7.13.4-cp314-cp314t-win_amd64.whl", hash = "sha256:4c7d3cc01e7350f2f0f6f7036caaf5673fb56b6998889ccfe9e1c1fe75a9c932"}, + {file = "coverage-7.13.4-cp314-cp314t-win_arm64.whl", hash = "sha256:23e3f687cf945070d1c90f85db66d11e3025665d8dafa831301a0e0038f3db9b"}, + {file = "coverage-7.13.4-py3-none-any.whl", hash = "sha256:1af1641e57cf7ba1bd67d677c9abdbcd6cc2ab7da3bca7fa1e2b7e50e65f2ad0"}, + {file = "coverage-7.13.4.tar.gz", hash = "sha256:e5c8f6ed1e61a8b2dcdf31eb0b9bbf0130750ca79c1c49eb898e2ad86f5ccc91"}, ] [package.extras] toml = ["tomli ; python_full_version <= \"3.11.0a6\""] -[[package]] -name = "crc32c" -version = "2.7.1" -description = "A python package implementing the crc32c algorithm in hardware and software" -optional = false -python-versions = ">=3.7" -groups = ["main"] -files = [ - { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1fd1f9c6b50d7357736676278a1b8c8986737b8a1c76d7eab4baa71d0b6af67f" }, - { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:805c2be1bc0e251c48439a62b0422385899c15289483692bc70e78473c1039f1" }, - { file = "crc32c-2.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f4333e62b7844dfde112dbb8489fd2970358eddc3310db21e943a9f6994df749" }, - { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f0fadc741e79dc705e2d9ee967473e8a061d26b04310ed739f1ee292f33674f" }, - { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91ced31055d26d59385d708bbd36689e1a1d604d4b0ceb26767eb5a83156f85d" }, - { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36ffa999b72e3c17f6a066ae9e970b40f8c65f38716e436c39a33b809bc6ed9f" }, - { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e80114dd7f462297e54d5da1b9ff472e5249c5a2b406aa51c371bb0edcbf76bd" }, - { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:676f5b46da268b5190f9fb91b3f037a00d114b411313664438525db876adc71f" }, - { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8d0e660c9ed269e90692993a4457a932fc22c9cc96caf79dd1f1a84da85bb312" }, - { file = "crc32c-2.7.1-cp310-cp310-win32.whl", hash = "sha256:17a2c3f8c6d85b04b5511af827b5dbbda4e672d188c0b9f20a8156e93a1aa7b6" }, - { file = "crc32c-2.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3208764c29688f91a35392073229975dd7687b6cb9f76b919dae442cabcd5126" }, - { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:19e03a50545a3ef400bd41667d5525f71030488629c57d819e2dd45064f16192" }, - { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c03286b1e5ce9bed7090084f206aacd87c5146b4b10de56fe9e86cbbbf851cf" }, - { file = "crc32c-2.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:80ebbf144a1a56a532b353e81fa0f3edca4f4baa1bf92b1dde2c663a32bb6a15" }, - { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96b794fd11945298fdd5eb1290a812efb497c14bc42592c5c992ca077458eeba" }, - { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9df7194dd3c0efb5a21f5d70595b7a8b4fd9921fbbd597d6d8e7a11eca3e2d27" }, - { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d698eec444b18e296a104d0b9bb6c596c38bdcb79d24eba49604636e9d747305" }, - { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e07cf10ef852d219d179333fd706d1c415626f1f05e60bd75acf0143a4d8b225" }, - { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d2a051f296e6e92e13efee3b41db388931cdb4a2800656cd1ed1d9fe4f13a086" }, - { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1738259802978cdf428f74156175da6a5fdfb7256f647fdc0c9de1bc6cd7173" }, - { file = "crc32c-2.7.1-cp311-cp311-win32.whl", hash = "sha256:f7786d219a1a1bf27d0aa1869821d11a6f8e90415cfffc1e37791690d4a848a1" }, - { file = "crc32c-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:887f6844bb3ad35f0778cd10793ad217f7123a5422e40041231b8c4c7329649d" }, - { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f7d1c4e761fe42bf856130daf8b2658df33fe0ced3c43dadafdfeaa42b57b950" }, - { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:73361c79a6e4605204457f19fda18b042a94508a52e53d10a4239da5fb0f6a34" }, - { file = "crc32c-2.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:afd778fc8ac0ed2ffbfb122a9aa6a0e409a8019b894a1799cda12c01534493e0" }, - { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56ef661b34e9f25991fface7f9ad85e81bbc1b3fe3b916fd58c893eabe2fa0b8" }, - { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:571aa4429444b5d7f588e4377663592145d2d25eb1635abb530f1281794fc7c9" }, - { file = "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" }, - { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:99d17637c4867672cb8adeea007294e3c3df9d43964369516cfe2c1f47ce500a" }, - { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f4a400ac3c69a32e180d8753fd7ec7bccb80ade7ab0812855dce8a208e72495f" }, - { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:588587772e55624dd9c7a906ec9e8773ae0b6ac5e270fc0bc84ee2758eba90d5" }, - { file = "crc32c-2.7.1-cp312-cp312-win32.whl", hash = "sha256:9f14b60e5a14206e8173dd617fa0c4df35e098a305594082f930dae5488da428" }, - { file = "crc32c-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:7c810a246660a24dc818047dc5f89c7ce7b2814e1e08a8e99993f4103f7219e8" }, - { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:24949bffb06fc411cc18188d33357923cb935273642164d0bb37a5f375654169" }, - { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2d5d326e7e118d4fa60187770d86b66af2fdfc63ce9eeb265f0d3e7d49bebe0b" }, - { file = "crc32c-2.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba110df60c64c8e2d77a9425b982a520ccdb7abe42f06604f4d98a45bb1fff62" }, - { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c277f9d16a3283e064d54854af0976b72abaa89824955579b2b3f37444f89aae" }, - { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:881af0478a01331244e27197356929edbdeaef6a9f81b5c6bacfea18d2139289" }, - { file = "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" }, - { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2416c4d88696ac322632555c0f81ab35e15f154bc96055da6cf110d642dbc10" }, - { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:60254251b88ec9b9795215f0f9ec015a6b5eef8b2c5fba1267c672d83c78fc02" }, - { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:edefc0e46f3c37372183f70338e5bdee42f6789b62fcd36ec53aa933e9dfbeaf" }, - { file = "crc32c-2.7.1-cp313-cp313-win32.whl", hash = "sha256:813af8111218970fe2adb833c5e5239f091b9c9e76f03b4dd91aaba86e99b499" }, - { file = "crc32c-2.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:7d9ede7be8e4ec1c9e90aaf6884decbeef10e3473e6ddac032706d710cab5888" }, - { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:db9ac92294284b22521356715784b91cc9094eee42a5282ab281b872510d1831" }, - { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8fcd7f2f29a30dc92af64a9ee3d38bde0c82bd20ad939999427aac94bbd87373" }, - { file = "crc32c-2.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5c056ef043393085523e149276a7ce0cb534b872e04f3e20d74d9a94a75c0ad7" }, - { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03a92551a343702629af91f78d205801219692b6909f8fa126b830e332bfb0e0" }, - { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb9424ec1a8ca54763155a703e763bcede82e6569fe94762614bb2de1412d4e1" }, - { file = "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" }, - { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:57a20dfc27995f568f64775eea2bbb58ae269f1a1144561df5e4a4955f79db32" }, - { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:f7186d098bfd2cff25eac6880b7c7ad80431b90610036131c1c7dd0eab42a332" }, - { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:55a77e29a265418fa34bef15bd0f2c60afae5348988aaf35ed163b4bbf93cf37" }, - { file = "crc32c-2.7.1-cp313-cp313t-win32.whl", hash = "sha256:ae38a4b6aa361595d81cab441405fbee905c72273e80a1c010fb878ae77ac769" }, - { file = "crc32c-2.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:eee2a43b663feb6c79a6c1c6e5eae339c2b72cfac31ee54ec0209fa736cf7ee5" }, - { file = "crc32c-2.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:04a56e9f4995559fa86bcf5d0ed5c48505a36e2be1c41d70cae5c080d9a00b74" }, - { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88c5c9c21cd9fff593bb7dfe97d3287438c8aecbcc73d227f2366860a0663521" }, - { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:595146cb94ba0055301d273113add2af5859b467db41b50367f47870c2d0a81c" }, - { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9f3792872f1320961f33aaf0198edea371aee393bcc221fab66d10ecffd77d" }, - { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:999a40d75cd1696e779f6f99c29fa52be777197d1d9e3ae69cb919a05a369c1e" }, - { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:eff485526172cee7e6d1fa9c23913f92c7d38ab05674b0b578767c7b693faf5d" }, - { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:541dac90c64ed9ce05f85a71066567e854c1b40743a01d83fa2c66419a2e97b6" }, - { file = "crc32c-2.7.1-cp37-cp37m-win32.whl", hash = "sha256:7138ec26e79100c4cf4294ef40027a1cff26a1e23b7e5eb70efe5d7ff37cbc66" }, - { file = "crc32c-2.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:35a3ed12ac2e2551a07d246b7e6512ac39db021e006205a40c1cfd32ea73fcc3" }, - { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af062f11aea283b7e9c95f3a97fb6bb96ac08a9063f71621c2140237df141ada" }, - { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8f25ca521ecf7cccfff0ecae4d0538b5c0c7235d27bf098241f3e2bf86aed713" }, - { file = "crc32c-2.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1410bcd909be36ccbf8a52c45e4bddca77adfd4e80789ac3cd575c024086516d" }, - { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33fc8cb32f82685ebefd078e740925ea9da37a008ed5f43b68fc8324f8ca4a37" }, - { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad3dc6283ce53ad7d1dc5775003460110ab7eebf348efebe0486a531b28f8184" }, - { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:758ead20e122496764ae50db26bb90fb47fc4b6d242c8e99e87c3f1dae1f1dce" }, - { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e436d9044bbd51936f7aeb8b322543c516bf22371a17970a370a10af1661fa54" }, - { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:47e5be99057264b603e3cd88cf091985f33c16d3c8609f1c83ed6e72ec4179b4" }, - { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:280509210e622a236f16f031856847fd0d6704df662d7209da819ccfb40c6167" }, - { file = "crc32c-2.7.1-cp38-cp38-win32.whl", hash = "sha256:4ab48e048cfa123a9f9bdc5d4d687a3461723132c749c721a6d358605e6d470d" }, - { file = "crc32c-2.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:65471d1b1b6e10a404ca8200a4271d5bc0a552c3f5dcd943c1c7835f766ea02d" }, - { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:39ca842586084bca24f9c4ab43e2d99191b1186b2f89b2122b470d0730254d1b" }, - { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a911abc33d453b3f171a3200b1e18b3fc39c204670b5b0a353cca99e4c664332" }, - { file = "crc32c-2.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:22a72e81ec08a7ece6a35ac68d1ed32dd4a8be7949b164db88d4b4a4bade5c5a" }, - { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54d6f8c5be6815eabd6e3e90fa0bc13045183a6aa33a30dd684eb0f062b92213" }, - { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c855726d71dee7ae25f81c6b54293455fc66802f34d334d22bea1f6ce8bc21c" }, - { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98d5f7fc364bb9c4c4123d149406fbee063f2e8c2cff19a12f13e50faa146237" }, - { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:51ffba582c95a281e5a3f71eacdafc96b9a1835ddae245385639458fff197034" }, - { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3950d3c340c9d70889630ef81fba8666abfd0cf0aa19fd9c3a55634e0b383b0f" }, - { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:522fba1770aad8f7eb189f21fca591a51d96dcc749859088f462281324aec30b" }, - { file = "crc32c-2.7.1-cp39-cp39-win32.whl", hash = "sha256:812723e222b6a9fe0562554d72f4f072c3a95720c60ee500984e7d0e568caac3" }, - { file = "crc32c-2.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:6793fcfe9d4130230d196abbe4021c01ffe8e85c92633bf3c8559f9836c227f5" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:2e83fedebcdeb80c19e76b7a0e5103528bb062521c40702bf34516a429e81df3" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30004a7383538ef93bda9b22f7b3805bc0aa5625ab2675690e1b676b19417d4b" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a01b0983aa87f517c12418f9898ecf2083bf86f4ea04122e053357c3edb0d73f" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb2b963c42128b38872e9ed63f04a73ce1ff89a1dfad7ea38add6fe6296497b8" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cdd5e576fee5d255c1e68a4dae4420f21e57e6f05900b38d5ae47c713fc3330d" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:79f0ff50863aeb441fbfa87e9db6542ddfe3e941189dece832b0af2e454dbab0" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cd27a1e400d77e9872fa1303e8f9d30bd050df35ee4858354ce0b59f8227d32" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:274739b3e1591bd4b7ec98764f2f79c6fbcc0f7d7676d5f17369832fe14ee4f0" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:050f52045b4a033a245e0ee4357e1a793de5af6496c82250ef13d8cb90a21e20" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ceb4ca126f75694bda020a307221563d3c522719c0acedcc81ffb985b4867c94" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:eabefe7a6fb5dfc6318fb35f4d98893baef17ebda9b311498e870526d32168e7" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:217edd9ba8c5f0c3ad60c82a11fa78f01162fa106fd7f5d17175dac6bf1eedf9" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15d640d9d4aa213aec6c837f602081a17d1522f8cd78b52334b62ee27b083410" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:519878822bf9bdead63c25a5e4bdc26d2eae9da6056f92b9b5f3023c08f1d016" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:2bf69cfa4c3ea9f060fe06db00b7e34f771c83f73dd2c3568c2c9019479e34c2" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e89d51c90f6730b67b12c97d49099ba18d0fdce18541fab94d2be95d1c939adb" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:488a0feba1bb005d0dd2f702c1da4849d083e88d82cd27b83ac2d2d93af80755" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:919262b7a12ef63f222ec19c0e092f39268802652e11669315257ae6249ec79f" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4181240f6080c38eec9dd1539cd23a304a12100d3f4ffe43234f32064fae5ef0" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fedde1e53507d0ede1980e8109442edd108c04ab100abcd5145c274820dacd4f" }, - { file = "crc32c-2.7.1.tar.gz", hash = "sha256:f91b144a21eef834d64178e01982bb9179c354b3e9e5f4c803b0e5096384968c" }, -] - [[package]] name = "dask" -version = "2025.9.1" +version = "2026.1.2" description = "Parallel PyData with Task Scheduling" optional = false python-versions = ">=3.10" groups = ["main"] files = [ - { file = "dask-2025.9.1-py3-none-any.whl", hash = "sha256:2a8a7dc933caaea2f47745a65a6ec93d9e616e12aab53b4f03ee161d31939110" }, - { file = "dask-2025.9.1.tar.gz", hash = "sha256:718df73e1fd3d7e2b8546e0f04ce08e1ed7f9aa3da1eecd0c1f44c8b6d52f7e0" }, + {file = "dask-2026.1.2-py3-none-any.whl", hash = "sha256:46a0cf3b8d87f78a3d2e6b145aea4418a6d6d606fe6a16c79bd8ca2bb862bc91"}, + {file = "dask-2026.1.2.tar.gz", hash = "sha256:1136683de2750d98ea792670f7434e6c1cfce90cab2cc2f2495a9e60fd25a4fc"}, ] [package.dependencies] @@ -791,76 +474,16 @@ fsspec = ">=2021.09.0" packaging = ">=20.0" partd = ">=1.4.0" pyyaml = ">=5.3.1" -toolz = ">=0.10.0" +toolz = ">=0.12.0" [package.extras] array = ["numpy (>=1.24)"] -complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=14.0.1)"] -dataframe = ["dask[array]", "pandas (>=2.0)", "pyarrow (>=14.0.1)"] +complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=16.0)"] +dataframe = ["dask[array]", "pandas (>=2.0)", "pyarrow (>=16.0)"] diagnostics = ["bokeh (>=3.1.0)", "jinja2 (>=2.10.3)"] -distributed = ["distributed (==2025.9.1)"] +distributed = ["distributed (>=2026.1.2,<2026.1.3)"] test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] -[[package]] -name = "debugpy" -version = "1.8.15" -description = "An implementation of the Debug Adapter Protocol for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "debugpy-1.8.15-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e9a8125c85172e3ec30985012e7a81ea5e70bbb836637f8a4104f454f9b06c97" }, - { file = "debugpy-1.8.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fd0b6b5eccaa745c214fd240ea82f46049d99ef74b185a3517dad3ea1ec55d9" }, - { file = "debugpy-1.8.15-cp310-cp310-win32.whl", hash = "sha256:8181cce4d344010f6bfe94a531c351a46a96b0f7987750932b2908e7a1e14a55" }, - { file = "debugpy-1.8.15-cp310-cp310-win_amd64.whl", hash = "sha256:af2dcae4e4cd6e8b35f982ccab29fe65f7e8766e10720a717bc80c464584ee21" }, - { file = "debugpy-1.8.15-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:babc4fb1962dd6a37e94d611280e3d0d11a1f5e6c72ac9b3d87a08212c4b6dd3" }, - { file = "debugpy-1.8.15-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f778e68f2986a58479d0ac4f643e0b8c82fdd97c2e200d4d61e7c2d13838eb53" }, - { file = "debugpy-1.8.15-cp311-cp311-win32.whl", hash = "sha256:f9d1b5abd75cd965e2deabb1a06b0e93a1546f31f9f621d2705e78104377c702" }, - { file = "debugpy-1.8.15-cp311-cp311-win_amd64.whl", hash = "sha256:62954fb904bec463e2b5a415777f6d1926c97febb08ef1694da0e5d1463c5c3b" }, - { file = "debugpy-1.8.15-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:3dcc7225cb317469721ab5136cda9ff9c8b6e6fb43e87c9e15d5b108b99d01ba" }, - { file = "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" }, - { file = "debugpy-1.8.15-cp312-cp312-win32.whl", hash = "sha256:b08e9b0bc260cf324c890626961dad4ffd973f7568fbf57feb3c3a65ab6b6327" }, - { file = "debugpy-1.8.15-cp312-cp312-win_amd64.whl", hash = "sha256:e2a4fe357c92334272eb2845fcfcdbec3ef9f22c16cf613c388ac0887aed15fa" }, - { file = "debugpy-1.8.15-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:f5e01291ad7d6649aed5773256c5bba7a1a556196300232de1474c3c372592bf" }, - { file = "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" }, - { file = "debugpy-1.8.15-cp313-cp313-win32.whl", hash = "sha256:fcf0748d4f6e25f89dc5e013d1129ca6f26ad4da405e0723a4f704583896a709" }, - { file = "debugpy-1.8.15-cp313-cp313-win_amd64.whl", hash = "sha256:73c943776cb83e36baf95e8f7f8da765896fd94b05991e7bc162456d25500683" }, - { file = "debugpy-1.8.15-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:054cd4935bd2e4964dfe1aeee4d6bca89d0c833366776fc35387f8a2f517dd00" }, - { file = "debugpy-1.8.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21c4288e662997df3176c4b9d93ee1393913fbaf320732be332d538000c53208" }, - { file = "debugpy-1.8.15-cp38-cp38-win32.whl", hash = "sha256:aaa8ce6a37d764f93fe583d7c6ca58eb7550b36941387483db113125f122bb0d" }, - { file = "debugpy-1.8.15-cp38-cp38-win_amd64.whl", hash = "sha256:71cdf7f676af78e70f005c7fad2ef9da0edc2a24befbf3ab146a51f0d58048c2" }, - { file = "debugpy-1.8.15-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:085b6d0adb3eb457c2823ac497a0690b10a99eff8b01c01a041e84579f114b56" }, - { file = "debugpy-1.8.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd546a405381d17527814852642df0a74b7da8acc20ae5f3cfad0b7c86419511" }, - { file = "debugpy-1.8.15-cp39-cp39-win32.whl", hash = "sha256:ae0d445fe11ff4351428e6c2389e904e1cdcb4a47785da5a5ec4af6c5b95fce5" }, - { file = "debugpy-1.8.15-cp39-cp39-win_amd64.whl", hash = "sha256:de7db80189ca97ab4b10a87e4039cfe4dd7ddfccc8f33b5ae40fcd33792fc67a" }, - { file = "debugpy-1.8.15-py2.py3-none-any.whl", hash = "sha256:bce2e6c5ff4f2e00b98d45e7e01a49c7b489ff6df5f12d881c67d2f1ac635f3d" }, - { file = "debugpy-1.8.15.tar.gz", hash = "sha256:58d7a20b7773ab5ee6bdfb2e6cf622fdf1e40c9d5aef2857d85391526719ac00" }, -] - -[[package]] -name = "decorator" -version = "5.2.1" -description = "Decorators for Humans" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a" }, - { file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360" }, -] - -[[package]] -name = "defusedxml" -version = "0.7.1" -description = "XML bomb protection for Python stdlib modules" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["dev"] -files = [ - {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, - {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, -] - [[package]] name = "distlib" version = "0.4.0" @@ -869,8 +492,8 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - { file = "distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16" }, - { file = "distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d" }, + {file = "distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16"}, + {file = "distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d"}, ] [[package]] @@ -881,8 +504,8 @@ optional = false python-versions = ">=3.8" groups = ["main"] files = [ - { file = "donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d" }, - { file = "donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52" }, + {file = "donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d"}, + {file = "donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52"}, ] [package.dependencies] @@ -892,36 +515,6 @@ pyyaml = "*" docs = ["cloudpickle", "numpydoc", "pytest", "sphinx (>=4.0.0)"] test = ["cloudpickle", "pytest"] -[[package]] -name = "executing" -version = "2.2.0" -description = "Get the currently executing AST node of a frame, and other information" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa" }, - { file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755" }, -] - -[package.extras] -tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich ; python_version >= \"3.11\""] - -[[package]] -name = "fastjsonschema" -version = "2.21.1" -description = "Fastest Python implementation of JSON schema" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - { file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667" }, - { file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4" }, -] - -[package.extras] -devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] - [[package]] name = "fawltydeps" version = "0.20.0" @@ -930,8 +523,8 @@ optional = false python-versions = ">=3.9.2" groups = ["dev"] files = [ - { file = "fawltydeps-0.20.0-py3-none-any.whl", hash = "sha256:d3bfb260c54135ec5dfa2583a7381c45d2759deb23f6de6f4905da9adac67512" }, - { file = "fawltydeps-0.20.0.tar.gz", hash = "sha256:ad080b284a2278c9940540b643483aff8b57794a1362735d3024c270810c0182" }, + {file = "fawltydeps-0.20.0-py3-none-any.whl", hash = "sha256:d3bfb260c54135ec5dfa2583a7381c45d2759deb23f6de6f4905da9adac67512"}, + {file = "fawltydeps-0.20.0.tar.gz", hash = "sha256:ad080b284a2278c9940540b643483aff8b57794a1362735d3024c270810c0182"}, ] [package.dependencies] @@ -947,43 +540,26 @@ uv = ["uv (>=0.1.6)"] [[package]] name = "filelock" -version = "3.18.0" +version = "3.24.3" description = "A platform independent file lock." optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de" }, - { file = "filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2" }, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] -typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] - -[[package]] -name = "fqdn" -version = "1.4.0" -description = "Validate fully-qualified domain names compliant to RFC 1035 and the preferred form in RFC 3686 s. 2." -optional = false -python-versions = "*" +python-versions = ">=3.10" groups = ["dev"] files = [ - { file = "fqdn-1.4.0-py3-none-any.whl", hash = "sha256:e935616ae81c9c60a22267593fe8e6af68cecc68549cc71bb9bfbcbbcb383386" }, - { file = "fqdn-1.4.0.tar.gz", hash = "sha256:30e8f2e685ce87cdace4712fd97c5d09f5e6fa519bbb66e8f188f6a7cb3a5c4e" }, + {file = "filelock-3.24.3-py3-none-any.whl", hash = "sha256:426e9a4660391f7f8a810d71b0555bce9008b0a1cc342ab1f6947d37639e002d"}, + {file = "filelock-3.24.3.tar.gz", hash = "sha256:011a5644dc937c22699943ebbfc46e969cdde3e171470a6e40b9533e5a72affa"}, ] [[package]] name = "fsspec" -version = "2025.7.0" +version = "2026.2.0" description = "File-system specification" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["main"] files = [ - { file = "fsspec-2025.7.0-py3-none-any.whl", hash = "sha256:8b012e39f63c7d5f10474de957f3ab793b47b45ae7d39f2fb735f8bbe25c0e21" }, - { file = "fsspec-2025.7.0.tar.gz", hash = "sha256:786120687ffa54b8283d942929540d8bc5ccfa820deb555a2b5d0ed2b737bf58" }, + {file = "fsspec-2026.2.0-py3-none-any.whl", hash = "sha256:98de475b5cb3bd66bedd5c4679e87b4fdfe1a3bf4d707b151b3c07e58c9a2437"}, + {file = "fsspec-2026.2.0.tar.gz", hash = "sha256:6544e34b16869f5aacd5b90bdf1a71acb37792ea3ddf6125ee69a22a53fb8bff"}, ] [package.extras] @@ -994,9 +570,9 @@ dask = ["dask", "distributed"] dev = ["pre-commit", "ruff (>=0.5)"] doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"] dropbox = ["dropbox", "dropboxdrivefs", "requests"] -full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] +full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs (>2024.2.0)", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs (>2024.2.0)", "smbprotocol", "tqdm"] fuse = ["fusepy"] -gcs = ["gcsfs"] +gcs = ["gcsfs (>2024.2.0)"] git = ["pygit2"] github = ["requests"] gs = ["gcsfs"] @@ -1005,13 +581,13 @@ hdfs = ["pyarrow (>=1)"] http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] libarchive = ["libarchive-c"] oci = ["ocifs"] -s3 = ["s3fs"] +s3 = ["s3fs (>2024.2.0)"] sftp = ["paramiko"] smb = ["smbprotocol"] ssh = ["paramiko"] test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"] test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] -test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard ; python_version < \"3.14\""] +test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "backports-zstd ; python_version < \"3.14\"", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas (<3.0.0)", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard ; python_version < \"3.14\""] tqdm = ["tqdm"] [[package]] @@ -1022,8 +598,8 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - { file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343" }, - { file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619" }, + {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, + {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, ] [package.dependencies] @@ -1033,89 +609,58 @@ python-dateutil = ">=2.8.1" dev = ["flake8", "markdown", "twine", "wheel"] [[package]] -name = "griffe" -version = "1.7.3" -description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." +name = "google-crc32c" +version = "1.8.0" +description = "A python wrapper of the C library 'Google CRC32C'" optional = false python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "griffe-1.7.3-py3-none-any.whl", hash = "sha256:c6b3ee30c2f0f17f30bcdef5068d6ab7a2a4f1b8bf1a3e74b56fffd21e1c5f75" }, - { file = "griffe-1.7.3.tar.gz", hash = "sha256:52ee893c6a3a968b639ace8015bec9d36594961e156e23315c8e8e51401fa50b" }, -] - -[package.dependencies] -colorama = ">=0.4" - -[[package]] -name = "h11" -version = "0.16.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86" }, - { file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1" }, -] - -[[package]] -name = "httpcore" -version = "1.0.9" -description = "A minimal low-level HTTP client." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55" }, - { file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8" }, -] - -[package.dependencies] -certifi = "*" -h11 = ">=0.16" - -[package.extras] -asyncio = ["anyio (>=4.0,<5.0)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<1.0)"] - -[[package]] -name = "httpx" -version = "0.28.1" -description = "The next generation HTTP client." -optional = false -python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] files = [ - { file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad" }, - { file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc" }, + {file = "google_crc32c-1.8.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0470b8c3d73b5f4e3300165498e4cf25221c7eb37f1159e221d1825b6df8a7ff"}, + {file = "google_crc32c-1.8.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:119fcd90c57c89f30040b47c211acee231b25a45d225e3225294386f5d258288"}, + {file = "google_crc32c-1.8.0-cp310-cp310-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6f35aaffc8ccd81ba3162443fabb920e65b1f20ab1952a31b13173a67811467d"}, + {file = "google_crc32c-1.8.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:864abafe7d6e2c4c66395c1eb0fe12dc891879769b52a3d56499612ca93b6092"}, + {file = "google_crc32c-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:db3fe8eaf0612fc8b20fa21a5f25bd785bc3cd5be69f8f3412b0ac2ffd49e733"}, + {file = "google_crc32c-1.8.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:014a7e68d623e9a4222d663931febc3033c5c7c9730785727de2a81f87d5bab8"}, + {file = "google_crc32c-1.8.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:86cfc00fe45a0ac7359e5214a1704e51a99e757d0272554874f419f79838c5f7"}, + {file = "google_crc32c-1.8.0-cp311-cp311-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:19b40d637a54cb71e0829179f6cb41835f0fbd9e8eb60552152a8b52c36cbe15"}, + {file = "google_crc32c-1.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:17446feb05abddc187e5441a45971b8394ea4c1b6efd88ab0af393fd9e0a156a"}, + {file = "google_crc32c-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:71734788a88f551fbd6a97be9668a0020698e07b2bf5b3aa26a36c10cdfb27b2"}, + {file = "google_crc32c-1.8.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:4b8286b659c1335172e39563ab0a768b8015e88e08329fa5321f774275fc3113"}, + {file = "google_crc32c-1.8.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:2a3dc3318507de089c5384cc74d54318401410f82aa65b2d9cdde9d297aca7cb"}, + {file = "google_crc32c-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:14f87e04d613dfa218d6135e81b78272c3b904e2a7053b841481b38a7d901411"}, + {file = "google_crc32c-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cb5c869c2923d56cb0c8e6bcdd73c009c36ae39b652dbe46a05eb4ef0ad01454"}, + {file = "google_crc32c-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:3cc0c8912038065eafa603b238abf252e204accab2a704c63b9e14837a854962"}, + {file = "google_crc32c-1.8.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:3ebb04528e83b2634857f43f9bb8ef5b2bbe7f10f140daeb01b58f972d04736b"}, + {file = "google_crc32c-1.8.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:450dc98429d3e33ed2926fc99ee81001928d63460f8538f21a5d6060912a8e27"}, + {file = "google_crc32c-1.8.0-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3b9776774b24ba76831609ffbabce8cdf6fa2bd5e9df37b594221c7e333a81fa"}, + {file = "google_crc32c-1.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:89c17d53d75562edfff86679244830599ee0a48efc216200691de8b02ab6b2b8"}, + {file = "google_crc32c-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:57a50a9035b75643996fbf224d6661e386c7162d1dfdab9bc4ca790947d1007f"}, + {file = "google_crc32c-1.8.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:e6584b12cb06796d285d09e33f63309a09368b9d806a551d8036a4207ea43697"}, + {file = "google_crc32c-1.8.0-cp314-cp314-macosx_12_0_x86_64.whl", hash = "sha256:f4b51844ef67d6cf2e9425983274da75f18b1597bb2c998e1c0a0e8d46f8f651"}, + {file = "google_crc32c-1.8.0-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b0d1a7afc6e8e4635564ba8aa5c0548e3173e41b6384d7711a9123165f582de2"}, + {file = "google_crc32c-1.8.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8b3f68782f3cbd1bce027e48768293072813469af6a61a86f6bb4977a4380f21"}, + {file = "google_crc32c-1.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:d511b3153e7011a27ab6ee6bb3a5404a55b994dc1a7322c0b87b29606d9790e2"}, + {file = "google_crc32c-1.8.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:ba6aba18daf4d36ad4412feede6221414692f44d17e5428bdd81ad3fc1eee5dc"}, + {file = "google_crc32c-1.8.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:87b0072c4ecc9505cfa16ee734b00cd7721d20a0f595be4d40d3d21b41f65ae2"}, + {file = "google_crc32c-1.8.0-cp39-cp39-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3d488e98b18809f5e322978d4506373599c0c13e6c5ad13e53bb44758e18d215"}, + {file = "google_crc32c-1.8.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:01f126a5cfddc378290de52095e2c7052be2ba7656a9f0caf4bcd1bfb1833f8a"}, + {file = "google_crc32c-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:61f58b28e0b21fcb249a8247ad0db2e64114e201e2e9b4200af020f3b6242c9f"}, + {file = "google_crc32c-1.8.0-pp311-pypy311_pp73-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:87fa445064e7db928226b2e6f0d5304ab4cd0339e664a4e9a25029f384d9bb93"}, + {file = "google_crc32c-1.8.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f639065ea2042d5c034bf258a9f085eaa7af0cd250667c0635a3118e8f92c69c"}, + {file = "google_crc32c-1.8.0.tar.gz", hash = "sha256:a428e25fb7691024de47fecfbff7ff957214da51eddded0da0ae0e0f03a2cf79"}, ] -[package.dependencies] -anyio = "*" -certifi = "*" -httpcore = "==1.*" -idna = "*" - -[package.extras] -brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -zstd = ["zstandard (>=0.18.0)"] - [[package]] name = "identify" -version = "2.6.12" +version = "2.6.16" description = "File identification library for Python" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ - { file = "identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2" }, - { file = "identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6" }, + {file = "identify-2.6.16-py2.py3-none-any.whl", hash = "sha256:391ee4d77741d994189522896270b787aed8670389bfd60f326d677d64a6dfb0"}, + {file = "identify-2.6.16.tar.gz", hash = "sha256:846857203b5511bbe94d5a352a48ef2359532bc8f6727b5544077a0dcfb24980"}, ] [package.extras] @@ -1123,14 +668,14 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "3.10" +version = "3.11" description = "Internationalized Domain Names in Applications (IDNA)" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, + {file = "idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea"}, + {file = "idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902"}, ] [package.extras] @@ -1138,14 +683,14 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 [[package]] name = "importlib-metadata" -version = "8.7.0" +version = "8.7.1" description = "Read metadata from Python packages" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd" }, - { file = "importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000" }, + {file = "importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151"}, + {file = "importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb"}, ] [package.dependencies] @@ -1155,672 +700,302 @@ zipp = ">=3.20" check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -enabler = ["pytest-enabler (>=2.2)"] +enabler = ["pytest-enabler (>=3.4)"] perf = ["ipython"] -test = ["flufl.flake8", "importlib_resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] -type = ["pytest-mypy"] +test = ["flufl.flake8", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +type = ["mypy (<1.19) ; platform_python_implementation == \"PyPy\"", "pytest-mypy (>=1.0.1)"] [[package]] name = "iniconfig" -version = "2.1.0" +version = "2.3.0" description = "brain-dead simple config-ini parsing" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" groups = ["dev"] files = [ - { file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760" }, - { file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7" }, + {file = "iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12"}, + {file = "iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730"}, ] [[package]] -name = "ipykernel" -version = "6.29.5" -description = "IPython Kernel for Jupyter" +name = "isort" +version = "8.0.0" +description = "A Python utility / library to sort Python imports." optional = false -python-versions = ">=3.8" +python-versions = ">=3.10.0" groups = ["dev"] files = [ - {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, - {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, + {file = "isort-8.0.0-py3-none-any.whl", hash = "sha256:184916a933041c7cf718787f7e52064f3c06272aff69a5cb4dc46497bd8911d9"}, + {file = "isort-8.0.0.tar.gz", hash = "sha256:fddea59202f231e170e52e71e3510b99c373b6e571b55d9c7b31b679c0fed47c"}, ] -[package.dependencies] -appnope = {version = "*", markers = "platform_system == \"Darwin\""} -comm = ">=0.1.1" -debugpy = ">=1.6.5" -ipython = ">=7.23.1" -jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -matplotlib-inline = ">=0.1" -nest-asyncio = "*" -packaging = "*" -psutil = "*" -pyzmq = ">=24" -tornado = ">=6.1" -traitlets = ">=5.4.0" - [package.extras] -cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] -pyqt5 = ["pyqt5"] -pyside6 = ["pyside6"] -test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] +colors = ["colorama"] [[package]] -name = "ipython" -version = "9.4.0" -description = "IPython: Productive Interactive Computing" +name = "jinja2" +version = "3.1.6" +description = "A very fast and expressive template engine." optional = false -python-versions = ">=3.11" +python-versions = ">=3.7" groups = ["dev"] files = [ - { file = "ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066" }, - { file = "ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270" }, + {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, + {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, ] [package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -decorator = "*" -ipython-pygments-lexers = "*" -jedi = ">=0.16" -matplotlib-inline = "*" -pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} -prompt_toolkit = ">=3.0.41,<3.1.0" -pygments = ">=2.4.0" -stack_data = "*" -traitlets = ">=5.13.0" +MarkupSafe = ">=2.0" [package.extras] -all = ["ipython[doc,matplotlib,test,test-extra]"] -black = ["black"] -doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinx_toml (==0.0.4)", "typing_extensions"] -matplotlib = ["matplotlib"] -test = ["packaging", "pytest", "pytest-asyncio (<0.22)", "testpath"] -test-extra = ["curio", "ipykernel", "ipython[test]", "jupyter_ai", "matplotlib (!=3.2.0)", "nbclient", "nbformat", "numpy (>=1.23)", "pandas", "trio"] +i18n = ["Babel (>=2.7)"] [[package]] -name = "ipython-pygments-lexers" -version = "1.1.1" -description = "Defines a variety of Pygments lexers for highlighting IPython code." +name = "librt" +version = "0.8.1" +description = "Mypyc runtime library" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] +markers = "platform_python_implementation != \"PyPy\"" +files = [ + {file = "librt-0.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:81fd938344fecb9373ba1b155968c8a329491d2ce38e7ddb76f30ffb938f12dc"}, + {file = "librt-0.8.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5db05697c82b3a2ec53f6e72b2ed373132b0c2e05135f0696784e97d7f5d48e7"}, + {file = "librt-0.8.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d56bc4011975f7460bea7b33e1ff425d2f1adf419935ff6707273c77f8a4ada6"}, + {file = "librt-0.8.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5cdc0f588ff4b663ea96c26d2a230c525c6fc62b28314edaaaca8ed5af931ad0"}, + {file = "librt-0.8.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:97c2b54ff6717a7a563b72627990bec60d8029df17df423f0ed37d56a17a176b"}, + {file = "librt-0.8.1-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8f1125e6bbf2f1657d9a2f3ccc4a2c9b0c8b176965bb565dd4d86be67eddb4b6"}, + {file = "librt-0.8.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8f4bb453f408137d7581be309b2fbc6868a80e7ef60c88e689078ee3a296ae71"}, + {file = "librt-0.8.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c336d61d2fe74a3195edc1646d53ff1cddd3a9600b09fa6ab75e5514ba4862a7"}, + {file = "librt-0.8.1-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:eb5656019db7c4deacf0c1a55a898c5bb8f989be904597fcb5232a2f4828fa05"}, + {file = "librt-0.8.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c25d9e338d5bed46c1632f851babf3d13c78f49a225462017cf5e11e845c5891"}, + {file = "librt-0.8.1-cp310-cp310-win32.whl", hash = "sha256:aaab0e307e344cb28d800957ef3ec16605146ef0e59e059a60a176d19543d1b7"}, + {file = "librt-0.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:56e04c14b696300d47b3bc5f1d10a00e86ae978886d0cee14e5714fafb5df5d2"}, + {file = "librt-0.8.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:681dc2451d6d846794a828c16c22dc452d924e9f700a485b7ecb887a30aad1fd"}, + {file = "librt-0.8.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3b4350b13cc0e6f5bec8fa7caf29a8fb8cdc051a3bae45cfbfd7ce64f009965"}, + {file = "librt-0.8.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ac1e7817fd0ed3d14fd7c5df91daed84c48e4c2a11ee99c0547f9f62fdae13da"}, + {file = "librt-0.8.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:747328be0c5b7075cde86a0e09d7a9196029800ba75a1689332348e998fb85c0"}, + {file = "librt-0.8.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0af2bd2bc204fa27f3d6711d0f360e6b8c684a035206257a81673ab924aa11e"}, + {file = "librt-0.8.1-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d480de377f5b687b6b1bc0c0407426da556e2a757633cc7e4d2e1a057aa688f3"}, + {file = "librt-0.8.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d0ee06b5b5291f609ddb37b9750985b27bc567791bc87c76a569b3feed8481ac"}, + {file = "librt-0.8.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e2c6f77b9ad48ce5603b83b7da9ee3e36b3ab425353f695cba13200c5d96596"}, + {file = "librt-0.8.1-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:439352ba9373f11cb8e1933da194dcc6206daf779ff8df0ed69c5e39113e6a99"}, + {file = "librt-0.8.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:82210adabbc331dbb65d7868b105185464ef13f56f7f76688565ad79f648b0fe"}, + {file = "librt-0.8.1-cp311-cp311-win32.whl", hash = "sha256:52c224e14614b750c0a6d97368e16804a98c684657c7518752c356834fff83bb"}, + {file = "librt-0.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:c00e5c884f528c9932d278d5c9cbbea38a6b81eb62c02e06ae53751a83a4d52b"}, + {file = "librt-0.8.1-cp311-cp311-win_arm64.whl", hash = "sha256:f7cdf7f26c2286ffb02e46d7bac56c94655540b26347673bea15fa52a6af17e9"}, + {file = "librt-0.8.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a28f2612ab566b17f3698b0da021ff9960610301607c9a5e8eaca62f5e1c350a"}, + {file = "librt-0.8.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:60a78b694c9aee2a0f1aaeaa7d101cf713e92e8423a941d2897f4fa37908dab9"}, + {file = "librt-0.8.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:758509ea3f1eba2a57558e7e98f4659d0ea7670bff49673b0dde18a3c7e6c0eb"}, + {file = "librt-0.8.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:039b9f2c506bd0ab0f8725aa5ba339c6f0cd19d3b514b50d134789809c24285d"}, + {file = "librt-0.8.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bb54f1205a3a6ab41a6fd71dfcdcbd278670d3a90ca502a30d9da583105b6f7"}, + {file = "librt-0.8.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:05bd41cdee35b0c59c259f870f6da532a2c5ca57db95b5f23689fcb5c9e42440"}, + {file = "librt-0.8.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adfab487facf03f0d0857b8710cf82d0704a309d8ffc33b03d9302b4c64e91a9"}, + {file = "librt-0.8.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:153188fe98a72f206042be10a2c6026139852805215ed9539186312d50a8e972"}, + {file = "librt-0.8.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:dd3c41254ee98604b08bd5b3af5bf0a89740d4ee0711de95b65166bf44091921"}, + {file = "librt-0.8.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e0d138c7ae532908cbb342162b2611dbd4d90c941cd25ab82084aaf71d2c0bd0"}, + {file = "librt-0.8.1-cp312-cp312-win32.whl", hash = "sha256:43353b943613c5d9c49a25aaffdba46f888ec354e71e3529a00cca3f04d66a7a"}, + {file = "librt-0.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:ff8baf1f8d3f4b6b7257fcb75a501f2a5499d0dda57645baa09d4d0d34b19444"}, + {file = "librt-0.8.1-cp312-cp312-win_arm64.whl", hash = "sha256:0f2ae3725904f7377e11cc37722d5d401e8b3d5851fb9273d7f4fe04f6b3d37d"}, + {file = "librt-0.8.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7e6bad1cd94f6764e1e21950542f818a09316645337fd5ab9a7acc45d99a8f35"}, + {file = "librt-0.8.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cf450f498c30af55551ba4f66b9123b7185362ec8b625a773b3d39aa1a717583"}, + {file = "librt-0.8.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:eca45e982fa074090057132e30585a7e8674e9e885d402eae85633e9f449ce6c"}, + {file = "librt-0.8.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c3811485fccfda840861905b8c70bba5ec094e02825598bb9d4ca3936857a04"}, + {file = "librt-0.8.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e4af413908f77294605e28cfd98063f54b2c790561383971d2f52d113d9c363"}, + {file = "librt-0.8.1-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:5212a5bd7fae98dae95710032902edcd2ec4dc994e883294f75c857b83f9aba0"}, + {file = "librt-0.8.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e692aa2d1d604e6ca12d35e51fdc36f4cda6345e28e36374579f7ef3611b3012"}, + {file = "librt-0.8.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4be2a5c926b9770c9e08e717f05737a269b9d0ebc5d2f0060f0fe3fe9ce47acb"}, + {file = "librt-0.8.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:fd1a720332ea335ceb544cf0a03f81df92abd4bb887679fd1e460976b0e6214b"}, + {file = "librt-0.8.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:93c2af9e01e0ef80d95ae3c720be101227edae5f2fe7e3dc63d8857fadfc5a1d"}, + {file = "librt-0.8.1-cp313-cp313-win32.whl", hash = "sha256:086a32dbb71336627e78cc1d6ee305a68d038ef7d4c39aaff41ae8c9aa46e91a"}, + {file = "librt-0.8.1-cp313-cp313-win_amd64.whl", hash = "sha256:e11769a1dbda4da7b00a76cfffa67aa47cfa66921d2724539eee4b9ede780b79"}, + {file = "librt-0.8.1-cp313-cp313-win_arm64.whl", hash = "sha256:924817ab3141aca17893386ee13261f1d100d1ef410d70afe4389f2359fea4f0"}, + {file = "librt-0.8.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:6cfa7fe54fd4d1f47130017351a959fe5804bda7a0bc7e07a2cdbc3fdd28d34f"}, + {file = "librt-0.8.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:228c2409c079f8c11fb2e5d7b277077f694cb93443eb760e00b3b83cb8b3176c"}, + {file = "librt-0.8.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:7aae78ab5e3206181780e56912d1b9bb9f90a7249ce12f0e8bf531d0462dd0fc"}, + {file = "librt-0.8.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:172d57ec04346b047ca6af181e1ea4858086c80bdf455f61994c4aa6fc3f866c"}, + {file = "librt-0.8.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6b1977c4ea97ce5eb7755a78fae68d87e4102e4aaf54985e8b56806849cc06a3"}, + {file = "librt-0.8.1-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:10c42e1f6fd06733ef65ae7bebce2872bcafd8d6e6b0a08fe0a05a23b044fb14"}, + {file = "librt-0.8.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4c8dfa264b9193c4ee19113c985c95f876fae5e51f731494fc4e0cf594990ba7"}, + {file = "librt-0.8.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:01170b6729a438f0dedc4a26ed342e3dc4f02d1000b4b19f980e1877f0c297e6"}, + {file = "librt-0.8.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:7b02679a0d783bdae30d443025b94465d8c3dc512f32f5b5031f93f57ac32071"}, + {file = "librt-0.8.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:190b109bb69592a3401fe1ffdea41a2e73370ace2ffdc4a0e8e2b39cdea81b78"}, + {file = "librt-0.8.1-cp314-cp314-win32.whl", hash = "sha256:e70a57ecf89a0f64c24e37f38d3fe217a58169d2fe6ed6d70554964042474023"}, + {file = "librt-0.8.1-cp314-cp314-win_amd64.whl", hash = "sha256:7e2f3edca35664499fbb36e4770650c4bd4a08abc1f4458eab9df4ec56389730"}, + {file = "librt-0.8.1-cp314-cp314-win_arm64.whl", hash = "sha256:0d2f82168e55ddefd27c01c654ce52379c0750ddc31ee86b4b266bcf4d65f2a3"}, + {file = "librt-0.8.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2c74a2da57a094bd48d03fa5d196da83d2815678385d2978657499063709abe1"}, + {file = "librt-0.8.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a355d99c4c0d8e5b770313b8b247411ed40949ca44e33e46a4789b9293a907ee"}, + {file = "librt-0.8.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:2eb345e8b33fb748227409c9f1233d4df354d6e54091f0e8fc53acdb2ffedeb7"}, + {file = "librt-0.8.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9be2f15e53ce4e83cc08adc29b26fb5978db62ef2a366fbdf716c8a6c8901040"}, + {file = "librt-0.8.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:785ae29c1f5c6e7c2cde2c7c0e148147f4503da3abc5d44d482068da5322fd9e"}, + {file = "librt-0.8.1-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1d3a7da44baf692f0c6aeb5b2a09c5e6fc7a703bca9ffa337ddd2e2da53f7732"}, + {file = "librt-0.8.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5fc48998000cbc39ec0d5311312dda93ecf92b39aaf184c5e817d5d440b29624"}, + {file = "librt-0.8.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e96baa6820280077a78244b2e06e416480ed859bbd8e5d641cf5742919d8beb4"}, + {file = "librt-0.8.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:31362dbfe297b23590530007062c32c6f6176f6099646bb2c95ab1b00a57c382"}, + {file = "librt-0.8.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cc3656283d11540ab0ea01978378e73e10002145117055e03722417aeab30994"}, + {file = "librt-0.8.1-cp314-cp314t-win32.whl", hash = "sha256:738f08021b3142c2918c03692608baed43bc51144c29e35807682f8070ee2a3a"}, + {file = "librt-0.8.1-cp314-cp314t-win_amd64.whl", hash = "sha256:89815a22daf9c51884fb5dbe4f1ef65ee6a146e0b6a8df05f753e2e4a9359bf4"}, + {file = "librt-0.8.1-cp314-cp314t-win_arm64.whl", hash = "sha256:bf512a71a23504ed08103a13c941f763db13fb11177beb3d9244c98c29fb4a61"}, + {file = "librt-0.8.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3dff3d3ca8db20e783b1bc7de49c0a2ab0b8387f31236d6a026597d07fcd68ac"}, + {file = "librt-0.8.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:08eec3a1fc435f0d09c87b6bf1ec798986a3544f446b864e4099633a56fcd9ed"}, + {file = "librt-0.8.1-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e3f0a41487fd5fad7e760b9e8a90e251e27c2816fbc2cff36a22a0e6bcbbd9dd"}, + {file = "librt-0.8.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bacdb58d9939d95cc557b4dbaa86527c9db2ac1ed76a18bc8d26f6dc8647d851"}, + {file = "librt-0.8.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b6d7ab1f01aa753188605b09a51faa44a3327400b00b8cce424c71910fc0a128"}, + {file = "librt-0.8.1-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4998009e7cb9e896569f4be7004f09d0ed70d386fa99d42b6d363f6d200501ac"}, + {file = "librt-0.8.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2cc68eeeef5e906839c7bb0815748b5b0a974ec27125beefc0f942715785b551"}, + {file = "librt-0.8.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0bf69d79a23f4f40b8673a947a234baeeb133b5078b483b7297c5916539cf5d5"}, + {file = "librt-0.8.1-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:22b46eabd76c1986ee7d231b0765ad387d7673bbd996aa0d0d054b38ac65d8f6"}, + {file = "librt-0.8.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:237796479f4d0637d6b9cbcb926ff424a97735e68ade6facf402df4ec93375ed"}, + {file = "librt-0.8.1-cp39-cp39-win32.whl", hash = "sha256:4beb04b8c66c6ae62f8c1e0b2f097c1ebad9295c929a8d5286c05eae7c2fc7dc"}, + {file = "librt-0.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:64548cde61b692dc0dc379f4b5f59a2f582c2ebe7890d09c1ae3b9e66fa015b7"}, + {file = "librt-0.8.1.tar.gz", hash = "sha256:be46a14693955b3bd96014ccbdb8339ee8c9346fbe11c1b78901b55125f14c73"}, +] + +[[package]] +name = "license-expression" +version = "30.4.4" +description = "license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic." +optional = false +python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c" }, - { file = "ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81" }, + {file = "license_expression-30.4.4-py3-none-any.whl", hash = "sha256:421788fdcadb41f049d2dc934ce666626265aeccefddd25e162a26f23bcbf8a4"}, + {file = "license_expression-30.4.4.tar.gz", hash = "sha256:73448f0aacd8d0808895bdc4b2c8e01a8d67646e4188f887375398c761f340fd"}, ] [package.dependencies] -pygments = "*" +"boolean.py" = ">=4.0" + +[package.extras] +dev = ["Sphinx (>=5.0.2)", "doc8 (>=0.11.2)", "pytest (>=7.0.1)", "pytest-xdist (>=2)", "ruff", "sphinx-autobuild", "sphinx-copybutton", "sphinx-reredirects (>=0.1.2)", "sphinx-rtd-dark-mode (>=1.3.0)", "sphinx-rtd-theme (>=1.0.0)", "sphinxcontrib-apidoc (>=0.4.0)", "twine"] [[package]] -name = "ipywidgets" -version = "8.1.7" -description = "Jupyter interactive widgets" +name = "locket" +version = "1.0.0" +description = "File-based locks for Python on Linux and Windows" optional = false -python-versions = ">=3.7" -groups = ["dev"] +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["main"] files = [ - { file = "ipywidgets-8.1.7-py3-none-any.whl", hash = "sha256:764f2602d25471c213919b8a1997df04bef869251db4ca8efba1b76b1bd9f7bb" }, - { file = "ipywidgets-8.1.7.tar.gz", hash = "sha256:15f1ac050b9ccbefd45dccfbb2ef6bed0029d8278682d569d71b8dd96bee0376" }, + {file = "locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3"}, + {file = "locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632"}, ] -[package.dependencies] -comm = ">=0.1.3" -ipython = ">=6.1.0" -jupyterlab_widgets = ">=3.0.15,<3.1.0" -traitlets = ">=4.3.1" -widgetsnbextension = ">=4.0.14,<4.1.0" - -[package.extras] -test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] - [[package]] -name = "isoduration" -version = "20.11.0" -description = "Operations with ISO 8601 durations" +name = "markdown" +version = "3.10.2" +description = "Python implementation of John Gruber's Markdown." optional = false -python-versions = ">=3.7" +python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, - {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, -] - -[package.dependencies] -arrow = ">=0.15.0" - -[[package]] -name = "isort" -version = "7.0.0" -description = "A Python utility / library to sort Python imports." -optional = false -python-versions = ">=3.10.0" -groups = ["dev"] -files = [ - { file = "isort-7.0.0-py3-none-any.whl", hash = "sha256:1bcabac8bc3c36c7fb7b98a76c8abb18e0f841a3ba81decac7691008592499c1" }, - { file = "isort-7.0.0.tar.gz", hash = "sha256:5513527951aadb3ac4292a41a16cbc50dd1642432f5e8c20057d414bdafb4187" }, + {file = "markdown-3.10.2-py3-none-any.whl", hash = "sha256:e91464b71ae3ee7afd3017d9f358ef0baf158fd9a298db92f1d4761133824c36"}, + {file = "markdown-3.10.2.tar.gz", hash = "sha256:994d51325d25ad8aa7ce4ebaec003febcce822c3f8c911e3b17c52f7f589f950"}, ] [package.extras] -colors = ["colorama"] -plugins = ["setuptools"] - -[[package]] -name = "jedi" -version = "0.19.2" -description = "An autocompletion tool for Python that can be used for text editors." -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - { file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9" }, - { file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0" }, -] - -[package.dependencies] -parso = ">=0.8.4,<0.9.0" - -[package.extras] -docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] -qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["Django", "attrs", "colorama", "docopt", "pytest (<9.0.0)"] - -[[package]] -name = "jinja2" -version = "3.1.6" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - { file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67" }, - { file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d" }, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "json5" -version = "0.12.0" -description = "A Python implementation of the JSON5 data format." -optional = false -python-versions = ">=3.8.0" -groups = ["dev"] -files = [ - { file = "json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db" }, - { file = "json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a" }, -] - -[package.extras] -dev = ["build (==1.2.2.post1)", "coverage (==7.5.4) ; python_version < \"3.9\"", "coverage (==7.8.0) ; python_version >= \"3.9\"", "mypy (==1.14.1) ; python_version < \"3.9\"", "mypy (==1.15.0) ; python_version >= \"3.9\"", "pip (==25.0.1)", "pylint (==3.2.7) ; python_version < \"3.9\"", "pylint (==3.3.6) ; python_version >= \"3.9\"", "ruff (==0.11.2)", "twine (==6.1.0)", "uv (==0.6.11)"] - -[[package]] -name = "jsonpointer" -version = "3.0.0" -description = "Identify specific nodes in a JSON document (RFC 6901)" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, - {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, -] - -[[package]] -name = "jsonschema" -version = "4.25.0" -description = "An implementation of JSON Schema validation for Python" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "jsonschema-4.25.0-py3-none-any.whl", hash = "sha256:24c2e8da302de79c8b9382fee3e76b355e44d2a4364bb207159ce10b517bd716" }, - { file = "jsonschema-4.25.0.tar.gz", hash = "sha256:e63acf5c11762c0e6672ffb61482bdf57f0876684d8d249c0fe2d730d48bc55f" }, -] - -[package.dependencies] -attrs = ">=22.2.0" -fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""} -jsonschema-specifications = ">=2023.03.6" -referencing = ">=0.28.4" -rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} -rfc3987-syntax = { version = ">=1.1.0", optional = true, markers = "extra == \"format-nongpl\"" } -rpds-py = ">=0.7.1" -uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -webcolors = {version = ">=24.6.0", optional = true, markers = "extra == \"format-nongpl\""} - -[package.extras] -format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] -format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "rfc3987-syntax (>=1.1.0)", "uri-template", "webcolors (>=24.6.0)"] - -[[package]] -name = "jsonschema-specifications" -version = "2025.4.1" -description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af" }, - { file = "jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608" }, -] - -[package.dependencies] -referencing = ">=0.31.0" - -[[package]] -name = "jupyter" -version = "1.1.1" -description = "Jupyter metapackage. Install all the Jupyter components in one go." -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83"}, - {file = "jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a"}, -] - -[package.dependencies] -ipykernel = "*" -ipywidgets = "*" -jupyter-console = "*" -jupyterlab = "*" -nbconvert = "*" -notebook = "*" - -[[package]] -name = "jupyter-client" -version = "8.6.3" -description = "Jupyter protocol implementation and client libraries" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, - {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, -] - -[package.dependencies] -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -python-dateutil = ">=2.8.2" -pyzmq = ">=23.0" -tornado = ">=6.2" -traitlets = ">=5.3" - -[package.extras] -docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko ; sys_platform == \"win32\"", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] - -[[package]] -name = "jupyter-console" -version = "6.6.3" -description = "Jupyter terminal console" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"}, - {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"}, -] - -[package.dependencies] -ipykernel = ">=6.14" -ipython = "*" -jupyter-client = ">=7.0.0" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -prompt-toolkit = ">=3.0.30" -pygments = "*" -pyzmq = ">=17" -traitlets = ">=5.4" - -[package.extras] -test = ["flaky", "pexpect", "pytest"] - -[[package]] -name = "jupyter-core" -version = "5.8.1" -description = "Jupyter core package. A base package on which Jupyter projects rely." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0" }, - { file = "jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941" }, -] - -[package.dependencies] -platformdirs = ">=2.5" -pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} -traitlets = ">=5.3" - -[package.extras] -docs = ["intersphinx-registry", "myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-spelling", "traitlets"] -test = ["ipykernel", "pre-commit", "pytest (<9)", "pytest-cov", "pytest-timeout"] - -[[package]] -name = "jupyter-events" -version = "0.12.0" -description = "Jupyter Event System library" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb" }, - { file = "jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b" }, -] - -[package.dependencies] -jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]} -packaging = "*" -python-json-logger = ">=2.0.4" -pyyaml = ">=5.3" -referencing = "*" -rfc3339-validator = "*" -rfc3986-validator = ">=0.1.1" -traitlets = ">=5.3" - -[package.extras] -cli = ["click", "rich"] -docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme (>=0.16)", "sphinx (>=8)", "sphinxcontrib-spelling"] -test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"] - -[[package]] -name = "jupyter-lsp" -version = "2.2.6" -description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "jupyter_lsp-2.2.6-py3-none-any.whl", hash = "sha256:283783752bf0b459ee7fa88effa72104d87dd343b82d5c06cf113ef755b15b6d" }, - { file = "jupyter_lsp-2.2.6.tar.gz", hash = "sha256:0566bd9bb04fd9e6774a937ed01522b555ba78be37bebef787c8ab22de4c0361" }, -] - -[package.dependencies] -jupyter_server = ">=1.1.2" - -[[package]] -name = "jupyter-server" -version = "2.16.0" -description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e" }, - { file = "jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6" }, -] - -[package.dependencies] -anyio = ">=3.1.0" -argon2-cffi = ">=21.1" -jinja2 = ">=3.0.3" -jupyter-client = ">=7.4.4" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -jupyter-events = ">=0.11.0" -jupyter-server-terminals = ">=0.4.4" -nbconvert = ">=6.4.4" -nbformat = ">=5.3.0" -overrides = ">=5.0" -packaging = ">=22.0" -prometheus-client = ">=0.9" -pywinpty = {version = ">=2.0.1", markers = "os_name == \"nt\""} -pyzmq = ">=24" -send2trash = ">=1.8.2" -terminado = ">=0.8.3" -tornado = ">=6.2.0" -traitlets = ">=5.6.0" -websocket-client = ">=1.7" - -[package.extras] -docs = ["ipykernel", "jinja2", "jupyter-client", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"] -test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0,<9)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.7)", "pytest-timeout", "requests"] - -[[package]] -name = "jupyter-server-terminals" -version = "0.5.3" -description = "A Jupyter Server Extension Providing Terminals." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, - {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, -] - -[package.dependencies] -pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""} -terminado = ">=0.8.3" - -[package.extras] -docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"] -test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"] - -[[package]] -name = "jupyterlab" -version = "4.4.4" -description = "JupyterLab computational environment" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "jupyterlab-4.4.4-py3-none-any.whl", hash = "sha256:711611e4f59851152eb93316c3547c3ec6291f16bb455f1f4fa380d25637e0dd" }, - { file = "jupyterlab-4.4.4.tar.gz", hash = "sha256:163fee1ef702e0a057f75d2eed3ed1da8a986d59eb002cbeb6f0c2779e6cd153" }, -] - -[package.dependencies] -async-lru = ">=1.0.0" -httpx = ">=0.25.0" -ipykernel = ">=6.5.0" -jinja2 = ">=3.0.3" -jupyter-core = "*" -jupyter-lsp = ">=2.0.0" -jupyter-server = ">=2.4.0,<3" -jupyterlab-server = ">=2.27.1,<3" -notebook-shim = ">=0.2" -packaging = "*" -setuptools = ">=41.1.0" -tornado = ">=6.2.0" -traitlets = "*" - -[package.extras] -dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.11.4)"] -docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<8.2.0)", "sphinx-copybutton"] -docs-screenshots = ["altair (==5.5.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.5)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.3.post1)", "matplotlib (==3.10.0)", "nbconvert (>=7.0.0)", "pandas (==2.2.3)", "scipy (==1.15.1)", "vega-datasets (==0.9.0)"] -test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] -upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)", "pyyaml-include (<3.0)", "tomli-w (<2.0)"] - -[[package]] -name = "jupyterlab-pygments" -version = "0.3.0" -description = "Pygments theme using JupyterLab CSS variables" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, - {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, -] - -[[package]] -name = "jupyterlab-server" -version = "2.27.3" -description = "A set of server components for JupyterLab and JupyterLab like applications." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4"}, - {file = "jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4"}, -] - -[package.dependencies] -babel = ">=2.10" -jinja2 = ">=3.0.3" -json5 = ">=0.9.0" -jsonschema = ">=4.18.0" -jupyter-server = ">=1.21,<3" -packaging = ">=21.3" -requests = ">=2.31" - -[package.extras] -docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"] -openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"] -test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0,<8)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] - -[[package]] -name = "jupyterlab-widgets" -version = "3.0.15" -description = "Jupyter interactive widgets for JupyterLab" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - { file = "jupyterlab_widgets-3.0.15-py3-none-any.whl", hash = "sha256:d59023d7d7ef71400d51e6fee9a88867f6e65e10a4201605d2d7f3e8f012a31c" }, - { file = "jupyterlab_widgets-3.0.15.tar.gz", hash = "sha256:2920888a0c2922351a9202817957a68c07d99673504d6cd37345299e971bb08b" }, -] - -[[package]] -name = "lark" -version = "1.2.2" -description = "a modern parsing library" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "lark-1.2.2-py3-none-any.whl", hash = "sha256:c2276486b02f0f1b90be155f2c8ba4a8e194d42775786db622faccd652d8e80c" }, - { file = "lark-1.2.2.tar.gz", hash = "sha256:ca807d0162cd16cef15a8feecb862d7319e7a09bdb13aef927968e45040fed80" }, -] - -[package.extras] -atomic-cache = ["atomicwrites"] -interegular = ["interegular (>=0.3.1,<0.4.0)"] -nearley = ["js2py"] -regex = ["regex"] - -[[package]] -name = "locket" -version = "1.0.0" -description = "File-based locks for Python on Linux and Windows" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -groups = ["main"] -files = [ - {file = "locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3"}, - {file = "locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632"}, -] - -[[package]] -name = "markdown" -version = "3.8.2" -description = "Python implementation of John Gruber's Markdown." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24" }, - { file = "markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45" }, -] - -[package.extras] -docs = ["mdx_gh_links (>=0.2)", "mkdocs (>=1.6)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] +docs = ["mdx_gh_links (>=0.2)", "mkdocs (>=1.6)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python] (>=0.28.3)"] testing = ["coverage", "pyyaml"] [[package]] name = "markupsafe" -version = "3.0.2" +version = "3.0.3" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, - {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, -] - -[[package]] -name = "matplotlib-inline" -version = "0.1.7" -description = "Inline Matplotlib backend for Jupyter" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, - {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, + {file = "markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559"}, + {file = "markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419"}, + {file = "markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695"}, + {file = "markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591"}, + {file = "markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c"}, + {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f"}, + {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6"}, + {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1"}, + {file = "markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa"}, + {file = "markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8"}, + {file = "markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1"}, + {file = "markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad"}, + {file = "markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a"}, + {file = "markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50"}, + {file = "markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf"}, + {file = "markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f"}, + {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a"}, + {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115"}, + {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a"}, + {file = "markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19"}, + {file = "markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01"}, + {file = "markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c"}, + {file = "markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e"}, + {file = "markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce"}, + {file = "markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d"}, + {file = "markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d"}, + {file = "markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a"}, + {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b"}, + {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f"}, + {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b"}, + {file = "markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d"}, + {file = "markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c"}, + {file = "markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f"}, + {file = "markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795"}, + {file = "markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219"}, + {file = "markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6"}, + {file = "markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676"}, + {file = "markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9"}, + {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1"}, + {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc"}, + {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12"}, + {file = "markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed"}, + {file = "markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5"}, + {file = "markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485"}, + {file = "markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73"}, + {file = "markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37"}, + {file = "markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19"}, + {file = "markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025"}, + {file = "markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6"}, + {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f"}, + {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb"}, + {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009"}, + {file = "markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354"}, + {file = "markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218"}, + {file = "markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287"}, + {file = "markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe"}, + {file = "markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026"}, + {file = "markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737"}, + {file = "markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97"}, + {file = "markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d"}, + {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda"}, + {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf"}, + {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe"}, + {file = "markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9"}, + {file = "markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581"}, + {file = "markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4"}, + {file = "markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab"}, + {file = "markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175"}, + {file = "markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634"}, + {file = "markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50"}, + {file = "markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e"}, + {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5"}, + {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523"}, + {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc"}, + {file = "markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d"}, + {file = "markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9"}, + {file = "markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa"}, + {file = "markupsafe-3.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15d939a21d546304880945ca1ecb8a039db6b4dc49b2c5a400387cdae6a62e26"}, + {file = "markupsafe-3.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f71a396b3bf33ecaa1626c255855702aca4d3d9fea5e051b41ac59a9c1c41edc"}, + {file = "markupsafe-3.0.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f4b68347f8c5eab4a13419215bdfd7f8c9b19f2b25520968adfad23eb0ce60c"}, + {file = "markupsafe-3.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8fc20152abba6b83724d7ff268c249fa196d8259ff481f3b1476383f8f24e42"}, + {file = "markupsafe-3.0.3-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:949b8d66bc381ee8b007cd945914c721d9aba8e27f71959d750a46f7c282b20b"}, + {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:3537e01efc9d4dccdf77221fb1cb3b8e1a38d5428920e0657ce299b20324d758"}, + {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:591ae9f2a647529ca990bc681daebdd52c8791ff06c2bfa05b65163e28102ef2"}, + {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a320721ab5a1aba0a233739394eb907f8c8da5c98c9181d1161e77a0c8e36f2d"}, + {file = "markupsafe-3.0.3-cp39-cp39-win32.whl", hash = "sha256:df2449253ef108a379b8b5d6b43f4b1a8e81a061d6537becd5582fba5f9196d7"}, + {file = "markupsafe-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:7c3fb7d25180895632e5d3148dbdc29ea38ccb7fd210aa27acbd1201a1902c6e"}, + {file = "markupsafe-3.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:38664109c14ffc9e7437e86b4dceb442b0096dfe3541d7864d9cbe1da4cf36c8"}, + {file = "markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698"}, ] -[package.dependencies] -traitlets = "*" - [[package]] name = "mergedeep" version = "1.3.4" @@ -1829,20 +1004,8 @@ optional = false python-versions = ">=3.6" groups = ["dev"] files = [ - { file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307" }, - { file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8" }, -] - -[[package]] -name = "mistune" -version = "3.1.3" -description = "A sane and fast Markdown parser with useful plugins and renderers" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9" }, - { file = "mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0" }, + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, ] [[package]] @@ -1853,13 +1016,13 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e" }, - { file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2" }, + {file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e"}, + {file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2"}, ] [package.dependencies] click = ">=7.0" -colorama = { version = ">=0.4", markers = "platform_system == \"Windows\"" } +colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} ghp-import = ">=1.0" jinja2 = ">=2.11.1" markdown = ">=3.3.6" @@ -1878,14 +1041,14 @@ min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4) ; platform [[package]] name = "mkdocs-autorefs" -version = "1.4.2" +version = "1.4.4" description = "Automatically link across pages in MkDocs." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13" }, - { file = "mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749" }, + {file = "mkdocs_autorefs-1.4.4-py3-none-any.whl", hash = "sha256:834ef5408d827071ad1bc69e0f39704fa34c7fc05bc8e1c72b227dfdc5c76089"}, + {file = "mkdocs_autorefs-1.4.4.tar.gz", hash = "sha256:d54a284f27a7346b9c38f1f852177940c222da508e66edc816a0fa55fc6da197"}, ] [package.dependencies] @@ -1901,8 +1064,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134" }, - { file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c" }, + {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, + {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, ] [package.dependencies] @@ -1912,33 +1075,33 @@ pyyaml = ">=5.1" [[package]] name = "mkdocs-material" -version = "9.6.15" +version = "9.7.2" description = "Documentation that simply works" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "mkdocs_material-9.6.15-py3-none-any.whl", hash = "sha256:ac969c94d4fe5eb7c924b6d2f43d7db41159ea91553d18a9afc4780c34f2717a" }, - { file = "mkdocs_material-9.6.15.tar.gz", hash = "sha256:64adf8fa8dba1a17905b6aee1894a5aafd966d4aeb44a11088519b0f5ca4f1b5" }, + {file = "mkdocs_material-9.7.2-py3-none-any.whl", hash = "sha256:9bf6f53452d4a4d527eac3cef3f92b7b6fc4931c55d57766a7d87890d47e1b92"}, + {file = "mkdocs_material-9.7.2.tar.gz", hash = "sha256:6776256552290b9b7a7aa002780e25b1e04bc9c3a8516b6b153e82e16b8384bd"}, ] [package.dependencies] -babel = ">=2.10,<3.0" -backrefs = ">=5.7.post1,<6.0" -colorama = ">=0.4,<1.0" -jinja2 = ">=3.1,<4.0" -markdown = ">=3.2,<4.0" -mkdocs = ">=1.6,<2.0" -mkdocs-material-extensions = ">=1.3,<2.0" -paginate = ">=0.5,<1.0" -pygments = ">=2.16,<3.0" -pymdown-extensions = ">=10.2,<11.0" -requests = ">=2.26,<3.0" +babel = ">=2.10" +backrefs = ">=5.7.post1" +colorama = ">=0.4" +jinja2 = ">=3.1" +markdown = ">=3.2" +mkdocs = ">=1.6" +mkdocs-material-extensions = ">=1.3" +paginate = ">=0.5" +pygments = ">=2.16" +pymdown-extensions = ">=10.2" +requests = ">=2.30" [package.extras] -git = ["mkdocs-git-committers-plugin-2 (>=1.1,<3)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] -imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] -recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] +git = ["mkdocs-git-committers-plugin-2 (>=1.1)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4)"] +imaging = ["cairosvg (>=2.6)", "pillow (>=10.2)"] +recommended = ["mkdocs-minify-plugin (>=0.7)", "mkdocs-redirects (>=1.2)", "mkdocs-rss-plugin (>=1.6)"] [[package]] name = "mkdocs-material-extensions" @@ -1948,29 +1111,28 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31" }, - { file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443" }, + {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, + {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, ] [[package]] name = "mkdocstrings" -version = "0.29.1" +version = "1.0.3" description = "Automatic documentation from sources, for MkDocs." optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ - { file = "mkdocstrings-0.29.1-py3-none-any.whl", hash = "sha256:37a9736134934eea89cbd055a513d40a020d87dfcae9e3052c2a6b8cd4af09b6" }, - { file = "mkdocstrings-0.29.1.tar.gz", hash = "sha256:8722f8f8c5cd75da56671e0a0c1bbed1df9946c0cef74794d6141b34011abd42" }, + {file = "mkdocstrings-1.0.3-py3-none-any.whl", hash = "sha256:0d66d18430c2201dc7fe85134277382baaa15e6b30979f3f3bdbabd6dbdb6046"}, + {file = "mkdocstrings-1.0.3.tar.gz", hash = "sha256:ab670f55040722b49bb45865b2e93b824450fb4aef638b00d7acb493a9020434"}, ] [package.dependencies] -Jinja2 = ">=2.11.1" +Jinja2 = ">=3.1" Markdown = ">=3.6" MarkupSafe = ">=1.1" mkdocs = ">=1.6" mkdocs-autorefs = ">=1.4" -mkdocstrings-python = { version = ">=1.16.2", optional = true, markers = "extra == \"python\"" } pymdown-extensions = ">=6.3" [package.extras] @@ -1978,66 +1140,56 @@ crystal = ["mkdocstrings-crystal (>=0.3.4)"] python = ["mkdocstrings-python (>=1.16.2)"] python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] -[[package]] -name = "mkdocstrings-python" -version = "1.16.12" -description = "A Python handler for mkdocstrings." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "mkdocstrings_python-1.16.12-py3-none-any.whl", hash = "sha256:22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374" }, - { file = "mkdocstrings_python-1.16.12.tar.gz", hash = "sha256:9b9eaa066e0024342d433e332a41095c4e429937024945fea511afe58f63175d" }, -] - -[package.dependencies] -griffe = ">=1.6.2" -mkdocs-autorefs = ">=1.4" -mkdocstrings = ">=0.28.3" - [[package]] name = "mypy" -version = "1.17.0" +version = "1.19.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "mypy-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8e08de6138043108b3b18f09d3f817a4783912e48828ab397ecf183135d84d6" }, - { file = "mypy-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce4a17920ec144647d448fc43725b5873548b1aae6c603225626747ededf582d" }, - { file = "mypy-1.17.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ff25d151cc057fdddb1cb1881ef36e9c41fa2a5e78d8dd71bee6e4dcd2bc05b" }, - { file = "mypy-1.17.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93468cf29aa9a132bceb103bd8475f78cacde2b1b9a94fd978d50d4bdf616c9a" }, - { file = "mypy-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:98189382b310f16343151f65dd7e6867386d3e35f7878c45cfa11383d175d91f" }, - { file = "mypy-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:c004135a300ab06a045c1c0d8e3f10215e71d7b4f5bb9a42ab80236364429937" }, - { file = "mypy-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9d4fe5c72fd262d9c2c91c1117d16aac555e05f5beb2bae6a755274c6eec42be" }, - { file = "mypy-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96b196e5c16f41b4f7736840e8455958e832871990c7ba26bf58175e357ed61" }, - { file = "mypy-1.17.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:73a0ff2dd10337ceb521c080d4147755ee302dcde6e1a913babd59473904615f" }, - { file = "mypy-1.17.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:24cfcc1179c4447854e9e406d3af0f77736d631ec87d31c6281ecd5025df625d" }, - { file = "mypy-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3c56f180ff6430e6373db7a1d569317675b0a451caf5fef6ce4ab365f5f2f6c3" }, - { file = "mypy-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:eafaf8b9252734400f9b77df98b4eee3d2eecab16104680d51341c75702cad70" }, - { file = "mypy-1.17.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f986f1cab8dbec39ba6e0eaa42d4d3ac6686516a5d3dccd64be095db05ebc6bb" }, - { file = "mypy-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:51e455a54d199dd6e931cd7ea987d061c2afbaf0960f7f66deef47c90d1b304d" }, - { file = "mypy-1.17.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3204d773bab5ff4ebbd1f8efa11b498027cd57017c003ae970f310e5b96be8d8" }, - { file = "mypy-1.17.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1051df7ec0886fa246a530ae917c473491e9a0ba6938cfd0ec2abc1076495c3e" }, - { file = "mypy-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f773c6d14dcc108a5b141b4456b0871df638eb411a89cd1c0c001fc4a9d08fc8" }, - { file = "mypy-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:1619a485fd0e9c959b943c7b519ed26b712de3002d7de43154a489a2d0fd817d" }, - { file = "mypy-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c41aa59211e49d717d92b3bb1238c06d387c9325d3122085113c79118bebb06" }, - { file = "mypy-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e69db1fb65b3114f98c753e3930a00514f5b68794ba80590eb02090d54a5d4a" }, - { file = "mypy-1.17.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:03ba330b76710f83d6ac500053f7727270b6b8553b0423348ffb3af6f2f7b889" }, - { file = "mypy-1.17.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:037bc0f0b124ce46bfde955c647f3e395c6174476a968c0f22c95a8d2f589bba" }, - { file = "mypy-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c38876106cb6132259683632b287238858bd58de267d80defb6f418e9ee50658" }, - { file = "mypy-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:d30ba01c0f151998f367506fab31c2ac4527e6a7b2690107c7a7f9e3cb419a9c" }, - { file = "mypy-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:63e751f1b5ab51d6f3d219fe3a2fe4523eaa387d854ad06906c63883fde5b1ab" }, - { file = "mypy-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7fb09d05e0f1c329a36dcd30e27564a3555717cde87301fae4fb542402ddfad" }, - { file = "mypy-1.17.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b72c34ce05ac3a1361ae2ebb50757fb6e3624032d91488d93544e9f82db0ed6c" }, - { file = "mypy-1.17.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:434ad499ad8dde8b2f6391ddfa982f41cb07ccda8e3c67781b1bfd4e5f9450a8" }, - { file = "mypy-1.17.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f105f61a5eff52e137fd73bee32958b2add9d9f0a856f17314018646af838e97" }, - { file = "mypy-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:ba06254a5a22729853209550d80f94e28690d5530c661f9416a68ac097b13fc4" }, - { file = "mypy-1.17.0-py3-none-any.whl", hash = "sha256:15d9d0018237ab058e5de3d8fce61b6fa72cc59cc78fd91f1b474bce12abf496" }, - { file = "mypy-1.17.0.tar.gz", hash = "sha256:e5d7ccc08ba089c06e2f5629c660388ef1fee708444f1dee0b9203fa031dee03" }, -] - -[package.dependencies] + {file = "mypy-1.19.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f05aa3d375b385734388e844bc01733bd33c644ab48e9684faa54e5389775ec"}, + {file = "mypy-1.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:022ea7279374af1a5d78dfcab853fe6a536eebfda4b59deab53cd21f6cd9f00b"}, + {file = "mypy-1.19.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee4c11e460685c3e0c64a4c5de82ae143622410950d6be863303a1c4ba0e36d6"}, + {file = "mypy-1.19.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de759aafbae8763283b2ee5869c7255391fbc4de3ff171f8f030b5ec48381b74"}, + {file = "mypy-1.19.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ab43590f9cd5108f41aacf9fca31841142c786827a74ab7cc8a2eacb634e09a1"}, + {file = "mypy-1.19.1-cp310-cp310-win_amd64.whl", hash = "sha256:2899753e2f61e571b3971747e302d5f420c3fd09650e1951e99f823bc3089dac"}, + {file = "mypy-1.19.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d8dfc6ab58ca7dda47d9237349157500468e404b17213d44fc1cb77bce532288"}, + {file = "mypy-1.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e3f276d8493c3c97930e354b2595a44a21348b320d859fb4a2b9f66da9ed27ab"}, + {file = "mypy-1.19.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2abb24cf3f17864770d18d673c85235ba52456b36a06b6afc1e07c1fdcd3d0e6"}, + {file = "mypy-1.19.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a009ffa5a621762d0c926a078c2d639104becab69e79538a494bcccb62cc0331"}, + {file = "mypy-1.19.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f7cee03c9a2e2ee26ec07479f38ea9c884e301d42c6d43a19d20fb014e3ba925"}, + {file = "mypy-1.19.1-cp311-cp311-win_amd64.whl", hash = "sha256:4b84a7a18f41e167f7995200a1d07a4a6810e89d29859df936f1c3923d263042"}, + {file = "mypy-1.19.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a8174a03289288c1f6c46d55cef02379b478bfbc8e358e02047487cad44c6ca1"}, + {file = "mypy-1.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffcebe56eb09ff0c0885e750036a095e23793ba6c2e894e7e63f6d89ad51f22e"}, + {file = "mypy-1.19.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b64d987153888790bcdb03a6473d321820597ab8dd9243b27a92153c4fa50fd2"}, + {file = "mypy-1.19.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c35d298c2c4bba75feb2195655dfea8124d855dfd7343bf8b8c055421eaf0cf8"}, + {file = "mypy-1.19.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:34c81968774648ab5ac09c29a375fdede03ba253f8f8287847bd480782f73a6a"}, + {file = "mypy-1.19.1-cp312-cp312-win_amd64.whl", hash = "sha256:b10e7c2cd7870ba4ad9b2d8a6102eb5ffc1f16ca35e3de6bfa390c1113029d13"}, + {file = "mypy-1.19.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e3157c7594ff2ef1634ee058aafc56a82db665c9438fd41b390f3bde1ab12250"}, + {file = "mypy-1.19.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdb12f69bcc02700c2b47e070238f42cb87f18c0bc1fc4cdb4fb2bc5fd7a3b8b"}, + {file = "mypy-1.19.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f859fb09d9583a985be9a493d5cfc5515b56b08f7447759a0c5deaf68d80506e"}, + {file = "mypy-1.19.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c9a6538e0415310aad77cb94004ca6482330fece18036b5f360b62c45814c4ef"}, + {file = "mypy-1.19.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:da4869fc5e7f62a88f3fe0b5c919d1d9f7ea3cef92d3689de2823fd27e40aa75"}, + {file = "mypy-1.19.1-cp313-cp313-win_amd64.whl", hash = "sha256:016f2246209095e8eda7538944daa1d60e1e8134d98983b9fc1e92c1fc0cb8dd"}, + {file = "mypy-1.19.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:06e6170bd5836770e8104c8fdd58e5e725cfeb309f0a6c681a811f557e97eac1"}, + {file = "mypy-1.19.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:804bd67b8054a85447c8954215a906d6eff9cabeabe493fb6334b24f4bfff718"}, + {file = "mypy-1.19.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:21761006a7f497cb0d4de3d8ef4ca70532256688b0523eee02baf9eec895e27b"}, + {file = "mypy-1.19.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:28902ee51f12e0f19e1e16fbe2f8f06b6637f482c459dd393efddd0ec7f82045"}, + {file = "mypy-1.19.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:481daf36a4c443332e2ae9c137dfee878fcea781a2e3f895d54bd3002a900957"}, + {file = "mypy-1.19.1-cp314-cp314-win_amd64.whl", hash = "sha256:8bb5c6f6d043655e055be9b542aa5f3bdd30e4f3589163e85f93f3640060509f"}, + {file = "mypy-1.19.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7bcfc336a03a1aaa26dfce9fff3e287a3ba99872a157561cbfcebe67c13308e3"}, + {file = "mypy-1.19.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b7951a701c07ea584c4fe327834b92a30825514c868b1f69c30445093fdd9d5a"}, + {file = "mypy-1.19.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b13cfdd6c87fc3efb69ea4ec18ef79c74c3f98b4e5498ca9b85ab3b2c2329a67"}, + {file = "mypy-1.19.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f28f99c824ecebcdaa2e55d82953e38ff60ee5ec938476796636b86afa3956e"}, + {file = "mypy-1.19.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c608937067d2fc5a4dd1a5ce92fd9e1398691b8c5d012d66e1ddd430e9244376"}, + {file = "mypy-1.19.1-cp39-cp39-win_amd64.whl", hash = "sha256:409088884802d511ee52ca067707b90c883426bd95514e8cfda8281dc2effe24"}, + {file = "mypy-1.19.1-py3-none-any.whl", hash = "sha256:f1235f5ea01b7db5468d53ece6aaddf1ad0b88d9e7462b86ef96fe04995d7247"}, + {file = "mypy-1.19.1.tar.gz", hash = "sha256:19d88bb05303fe63f71dd2c6270daca27cb9401c4ca8255fe50d1d920e0eb9ba"}, +] + +[package.dependencies] +librt = {version = ">=0.6.2", markers = "platform_python_implementation != \"PyPy\""} mypy_extensions = ">=1.0.0" pathspec = ">=0.9.0" typing_extensions = ">=4.6.0" @@ -2057,352 +1209,203 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505" }, - { file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558" }, -] - -[[package]] -name = "nbclient" -version = "0.10.2" -description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." -optional = false -python-versions = ">=3.9.0" -groups = ["dev"] -files = [ - { file = "nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d" }, - { file = "nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193" }, -] - -[package.dependencies] -jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -nbformat = ">=5.1" -traitlets = ">=5.4" - -[package.extras] -dev = ["pre-commit"] -docs = ["autodoc-traits", "flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "mock", "moto", "myst-parser", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling", "testpath", "xmltodict"] -test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] - -[[package]] -name = "nbconvert" -version = "7.16.6" -description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b" }, - { file = "nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582" }, -] - -[package.dependencies] -beautifulsoup4 = "*" -bleach = { version = "!=5.0.0", extras = ["css"] } -defusedxml = "*" -jinja2 = ">=3.0" -jupyter-core = ">=4.7" -jupyterlab-pygments = "*" -markupsafe = ">=2.0" -mistune = ">=2.0.3,<4" -nbclient = ">=0.5.0" -nbformat = ">=5.7" -packaging = "*" -pandocfilters = ">=1.4.1" -pygments = ">=2.4.1" -traitlets = ">=5.1" - -[package.extras] -all = ["flaky", "ipykernel", "ipython", "ipywidgets (>=7.5)", "myst-parser", "nbsphinx (>=0.2.12)", "playwright", "pydata-sphinx-theme", "pyqtwebengine (>=5.15)", "pytest (>=7)", "sphinx (==5.0.2)", "sphinxcontrib-spelling", "tornado (>=6.1)"] -docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"] -qtpdf = ["pyqtwebengine (>=5.15)"] -qtpng = ["pyqtwebengine (>=5.15)"] -serve = ["tornado (>=6.1)"] -test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest (>=7)"] -webpdf = ["playwright"] - -[[package]] -name = "nbformat" -version = "5.10.4" -description = "The Jupyter Notebook format" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, - {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, -] - -[package.dependencies] -fastjsonschema = ">=2.15" -jsonschema = ">=2.6" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -traitlets = ">=5.1" - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["pep440", "pre-commit", "pytest", "testpath"] - -[[package]] -name = "nest-asyncio" -version = "1.6.0" -description = "Patch asyncio to allow nested event loops" -optional = false -python-versions = ">=3.5" -groups = ["dev"] -files = [ - {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, - {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, + {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, + {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, ] [[package]] name = "netcdf4" -version = "1.7.2" +version = "1.7.4" description = "Provides an object-oriented python interface to the netCDF version 4 library" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" groups = ["main"] files = [ - {file = "netCDF4-1.7.2-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:5e9b485e3bd9294d25ff7dc9addefce42b3d23c1ee7e3627605277d159819392"}, - {file = "netCDF4-1.7.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:118b476fd00d7e3ab9aa7771186d547da645ae3b49c0c7bdab866793ebf22f07"}, - {file = "netCDF4-1.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abe5b1837ff209185ecfe50bd71884c866b3ee69691051833e410e57f177e059"}, - {file = "netCDF4-1.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28021c7e886e5bccf9a8ce504c032d1d7f98d86f67495fb7cf2c9564eba04510"}, - {file = "netCDF4-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:7460b638e41c8ce4179d082a81cb6456f0ce083d4d959f4d9e87a95cd86f64cb"}, - {file = "netCDF4-1.7.2-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:09d61c2ddb6011afb51e77ea0f25cd0bdc28887fb426ffbbc661d920f20c9749"}, - {file = "netCDF4-1.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:fd2a16dbddeb8fa7cf48c37bfc1967290332f2862bb82f984eec2007bb120aeb"}, - {file = "netCDF4-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f54f5d39ffbcf1726a1e6fd90cb5fa74277ecea739a5fa0f424636d71beafe24"}, - {file = "netCDF4-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:902aa50d70f49d002d896212a171d344c38f7b8ca520837c56c922ac1535c4a3"}, - {file = "netCDF4-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3291f9ad0c98c49a4dd16aefad1a9abd3a1b884171db6c81bdcee94671cfabe3"}, - {file = "netCDF4-1.7.2-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e73e3baa0b74afc414e53ff5095748fdbec7fb346eda351e567c23f2f0d247f1"}, - {file = "netCDF4-1.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a51da09258b31776f474c1d47e484fc7214914cdc59edf4cee789ba632184591"}, - {file = "netCDF4-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb95b11804fe051897d1f2044b05d82a1847bc2549631cdd2f655dde7de77a9c"}, - {file = "netCDF4-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d8a848373723f41ef662590b4f5e1832227501c9fd4513e8ad8da58c269977"}, - {file = "netCDF4-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:568ea369e00b581302d77fc5fd0b8f78e520c7e08d0b5af5219ba51f3f1cd694"}, - {file = "netCDF4-1.7.2-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:205a5f1de3ddb993c7c97fb204a923a22408cc2e5facf08d75a8eb89b3e7e1a8"}, - {file = "netCDF4-1.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:96653fc75057df196010818367c63ba6d7e9af603df0a7fe43fcdad3fe0e9e56"}, - {file = "netCDF4-1.7.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30d20e56b9ba2c48884eb89c91b63e6c0612b4927881707e34402719153ef17f"}, - {file = "netCDF4-1.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d6bfd38ba0bde04d56f06c1554714a2ea9dab75811c89450dc3ec57a9d36b80"}, - {file = "netCDF4-1.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:5c5fbee6134ee1246c397e1508e5297d825aa19221fdf3fa8dc9727ad824d7a5"}, - {file = "netCDF4-1.7.2-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:6bf402c2c7c063474576e5cf89af877d0b0cd097d9316d5bc4fcb22b62f12567"}, - {file = "netCDF4-1.7.2-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:5bdf3b34e6fd4210e34fdc5d1a669a22c4863d96f8a20a3928366acae7b3cbbb"}, - {file = "netCDF4-1.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:657774404b9f78a5e4d26506ac9bfe106e4a37238282a70803cc7ce679c5a6cc"}, - {file = "netCDF4-1.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e896d92f01fbf365e33e2513d5a8c4cfe16ff406aae9b6034e5ba1538c8c7a8"}, - {file = "netCDF4-1.7.2-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:eb87c08d1700fe67c301898cf5ba3a3e1f8f2fbb417fcd0e2ac784846b60b058"}, - {file = "netCDF4-1.7.2-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:59b403032774c723ee749d7f2135be311bad7d00d1db284bebfab58b9d5cdb92"}, - {file = "netCDF4-1.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:572f71459ef4b30e8554dcc4e1e6f55de515acc82a50968b48fe622244a64548"}, - {file = "netCDF4-1.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f77e72281acc5f331f82271e5f7f014d46f5ca9bcaa5aafe3e46d66cee21320"}, - {file = "netCDF4-1.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:d0fa7a9674fae8ae4877e813173c3ff7a6beee166b8730bdc847f517b282ed31"}, - {file = "netcdf4-1.7.2.tar.gz", hash = "sha256:a4c6375540b19989896136943abb6d44850ff6f1fa7d3f063253b1ad3f8b7fce"}, + {file = "netcdf4-1.7.4-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:b1c1a7ea3678db76bf33d14f7e202385d634db38c5e70d8cf4895971023eebb9"}, + {file = "netcdf4-1.7.4-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:d3f9497873454207f9480847d02b1b19a4bc81ad6e9166e1c17d4e2f8f3555d1"}, + {file = "netcdf4-1.7.4-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c8e18294af803e80f8c0339f791901942e268c334c099bbd5f7ea8325a49801a"}, + {file = "netcdf4-1.7.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0b06c0b93fd0ecc1ec67a582f3ba98b7db9da1fa843c8f83fd75990e3701771e"}, + {file = "netcdf4-1.7.4-cp310-cp310-win_amd64.whl", hash = "sha256:889ba77f084504aebaba9c6f9a88ac213431fef0e897f887cd35aef351ff7740"}, + {file = "netcdf4-1.7.4-cp311-abi3-macosx_13_0_x86_64.whl", hash = "sha256:dec70e809cc65b04ebe95113ee9c85ba46a51c3a37c058d2b2b0cadc4d3052d8"}, + {file = "netcdf4-1.7.4-cp311-abi3-macosx_14_0_arm64.whl", hash = "sha256:75cf59100f0775bc4d6b9d4aca7cbabd12e2b8cf3b9a4fb16d810b92743a315a"}, + {file = "netcdf4-1.7.4-cp311-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ddfc7e9d261125c74708119440c85ea288b5fee41db676d2ba1ce9be11f96932"}, + {file = "netcdf4-1.7.4-cp311-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a72c9f58767779ec14cb7451c3b56bdd8fdc027a792fac2062b14e090c5617f3"}, + {file = "netcdf4-1.7.4-cp311-abi3-win_amd64.whl", hash = "sha256:9476e1f23161ae5159cd1548c50c8a37922e77d76583e247133f256ef7b825fc"}, + {file = "netcdf4-1.7.4-cp311-abi3-win_arm64.whl", hash = "sha256:876ad9d58f09c98741c066c726164c45a098a58fb90e5fac9e74de4bb8a793fd"}, + {file = "netcdf4-1.7.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56688c03444fffe0d0c7512cb45245e650389cd841c955b30e4552fa681c4cd9"}, + {file = "netcdf4-1.7.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7ecf471ba8a6ddb2200121949bedfa0095db228822f38227d5da680694a38358"}, + {file = "netcdf4-1.7.4-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a5841de0735e8e4875b367c668e81d334287858d64dd9f3e3e2261e808c84922"}, + {file = "netcdf4-1.7.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:86fac03a8c5b250d57866e7d98918a64742e4b0de1681c5c86bac5726bab8aee"}, + {file = "netcdf4-1.7.4-cp314-cp314t-macosx_13_0_x86_64.whl", hash = "sha256:ad083d260301b5add74b1669c75ab0df03bdf986decfcc092cb45eec2615b5f1"}, + {file = "netcdf4-1.7.4-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:7f22014092cc9da3f056b0368e2e38c42afd5725c87ad4843eb2f467e16dd4f6"}, + {file = "netcdf4-1.7.4-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:224a15434c165a5e0225e5831f591edf62533044b1ce62fdfee815195bbd077d"}, + {file = "netcdf4-1.7.4-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:31a2318305de6831a18df25ad0df9f03b6d68666af0356d4f6057d66c02ffeb6"}, + {file = "netcdf4-1.7.4-cp314-cp314t-win_amd64.whl", hash = "sha256:6c4a0aa9446c3a616ef3be015b629dc6173643f8b09546de26a4e40e272cd1ed"}, + {file = "netcdf4-1.7.4-cp314-cp314t-win_arm64.whl", hash = "sha256:034220887d48da032cb2db5958f69759dbb04eb33e279ec6390571d4aea734fe"}, + {file = "netcdf4-1.7.4.tar.gz", hash = "sha256:cdbfdc92d6f4d7192ca8506c9b3d4c1d9892969ff28d8e8e1fc97ca08bf12164"}, ] [package.dependencies] certifi = "*" cftime = "*" -numpy = "*" +numpy = [ + {version = ">=2.3.0", markers = "platform_system == \"Windows\" and platform_machine == \"ARM64\""}, + {version = ">=1.21.2", markers = "platform_system != \"Windows\" or platform_machine != \"ARM64\""}, +] [package.extras] -tests = ["Cython", "packaging", "pytest"] +parallel = ["mpi4py"] +tests = ["Cython", "packaging", "pytest", "typing-extensions (>=4.15.0)"] [[package]] name = "nodeenv" -version = "1.9.1" +version = "1.10.0" description = "Node.js virtual environment builder" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" groups = ["dev"] files = [ - {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, - {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, -] - -[[package]] -name = "notebook" -version = "7.4.4" -description = "Jupyter Notebook - A web-based notebook environment for interactive computing" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "notebook-7.4.4-py3-none-any.whl", hash = "sha256:32840f7f777b6bff79bb101159336e9b332bdbfba1495b8739e34d1d65cbc1c0" }, - { file = "notebook-7.4.4.tar.gz", hash = "sha256:392fd501e266f2fb3466c6fcd3331163a2184968cb5c5accf90292e01dfe528c" }, -] - -[package.dependencies] -jupyter-server = ">=2.4.0,<3" -jupyterlab = ">=4.4.4,<4.5" -jupyterlab-server = ">=2.27.1,<3" -notebook-shim = ">=0.2,<0.3" -tornado = ">=6.2.0" - -[package.extras] -dev = ["hatch", "pre-commit"] -docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["importlib-resources (>=5.0) ; python_version < \"3.10\"", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] - -[[package]] -name = "notebook-shim" -version = "0.2.4" -description = "A shim layer for notebook traits and config" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, - {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, + {file = "nodeenv-1.10.0-py2.py3-none-any.whl", hash = "sha256:5bb13e3eed2923615535339b3c620e76779af4cb4c6a90deccc9e36b274d3827"}, + {file = "nodeenv-1.10.0.tar.gz", hash = "sha256:996c191ad80897d076bdfba80a41994c2b47c68e224c542b48feba42ba00f8bb"}, ] -[package.dependencies] -jupyter-server = ">=1.8,<3" - -[package.extras] -test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"] - [[package]] name = "numcodecs" -version = "0.16.1" +version = "0.16.5" description = "A Python package providing buffer compression and transformation codecs for use in data storage and communication applications." optional = false python-versions = ">=3.11" groups = ["main"] files = [ - { file = "numcodecs-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5348a25aefbce37ea7c00c3363d36176155233c95597e5905a932e9620df960d" }, - { file = "numcodecs-0.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2058b0a985470809c720d2457758b61e6c9495a49d5f20dfac9b5ebabd8848eb" }, - { file = "numcodecs-0.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b216b6d7bc207b85d41fddbc25b09fd00d76e265454db6e3fb09d5da0216397" }, - { file = "numcodecs-0.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2308d56c4f84a5b942f8668b4adedd3d9cdd6a22e6e6e20768ec356c77050f38" }, - { file = "numcodecs-0.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:acd8d68b4b815e62cb91e6064a53dac51ee99849350784ee16dd52cdbb4bc70f" }, - { file = "numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122" }, - { file = "numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458" }, - { file = "numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40" }, - { file = "numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609" }, - { file = "numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df" }, - { file = "numcodecs-0.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2ad8ee940315f59188accfc3f2d39726a4ca0d76b49bf8d0018e121f01c49028" }, - { file = "numcodecs-0.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:179ca7bf3525a0f7379df7767d87dd495253de44597cb7e511198b28b09da633" }, - { file = "numcodecs-0.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e2babbb50bf348ae982818d5560af330eab0dcd925fb0e49509785ad57d11db" }, - { file = "numcodecs-0.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4b29d8d3284b72bfad4fb83d672a17f497ae86ee1ef8087bac7222b620d3d91" }, - { file = "numcodecs-0.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:06489635f43e1a959aea73cb830d78cf3adb07ac5f34daccb92091e4d9ac6b07" }, - { file = "numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1" }, + {file = "numcodecs-0.16.5-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:78382dcea50622f2ef1e6e7a71dbe7f861d8fe376b27b7c297c26907304fef1e"}, + {file = "numcodecs-0.16.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2d04a19cb57a3c519b4127ac377cca6471aee1990d7c18f5b1e3a4fe1306689"}, + {file = "numcodecs-0.16.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c043af648eb280cd61785c99c22ff5c3c3460f906eb51a8511327c4f5111b283"}, + {file = "numcodecs-0.16.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c398919ef2eb0e56b8e97456f622640bfd3deed06de3acc976989cbcb22628a3"}, + {file = "numcodecs-0.16.5-cp311-cp311-win_amd64.whl", hash = "sha256:3820860ed302d4d84a1c66e70981ff959d5eb712555be4e7d8ced49888594773"}, + {file = "numcodecs-0.16.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:24e675dc8d1550cd976a99479b87d872cb142632c75cc402fea04c08c4898523"}, + {file = "numcodecs-0.16.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:94ddfa4341d1a3ab99989d13b01b5134abb687d3dab2ead54b450aefe4ad5bd6"}, + {file = "numcodecs-0.16.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b554ab9ecf69de7ca2b6b5e8bc696bd9747559cb4dd5127bd08d7a28bec59c3a"}, + {file = "numcodecs-0.16.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ad1a379a45bd3491deab8ae6548313946744f868c21d5340116977ea3be5b1d6"}, + {file = "numcodecs-0.16.5-cp312-cp312-win_amd64.whl", hash = "sha256:845a9857886ffe4a3172ba1c537ae5bcc01e65068c31cf1fce1a844bd1da050f"}, + {file = "numcodecs-0.16.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25be3a516ab677dad890760d357cfe081a371d9c0a2e9a204562318ac5969de3"}, + {file = "numcodecs-0.16.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0107e839ef75b854e969cb577e140b1aadb9847893937636582d23a2a4c6ce50"}, + {file = "numcodecs-0.16.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:015a7c859ecc2a06e2a548f64008c0ec3aaecabc26456c2c62f4278d8fc20597"}, + {file = "numcodecs-0.16.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:84230b4b9dad2392f2a84242bd6e3e659ac137b5a1ce3571d6965fca673e0903"}, + {file = "numcodecs-0.16.5-cp313-cp313-win_amd64.whl", hash = "sha256:5088145502ad1ebf677ec47d00eb6f0fd600658217db3e0c070c321c85d6cf3d"}, + {file = "numcodecs-0.16.5-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b05647b8b769e6bc8016e9fd4843c823ce5c9f2337c089fb5c9c4da05e5275de"}, + {file = "numcodecs-0.16.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3832bd1b5af8bb3e413076b7d93318c8e7d7b68935006b9fa36ca057d1725a8f"}, + {file = "numcodecs-0.16.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49f7b7d24f103187f53135bed28bb9f0ed6b2e14c604664726487bb6d7c882e1"}, + {file = "numcodecs-0.16.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aec9736d81b70f337d89c4070ee3ffeff113f386fd789492fa152d26a15043e4"}, + {file = "numcodecs-0.16.5-cp314-cp314-win_amd64.whl", hash = "sha256:b16a14303800e9fb88abc39463ab4706c037647ac17e49e297faa5f7d7dbbf1d"}, + {file = "numcodecs-0.16.5.tar.gz", hash = "sha256:0d0fb60852f84c0bd9543cc4d2ab9eefd37fc8efcc410acd4777e62a1d300318"}, ] [package.dependencies] -crc32c = { version = ">=2.7", optional = true, markers = "extra == \"crc32c\"" } numpy = ">=1.24" typing_extensions = "*" [package.extras] crc32c = ["crc32c (>=2.7)"] docs = ["numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-issues"] +google-crc32c = ["google-crc32c (>=1.5)"] msgpack = ["msgpack"] pcodec = ["pcodec (>=0.3,<0.4)"] -test = ["coverage", "pytest", "pytest-cov"] -test-extras = ["importlib_metadata"] +test = ["coverage", "pytest", "pytest-cov", "pyzstd"] +test-extras = ["crc32c", "importlib_metadata"] zfpy = ["zfpy (>=1.0.0)"] [[package]] name = "numpy" -version = "2.3.3" +version = "2.4.2" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.11" -groups = ["main"] -files = [ - { file = "numpy-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ffc4f5caba7dfcbe944ed674b7eef683c7e94874046454bb79ed7ee0236f59d" }, - { file = "numpy-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7e946c7170858a0295f79a60214424caac2ffdb0063d4d79cb681f9aa0aa569" }, - { file = "numpy-2.3.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:cd4260f64bc794c3390a63bf0728220dd1a68170c169088a1e0dfa2fde1be12f" }, - { file = "numpy-2.3.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:f0ddb4b96a87b6728df9362135e764eac3cfa674499943ebc44ce96c478ab125" }, - { file = "numpy-2.3.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:afd07d377f478344ec6ca2b8d4ca08ae8bd44706763d1efb56397de606393f48" }, - { file = "numpy-2.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc92a5dedcc53857249ca51ef29f5e5f2f8c513e22cfb90faeb20343b8c6f7a6" }, - { file = "numpy-2.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7af05ed4dc19f308e1d9fc759f36f21921eb7bbfc82843eeec6b2a2863a0aefa" }, - { file = "numpy-2.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:433bf137e338677cebdd5beac0199ac84712ad9d630b74eceeb759eaa45ddf30" }, - { file = "numpy-2.3.3-cp311-cp311-win32.whl", hash = "sha256:eb63d443d7b4ffd1e873f8155260d7f58e7e4b095961b01c91062935c2491e57" }, - { file = "numpy-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:ec9d249840f6a565f58d8f913bccac2444235025bbb13e9a4681783572ee3caa" }, - { file = "numpy-2.3.3-cp311-cp311-win_arm64.whl", hash = "sha256:74c2a948d02f88c11a3c075d9733f1ae67d97c6bdb97f2bb542f980458b257e7" }, - { file = "numpy-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cfdd09f9c84a1a934cde1eec2267f0a43a7cd44b2cca4ff95b7c0d14d144b0bf" }, - { file = "numpy-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb32e3cf0f762aee47ad1ddc6672988f7f27045b0783c887190545baba73aa25" }, - { file = "numpy-2.3.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396b254daeb0a57b1fe0ecb5e3cff6fa79a380fa97c8f7781a6d08cd429418fe" }, - { file = "numpy-2.3.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:067e3d7159a5d8f8a0b46ee11148fc35ca9b21f61e3c49fbd0a027450e65a33b" }, - { file = "numpy-2.3.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c02d0629d25d426585fb2e45a66154081b9fa677bc92a881ff1d216bc9919a8" }, - { file = "numpy-2.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9192da52b9745f7f0766531dcfa978b7763916f158bb63bdb8a1eca0068ab20" }, - { file = "numpy-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cd7de500a5b66319db419dc3c345244404a164beae0d0937283b907d8152e6ea" }, - { file = "numpy-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:93d4962d8f82af58f0b2eb85daaf1b3ca23fe0a85d0be8f1f2b7bb46034e56d7" }, - { file = "numpy-2.3.3-cp312-cp312-win32.whl", hash = "sha256:5534ed6b92f9b7dca6c0a19d6df12d41c68b991cef051d108f6dbff3babc4ebf" }, - { file = "numpy-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:497d7cad08e7092dba36e3d296fe4c97708c93daf26643a1ae4b03f6294d30eb" }, - { file = "numpy-2.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:ca0309a18d4dfea6fc6262a66d06c26cfe4640c3926ceec90e57791a82b6eee5" }, - { file = "numpy-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f5415fb78995644253370985342cd03572ef8620b934da27d77377a2285955bf" }, - { file = "numpy-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d00de139a3324e26ed5b95870ce63be7ec7352171bc69a4cf1f157a48e3eb6b7" }, - { file = "numpy-2.3.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9dc13c6a5829610cc07422bc74d3ac083bd8323f14e2827d992f9e52e22cd6a6" }, - { file = "numpy-2.3.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:d79715d95f1894771eb4e60fb23f065663b2298f7d22945d66877aadf33d00c7" }, - { file = "numpy-2.3.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:952cfd0748514ea7c3afc729a0fc639e61655ce4c55ab9acfab14bda4f402b4c" }, - { file = "numpy-2.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5b83648633d46f77039c29078751f80da65aa64d5622a3cd62aaef9d835b6c93" }, - { file = "numpy-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b001bae8cea1c7dfdb2ae2b017ed0a6f2102d7a70059df1e338e307a4c78a8ae" }, - { file = "numpy-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8e9aced64054739037d42fb84c54dd38b81ee238816c948c8f3ed134665dcd86" }, - { file = "numpy-2.3.3-cp313-cp313-win32.whl", hash = "sha256:9591e1221db3f37751e6442850429b3aabf7026d3b05542d102944ca7f00c8a8" }, - { file = "numpy-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f0dadeb302887f07431910f67a14d57209ed91130be0adea2f9793f1a4f817cf" }, - { file = "numpy-2.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:3c7cf302ac6e0b76a64c4aecf1a09e51abd9b01fc7feee80f6c43e3ab1b1dbc5" }, - { file = "numpy-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:eda59e44957d272846bb407aad19f89dc6f58fecf3504bd144f4c5cf81a7eacc" }, - { file = "numpy-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:823d04112bc85ef5c4fda73ba24e6096c8f869931405a80aa8b0e604510a26bc" }, - { file = "numpy-2.3.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:40051003e03db4041aa325da2a0971ba41cf65714e65d296397cc0e32de6018b" }, - { file = "numpy-2.3.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ee9086235dd6ab7ae75aba5662f582a81ced49f0f1c6de4260a78d8f2d91a19" }, - { file = "numpy-2.3.3-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94fcaa68757c3e2e668ddadeaa86ab05499a70725811e582b6a9858dd472fb30" }, - { file = "numpy-2.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da1a74b90e7483d6ce5244053399a614b1d6b7bc30a60d2f570e5071f8959d3e" }, - { file = "numpy-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2990adf06d1ecee3b3dcbb4977dfab6e9f09807598d647f04d385d29e7a3c3d3" }, - { file = "numpy-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ed635ff692483b8e3f0fcaa8e7eb8a75ee71aa6d975388224f70821421800cea" }, - { file = "numpy-2.3.3-cp313-cp313t-win32.whl", hash = "sha256:a333b4ed33d8dc2b373cc955ca57babc00cd6f9009991d9edc5ddbc1bac36bcd" }, - { file = "numpy-2.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4384a169c4d8f97195980815d6fcad04933a7e1ab3b530921c3fef7a1c63426d" }, - { file = "numpy-2.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:75370986cc0bc66f4ce5110ad35aae6d182cc4ce6433c40ad151f53690130bf1" }, - { file = "numpy-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cd052f1fa6a78dee696b58a914b7229ecfa41f0a6d96dc663c1220a55e137593" }, - { file = "numpy-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:414a97499480067d305fcac9716c29cf4d0d76db6ebf0bf3cbce666677f12652" }, - { file = "numpy-2.3.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:50a5fe69f135f88a2be9b6ca0481a68a136f6febe1916e4920e12f1a34e708a7" }, - { file = "numpy-2.3.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:b912f2ed2b67a129e6a601e9d93d4fa37bef67e54cac442a2f588a54afe5c67a" }, - { file = "numpy-2.3.3-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9e318ee0596d76d4cb3d78535dc005fa60e5ea348cd131a51e99d0bdbe0b54fe" }, - { file = "numpy-2.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce020080e4a52426202bdb6f7691c65bb55e49f261f31a8f506c9f6bc7450421" }, - { file = "numpy-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e6687dc183aa55dae4a705b35f9c0f8cb178bcaa2f029b241ac5356221d5c021" }, - { file = "numpy-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d8f3b1080782469fdc1718c4ed1d22549b5fb12af0d57d35e992158a772a37cf" }, - { file = "numpy-2.3.3-cp314-cp314-win32.whl", hash = "sha256:cb248499b0bc3be66ebd6578b83e5acacf1d6cb2a77f2248ce0e40fbec5a76d0" }, - { file = "numpy-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:691808c2b26b0f002a032c73255d0bd89751425f379f7bcd22d140db593a96e8" }, - { file = "numpy-2.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:9ad12e976ca7b10f1774b03615a2a4bab8addce37ecc77394d8e986927dc0dfe" }, - { file = "numpy-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9cc48e09feb11e1db00b320e9d30a4151f7369afb96bd0e48d942d09da3a0d00" }, - { file = "numpy-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:901bf6123879b7f251d3631967fd574690734236075082078e0571977c6a8e6a" }, - { file = "numpy-2.3.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:7f025652034199c301049296b59fa7d52c7e625017cae4c75d8662e377bf487d" }, - { file = "numpy-2.3.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:533ca5f6d325c80b6007d4d7fb1984c303553534191024ec6a524a4c92a5935a" }, - { file = "numpy-2.3.3-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0edd58682a399824633b66885d699d7de982800053acf20be1eaa46d92009c54" }, - { file = "numpy-2.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:367ad5d8fbec5d9296d18478804a530f1191e24ab4d75ab408346ae88045d25e" }, - { file = "numpy-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8f6ac61a217437946a1fa48d24c47c91a0c4f725237871117dea264982128097" }, - { file = "numpy-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:179a42101b845a816d464b6fe9a845dfaf308fdfc7925387195570789bb2c970" }, - { file = "numpy-2.3.3-cp314-cp314t-win32.whl", hash = "sha256:1250c5d3d2562ec4174bce2e3a1523041595f9b651065e4a4473f5f48a6bc8a5" }, - { file = "numpy-2.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:b37a0b2e5935409daebe82c1e42274d30d9dd355852529eab91dab8dcca7419f" }, - { file = "numpy-2.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:78c9f6560dc7e6b3990e32df7ea1a50bbd0e2a111e05209963f5ddcab7073b0b" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1e02c7159791cd481e1e6d5ddd766b62a4d5acf8df4d4d1afe35ee9c5c33a41e" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:dca2d0fc80b3893ae72197b39f69d55a3cd8b17ea1b50aa4c62de82419936150" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:99683cbe0658f8271b333a1b1b4bb3173750ad59c0c61f5bbdc5b318918fffe3" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:d9d537a39cc9de668e5cd0e25affb17aec17b577c6b3ae8a3d866b479fbe88d0" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8596ba2f8af5f93b01d97563832686d20206d303024777f6dfc2e7c7c3f1850e" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1ec5615b05369925bd1125f27df33f3b6c8bc10d788d5999ecd8769a1fa04db" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:2e267c7da5bf7309670523896df97f93f6e469fb931161f483cd6882b3b1a5dc" }, - { file = "numpy-2.3.3.tar.gz", hash = "sha256:ddc7c39727ba62b80dfdbedf400d1c10ddfa8eefbd7ec8dcb118be8b56d31029" }, -] - -[[package]] -name = "overrides" -version = "7.7.0" -description = "A decorator to automatically detect mismatch when overriding a method." -optional = false -python-versions = ">=3.6" -groups = ["dev"] +groups = ["main", "dev"] files = [ - {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, - {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, + {file = "numpy-2.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e7e88598032542bd49af7c4747541422884219056c268823ef6e5e89851c8825"}, + {file = "numpy-2.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7edc794af8b36ca37ef5fcb5e0d128c7e0595c7b96a2318d1badb6fcd8ee86b1"}, + {file = "numpy-2.4.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:6e9f61981ace1360e42737e2bae58b27bf28a1b27e781721047d84bd754d32e7"}, + {file = "numpy-2.4.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:cb7bbb88aa74908950d979eeaa24dbdf1a865e3c7e45ff0121d8f70387b55f73"}, + {file = "numpy-2.4.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4f069069931240b3fc703f1e23df63443dbd6390614c8c44a87d96cd0ec81eb1"}, + {file = "numpy-2.4.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c02ef4401a506fb60b411467ad501e1429a3487abca4664871d9ae0b46c8ba32"}, + {file = "numpy-2.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2653de5c24910e49c2b106499803124dde62a5a1fe0eedeaecf4309a5f639390"}, + {file = "numpy-2.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1ae241bbfc6ae276f94a170b14785e561cb5e7f626b6688cf076af4110887413"}, + {file = "numpy-2.4.2-cp311-cp311-win32.whl", hash = "sha256:df1b10187212b198dd45fa943d8985a3c8cf854aed4923796e0e019e113a1bda"}, + {file = "numpy-2.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:b9c618d56a29c9cb1c4da979e9899be7578d2e0b3c24d52079c166324c9e8695"}, + {file = "numpy-2.4.2-cp311-cp311-win_arm64.whl", hash = "sha256:47c5a6ed21d9452b10227e5e8a0e1c22979811cad7dcc19d8e3e2fb8fa03f1a3"}, + {file = "numpy-2.4.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:21982668592194c609de53ba4933a7471880ccbaadcc52352694a59ecc860b3a"}, + {file = "numpy-2.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40397bda92382fcec844066efb11f13e1c9a3e2a8e8f318fb72ed8b6db9f60f1"}, + {file = "numpy-2.4.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:b3a24467af63c67829bfaa61eecf18d5432d4f11992688537be59ecd6ad32f5e"}, + {file = "numpy-2.4.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:805cc8de9fd6e7a22da5aed858e0ab16be5a4db6c873dde1d7451c541553aa27"}, + {file = "numpy-2.4.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d82351358ffbcdcd7b686b90742a9b86632d6c1c051016484fa0b326a0a1548"}, + {file = "numpy-2.4.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e35d3e0144137d9fdae62912e869136164534d64a169f86438bc9561b6ad49f"}, + {file = "numpy-2.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adb6ed2ad29b9e15321d167d152ee909ec73395901b70936f029c3bc6d7f4460"}, + {file = "numpy-2.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8906e71fd8afcb76580404e2a950caef2685df3d2a57fe82a86ac8d33cc007ba"}, + {file = "numpy-2.4.2-cp312-cp312-win32.whl", hash = "sha256:ec055f6dae239a6299cace477b479cca2fc125c5675482daf1dd886933a1076f"}, + {file = "numpy-2.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:209fae046e62d0ce6435fcfe3b1a10537e858249b3d9b05829e2a05218296a85"}, + {file = "numpy-2.4.2-cp312-cp312-win_arm64.whl", hash = "sha256:fbde1b0c6e81d56f5dccd95dd4a711d9b95df1ae4009a60887e56b27e8d903fa"}, + {file = "numpy-2.4.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25f2059807faea4b077a2b6837391b5d830864b3543627f381821c646f31a63c"}, + {file = "numpy-2.4.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bd3a7a9f5847d2fb8c2c6d1c862fa109c31a9abeca1a3c2bd5a64572955b2979"}, + {file = "numpy-2.4.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8e4549f8a3c6d13d55041925e912bfd834285ef1dd64d6bc7d542583355e2e98"}, + {file = "numpy-2.4.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:aea4f66ff44dfddf8c2cffd66ba6538c5ec67d389285292fe428cb2c738c8aef"}, + {file = "numpy-2.4.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3cd545784805de05aafe1dde61752ea49a359ccba9760c1e5d1c88a93bbf2b7"}, + {file = "numpy-2.4.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0d9b7c93578baafcbc5f0b83eaf17b79d345c6f36917ba0c67f45226911d499"}, + {file = "numpy-2.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f74f0f7779cc7ae07d1810aab8ac6b1464c3eafb9e283a40da7309d5e6e48fbb"}, + {file = "numpy-2.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c7ac672d699bf36275c035e16b65539931347d68b70667d28984c9fb34e07fa7"}, + {file = "numpy-2.4.2-cp313-cp313-win32.whl", hash = "sha256:8e9afaeb0beff068b4d9cd20d322ba0ee1cecfb0b08db145e4ab4dd44a6b5110"}, + {file = "numpy-2.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:7df2de1e4fba69a51c06c28f5a3de36731eb9639feb8e1cf7e4a7b0daf4cf622"}, + {file = "numpy-2.4.2-cp313-cp313-win_arm64.whl", hash = "sha256:0fece1d1f0a89c16b03442eae5c56dc0be0c7883b5d388e0c03f53019a4bfd71"}, + {file = "numpy-2.4.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5633c0da313330fd20c484c78cdd3f9b175b55e1a766c4a174230c6b70ad8262"}, + {file = "numpy-2.4.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d9f64d786b3b1dd742c946c42d15b07497ed14af1a1f3ce840cce27daa0ce913"}, + {file = "numpy-2.4.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:b21041e8cb6a1eb5312dd1d2f80a94d91efffb7a06b70597d44f1bd2dfc315ab"}, + {file = "numpy-2.4.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:00ab83c56211a1d7c07c25e3217ea6695e50a3e2f255053686b081dc0b091a82"}, + {file = "numpy-2.4.2-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fb882da679409066b4603579619341c6d6898fc83a8995199d5249f986e8e8f"}, + {file = "numpy-2.4.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:66cb9422236317f9d44b67b4d18f44efe6e9c7f8794ac0462978513359461554"}, + {file = "numpy-2.4.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:0f01dcf33e73d80bd8dc0f20a71303abbafa26a19e23f6b68d1aa9990af90257"}, + {file = "numpy-2.4.2-cp313-cp313t-win32.whl", hash = "sha256:52b913ec40ff7ae845687b0b34d8d93b60cb66dcee06996dd5c99f2fc9328657"}, + {file = "numpy-2.4.2-cp313-cp313t-win_amd64.whl", hash = "sha256:5eea80d908b2c1f91486eb95b3fb6fab187e569ec9752ab7d9333d2e66bf2d6b"}, + {file = "numpy-2.4.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fd49860271d52127d61197bb50b64f58454e9f578cb4b2c001a6de8b1f50b0b1"}, + {file = "numpy-2.4.2-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:444be170853f1f9d528428eceb55f12918e4fda5d8805480f36a002f1415e09b"}, + {file = "numpy-2.4.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d1240d50adff70c2a88217698ca844723068533f3f5c5fa6ee2e3220e3bdb000"}, + {file = "numpy-2.4.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:7cdde6de52fb6664b00b056341265441192d1291c130e99183ec0d4b110ff8b1"}, + {file = "numpy-2.4.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:cda077c2e5b780200b6b3e09d0b42205a3d1c68f30c6dceb90401c13bff8fe74"}, + {file = "numpy-2.4.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d30291931c915b2ab5717c2974bb95ee891a1cf22ebc16a8006bd59cd210d40a"}, + {file = "numpy-2.4.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bba37bc29d4d85761deed3954a1bc62be7cf462b9510b51d367b769a8c8df325"}, + {file = "numpy-2.4.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b2f0073ed0868db1dcd86e052d37279eef185b9c8db5bf61f30f46adac63c909"}, + {file = "numpy-2.4.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7f54844851cdb630ceb623dcec4db3240d1ac13d4990532446761baede94996a"}, + {file = "numpy-2.4.2-cp314-cp314-win32.whl", hash = "sha256:12e26134a0331d8dbd9351620f037ec470b7c75929cb8a1537f6bfe411152a1a"}, + {file = "numpy-2.4.2-cp314-cp314-win_amd64.whl", hash = "sha256:068cdb2d0d644cdb45670810894f6a0600797a69c05f1ac478e8d31670b8ee75"}, + {file = "numpy-2.4.2-cp314-cp314-win_arm64.whl", hash = "sha256:6ed0be1ee58eef41231a5c943d7d1375f093142702d5723ca2eb07db9b934b05"}, + {file = "numpy-2.4.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:98f16a80e917003a12c0580f97b5f875853ebc33e2eaa4bccfc8201ac6869308"}, + {file = "numpy-2.4.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:20abd069b9cda45874498b245c8015b18ace6de8546bf50dfa8cea1696ed06ef"}, + {file = "numpy-2.4.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:e98c97502435b53741540a5717a6749ac2ada901056c7db951d33e11c885cc7d"}, + {file = "numpy-2.4.2-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:da6cad4e82cb893db4b69105c604d805e0c3ce11501a55b5e9f9083b47d2ffe8"}, + {file = "numpy-2.4.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e4424677ce4b47fe73c8b5556d876571f7c6945d264201180db2dc34f676ab5"}, + {file = "numpy-2.4.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2b8f157c8a6f20eb657e240f8985cc135598b2b46985c5bccbde7616dc9c6b1e"}, + {file = "numpy-2.4.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5daf6f3914a733336dab21a05cdec343144600e964d2fcdabaac0c0269874b2a"}, + {file = "numpy-2.4.2-cp314-cp314t-win32.whl", hash = "sha256:8c50dd1fc8826f5b26a5ee4d77ca55d88a895f4e4819c7ecc2a9f5905047a443"}, + {file = "numpy-2.4.2-cp314-cp314t-win_amd64.whl", hash = "sha256:fcf92bee92742edd401ba41135185866f7026c502617f422eb432cfeca4fe236"}, + {file = "numpy-2.4.2-cp314-cp314t-win_arm64.whl", hash = "sha256:1f92f53998a17265194018d1cc321b2e96e900ca52d54c7c77837b71b9465181"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:89f7268c009bc492f506abd6f5265defa7cb3f7487dc21d357c3d290add45082"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6dee3bb76aa4009d5a912180bf5b2de012532998d094acee25d9cb8dee3e44a"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:cd2bd2bbed13e213d6b55dc1d035a4f91748a7d3edc9480c13898b0353708920"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:cf28c0c1d4c4bf00f509fa7eb02c58d7caf221b50b467bcb0d9bbf1584d5c821"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e04ae107ac591763a47398bb45b568fc38f02dbc4aa44c063f67a131f99346cb"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:602f65afdef699cda27ec0b9224ae5dc43e328f4c24c689deaf77133dbee74d0"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:be71bf1edb48ebbbf7f6337b5bfd2f895d1902f6335a5830b20141fc126ffba0"}, + {file = "numpy-2.4.2.tar.gz", hash = "sha256:659a6107e31a83c4e33f763942275fd278b21d095094044eb35569e86a21ddae"}, ] [[package]] name = "packaging" -version = "25.0" +version = "26.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ - { file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484" }, - { file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f" }, + {file = "packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529"}, + {file = "packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4"}, ] [[package]] @@ -2413,8 +1416,8 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - { file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591" }, - { file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945" }, + {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, + {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, ] [package.extras] @@ -2423,114 +1426,95 @@ lint = ["black"] [[package]] name = "pandas" -version = "2.3.1" +version = "3.0.1" description = "Powerful data structures for data analysis, time series, and statistics" optional = false -python-versions = ">=3.9" +python-versions = ">=3.11" groups = ["main"] files = [ - { file = "pandas-2.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:22c2e866f7209ebc3a8f08d75766566aae02bcc91d196935a1d9e59c7b990ac9" }, - { file = "pandas-2.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3583d348546201aff730c8c47e49bc159833f971c2899d6097bce68b9112a4f1" }, - { file = "pandas-2.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f951fbb702dacd390561e0ea45cdd8ecfa7fb56935eb3dd78e306c19104b9b0" }, - { file = "pandas-2.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd05b72ec02ebfb993569b4931b2e16fbb4d6ad6ce80224a3ee838387d83a191" }, - { file = "pandas-2.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1b916a627919a247d865aed068eb65eb91a344b13f5b57ab9f610b7716c92de1" }, - { file = "pandas-2.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fe67dc676818c186d5a3d5425250e40f179c2a89145df477dd82945eaea89e97" }, - { file = "pandas-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:2eb789ae0274672acbd3c575b0598d213345660120a257b47b5dafdc618aec83" }, - { file = "pandas-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2b0540963d83431f5ce8870ea02a7430adca100cec8a050f0811f8e31035541b" }, - { file = "pandas-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fe7317f578c6a153912bd2292f02e40c1d8f253e93c599e82620c7f69755c74f" }, - { file = "pandas-2.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6723a27ad7b244c0c79d8e7007092d7c8f0f11305770e2f4cd778b3ad5f9f85" }, - { file = "pandas-2.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3462c3735fe19f2638f2c3a40bd94ec2dc5ba13abbb032dd2fa1f540a075509d" }, - { file = "pandas-2.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:98bcc8b5bf7afed22cc753a28bc4d9e26e078e777066bc53fac7904ddef9a678" }, - { file = "pandas-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4d544806b485ddf29e52d75b1f559142514e60ef58a832f74fb38e48d757b299" }, - { file = "pandas-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:b3cd4273d3cb3707b6fffd217204c52ed92859533e31dc03b7c5008aa933aaab" }, - { file = "pandas-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:689968e841136f9e542020698ee1c4fbe9caa2ed2213ae2388dc7b81721510d3" }, - { file = "pandas-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:025e92411c16cbe5bb2a4abc99732a6b132f439b8aab23a59fa593eb00704232" }, - { file = "pandas-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b7ff55f31c4fcb3e316e8f7fa194566b286d6ac430afec0d461163312c5841e" }, - { file = "pandas-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dcb79bf373a47d2a40cf7232928eb7540155abbc460925c2c96d2d30b006eb4" }, - { file = "pandas-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:56a342b231e8862c96bdb6ab97170e203ce511f4d0429589c8ede1ee8ece48b8" }, - { file = "pandas-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ca7ed14832bce68baef331f4d7f294411bed8efd032f8109d690df45e00c4679" }, - { file = "pandas-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:ac942bfd0aca577bef61f2bc8da8147c4ef6879965ef883d8e8d5d2dc3e744b8" }, - { file = "pandas-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9026bd4a80108fac2239294a15ef9003c4ee191a0f64b90f170b40cfb7cf2d22" }, - { file = "pandas-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6de8547d4fdb12421e2d047a2c446c623ff4c11f47fddb6b9169eb98ffba485a" }, - { file = "pandas-2.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:782647ddc63c83133b2506912cc6b108140a38a37292102aaa19c81c83db2928" }, - { file = "pandas-2.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba6aff74075311fc88504b1db890187a3cd0f887a5b10f5525f8e2ef55bfdb9" }, - { file = "pandas-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e5635178b387bd2ba4ac040f82bc2ef6e6b500483975c4ebacd34bec945fda12" }, - { file = "pandas-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6f3bf5ec947526106399a9e1d26d40ee2b259c66422efdf4de63c848492d91bb" }, - { file = "pandas-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:1c78cf43c8fde236342a1cb2c34bcff89564a7bfed7e474ed2fffa6aed03a956" }, - { file = "pandas-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8dfc17328e8da77be3cf9f47509e5637ba8f137148ed0e9b5241e1baf526e20a" }, - { file = "pandas-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ec6c851509364c59a5344458ab935e6451b31b818be467eb24b0fe89bd05b6b9" }, - { file = "pandas-2.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:911580460fc4884d9b05254b38a6bfadddfcc6aaef856fb5859e7ca202e45275" }, - { file = "pandas-2.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f4d6feeba91744872a600e6edbbd5b033005b431d5ae8379abee5bcfa479fab" }, - { file = "pandas-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fe37e757f462d31a9cd7580236a82f353f5713a80e059a29753cf938c6775d96" }, - { file = "pandas-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5db9637dbc24b631ff3707269ae4559bce4b7fd75c1c4d7e13f40edc42df4444" }, - { file = "pandas-2.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4645f770f98d656f11c69e81aeb21c6fca076a44bed3dcbb9396a4311bc7f6d8" }, - { file = "pandas-2.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:342e59589cc454aaff7484d75b816a433350b3d7964d7847327edda4d532a2e3" }, - { file = "pandas-2.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d12f618d80379fde6af007f65f0c25bd3e40251dbd1636480dfffce2cf1e6da" }, - { file = "pandas-2.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd71c47a911da120d72ef173aeac0bf5241423f9bfea57320110a978457e069e" }, - { file = "pandas-2.3.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:09e3b1587f0f3b0913e21e8b32c3119174551deb4a4eba4a89bc7377947977e7" }, - { file = "pandas-2.3.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2323294c73ed50f612f67e2bf3ae45aea04dce5690778e08a09391897f35ff88" }, - { file = "pandas-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:b4b0de34dc8499c2db34000ef8baad684cfa4cbd836ecee05f323ebfba348c7d" }, - { file = "pandas-2.3.1.tar.gz", hash = "sha256:0a95b9ac964fe83ce317827f80304d37388ea77616b1425f0ae41c9d2d0d7bb2" }, + {file = "pandas-3.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:de09668c1bf3b925c07e5762291602f0d789eca1b3a781f99c1c78f6cac0e7ea"}, + {file = "pandas-3.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:24ba315ba3d6e5806063ac6eb717504e499ce30bd8c236d8693a5fd3f084c796"}, + {file = "pandas-3.0.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:406ce835c55bac912f2a0dcfaf27c06d73c6b04a5dde45f1fd3169ce31337389"}, + {file = "pandas-3.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:830994d7e1f31dd7e790045235605ab61cff6c94defc774547e8b7fdfbff3dc7"}, + {file = "pandas-3.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a64ce8b0f2de1d2efd2ae40b0abe7f8ae6b29fbfb3812098ed5a6f8e235ad9bf"}, + {file = "pandas-3.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9832c2c69da24b602c32e0c7b1b508a03949c18ba08d4d9f1c1033426685b447"}, + {file = "pandas-3.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:84f0904a69e7365f79a0c77d3cdfccbfb05bf87847e3a51a41e1426b0edb9c79"}, + {file = "pandas-3.0.1-cp311-cp311-win_arm64.whl", hash = "sha256:4a68773d5a778afb31d12e34f7dd4612ab90de8c6fb1d8ffe5d4a03b955082a1"}, + {file = "pandas-3.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:476f84f8c20c9f5bc47252b66b4bb25e1a9fc2fa98cead96744d8116cb85771d"}, + {file = "pandas-3.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0ab749dfba921edf641d4036c4c21c0b3ea70fea478165cb98a998fb2a261955"}, + {file = "pandas-3.0.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8e36891080b87823aff3640c78649b91b8ff6eea3c0d70aeabd72ea43ab069b"}, + {file = "pandas-3.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:532527a701281b9dd371e2f582ed9094f4c12dd9ffb82c0c54ee28d8ac9520c4"}, + {file = "pandas-3.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:356e5c055ed9b0da1580d465657bc7d00635af4fd47f30afb23025352ba764d1"}, + {file = "pandas-3.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9d810036895f9ad6345b8f2a338dd6998a74e8483847403582cab67745bff821"}, + {file = "pandas-3.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:536232a5fe26dd989bd633e7a0c450705fdc86a207fec7254a55e9a22950fe43"}, + {file = "pandas-3.0.1-cp312-cp312-win_arm64.whl", hash = "sha256:0f463ebfd8de7f326d38037c7363c6dacb857c5881ab8961fb387804d6daf2f7"}, + {file = "pandas-3.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5272627187b5d9c20e55d27caf5f2cd23e286aba25cadf73c8590e432e2b7262"}, + {file = "pandas-3.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:661e0f665932af88c7877f31da0dc743fe9c8f2524bdffe23d24fdcb67ef9d56"}, + {file = "pandas-3.0.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:75e6e292ff898679e47a2199172593d9f6107fd2dd3617c22c2946e97d5df46e"}, + {file = "pandas-3.0.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1ff8cf1d2896e34343197685f432450ec99a85ba8d90cce2030c5eee2ef98791"}, + {file = "pandas-3.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eca8b4510f6763f3d37359c2105df03a7a221a508f30e396a51d0713d462e68a"}, + {file = "pandas-3.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:06aff2ad6f0b94a17822cf8b83bbb563b090ed82ff4fe7712db2ce57cd50d9b8"}, + {file = "pandas-3.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:9fea306c783e28884c29057a1d9baa11a349bbf99538ec1da44c8476563d1b25"}, + {file = "pandas-3.0.1-cp313-cp313-win_arm64.whl", hash = "sha256:a8d37a43c52917427e897cb2e429f67a449327394396a81034a4449b99afda59"}, + {file = "pandas-3.0.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:d54855f04f8246ed7b6fc96b05d4871591143c46c0b6f4af874764ed0d2d6f06"}, + {file = "pandas-3.0.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4e1b677accee34a09e0dc2ce5624e4a58a1870ffe56fc021e9caf7f23cd7668f"}, + {file = "pandas-3.0.1-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a9cabbdcd03f1b6cd254d6dda8ae09b0252524be1592594c00b7895916cb1324"}, + {file = "pandas-3.0.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ae2ab1f166668b41e770650101e7090824fd34d17915dd9cd479f5c5e0065e9"}, + {file = "pandas-3.0.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6bf0603c2e30e2cafac32807b06435f28741135cb8697eae8b28c7d492fc7d76"}, + {file = "pandas-3.0.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6c426422973973cae1f4a23e51d4ae85974f44871b24844e4f7de752dd877098"}, + {file = "pandas-3.0.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b03f91ae8c10a85c1613102c7bef5229b5379f343030a3ccefeca8a33414cf35"}, + {file = "pandas-3.0.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:99d0f92ed92d3083d140bf6b97774f9f13863924cf3f52a70711f4e7588f9d0a"}, + {file = "pandas-3.0.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3b66857e983208654294bb6477b8a63dee26b37bdd0eb34d010556e91261784f"}, + {file = "pandas-3.0.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56cf59638bf24dc9bdf2154c81e248b3289f9a09a6d04e63608c159022352749"}, + {file = "pandas-3.0.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c1a9f55e0f46951874b863d1f3906dcb57df2d9be5c5847ba4dfb55b2c815249"}, + {file = "pandas-3.0.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1849f0bba9c8a2fb0f691d492b834cc8dadf617e29015c66e989448d58d011ee"}, + {file = "pandas-3.0.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c3d288439e11b5325b02ae6e9cc83e6805a62c40c5a6220bea9beb899c073b1c"}, + {file = "pandas-3.0.1-cp314-cp314-win_amd64.whl", hash = "sha256:93325b0fe372d192965f4cca88d97667f49557398bbf94abdda3bf1b591dbe66"}, + {file = "pandas-3.0.1-cp314-cp314-win_arm64.whl", hash = "sha256:97ca08674e3287c7148f4858b01136f8bdfe7202ad25ad04fec602dd1d29d132"}, + {file = "pandas-3.0.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:58eeb1b2e0fb322befcf2bbc9ba0af41e616abadb3d3414a6bc7167f6cbfce32"}, + {file = "pandas-3.0.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:cd9af1276b5ca9e298bd79a26bda32fa9cc87ed095b2a9a60978d2ca058eaf87"}, + {file = "pandas-3.0.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94f87a04984d6b63788327cd9f79dda62b7f9043909d2440ceccf709249ca988"}, + {file = "pandas-3.0.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85fe4c4df62e1e20f9db6ebfb88c844b092c22cd5324bdcf94bfa2fc1b391221"}, + {file = "pandas-3.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:331ca75a2f8672c365ae25c0b29e46f5ac0c6551fdace8eec4cd65e4fac271ff"}, + {file = "pandas-3.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:15860b1fdb1973fffade772fdb931ccf9b2f400a3f5665aef94a00445d7d8dd5"}, + {file = "pandas-3.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:44f1364411d5670efa692b146c748f4ed013df91ee91e9bec5677fb1fd58b937"}, + {file = "pandas-3.0.1-cp314-cp314t-win_arm64.whl", hash = "sha256:108dd1790337a494aa80e38def654ca3f0968cf4f362c85f44c15e471667102d"}, + {file = "pandas-3.0.1.tar.gz", hash = "sha256:4186a699674af418f655dbd420ed87f50d56b4cd6603784279d9eef6627823c8"}, +] + +[package.dependencies] +numpy = [ + {version = ">=1.26.0", markers = "python_version < \"3.14\""}, + {version = ">=2.3.3", markers = "python_version >= \"3.14\""}, ] - -[package.dependencies] -numpy = {version = ">=1.26.0", markers = "python_version >= \"3.12\""} python-dateutil = ">=2.8.2" -pytz = ">=2020.1" -tzdata = ">=2022.7" - -[package.extras] -all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] -aws = ["s3fs (>=2022.11.0)"] -clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] -compression = ["zstandard (>=0.19.0)"] -computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] -consortium-standard = ["dataframe-api-compat (>=0.1.7)"] -excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] -feather = ["pyarrow (>=10.0.1)"] -fss = ["fsspec (>=2022.11.0)"] -gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] -hdf5 = ["tables (>=3.8.0)"] -html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] -mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] -output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] -parquet = ["pyarrow (>=10.0.1)"] -performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] -plot = ["matplotlib (>=3.6.3)"] -postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] -pyarrow = ["pyarrow (>=10.0.1)"] -spss = ["pyreadstat (>=1.2.0)"] -sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] -test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] -xml = ["lxml (>=4.9.2)"] - -[[package]] -name = "pandocfilters" -version = "1.5.1" -description = "Utilities for writing pandoc filters in python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -groups = ["dev"] -files = [ - {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, - {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, -] - -[[package]] -name = "parso" -version = "0.8.4" -description = "A Python Parser" -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, - {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, -] - -[package.extras] -qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["docopt", "pytest"] +tzdata = {version = "*", markers = "sys_platform == \"win32\" or sys_platform == \"emscripten\""} + +[package.extras] +all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.36)", "adbc-driver-postgresql (>=1.2.0)", "adbc-driver-sqlite (>=1.2.0)", "beautifulsoup4 (>=4.12.3)", "bottleneck (>=1.4.2)", "fastparquet (>=2024.11.0)", "fsspec (>=2024.10.0)", "gcsfs (>=2024.10.0)", "html5lib (>=1.1)", "hypothesis (>=6.116.0)", "jinja2 (>=3.1.5)", "lxml (>=5.3.0)", "matplotlib (>=3.9.3)", "numba (>=0.60.0)", "numexpr (>=2.10.2)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.5)", "psycopg2 (>=2.9.10)", "pyarrow (>=13.0.0)", "pyiceberg (>=0.8.1)", "pymysql (>=1.1.1)", "pyreadstat (>=1.2.8)", "pytest (>=8.3.4)", "pytest-xdist (>=3.6.1)", "python-calamine (>=0.3.0)", "pytz (>=2024.2)", "pyxlsb (>=1.0.10)", "qtpy (>=2.4.2)", "s3fs (>=2024.10.0)", "scipy (>=1.14.1)", "tables (>=3.10.1)", "tabulate (>=0.9.0)", "xarray (>=2024.10.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.2.0)", "zstandard (>=0.23.0)"] +aws = ["s3fs (>=2024.10.0)"] +clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.4.2)"] +compression = ["zstandard (>=0.23.0)"] +computation = ["scipy (>=1.14.1)", "xarray (>=2024.10.0)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.5)", "python-calamine (>=0.3.0)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.2.0)"] +feather = ["pyarrow (>=13.0.0)"] +fss = ["fsspec (>=2024.10.0)"] +gcp = ["gcsfs (>=2024.10.0)"] +hdf5 = ["tables (>=3.10.1)"] +html = ["beautifulsoup4 (>=4.12.3)", "html5lib (>=1.1)", "lxml (>=5.3.0)"] +iceberg = ["pyiceberg (>=0.8.1)"] +mysql = ["SQLAlchemy (>=2.0.36)", "pymysql (>=1.1.1)"] +output-formatting = ["jinja2 (>=3.1.5)", "tabulate (>=0.9.0)"] +parquet = ["pyarrow (>=13.0.0)"] +performance = ["bottleneck (>=1.4.2)", "numba (>=0.60.0)", "numexpr (>=2.10.2)"] +plot = ["matplotlib (>=3.9.3)"] +postgresql = ["SQLAlchemy (>=2.0.36)", "adbc-driver-postgresql (>=1.2.0)", "psycopg2 (>=2.9.10)"] +pyarrow = ["pyarrow (>=13.0.0)"] +spss = ["pyreadstat (>=1.2.8)"] +sql-other = ["SQLAlchemy (>=2.0.36)", "adbc-driver-postgresql (>=1.2.0)", "adbc-driver-sqlite (>=1.2.0)"] +test = ["hypothesis (>=6.116.0)", "pytest (>=8.3.4)", "pytest-xdist (>=3.6.1)"] +timezone = ["pytz (>=2024.2)"] +xml = ["lxml (>=5.3.0)"] [[package]] name = "partd" @@ -2538,228 +1522,119 @@ version = "1.4.2" description = "Appendable key-value storage" optional = false python-versions = ">=3.9" -groups = ["main"] -files = [ - {file = "partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f"}, - {file = "partd-1.4.2.tar.gz", hash = "sha256:d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c"}, -] - -[package.dependencies] -locket = "*" -toolz = "*" - -[package.extras] -complete = ["blosc", "numpy (>=1.20.0)", "pandas (>=1.3)", "pyzmq"] - -[[package]] -name = "pathspec" -version = "0.12.1" -description = "Utility library for gitignore style pattern matching of file paths." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, - {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, -] - -[[package]] -name = "pexpect" -version = "4.9.0" -description = "Pexpect allows easy control of interactive console applications." -optional = false -python-versions = "*" -groups = ["dev"] -markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" -files = [ - {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, - {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, -] - -[package.dependencies] -ptyprocess = ">=0.5" - -[[package]] -name = "pip-requirements-parser" -version = "32.0.1" -description = "pip requirements parser - a mostly correct pip requirements parsing library because it uses pip's own code." -optional = false -python-versions = ">=3.6.0" -groups = ["dev"] -files = [ - { file = "pip-requirements-parser-32.0.1.tar.gz", hash = "sha256:b4fa3a7a0be38243123cf9d1f3518da10c51bdb165a2b2985566247f9155a7d3" }, - { file = "pip_requirements_parser-32.0.1-py3-none-any.whl", hash = "sha256:4659bc2a667783e7a15d190f6fccf8b2486685b6dba4c19c3876314769c57526" }, -] - -[package.dependencies] -packaging = "*" -pyparsing = "*" - -[package.extras] -docs = ["Sphinx (>=3.3.1)", "doc8 (>=0.8.1)", "sphinx-rtd-theme (>=0.5.0)"] -testing = ["aboutcode-toolkit (>=6.0.0)", "black", "pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"] - -[[package]] -name = "platformdirs" -version = "4.3.8" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4" }, - { file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc" }, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.4)", "pytest-cov (>=6)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.14.1)"] - -[[package]] -name = "pluggy" -version = "1.6.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746" }, - { file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3" }, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["coverage", "pytest", "pytest-benchmark"] - -[[package]] -name = "pre-commit" -version = "4.2.0" -description = "A framework for managing and maintaining multi-language pre-commit hooks." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd" }, - { file = "pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146" }, -] - -[package.dependencies] -cfgv = ">=2.0.0" -identify = ">=1.0.0" -nodeenv = ">=0.11.1" -pyyaml = ">=5.1" -virtualenv = ">=20.10.0" - -[[package]] -name = "prometheus-client" -version = "0.22.1" -description = "Python client for the Prometheus monitoring system." -optional = false -python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] files = [ - { file = "prometheus_client-0.22.1-py3-none-any.whl", hash = "sha256:cca895342e308174341b2cbf99a56bef291fbc0ef7b9e5412a0f26d653ba7094" }, - { file = "prometheus_client-0.22.1.tar.gz", hash = "sha256:190f1331e783cf21eb60bca559354e0a4d4378facecf78f5428c39b675d20d28" }, + {file = "partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f"}, + {file = "partd-1.4.2.tar.gz", hash = "sha256:d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c"}, ] +[package.dependencies] +locket = "*" +toolz = "*" + [package.extras] -twisted = ["twisted"] +complete = ["blosc", "numpy (>=1.20.0)", "pandas (>=1.3)", "pyzmq"] [[package]] -name = "prompt-toolkit" -version = "3.0.51" -description = "Library for building powerful interactive command lines in Python" +name = "pathspec" +version = "1.0.4" +description = "Utility library for gitignore style pattern matching of file paths." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07" }, - { file = "prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed" }, + {file = "pathspec-1.0.4-py3-none-any.whl", hash = "sha256:fb6ae2fd4e7c921a165808a552060e722767cfa526f99ca5156ed2ce45a5c723"}, + {file = "pathspec-1.0.4.tar.gz", hash = "sha256:0210e2ae8a21a9137c0d470578cb0e595af87edaa6ebf12ff176f14a02e0e645"}, ] -[package.dependencies] -wcwidth = "*" +[package.extras] +hyperscan = ["hyperscan (>=0.7)"] +optional = ["typing-extensions (>=4)"] +re2 = ["google-re2 (>=1.1)"] +tests = ["pytest (>=9)", "typing-extensions (>=4.15)"] [[package]] -name = "psutil" -version = "7.0.0" -description = "Cross-platform lib for process and system monitoring in Python. NOTE: the syntax of this script MUST be kept compatible with Python 2.7." +name = "pip-requirements-parser" +version = "32.0.1" +description = "pip requirements parser - a mostly correct pip requirements parsing library because it uses pip's own code." optional = false -python-versions = ">=3.6" +python-versions = ">=3.6.0" groups = ["dev"] files = [ - { file = "psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25" }, - { file = "psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da" }, - { file = "psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91" }, - { file = "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" }, - { file = "psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993" }, - { file = "psutil-7.0.0-cp36-cp36m-win32.whl", hash = "sha256:84df4eb63e16849689f76b1ffcb36db7b8de703d1bc1fe41773db487621b6c17" }, - { file = "psutil-7.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1e744154a6580bc968a0195fd25e80432d3afec619daf145b9e5ba16cc1d688e" }, - { file = "psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99" }, - { file = "psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553" }, - { file = "psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456" }, + {file = "pip-requirements-parser-32.0.1.tar.gz", hash = "sha256:b4fa3a7a0be38243123cf9d1f3518da10c51bdb165a2b2985566247f9155a7d3"}, + {file = "pip_requirements_parser-32.0.1-py3-none-any.whl", hash = "sha256:4659bc2a667783e7a15d190f6fccf8b2486685b6dba4c19c3876314769c57526"}, ] +[package.dependencies] +packaging = "*" +pyparsing = "*" + [package.extras] -dev = ["abi3audit", "black (==24.10.0)", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest", "pytest-cov", "pytest-xdist", "requests", "rstcheck", "ruff", "setuptools", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "vulture", "wheel"] -test = ["pytest", "pytest-xdist", "setuptools"] +docs = ["Sphinx (>=3.3.1)", "doc8 (>=0.8.1)", "sphinx-rtd-theme (>=0.5.0)"] +testing = ["aboutcode-toolkit (>=6.0.0)", "black", "pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"] [[package]] -name = "ptyprocess" -version = "0.7.0" -description = "Run a subprocess in a pseudo terminal" +name = "platformdirs" +version = "4.9.2" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false -python-versions = "*" +python-versions = ">=3.10" groups = ["dev"] -markers = "os_name != \"nt\" or sys_platform != \"win32\" and sys_platform != \"emscripten\"" files = [ - {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, - {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, + {file = "platformdirs-4.9.2-py3-none-any.whl", hash = "sha256:9170634f126f8efdae22fb58ae8a0eaa86f38365bc57897a6c4f781d1f5875bd"}, + {file = "platformdirs-4.9.2.tar.gz", hash = "sha256:9a33809944b9db043ad67ca0db94b14bf452cc6aeaac46a88ea55b26e2e9d291"}, ] [[package]] -name = "pure-eval" -version = "0.2.3" -description = "Safely evaluate AST nodes without side effects" +name = "pluggy" +version = "1.6.0" +description = "plugin and hook calling mechanisms for python" optional = false -python-versions = "*" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, - {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, + {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, + {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, ] [package.extras] -tests = ["pytest"] +dev = ["pre-commit", "tox"] +testing = ["coverage", "pytest", "pytest-benchmark"] [[package]] -name = "pycparser" -version = "2.22" -description = "C parser in Python" +name = "pre-commit" +version = "4.5.1" +description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, - {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, + {file = "pre_commit-4.5.1-py2.py3-none-any.whl", hash = "sha256:3b3afd891e97337708c1674210f8eba659b52a38ea5f822ff142d10786221f77"}, + {file = "pre_commit-4.5.1.tar.gz", hash = "sha256:eb545fcff725875197837263e977ea257a402056661f09dae08e4b149b030a61"}, ] +[package.dependencies] +cfgv = ">=2.0.0" +identify = ">=1.0.0" +nodeenv = ">=0.11.1" +pyyaml = ">=5.1" +virtualenv = ">=20.10.0" + [[package]] name = "pydantic" -version = "2.12.0" +version = "2.12.5" description = "Data validation using Python type hints" optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - { file = "pydantic-2.12.0-py3-none-any.whl", hash = "sha256:f6a1da352d42790537e95e83a8bdfb91c7efbae63ffd0b86fa823899e807116f" }, - { file = "pydantic-2.12.0.tar.gz", hash = "sha256:c1a077e6270dbfb37bfd8b498b3981e2bb18f68103720e51fa6c306a5a9af563" }, + {file = "pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d"}, + {file = "pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.41.1" +pydantic-core = "2.41.5" typing-extensions = ">=4.14.1" typing-inspection = ">=0.4.2" @@ -2769,125 +1644,133 @@ timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows [[package]] name = "pydantic-core" -version = "2.41.1" +version = "2.41.5" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - { file = "pydantic_core-2.41.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:e63036298322e9aea1c8b7c0a6c1204d615dbf6ec0668ce5b83ff27f07404a61" }, - { file = "pydantic_core-2.41.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:241299ca91fc77ef64f11ed909d2d9220a01834e8e6f8de61275c4dd16b7c936" }, - { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ab7e594a2a5c24ab8013a7dc8cfe5f2260e80e490685814122081705c2cf2b0" }, - { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b054ef1a78519cb934b58e9c90c09e93b837c935dcd907b891f2b265b129eb6e" }, - { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f2ab7d10d0ab2ed6da54c757233eb0f48ebfb4f86e9b88ccecb3f92bbd61a538" }, - { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2757606b7948bb853a27e4040820306eaa0ccb9e8f9f8a0fa40cb674e170f350" }, - { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cec0e75eb61f606bad0a32f2be87507087514e26e8c73db6cbdb8371ccd27917" }, - { file = "pydantic_core-2.41.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0234236514f44a5bf552105cfe2543a12f48203397d9d0f866affa569345a5b5" }, - { file = "pydantic_core-2.41.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:1b974e41adfbb4ebb0f65fc4ca951347b17463d60893ba7d5f7b9bb087c83897" }, - { file = "pydantic_core-2.41.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:248dafb3204136113c383e91a4d815269f51562b6659b756cf3df14eefc7d0bb" }, - { file = "pydantic_core-2.41.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:678f9d76a91d6bcedd7568bbf6beb77ae8447f85d1aeebaab7e2f0829cfc3a13" }, - { file = "pydantic_core-2.41.1-cp310-cp310-win32.whl", hash = "sha256:dff5bee1d21ee58277900692a641925d2dddfde65182c972569b1a276d2ac8fb" }, - { file = "pydantic_core-2.41.1-cp310-cp310-win_amd64.whl", hash = "sha256:5042da12e5d97d215f91567110fdfa2e2595a25f17c19b9ff024f31c34f9b53e" }, - { file = "pydantic_core-2.41.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4f276a6134fe1fc1daa692642a3eaa2b7b858599c49a7610816388f5e37566a1" }, - { file = "pydantic_core-2.41.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07588570a805296ece009c59d9a679dc08fab72fb337365afb4f3a14cfbfc176" }, - { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28527e4b53400cd60ffbd9812ccb2b5135d042129716d71afd7e45bf42b855c0" }, - { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:46a1c935c9228bad738c8a41de06478770927baedf581d172494ab36a6b96575" }, - { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:447ddf56e2b7d28d200d3e9eafa936fe40485744b5a824b67039937580b3cb20" }, - { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:63892ead40c1160ac860b5debcc95c95c5a0035e543a8b5a4eac70dd22e995f4" }, - { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4a9543ca355e6df8fbe9c83e9faab707701e9103ae857ecb40f1c0cf8b0e94d" }, - { file = "pydantic_core-2.41.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f2611bdb694116c31e551ed82e20e39a90bea9b7ad9e54aaf2d045ad621aa7a1" }, - { file = "pydantic_core-2.41.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fecc130893a9b5f7bfe230be1bb8c61fe66a19db8ab704f808cb25a82aad0bc9" }, - { file = "pydantic_core-2.41.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:1e2df5f8344c99b6ea5219f00fdc8950b8e6f2c422fbc1cc122ec8641fac85a1" }, - { file = "pydantic_core-2.41.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:35291331e9d8ed94c257bab6be1cb3a380b5eee570a2784bffc055e18040a2ea" }, - { file = "pydantic_core-2.41.1-cp311-cp311-win32.whl", hash = "sha256:2876a095292668d753f1a868c4a57c4ac9f6acbd8edda8debe4218d5848cf42f" }, - { file = "pydantic_core-2.41.1-cp311-cp311-win_amd64.whl", hash = "sha256:b92d6c628e9a338846a28dfe3fcdc1a3279388624597898b105e078cdfc59298" }, - { file = "pydantic_core-2.41.1-cp311-cp311-win_arm64.whl", hash = "sha256:7d82ae99409eb69d507a89835488fb657faa03ff9968a9379567b0d2e2e56bc5" }, - { file = "pydantic_core-2.41.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:db2f82c0ccbce8f021ad304ce35cbe02aa2f95f215cac388eed542b03b4d5eb4" }, - { file = "pydantic_core-2.41.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:47694a31c710ced9205d5f1e7e8af3ca57cbb8a503d98cb9e33e27c97a501601" }, - { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93e9decce94daf47baf9e9d392f5f2557e783085f7c5e522011545d9d6858e00" }, - { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ab0adafdf2b89c8b84f847780a119437a0931eca469f7b44d356f2b426dd9741" }, - { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5da98cc81873f39fd56882e1569c4677940fbc12bce6213fad1ead784192d7c8" }, - { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:209910e88afb01fd0fd403947b809ba8dba0e08a095e1f703294fda0a8fdca51" }, - { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:365109d1165d78d98e33c5bfd815a9b5d7d070f578caefaabcc5771825b4ecb5" }, - { file = "pydantic_core-2.41.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:706abf21e60a2857acdb09502bc853ee5bce732955e7b723b10311114f033115" }, - { file = "pydantic_core-2.41.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bf0bd5417acf7f6a7ec3b53f2109f587be176cb35f9cf016da87e6017437a72d" }, - { file = "pydantic_core-2.41.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:2e71b1c6ceb9c78424ae9f63a07292fb769fb890a4e7efca5554c47f33a60ea5" }, - { file = "pydantic_core-2.41.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:80745b9770b4a38c25015b517451c817799bfb9d6499b0d13d8227ec941cb513" }, - { file = "pydantic_core-2.41.1-cp312-cp312-win32.whl", hash = "sha256:83b64d70520e7890453f1aa21d66fda44e7b35f1cfea95adf7b4289a51e2b479" }, - { file = "pydantic_core-2.41.1-cp312-cp312-win_amd64.whl", hash = "sha256:377defd66ee2003748ee93c52bcef2d14fde48fe28a0b156f88c3dbf9bc49a50" }, - { file = "pydantic_core-2.41.1-cp312-cp312-win_arm64.whl", hash = "sha256:c95caff279d49c1d6cdfe2996e6c2ad712571d3b9caaa209a404426c326c4bde" }, - { file = "pydantic_core-2.41.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70e790fce5f05204ef4403159857bfcd587779da78627b0babb3654f75361ebf" }, - { file = "pydantic_core-2.41.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9cebf1ca35f10930612d60bd0f78adfacee824c30a880e3534ba02c207cceceb" }, - { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:170406a37a5bc82c22c3274616bf6f17cc7df9c4a0a0a50449e559cb755db669" }, - { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:12d4257fc9187a0ccd41b8b327d6a4e57281ab75e11dda66a9148ef2e1fb712f" }, - { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a75a33b4db105dd1c8d57839e17ee12db8d5ad18209e792fa325dbb4baeb00f4" }, - { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08a589f850803a74e0fcb16a72081cafb0d72a3cdda500106942b07e76b7bf62" }, - { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a97939d6ea44763c456bd8a617ceada2c9b96bb5b8ab3dfa0d0827df7619014" }, - { file = "pydantic_core-2.41.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2ae423c65c556f09569524b80ffd11babff61f33055ef9773d7c9fabc11ed8d" }, - { file = "pydantic_core-2.41.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:4dc703015fbf8764d6a8001c327a87f1823b7328d40b47ce6000c65918ad2b4f" }, - { file = "pydantic_core-2.41.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:968e4ffdfd35698a5fe659e5e44c508b53664870a8e61c8f9d24d3d145d30257" }, - { file = "pydantic_core-2.41.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:fff2b76c8e172d34771cd4d4f0ade08072385310f214f823b5a6ad4006890d32" }, - { file = "pydantic_core-2.41.1-cp313-cp313-win32.whl", hash = "sha256:a38a5263185407ceb599f2f035faf4589d57e73c7146d64f10577f6449e8171d" }, - { file = "pydantic_core-2.41.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42ae7fd6760782c975897e1fdc810f483b021b32245b0105d40f6e7a3803e4b" }, - { file = "pydantic_core-2.41.1-cp313-cp313-win_arm64.whl", hash = "sha256:ad4111acc63b7384e205c27a2f15e23ac0ee21a9d77ad6f2e9cb516ec90965fb" }, - { file = "pydantic_core-2.41.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:440d0df7415b50084a4ba9d870480c16c5f67c0d1d4d5119e3f70925533a0edc" }, - { file = "pydantic_core-2.41.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71eaa38d342099405dae6484216dcf1e8e4b0bebd9b44a4e08c9b43db6a2ab67" }, - { file = "pydantic_core-2.41.1-cp313-cp313t-win_amd64.whl", hash = "sha256:555ecf7e50f1161d3f693bc49f23c82cf6cdeafc71fa37a06120772a09a38795" }, - { file = "pydantic_core-2.41.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:05226894a26f6f27e1deb735d7308f74ef5fa3a6de3e0135bb66cdcaee88f64b" }, - { file = "pydantic_core-2.41.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:85ff7911c6c3e2fd8d3779c50925f6406d770ea58ea6dde9c230d35b52b16b4a" }, - { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47f1f642a205687d59b52dc1a9a607f45e588f5a2e9eeae05edd80c7a8c47674" }, - { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df11c24e138876ace5ec6043e5cae925e34cf38af1a1b3d63589e8f7b5f5cdc4" }, - { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7f0bf7f5c8f7bf345c527e8a0d72d6b26eda99c1227b0c34e7e59e181260de31" }, - { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:82b887a711d341c2c47352375d73b029418f55b20bd7815446d175a70effa706" }, - { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5f1d5d6bbba484bdf220c72d8ecd0be460f4bd4c5e534a541bb2cd57589fb8b" }, - { file = "pydantic_core-2.41.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2bf1917385ebe0f968dc5c6ab1375886d56992b93ddfe6bf52bff575d03662be" }, - { file = "pydantic_core-2.41.1-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:4f94f3ab188f44b9a73f7295663f3ecb8f2e2dd03a69c8f2ead50d37785ecb04" }, - { file = "pydantic_core-2.41.1-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:3925446673641d37c30bd84a9d597e49f72eacee8b43322c8999fa17d5ae5bc4" }, - { file = "pydantic_core-2.41.1-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:49bd51cc27adb980c7b97357ae036ce9b3c4d0bb406e84fbe16fb2d368b602a8" }, - { file = "pydantic_core-2.41.1-cp314-cp314-win32.whl", hash = "sha256:a31ca0cd0e4d12ea0df0077df2d487fc3eb9d7f96bbb13c3c5b88dcc21d05159" }, - { file = "pydantic_core-2.41.1-cp314-cp314-win_amd64.whl", hash = "sha256:1b5c4374a152e10a22175d7790e644fbd8ff58418890e07e2073ff9d4414efae" }, - { file = "pydantic_core-2.41.1-cp314-cp314-win_arm64.whl", hash = "sha256:4fee76d757639b493eb600fba668f1e17475af34c17dd61db7a47e824d464ca9" }, - { file = "pydantic_core-2.41.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f9b9c968cfe5cd576fdd7361f47f27adeb120517e637d1b189eea1c3ece573f4" }, - { file = "pydantic_core-2.41.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1ebc7ab67b856384aba09ed74e3e977dded40e693de18a4f197c67d0d4e6d8e" }, - { file = "pydantic_core-2.41.1-cp314-cp314t-win_amd64.whl", hash = "sha256:8ae0dc57b62a762985bc7fbf636be3412394acc0ddb4ade07fe104230f1b9762" }, - { file = "pydantic_core-2.41.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:10ce489cf09a4956a1549af839b983edc59b0f60e1b068c21b10154e58f54f80" }, - { file = "pydantic_core-2.41.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ff548c908caffd9455fd1342366bcf8a1ec8a3fca42f35c7fc60883d6a901074" }, - { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d43bf082025082bda13be89a5f876cc2386b7727c7b322be2d2b706a45cea8e" }, - { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:666aee751faf1c6864b2db795775dd67b61fdcf646abefa309ed1da039a97209" }, - { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b83aaeff0d7bde852c32e856f3ee410842ebc08bc55c510771d87dcd1c01e1ed" }, - { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:055c7931b0329cb8acde20cdde6d9c2cbc2a02a0a8e54a792cddd91e2ea92c65" }, - { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:530bbb1347e3e5ca13a91ac087c4971d7da09630ef8febd27a20a10800c2d06d" }, - { file = "pydantic_core-2.41.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:65a0ea16cfea7bfa9e43604c8bd726e63a3788b61c384c37664b55209fcb1d74" }, - { file = "pydantic_core-2.41.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8fa93fadff794c6d15c345c560513b160197342275c6d104cc879f932b978afc" }, - { file = "pydantic_core-2.41.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:c8a1af9ac51969a494c6a82b563abae6859dc082d3b999e8fa7ba5ee1b05e8e8" }, - { file = "pydantic_core-2.41.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:30edab28829703f876897c9471a857e43d847b8799c3c9e2fbce644724b50aa4" }, - { file = "pydantic_core-2.41.1-cp39-cp39-win32.whl", hash = "sha256:84d0ff869f98be2e93efdf1ae31e5a15f0926d22af8677d51676e373abbfe57a" }, - { file = "pydantic_core-2.41.1-cp39-cp39-win_amd64.whl", hash = "sha256:b5674314987cdde5a5511b029fa5fb1556b3d147a367e01dd583b19cfa8e35df" }, - { file = "pydantic_core-2.41.1-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:68f2251559b8efa99041bb63571ec7cdd2d715ba74cc82b3bc9eff824ebc8bf0" }, - { file = "pydantic_core-2.41.1-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:c7bc140c596097cb53b30546ca257dbe3f19282283190b1b5142928e5d5d3a20" }, - { file = "pydantic_core-2.41.1-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2896510fce8f4725ec518f8b9d7f015a00db249d2fd40788f442af303480063d" }, - { file = "pydantic_core-2.41.1-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ced20e62cfa0f496ba68fa5d6c7ee71114ea67e2a5da3114d6450d7f4683572a" }, - { file = "pydantic_core-2.41.1-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:b04fa9ed049461a7398138c604b00550bc89e3e1151d84b81ad6dc93e39c4c06" }, - { file = "pydantic_core-2.41.1-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:b3b7d9cfbfdc43c80a16638c6dc2768e3956e73031fca64e8e1a3ae744d1faeb" }, - { file = "pydantic_core-2.41.1-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eec83fc6abef04c7f9bec616e2d76ee9a6a4ae2a359b10c21d0f680e24a247ca" }, - { file = "pydantic_core-2.41.1-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6771a2d9f83c4038dfad5970a3eef215940682b2175e32bcc817bdc639019b28" }, - { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fabcbdb12de6eada8d6e9a759097adb3c15440fafc675b3e94ae5c9cb8d678a0" }, - { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:80e97ccfaf0aaf67d55de5085b0ed0d994f57747d9d03f2de5cc9847ca737b08" }, - { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34df1fe8fea5d332484a763702e8b6a54048a9d4fe6ccf41e34a128238e01f52" }, - { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:421b5595f845842fc093f7250e24ee395f54ca62d494fdde96f43ecf9228ae01" }, - { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:dce8b22663c134583aaad24827863306a933f576c79da450be3984924e2031d1" }, - { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:300a9c162fea9906cc5c103893ca2602afd84f0ec90d3be36f4cc360125d22e1" }, - { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e019167628f6e6161ae7ab9fb70f6d076a0bf0d55aa9b20833f86a320c70dd65" }, - { file = "pydantic_core-2.41.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:13ab9cc2de6f9d4ab645a050ae5aee61a2424ac4d3a16ba23d4c2027705e0301" }, - { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:af2385d3f98243fb733862f806c5bb9122e5fba05b373e3af40e3c82d711cef1" }, - { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:6550617a0c2115be56f90c31a5370261d8ce9dbf051c3ed53b51172dd34da696" }, - { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc17b6ecf4983d298686014c92ebc955a9f9baf9f57dad4065e7906e7bee6222" }, - { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:42ae9352cf211f08b04ea110563d6b1e415878eea5b4c70f6bdb17dca3b932d2" }, - { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e82947de92068b0a21681a13dd2102387197092fbe7defcfb8453e0913866506" }, - { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e244c37d5471c9acdcd282890c6c4c83747b77238bfa19429b8473586c907656" }, - { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1e798b4b304a995110d41ec93653e57975620ccb2842ba9420037985e7d7284e" }, - { file = "pydantic_core-2.41.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f1fc716c0eb1663c59699b024428ad5ec2bcc6b928527b8fe28de6cb89f47efb" }, - { file = "pydantic_core-2.41.1.tar.gz", hash = "sha256:1ad375859a6d8c356b7704ec0f547a58e82ee80bb41baa811ad710e124bc8f2f" }, + {file = "pydantic_core-2.41.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:77b63866ca88d804225eaa4af3e664c5faf3568cea95360d21f4725ab6e07146"}, + {file = "pydantic_core-2.41.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dfa8a0c812ac681395907e71e1274819dec685fec28273a28905df579ef137e2"}, + {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5921a4d3ca3aee735d9fd163808f5e8dd6c6972101e4adbda9a4667908849b97"}, + {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e25c479382d26a2a41b7ebea1043564a937db462816ea07afa8a44c0866d52f9"}, + {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f547144f2966e1e16ae626d8ce72b4cfa0caedc7fa28052001c94fb2fcaa1c52"}, + {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f52298fbd394f9ed112d56f3d11aabd0d5bd27beb3084cc3d8ad069483b8941"}, + {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:100baa204bb412b74fe285fb0f3a385256dad1d1879f0a5cb1499ed2e83d132a"}, + {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:05a2c8852530ad2812cb7914dc61a1125dc4e06252ee98e5638a12da6cc6fb6c"}, + {file = "pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:29452c56df2ed968d18d7e21f4ab0ac55e71dc59524872f6fc57dcf4a3249ed2"}, + {file = "pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:d5160812ea7a8a2ffbe233d8da666880cad0cbaf5d4de74ae15c313213d62556"}, + {file = "pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:df3959765b553b9440adfd3c795617c352154e497a4eaf3752555cfb5da8fc49"}, + {file = "pydantic_core-2.41.5-cp310-cp310-win32.whl", hash = "sha256:1f8d33a7f4d5a7889e60dc39856d76d09333d8a6ed0f5f1190635cbec70ec4ba"}, + {file = "pydantic_core-2.41.5-cp310-cp310-win_amd64.whl", hash = "sha256:62de39db01b8d593e45871af2af9e497295db8d73b085f6bfd0b18c83c70a8f9"}, + {file = "pydantic_core-2.41.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a3a52f6156e73e7ccb0f8cced536adccb7042be67cb45f9562e12b319c119da6"}, + {file = "pydantic_core-2.41.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7f3bf998340c6d4b0c9a2f02d6a400e51f123b59565d74dc60d252ce888c260b"}, + {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:378bec5c66998815d224c9ca994f1e14c0c21cb95d2f52b6021cc0b2a58f2a5a"}, + {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7b576130c69225432866fe2f4a469a85a54ade141d96fd396dffcf607b558f8"}, + {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6cb58b9c66f7e4179a2d5e0f849c48eff5c1fca560994d6eb6543abf955a149e"}, + {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:88942d3a3dff3afc8288c21e565e476fc278902ae4d6d134f1eeda118cc830b1"}, + {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f31d95a179f8d64d90f6831d71fa93290893a33148d890ba15de25642c5d075b"}, + {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c1df3d34aced70add6f867a8cf413e299177e0c22660cc767218373d0779487b"}, + {file = "pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4009935984bd36bd2c774e13f9a09563ce8de4abaa7226f5108262fa3e637284"}, + {file = "pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:34a64bc3441dc1213096a20fe27e8e128bd3ff89921706e83c0b1ac971276594"}, + {file = "pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c9e19dd6e28fdcaa5a1de679aec4141f691023916427ef9bae8584f9c2fb3b0e"}, + {file = "pydantic_core-2.41.5-cp311-cp311-win32.whl", hash = "sha256:2c010c6ded393148374c0f6f0bf89d206bf3217f201faa0635dcd56bd1520f6b"}, + {file = "pydantic_core-2.41.5-cp311-cp311-win_amd64.whl", hash = "sha256:76ee27c6e9c7f16f47db7a94157112a2f3a00e958bc626e2f4ee8bec5c328fbe"}, + {file = "pydantic_core-2.41.5-cp311-cp311-win_arm64.whl", hash = "sha256:4bc36bbc0b7584de96561184ad7f012478987882ebf9f9c389b23f432ea3d90f"}, + {file = "pydantic_core-2.41.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7"}, + {file = "pydantic_core-2.41.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0"}, + {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69"}, + {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75"}, + {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05"}, + {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc"}, + {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c"}, + {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5"}, + {file = "pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c"}, + {file = "pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294"}, + {file = "pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1"}, + {file = "pydantic_core-2.41.5-cp312-cp312-win32.whl", hash = "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d"}, + {file = "pydantic_core-2.41.5-cp312-cp312-win_amd64.whl", hash = "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815"}, + {file = "pydantic_core-2.41.5-cp312-cp312-win_arm64.whl", hash = "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3"}, + {file = "pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9"}, + {file = "pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34"}, + {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0"}, + {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33"}, + {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e"}, + {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2"}, + {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586"}, + {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d"}, + {file = "pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740"}, + {file = "pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e"}, + {file = "pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858"}, + {file = "pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36"}, + {file = "pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11"}, + {file = "pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd"}, + {file = "pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a"}, + {file = "pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14"}, + {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1"}, + {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66"}, + {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869"}, + {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2"}, + {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375"}, + {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553"}, + {file = "pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90"}, + {file = "pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07"}, + {file = "pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb"}, + {file = "pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23"}, + {file = "pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf"}, + {file = "pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008"}, + {file = "pydantic_core-2.41.5-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:8bfeaf8735be79f225f3fefab7f941c712aaca36f1128c9d7e2352ee1aa87bdf"}, + {file = "pydantic_core-2.41.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:346285d28e4c8017da95144c7f3acd42740d637ff41946af5ce6e5e420502dd5"}, + {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a75dafbf87d6276ddc5b2bf6fae5254e3d0876b626eb24969a574fff9149ee5d"}, + {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7b93a4d08587e2b7e7882de461e82b6ed76d9026ce91ca7915e740ecc7855f60"}, + {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e8465ab91a4bd96d36dde3263f06caa6a8a6019e4113f24dc753d79a8b3a3f82"}, + {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:299e0a22e7ae2b85c1a57f104538b2656e8ab1873511fd718a1c1c6f149b77b5"}, + {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:707625ef0983fcfb461acfaf14de2067c5942c6bb0f3b4c99158bed6fedd3cf3"}, + {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f41eb9797986d6ebac5e8edff36d5cef9de40def462311b3eb3eeded1431e425"}, + {file = "pydantic_core-2.41.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0384e2e1021894b1ff5a786dbf94771e2986ebe2869533874d7e43bc79c6f504"}, + {file = "pydantic_core-2.41.5-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:f0cd744688278965817fd0839c4a4116add48d23890d468bc436f78beb28abf5"}, + {file = "pydantic_core-2.41.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:753e230374206729bf0a807954bcc6c150d3743928a73faffee51ac6557a03c3"}, + {file = "pydantic_core-2.41.5-cp39-cp39-win32.whl", hash = "sha256:873e0d5b4fb9b89ef7c2d2a963ea7d02879d9da0da8d9d4933dee8ee86a8b460"}, + {file = "pydantic_core-2.41.5-cp39-cp39-win_amd64.whl", hash = "sha256:e4f4a984405e91527a0d62649ee21138f8e3d0ef103be488c1dc11a80d7f184b"}, + {file = "pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:b96d5f26b05d03cc60f11a7761a5ded1741da411e7fe0909e27a5e6a0cb7b034"}, + {file = "pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:634e8609e89ceecea15e2d61bc9ac3718caaaa71963717bf3c8f38bfde64242c"}, + {file = "pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93e8740d7503eb008aa2df04d3b9735f845d43ae845e6dcd2be0b55a2da43cd2"}, + {file = "pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f15489ba13d61f670dcc96772e733aad1a6f9c429cc27574c6cdaed82d0146ad"}, + {file = "pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:7da7087d756b19037bc2c06edc6c170eeef3c3bafcb8f532ff17d64dc427adfd"}, + {file = "pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:aabf5777b5c8ca26f7824cb4a120a740c9588ed58df9b2d196ce92fba42ff8dc"}, + {file = "pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c007fe8a43d43b3969e8469004e9845944f1a80e6acd47c150856bb87f230c56"}, + {file = "pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76d0819de158cd855d1cbb8fcafdf6f5cf1eb8e470abe056d5d161106e38062b"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b5819cd790dbf0c5eb9f82c73c16b39a65dd6dd4d1439dcdea7816ec9adddab8"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5a4e67afbc95fa5c34cf27d9089bca7fcab4e51e57278d710320a70b956d1b9a"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ece5c59f0ce7d001e017643d8d24da587ea1f74f6993467d85ae8a5ef9d4f42b"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:16f80f7abe3351f8ea6858914ddc8c77e02578544a0ebc15b4c2e1a0e813b0b2"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:33cb885e759a705b426baada1fe68cbb0a2e68e34c5d0d0289a364cf01709093"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:c8d8b4eb992936023be7dee581270af5c6e0697a8559895f527f5b7105ecd36a"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:242a206cd0318f95cd21bdacff3fcc3aab23e79bba5cac3db5a841c9ef9c6963"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d3a978c4f57a597908b7e697229d996d77a6d3c94901e9edee593adada95ce1a"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2379fa7ed44ddecb5bfe4e48577d752db9fc10be00a6b7446e9663ba143de26"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:266fb4cbf5e3cbd0b53669a6d1b039c45e3ce651fd5442eff4d07c2cc8d66808"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58133647260ea01e4d0500089a8c4f07bd7aa6ce109682b1426394988d8aaacc"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:287dad91cfb551c363dc62899a80e9e14da1f0e2b6ebde82c806612ca2a13ef1"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:03b77d184b9eb40240ae9fd676ca364ce1085f203e1b1256f8ab9984dca80a84"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:a668ce24de96165bb239160b3d854943128f4334822900534f2fe947930e5770"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f14f8f046c14563f8eb3f45f499cc658ab8d10072961e07225e507adb700e93f"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:56121965f7a4dc965bff783d70b907ddf3d57f6eba29b6d2e5dabfaf07799c51"}, + {file = "pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e"}, ] [package.dependencies] @@ -2901,8 +1784,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b" }, - { file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887" }, + {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"}, + {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, ] [package.extras] @@ -2910,14 +1793,14 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pymdown-extensions" -version = "10.16" +version = "10.21" description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pymdown_extensions-10.16-py3-none-any.whl", hash = "sha256:f5dd064a4db588cb2d95229fc4ee63a1b16cc8b4d0e6145c0899ed8723da1df2" }, - { file = "pymdown_extensions-10.16.tar.gz", hash = "sha256:71dac4fca63fabeffd3eb9038b756161a33ec6e8d230853d3cecf562155ab3de" }, + {file = "pymdown_extensions-10.21-py3-none-any.whl", hash = "sha256:91b879f9f864d49794c2d9534372b10150e6141096c3908a455e45ca72ad9d3f"}, + {file = "pymdown_extensions-10.21.tar.gz", hash = "sha256:39f4a020f40773f6b2ff31d2cd2546c2c04d0a6498c31d9c688d2be07e1767d5"}, ] [package.dependencies] @@ -2929,14 +1812,14 @@ extra = ["pygments (>=2.19.1)"] [[package]] name = "pyparsing" -version = "3.2.5" +version = "3.3.2" description = "pyparsing - Classes and methods to define and execute parsing grammars" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e" }, - { file = "pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6" }, + {file = "pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d"}, + {file = "pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc"}, ] [package.extras] @@ -2950,61 +1833,61 @@ optional = false python-versions = ">=3.11" groups = ["main"] files = [ - { file = "pyproj-3.7.2-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:2514d61f24c4e0bb9913e2c51487ecdaeca5f8748d8313c933693416ca41d4d5" }, - { file = "pyproj-3.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:8693ca3892d82e70de077701ee76dd13d7bca4ae1c9d1e739d72004df015923a" }, - { file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5e26484d80fea56273ed1555abaea161e9661d81a6c07815d54b8e883d4ceb25" }, - { file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:281cb92847814e8018010c48b4069ff858a30236638631c1a91dd7bfa68f8a8a" }, - { file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9c8577f0b7bb09118ec2e57e3babdc977127dd66326d6c5d755c76b063e6d9dc" }, - { file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a23f59904fac3a5e7364b3aa44d288234af267ca041adb2c2b14a903cd5d3ac5" }, - { file = "pyproj-3.7.2-cp311-cp311-win32.whl", hash = "sha256:f2af4ed34b2cf3e031a2d85b067a3ecbd38df073c567e04b52fa7a0202afde8a" }, - { file = "pyproj-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:0b7cb633565129677b2a183c4d807c727d1c736fcb0568a12299383056e67433" }, - { file = "pyproj-3.7.2-cp311-cp311-win_arm64.whl", hash = "sha256:38b08d85e3a38e455625b80e9eb9f78027c8e2649a21dec4df1f9c3525460c71" }, - { file = "pyproj-3.7.2-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:0a9bb26a6356fb5b033433a6d1b4542158fb71e3c51de49b4c318a1dff3aeaab" }, - { file = "pyproj-3.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:567caa03021178861fad27fabde87500ec6d2ee173dd32f3e2d9871e40eebd68" }, - { file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:c203101d1dc3c038a56cff0447acc515dd29d6e14811406ac539c21eed422b2a" }, - { file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1edc34266c0c23ced85f95a1ee8b47c9035eae6aca5b6b340327250e8e281630" }, - { file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aa9f26c21bc0e2dc3d224cb1eb4020cf23e76af179a7c66fea49b828611e4260" }, - { file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9428b318530625cb389b9ddc9c51251e172808a4af79b82809376daaeabe5e9" }, - { file = "pyproj-3.7.2-cp312-cp312-win32.whl", hash = "sha256:b3d99ed57d319da042f175f4554fc7038aa4bcecc4ac89e217e350346b742c9d" }, - { file = "pyproj-3.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:11614a054cd86a2ed968a657d00987a86eeb91fdcbd9ad3310478685dc14a128" }, - { file = "pyproj-3.7.2-cp312-cp312-win_arm64.whl", hash = "sha256:509a146d1398bafe4f53273398c3bb0b4732535065fa995270e52a9d3676bca3" }, - { file = "pyproj-3.7.2-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:19466e529b1b15eeefdf8ff26b06fa745856c044f2f77bf0edbae94078c1dfa1" }, - { file = "pyproj-3.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:c79b9b84c4a626c5dc324c0d666be0bfcebd99f7538d66e8898c2444221b3da7" }, - { file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ceecf374cacca317bc09e165db38ac548ee3cad07c3609442bd70311c59c21aa" }, - { file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5141a538ffdbe4bfd157421828bb2e07123a90a7a2d6f30fa1462abcfb5ce681" }, - { file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f000841e98ea99acbb7b8ca168d67773b0191de95187228a16110245c5d954d5" }, - { file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8115faf2597f281a42ab608ceac346b4eb1383d3b45ab474fd37341c4bf82a67" }, - { file = "pyproj-3.7.2-cp313-cp313-win32.whl", hash = "sha256:f18c0579dd6be00b970cb1a6719197fceecc407515bab37da0066f0184aafdf3" }, - { file = "pyproj-3.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:bb41c29d5f60854b1075853fe80c58950b398d4ebb404eb532536ac8d2834ed7" }, - { file = "pyproj-3.7.2-cp313-cp313-win_arm64.whl", hash = "sha256:2b617d573be4118c11cd96b8891a0b7f65778fa7733ed8ecdb297a447d439100" }, - { file = "pyproj-3.7.2-cp313-cp313t-macosx_13_0_x86_64.whl", hash = "sha256:d27b48f0e81beeaa2b4d60c516c3a1cfbb0c7ff6ef71256d8e9c07792f735279" }, - { file = "pyproj-3.7.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:55a3610d75023c7b1c6e583e48ef8f62918e85a2ae81300569d9f104d6684bb6" }, - { file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8d7349182fa622696787cc9e195508d2a41a64765da9b8a6bee846702b9e6220" }, - { file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:d230b186eb876ed4f29a7c5ee310144c3a0e44e89e55f65fb3607e13f6db337c" }, - { file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:237499c7862c578d0369e2b8ac56eec550e391a025ff70e2af8417139dabb41c" }, - { file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8c225f5978abd506fd9a78eaaf794435e823c9156091cabaab5374efb29d7f69" }, - { file = "pyproj-3.7.2-cp313-cp313t-win32.whl", hash = "sha256:2da731876d27639ff9d2d81c151f6ab90a1546455fabd93368e753047be344a2" }, - { file = "pyproj-3.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f54d91ae18dd23b6c0ab48126d446820e725419da10617d86a1b69ada6d881d3" }, - { file = "pyproj-3.7.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fc52ba896cfc3214dc9f9ca3c0677a623e8fdd096b257c14a31e719d21ff3fdd" }, - { file = "pyproj-3.7.2-cp314-cp314-macosx_13_0_x86_64.whl", hash = "sha256:2aaa328605ace41db050d06bac1adc11f01b71fe95c18661497763116c3a0f02" }, - { file = "pyproj-3.7.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:35dccbce8201313c596a970fde90e33605248b66272595c061b511c8100ccc08" }, - { file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:25b0b7cb0042444c29a164b993c45c1b8013d6c48baa61dc1160d834a277e83b" }, - { file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:85def3a6388e9ba51f964619aa002a9d2098e77c6454ff47773bb68871024281" }, - { file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b1bccefec3875ab81eabf49059e2b2ea77362c178b66fd3528c3e4df242f1516" }, - { file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d5371ca114d6990b675247355a801925814eca53e6c4b2f1b5c0a956336ee36e" }, - { file = "pyproj-3.7.2-cp314-cp314-win32.whl", hash = "sha256:77f066626030f41be543274f5ac79f2a511fe89860ecd0914f22131b40a0ec25" }, - { file = "pyproj-3.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:5a964da1696b8522806f4276ab04ccfff8f9eb95133a92a25900697609d40112" }, - { file = "pyproj-3.7.2-cp314-cp314-win_arm64.whl", hash = "sha256:e258ab4dbd3cf627809067c0ba8f9884ea76c8e5999d039fb37a1619c6c3e1f6" }, - { file = "pyproj-3.7.2-cp314-cp314t-macosx_13_0_x86_64.whl", hash = "sha256:bbbac2f930c6d266f70ec75df35ef851d96fdb3701c674f42fd23a9314573b37" }, - { file = "pyproj-3.7.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:b7544e0a3d6339dc9151e9c8f3ea62a936ab7cc446a806ec448bbe86aebb979b" }, - { file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:f7f5133dca4c703e8acadf6f30bc567d39a42c6af321e7f81975c2518f3ed357" }, - { file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:5aff3343038d7426aa5076f07feb88065f50e0502d1b0d7c22ddfdd2c75a3f81" }, - { file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:b0552178c61f2ac1c820d087e8ba6e62b29442debddbb09d51c4bf8acc84d888" }, - { file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:47d87db2d2c436c5fd0409b34d70bb6cdb875cca2ebe7a9d1c442367b0ab8d59" }, - { file = "pyproj-3.7.2-cp314-cp314t-win32.whl", hash = "sha256:c9b6f1d8ad3e80a0ee0903a778b6ece7dca1d1d40f6d114ae01bc8ddbad971aa" }, - { file = "pyproj-3.7.2-cp314-cp314t-win_amd64.whl", hash = "sha256:1914e29e27933ba6f9822663ee0600f169014a2859f851c054c88cf5ea8a333c" }, - { file = "pyproj-3.7.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d9d25bae416a24397e0d85739f84d323b55f6511e45a522dd7d7eae70d10c7e4" }, - { file = "pyproj-3.7.2.tar.gz", hash = "sha256:39a0cf1ecc7e282d1d30f36594ebd55c9fae1fda8a2622cee5d100430628f88c" }, + {file = "pyproj-3.7.2-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:2514d61f24c4e0bb9913e2c51487ecdaeca5f8748d8313c933693416ca41d4d5"}, + {file = "pyproj-3.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:8693ca3892d82e70de077701ee76dd13d7bca4ae1c9d1e739d72004df015923a"}, + {file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5e26484d80fea56273ed1555abaea161e9661d81a6c07815d54b8e883d4ceb25"}, + {file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:281cb92847814e8018010c48b4069ff858a30236638631c1a91dd7bfa68f8a8a"}, + {file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9c8577f0b7bb09118ec2e57e3babdc977127dd66326d6c5d755c76b063e6d9dc"}, + {file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a23f59904fac3a5e7364b3aa44d288234af267ca041adb2c2b14a903cd5d3ac5"}, + {file = "pyproj-3.7.2-cp311-cp311-win32.whl", hash = "sha256:f2af4ed34b2cf3e031a2d85b067a3ecbd38df073c567e04b52fa7a0202afde8a"}, + {file = "pyproj-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:0b7cb633565129677b2a183c4d807c727d1c736fcb0568a12299383056e67433"}, + {file = "pyproj-3.7.2-cp311-cp311-win_arm64.whl", hash = "sha256:38b08d85e3a38e455625b80e9eb9f78027c8e2649a21dec4df1f9c3525460c71"}, + {file = "pyproj-3.7.2-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:0a9bb26a6356fb5b033433a6d1b4542158fb71e3c51de49b4c318a1dff3aeaab"}, + {file = "pyproj-3.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:567caa03021178861fad27fabde87500ec6d2ee173dd32f3e2d9871e40eebd68"}, + {file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:c203101d1dc3c038a56cff0447acc515dd29d6e14811406ac539c21eed422b2a"}, + {file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1edc34266c0c23ced85f95a1ee8b47c9035eae6aca5b6b340327250e8e281630"}, + {file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aa9f26c21bc0e2dc3d224cb1eb4020cf23e76af179a7c66fea49b828611e4260"}, + {file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9428b318530625cb389b9ddc9c51251e172808a4af79b82809376daaeabe5e9"}, + {file = "pyproj-3.7.2-cp312-cp312-win32.whl", hash = "sha256:b3d99ed57d319da042f175f4554fc7038aa4bcecc4ac89e217e350346b742c9d"}, + {file = "pyproj-3.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:11614a054cd86a2ed968a657d00987a86eeb91fdcbd9ad3310478685dc14a128"}, + {file = "pyproj-3.7.2-cp312-cp312-win_arm64.whl", hash = "sha256:509a146d1398bafe4f53273398c3bb0b4732535065fa995270e52a9d3676bca3"}, + {file = "pyproj-3.7.2-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:19466e529b1b15eeefdf8ff26b06fa745856c044f2f77bf0edbae94078c1dfa1"}, + {file = "pyproj-3.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:c79b9b84c4a626c5dc324c0d666be0bfcebd99f7538d66e8898c2444221b3da7"}, + {file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ceecf374cacca317bc09e165db38ac548ee3cad07c3609442bd70311c59c21aa"}, + {file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5141a538ffdbe4bfd157421828bb2e07123a90a7a2d6f30fa1462abcfb5ce681"}, + {file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f000841e98ea99acbb7b8ca168d67773b0191de95187228a16110245c5d954d5"}, + {file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8115faf2597f281a42ab608ceac346b4eb1383d3b45ab474fd37341c4bf82a67"}, + {file = "pyproj-3.7.2-cp313-cp313-win32.whl", hash = "sha256:f18c0579dd6be00b970cb1a6719197fceecc407515bab37da0066f0184aafdf3"}, + {file = "pyproj-3.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:bb41c29d5f60854b1075853fe80c58950b398d4ebb404eb532536ac8d2834ed7"}, + {file = "pyproj-3.7.2-cp313-cp313-win_arm64.whl", hash = "sha256:2b617d573be4118c11cd96b8891a0b7f65778fa7733ed8ecdb297a447d439100"}, + {file = "pyproj-3.7.2-cp313-cp313t-macosx_13_0_x86_64.whl", hash = "sha256:d27b48f0e81beeaa2b4d60c516c3a1cfbb0c7ff6ef71256d8e9c07792f735279"}, + {file = "pyproj-3.7.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:55a3610d75023c7b1c6e583e48ef8f62918e85a2ae81300569d9f104d6684bb6"}, + {file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8d7349182fa622696787cc9e195508d2a41a64765da9b8a6bee846702b9e6220"}, + {file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:d230b186eb876ed4f29a7c5ee310144c3a0e44e89e55f65fb3607e13f6db337c"}, + {file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:237499c7862c578d0369e2b8ac56eec550e391a025ff70e2af8417139dabb41c"}, + {file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8c225f5978abd506fd9a78eaaf794435e823c9156091cabaab5374efb29d7f69"}, + {file = "pyproj-3.7.2-cp313-cp313t-win32.whl", hash = "sha256:2da731876d27639ff9d2d81c151f6ab90a1546455fabd93368e753047be344a2"}, + {file = "pyproj-3.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f54d91ae18dd23b6c0ab48126d446820e725419da10617d86a1b69ada6d881d3"}, + {file = "pyproj-3.7.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fc52ba896cfc3214dc9f9ca3c0677a623e8fdd096b257c14a31e719d21ff3fdd"}, + {file = "pyproj-3.7.2-cp314-cp314-macosx_13_0_x86_64.whl", hash = "sha256:2aaa328605ace41db050d06bac1adc11f01b71fe95c18661497763116c3a0f02"}, + {file = "pyproj-3.7.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:35dccbce8201313c596a970fde90e33605248b66272595c061b511c8100ccc08"}, + {file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:25b0b7cb0042444c29a164b993c45c1b8013d6c48baa61dc1160d834a277e83b"}, + {file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:85def3a6388e9ba51f964619aa002a9d2098e77c6454ff47773bb68871024281"}, + {file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b1bccefec3875ab81eabf49059e2b2ea77362c178b66fd3528c3e4df242f1516"}, + {file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d5371ca114d6990b675247355a801925814eca53e6c4b2f1b5c0a956336ee36e"}, + {file = "pyproj-3.7.2-cp314-cp314-win32.whl", hash = "sha256:77f066626030f41be543274f5ac79f2a511fe89860ecd0914f22131b40a0ec25"}, + {file = "pyproj-3.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:5a964da1696b8522806f4276ab04ccfff8f9eb95133a92a25900697609d40112"}, + {file = "pyproj-3.7.2-cp314-cp314-win_arm64.whl", hash = "sha256:e258ab4dbd3cf627809067c0ba8f9884ea76c8e5999d039fb37a1619c6c3e1f6"}, + {file = "pyproj-3.7.2-cp314-cp314t-macosx_13_0_x86_64.whl", hash = "sha256:bbbac2f930c6d266f70ec75df35ef851d96fdb3701c674f42fd23a9314573b37"}, + {file = "pyproj-3.7.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:b7544e0a3d6339dc9151e9c8f3ea62a936ab7cc446a806ec448bbe86aebb979b"}, + {file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:f7f5133dca4c703e8acadf6f30bc567d39a42c6af321e7f81975c2518f3ed357"}, + {file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:5aff3343038d7426aa5076f07feb88065f50e0502d1b0d7c22ddfdd2c75a3f81"}, + {file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:b0552178c61f2ac1c820d087e8ba6e62b29442debddbb09d51c4bf8acc84d888"}, + {file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:47d87db2d2c436c5fd0409b34d70bb6cdb875cca2ebe7a9d1c442367b0ab8d59"}, + {file = "pyproj-3.7.2-cp314-cp314t-win32.whl", hash = "sha256:c9b6f1d8ad3e80a0ee0903a778b6ece7dca1d1d40f6d114ae01bc8ddbad971aa"}, + {file = "pyproj-3.7.2-cp314-cp314t-win_amd64.whl", hash = "sha256:1914e29e27933ba6f9822663ee0600f169014a2859f851c054c88cf5ea8a333c"}, + {file = "pyproj-3.7.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d9d25bae416a24397e0d85739f84d323b55f6511e45a522dd7d7eae70d10c7e4"}, + {file = "pyproj-3.7.2.tar.gz", hash = "sha256:39a0cf1ecc7e282d1d30f36594ebd55c9fae1fda8a2622cee5d100430628f88c"}, ] [package.dependencies] @@ -3012,26 +1895,46 @@ certifi = "*" [[package]] name = "pytest" -version = "8.4.1" +version = "9.0.2" description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ - { file = "pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7" }, - { file = "pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c" }, + {file = "pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b"}, + {file = "pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11"}, ] [package.dependencies] -colorama = { version = ">=0.4", markers = "sys_platform == \"win32\"" } -iniconfig = ">=1" -packaging = ">=20" +colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} +iniconfig = ">=1.0.1" +packaging = ">=22" pluggy = ">=1.5,<2" pygments = ">=2.7.2" [package.extras] dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] +[[package]] +name = "pytest-cov" +version = "7.0.0" +description = "Pytest plugin for measuring coverage." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861"}, + {file = "pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1"}, +] + +[package.dependencies] +coverage = {version = ">=7.10.6", extras = ["toml"]} +pluggy = ">=1.2" +pytest = ">=7" + +[package.extras] +testing = ["process-tests", "pytest-xdist", "virtualenv"] + [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -3048,142 +1951,116 @@ files = [ six = ">=1.5" [[package]] -name = "python-json-logger" -version = "3.3.0" -description = "JSON Log Formatter for the Python Logging Package" +name = "python-debian" +version = "1.1.0" +description = "Modules to read and manipulate many file formats related to Debian packages and repositories" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" groups = ["dev"] files = [ - { file = "python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7" }, - { file = "python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84" }, + {file = "python_debian-1.1.0-py3-none-any.whl", hash = "sha256:3e553b6d0b886272a26649e13106e33c382bcd21c80b09f5c0c81fc7c8c8c743"}, + {file = "python_debian-1.1.0.tar.gz", hash = "sha256:afe3c7267d81c29c79ab44d803a0756d0796b0e41bb0a05c5cafcdd2b980d4e6"}, ] -[package.extras] -dev = ["backports.zoneinfo ; python_version < \"3.9\"", "black", "build", "freezegun", "mdx_truly_sane_lists", "mike", "mkdocs", "mkdocs-awesome-pages-plugin", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-material (>=8.5)", "mkdocstrings[python]", "msgspec ; implementation_name != \"pypy\"", "mypy", "orjson ; implementation_name != \"pypy\"", "pylint", "pytest", "tzdata", "validate-pyproject[all]"] +[package.dependencies] +charset-normalizer = "*" -[[package]] -name = "pytz" -version = "2025.2" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -groups = ["main"] -files = [ - { file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00" }, - { file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3" }, -] +[package.extras] +test = ["pytest", "pytest-cov"] [[package]] -name = "pywin32" -version = "311" -description = "Python for Window Extensions" +name = "python-magic" +version = "0.4.27" +description = "File type identification using libmagic" optional = false -python-versions = "*" -groups = ["dev"] -markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"" -files = [ - { file = "pywin32-311-cp310-cp310-win32.whl", hash = "sha256:d03ff496d2a0cd4a5893504789d4a15399133fe82517455e78bad62efbb7f0a3" }, - { file = "pywin32-311-cp310-cp310-win_amd64.whl", hash = "sha256:797c2772017851984b97180b0bebe4b620bb86328e8a884bb626156295a63b3b" }, - { file = "pywin32-311-cp310-cp310-win_arm64.whl", hash = "sha256:0502d1facf1fed4839a9a51ccbcc63d952cf318f78ffc00a7e78528ac27d7a2b" }, - { file = "pywin32-311-cp311-cp311-win32.whl", hash = "sha256:184eb5e436dea364dcd3d2316d577d625c0351bf237c4e9a5fabbcfa5a58b151" }, - { file = "pywin32-311-cp311-cp311-win_amd64.whl", hash = "sha256:3ce80b34b22b17ccbd937a6e78e7225d80c52f5ab9940fe0506a1a16f3dab503" }, - { file = "pywin32-311-cp311-cp311-win_arm64.whl", hash = "sha256:a733f1388e1a842abb67ffa8e7aad0e70ac519e09b0f6a784e65a136ec7cefd2" }, - { file = "pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31" }, - { file = "pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067" }, - { file = "pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852" }, - { file = "pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d" }, - { file = "pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d" }, - { file = "pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a" }, - { file = "pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee" }, - { file = "pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87" }, - { file = "pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42" }, - { file = "pywin32-311-cp38-cp38-win32.whl", hash = "sha256:6c6f2969607b5023b0d9ce2541f8d2cbb01c4f46bc87456017cf63b73f1e2d8c" }, - { file = "pywin32-311-cp38-cp38-win_amd64.whl", hash = "sha256:c8015b09fb9a5e188f83b7b04de91ddca4658cee2ae6f3bc483f0b21a77ef6cd" }, - { file = "pywin32-311-cp39-cp39-win32.whl", hash = "sha256:aba8f82d551a942cb20d4a83413ccbac30790b50efb89a75e4f586ac0bb8056b" }, - { file = "pywin32-311-cp39-cp39-win_amd64.whl", hash = "sha256:e0c4cfb0621281fe40387df582097fd796e80430597cb9944f0ae70447bacd91" }, - { file = "pywin32-311-cp39-cp39-win_arm64.whl", hash = "sha256:62ea666235135fee79bb154e695f3ff67370afefd71bd7fea7512fc70ef31e3d" }, -] - -[[package]] -name = "pywinpty" -version = "2.0.15" -description = "Pseudo terminal support for Windows from Python." -optional = false -python-versions = ">=3.9" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" groups = ["dev"] -markers = "os_name == \"nt\"" files = [ - { file = "pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e" }, - { file = "pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca" }, - { file = "pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc" }, - { file = "pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408" }, - { file = "pywinpty-2.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:a4560ad8c01e537708d2790dbe7da7d986791de805d89dd0d3697ca59e9e4901" }, - { file = "pywinpty-2.0.15-cp39-cp39-win_amd64.whl", hash = "sha256:d261cd88fcd358cfb48a7ca0700db3e1c088c9c10403c9ebc0d8a8b57aa6a117" }, - { file = "pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2" }, + {file = "python-magic-0.4.27.tar.gz", hash = "sha256:c1ba14b08e4a5f5c31a302b7721239695b2f0f058d125bd5ce1ee36b9d9d3c3b"}, + {file = "python_magic-0.4.27-py2.py3-none-any.whl", hash = "sha256:c212960ad306f700aa0d01e5d7a325d20548ff97eb9920dcd29513174f0294d3"}, ] [[package]] name = "pyyaml" -version = "6.0.2" +version = "6.0.3" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, + {file = "PyYAML-6.0.3-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:c2514fceb77bc5e7a2f7adfaa1feb2fb311607c9cb518dbc378688ec73d8292f"}, + {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c57bb8c96f6d1808c030b1687b9b5fb476abaa47f0db9c0101f5e9f394e97f4"}, + {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:efd7b85f94a6f21e4932043973a7ba2613b059c4a000551892ac9f1d11f5baf3"}, + {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22ba7cfcad58ef3ecddc7ed1db3409af68d023b7f940da23c6c2a1890976eda6"}, + {file = "PyYAML-6.0.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:6344df0d5755a2c9a276d4473ae6b90647e216ab4757f8426893b5dd2ac3f369"}, + {file = "PyYAML-6.0.3-cp38-cp38-win32.whl", hash = "sha256:3ff07ec89bae51176c0549bc4c63aa6202991da2d9a6129d7aef7f1407d3f295"}, + {file = "PyYAML-6.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:5cf4e27da7e3fbed4d6c3d8e797387aaad68102272f8f9752883bc32d61cb87b"}, + {file = "pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b"}, + {file = "pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956"}, + {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8"}, + {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198"}, + {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b"}, + {file = "pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0"}, + {file = "pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69"}, + {file = "pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e"}, + {file = "pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c"}, + {file = "pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e"}, + {file = "pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824"}, + {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c"}, + {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00"}, + {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d"}, + {file = "pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a"}, + {file = "pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4"}, + {file = "pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b"}, + {file = "pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf"}, + {file = "pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196"}, + {file = "pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0"}, + {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28"}, + {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c"}, + {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc"}, + {file = "pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e"}, + {file = "pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea"}, + {file = "pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5"}, + {file = "pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b"}, + {file = "pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd"}, + {file = "pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8"}, + {file = "pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1"}, + {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c"}, + {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5"}, + {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6"}, + {file = "pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6"}, + {file = "pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be"}, + {file = "pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26"}, + {file = "pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c"}, + {file = "pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb"}, + {file = "pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac"}, + {file = "pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310"}, + {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7"}, + {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788"}, + {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5"}, + {file = "pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764"}, + {file = "pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35"}, + {file = "pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac"}, + {file = "pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3"}, + {file = "pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3"}, + {file = "pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba"}, + {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c"}, + {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702"}, + {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c"}, + {file = "pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065"}, + {file = "pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65"}, + {file = "pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9"}, + {file = "pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b"}, + {file = "pyyaml-6.0.3-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:b865addae83924361678b652338317d1bd7e79b1f4596f96b96c77a5a34b34da"}, + {file = "pyyaml-6.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c3355370a2c156cffb25e876646f149d5d68f5e0a3ce86a5084dd0b64a994917"}, + {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3c5677e12444c15717b902a5798264fa7909e41153cdf9ef7ad571b704a63dd9"}, + {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5ed875a24292240029e4483f9d4a4b8a1ae08843b9c54f43fcc11e404532a8a5"}, + {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0150219816b6a1fa26fb4699fb7daa9caf09eb1999f3b70fb6e786805e80375a"}, + {file = "pyyaml-6.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926"}, + {file = "pyyaml-6.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:27c0abcb4a5dac13684a37f76e701e054692a9b2d3064b70f5e4eb54810553d7"}, + {file = "pyyaml-6.0.3-cp39-cp39-win32.whl", hash = "sha256:1ebe39cb5fc479422b83de611d14e2c0d3bb2a18bbcb01f229ab3cfbd8fee7a0"}, + {file = "pyyaml-6.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:2e71d11abed7344e42a8849600193d15b6def118602c4c176f748e4583246007"}, + {file = "pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f"}, ] [[package]] @@ -3194,131 +2071,23 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04" }, - { file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff" }, + {file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04"}, + {file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff"}, ] [package.dependencies] pyyaml = "*" -[[package]] -name = "pyzmq" -version = "27.0.0" -description = "Python bindings for 0MQ" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "pyzmq-27.0.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:b973ee650e8f442ce482c1d99ca7ab537c69098d53a3d046676a484fd710c87a" }, - { file = "pyzmq-27.0.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:661942bc7cd0223d569d808f2e5696d9cc120acc73bf3e88a1f1be7ab648a7e4" }, - { file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50360fb2a056ffd16e5f4177eee67f1dd1017332ea53fb095fe7b5bf29c70246" }, - { file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf209a6dc4b420ed32a7093642843cbf8703ed0a7d86c16c0b98af46762ebefb" }, - { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c2dace4a7041cca2fba5357a2d7c97c5effdf52f63a1ef252cfa496875a3762d" }, - { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:63af72b2955fc77caf0a77444baa2431fcabb4370219da38e1a9f8d12aaebe28" }, - { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e8c4adce8e37e75c4215297d7745551b8dcfa5f728f23ce09bf4e678a9399413" }, - { file = "pyzmq-27.0.0-cp310-cp310-win32.whl", hash = "sha256:5d5ef4718ecab24f785794e0e7536436698b459bfbc19a1650ef55280119d93b" }, - { file = "pyzmq-27.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:e40609380480b3d12c30f841323f42451c755b8fece84235236f5fe5ffca8c1c" }, - { file = "pyzmq-27.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:6b0397b0be277b46762956f576e04dc06ced265759e8c2ff41a0ee1aa0064198" }, - { file = "pyzmq-27.0.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:21457825249b2a53834fa969c69713f8b5a79583689387a5e7aed880963ac564" }, - { file = "pyzmq-27.0.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1958947983fef513e6e98eff9cb487b60bf14f588dc0e6bf35fa13751d2c8251" }, - { file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0dc628b5493f9a8cd9844b8bee9732ef587ab00002157c9329e4fc0ef4d3afa" }, - { file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7bbe9e1ed2c8d3da736a15694d87c12493e54cc9dc9790796f0321794bbc91f" }, - { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dc1091f59143b471d19eb64f54bae4f54bcf2a466ffb66fe45d94d8d734eb495" }, - { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7011ade88c8e535cf140f8d1a59428676fbbce7c6e54fefce58bf117aefb6667" }, - { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2c386339d7e3f064213aede5d03d054b237937fbca6dd2197ac8cf3b25a6b14e" }, - { file = "pyzmq-27.0.0-cp311-cp311-win32.whl", hash = "sha256:0546a720c1f407b2172cb04b6b094a78773491497e3644863cf5c96c42df8cff" }, - { file = "pyzmq-27.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:15f39d50bd6c9091c67315ceb878a4f531957b121d2a05ebd077eb35ddc5efed" }, - { file = "pyzmq-27.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c5817641eebb391a2268c27fecd4162448e03538387093cdbd8bf3510c316b38" }, - { file = "pyzmq-27.0.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:cbabc59dcfaac66655c040dfcb8118f133fb5dde185e5fc152628354c1598e52" }, - { file = "pyzmq-27.0.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0ac5179cba4b2f94f1aa208fbb77b62c4c9bf24dd446278b8b602cf85fcda3" }, - { file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53a48f0228eab6cbf69fde3aa3c03cbe04e50e623ef92ae395fce47ef8a76152" }, - { file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:111db5f395e09f7e775f759d598f43cb815fc58e0147623c4816486e1a39dc22" }, - { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c8878011653dcdc27cc2c57e04ff96f0471e797f5c19ac3d7813a245bcb24371" }, - { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:c0ed2c1f335ba55b5fdc964622254917d6b782311c50e138863eda409fbb3b6d" }, - { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e918d70862d4cfd4b1c187310015646a14e1f5917922ab45b29f28f345eeb6be" }, - { file = "pyzmq-27.0.0-cp312-abi3-win32.whl", hash = "sha256:88b4e43cab04c3c0f0d55df3b1eef62df2b629a1a369b5289a58f6fa8b07c4f4" }, - { file = "pyzmq-27.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:dce4199bf5f648a902ce37e7b3afa286f305cd2ef7a8b6ec907470ccb6c8b371" }, - { file = "pyzmq-27.0.0-cp312-abi3-win_arm64.whl", hash = "sha256:56e46bbb85d52c1072b3f809cc1ce77251d560bc036d3a312b96db1afe76db2e" }, - { file = "pyzmq-27.0.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c36ad534c0c29b4afa088dc53543c525b23c0797e01b69fef59b1a9c0e38b688" }, - { file = "pyzmq-27.0.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:67855c14173aec36395d7777aaba3cc527b393821f30143fd20b98e1ff31fd38" }, - { file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8617c7d43cd8ccdb62aebe984bfed77ca8f036e6c3e46dd3dddda64b10f0ab7a" }, - { file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67bfbcbd0a04c575e8103a6061d03e393d9f80ffdb9beb3189261e9e9bc5d5e9" }, - { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5cd11d46d7b7e5958121b3eaf4cd8638eff3a720ec527692132f05a57f14341d" }, - { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b801c2e40c5aa6072c2f4876de8dccd100af6d9918d4d0d7aa54a1d982fd4f44" }, - { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20d5cb29e8c5f76a127c75b6e7a77e846bc4b655c373baa098c26a61b7ecd0ef" }, - { file = "pyzmq-27.0.0-cp313-cp313t-win32.whl", hash = "sha256:a20528da85c7ac7a19b7384e8c3f8fa707841fd85afc4ed56eda59d93e3d98ad" }, - { file = "pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f" }, - { file = "pyzmq-27.0.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:f4162dbbd9c5c84fb930a36f290b08c93e35fce020d768a16fc8891a2f72bab8" }, - { file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:4e7d0a8d460fba526cc047333bdcbf172a159b8bd6be8c3eb63a416ff9ba1477" }, - { file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:29f44e3c26b9783816ba9ce274110435d8f5b19bbd82f7a6c7612bb1452a3597" }, - { file = "pyzmq-27.0.0-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e435540fa1da54667f0026cf1e8407fe6d8a11f1010b7f06b0b17214ebfcf5e" }, - { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:51f5726de3532b8222e569990c8aa34664faa97038304644679a51d906e60c6e" }, - { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:42c7555123679637c99205b1aa9e8f7d90fe29d4c243c719e347d4852545216c" }, - { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a979b7cf9e33d86c4949df527a3018767e5f53bc3b02adf14d4d8db1db63ccc0" }, - { file = "pyzmq-27.0.0-cp38-cp38-win32.whl", hash = "sha256:26b72c5ae20bf59061c3570db835edb81d1e0706ff141747055591c4b41193f8" }, - { file = "pyzmq-27.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:55a0155b148fe0428285a30922f7213539aa84329a5ad828bca4bbbc665c70a4" }, - { file = "pyzmq-27.0.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:100f6e5052ba42b2533011d34a018a5ace34f8cac67cb03cfa37c8bdae0ca617" }, - { file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:bf6c6b061efd00404b9750e2cfbd9507492c8d4b3721ded76cb03786131be2ed" }, - { file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ee05728c0b0b2484a9fc20466fa776fffb65d95f7317a3419985b8c908563861" }, - { file = "pyzmq-27.0.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7cdf07fe0a557b131366f80727ec8ccc4b70d89f1e3f920d94a594d598d754f0" }, - { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:90252fa2ff3a104219db1f5ced7032a7b5fc82d7c8d2fec2b9a3e6fd4e25576b" }, - { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ea6d441c513bf18c578c73c323acf7b4184507fc244762193aa3a871333c9045" }, - { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ae2b34bcfaae20c064948a4113bf8709eee89fd08317eb293ae4ebd69b4d9740" }, - { file = "pyzmq-27.0.0-cp39-cp39-win32.whl", hash = "sha256:5b10bd6f008937705cf6e7bf8b6ece5ca055991e3eb130bca8023e20b86aa9a3" }, - { file = "pyzmq-27.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:00387d12a8af4b24883895f7e6b9495dc20a66027b696536edac35cb988c38f3" }, - { file = "pyzmq-27.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:4c19d39c04c29a6619adfeb19e3735c421b3bfee082f320662f52e59c47202ba" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:656c1866505a5735d0660b7da6d7147174bbf59d4975fc2b7f09f43c9bc25745" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:74175b9e12779382432dd1d1f5960ebe7465d36649b98a06c6b26be24d173fab" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8c6de908465697a8708e4d6843a1e884f567962fc61eb1706856545141d0cbb" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c644aaacc01d0df5c7072826df45e67301f191c55f68d7b2916d83a9ddc1b551" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:10f70c1d9a446a85013a36871a296007f6fe4232b530aa254baf9da3f8328bc0" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd1dc59763effd1576f8368047c9c31468fce0af89d76b5067641137506792ae" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:60e8cc82d968174650c1860d7b716366caab9973787a1c060cf8043130f7d0f7" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:14fe7aaac86e4e93ea779a821967360c781d7ac5115b3f1a171ced77065a0174" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6ad0562d4e6abb785be3e4dd68599c41be821b521da38c402bc9ab2a8e7ebc7e" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:9df43a2459cd3a3563404c1456b2c4c69564daa7dbaf15724c09821a3329ce46" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8c86ea8fe85e2eb0ffa00b53192c401477d5252f6dd1db2e2ed21c1c30d17e5e" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:c45fee3968834cd291a13da5fac128b696c9592a9493a0f7ce0b47fa03cc574d" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cae73bb6898c4e045fbed5024cb587e4110fddb66f6163bcab5f81f9d4b9c496" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:26d542258c7a1f35a9cff3d887687d3235006134b0ac1c62a6fe1ad3ac10440e" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:04cd50ef3b28e35ced65740fb9956a5b3f77a6ff32fcd887e3210433f437dd0f" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:39ddd3ba0a641f01d8f13a3cfd4c4924eb58e660d8afe87e9061d6e8ca6f7ac3" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:8ca7e6a0388dd9e1180b14728051068f4efe83e0d2de058b5ff92c63f399a73f" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2524c40891be6a3106885a3935d58452dd83eb7a5742a33cc780a1ad4c49dec0" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a56e3e5bd2d62a01744fd2f1ce21d760c7c65f030e9522738d75932a14ab62a" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:096af9e133fec3a72108ddefba1e42985cb3639e9de52cfd336b6fc23aa083e9" }, - { file = "pyzmq-27.0.0.tar.gz", hash = "sha256:b1f08eeb9ce1510e6939b6e5dcd46a17765e2333daae78ecf4606808442e52cf" }, -] - -[package.dependencies] -cffi = {version = "*", markers = "implementation_name == \"pypy\""} - -[[package]] -name = "referencing" -version = "0.36.2" -description = "JSON Referencing + Python" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0" }, - { file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa" }, -] - -[package.dependencies] -attrs = ">=22.2.0" -rpds-py = ">=0.7.0" - [[package]] name = "requests" -version = "2.32.4" +version = "2.32.5" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c" }, - { file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422" }, + {file = "requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6"}, + {file = "requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"}, ] [package.dependencies] @@ -3332,269 +2101,132 @@ socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] -name = "rfc3339-validator" -version = "0.1.4" -description = "A pure python RFC3339 validator" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["dev"] -files = [ - {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, - {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "rfc3986-validator" -version = "0.1.1" -description = "Pure python rfc3986 validator" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["dev"] -files = [ - {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, - {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, -] - -[[package]] -name = "rfc3987-syntax" -version = "1.1.0" -description = "Helper functions to syntactically validate strings according to RFC 3987." +name = "reuse" +version = "6.2.0" +description = "reuse is a tool for compliance with the REUSE recommendations." optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ - { file = "rfc3987_syntax-1.1.0-py3-none-any.whl", hash = "sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f" }, - { file = "rfc3987_syntax-1.1.0.tar.gz", hash = "sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d" }, + {file = "reuse-6.2.0-cp310-cp310-manylinux_2_41_x86_64.whl", hash = "sha256:12b68549bb9d5f4957f06d726a83a9780628810008fb732bb0d0f21607f8c6d6"}, + {file = "reuse-6.2.0.tar.gz", hash = "sha256:4feae057a2334c9a513e6933cdb9be819d8b822f3b5b435a36138bd218897d23"}, ] [package.dependencies] -lark = ">=1.2.2" +attrs = ">=23.2" +click = ">=8.1" +Jinja2 = ">=3.0.0" +license-expression = ">=21.6.14" +python-debian = ">=0.1.48" +python-magic = ">=0.4.12" +tomlkit = ">=0.8" [package.extras] -testing = ["pytest (>=8.3.5)"] - -[[package]] -name = "rpds-py" -version = "0.26.0" -description = "Python bindings to Rust's persistent data structures (rpds)" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "rpds_py-0.26.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4c70c70f9169692b36307a95f3d8c0a9fcd79f7b4a383aad5eaa0e9718b79b37" }, - { file = "rpds_py-0.26.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:777c62479d12395bfb932944e61e915741e364c843afc3196b694db3d669fcd0" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec671691e72dff75817386aa02d81e708b5a7ec0dec6669ec05213ff6b77e1bd" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a1cb5d6ce81379401bbb7f6dbe3d56de537fb8235979843f0d53bc2e9815a79" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f789e32fa1fb6a7bf890e0124e7b42d1e60d28ebff57fe806719abb75f0e9a3" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c55b0a669976cf258afd718de3d9ad1b7d1fe0a91cd1ab36f38b03d4d4aeaaf" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c70d9ec912802ecfd6cd390dadb34a9578b04f9bcb8e863d0a7598ba5e9e7ccc" }, - { file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3021933c2cb7def39d927b9862292e0f4c75a13d7de70eb0ab06efed4c508c19" }, - { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8a7898b6ca3b7d6659e55cdac825a2e58c638cbf335cde41f4619e290dd0ad11" }, - { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:12bff2ad9447188377f1b2794772f91fe68bb4bbfa5a39d7941fbebdbf8c500f" }, - { file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:191aa858f7d4902e975d4cf2f2d9243816c91e9605070aeb09c0a800d187e323" }, - { file = "rpds_py-0.26.0-cp310-cp310-win32.whl", hash = "sha256:b37a04d9f52cb76b6b78f35109b513f6519efb481d8ca4c321f6a3b9580b3f45" }, - { file = "rpds_py-0.26.0-cp310-cp310-win_amd64.whl", hash = "sha256:38721d4c9edd3eb6670437d8d5e2070063f305bfa2d5aa4278c51cedcd508a84" }, - { file = "rpds_py-0.26.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9e8cb77286025bdb21be2941d64ac6ca016130bfdcd228739e8ab137eb4406ed" }, - { file = "rpds_py-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e09330b21d98adc8ccb2dbb9fc6cb434e8908d4c119aeaa772cb1caab5440a0" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9c1b92b774b2e68d11193dc39620d62fd8ab33f0a3c77ecdabe19c179cdbc1" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:824e6d3503ab990d7090768e4dfd9e840837bae057f212ff9f4f05ec6d1975e7" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ad7fd2258228bf288f2331f0a6148ad0186b2e3643055ed0db30990e59817a6" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dc23bbb3e06ec1ea72d515fb572c1fea59695aefbffb106501138762e1e915e" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d80bf832ac7b1920ee29a426cdca335f96a2b5caa839811803e999b41ba9030d" }, - { file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0919f38f5542c0a87e7b4afcafab6fd2c15386632d249e9a087498571250abe3" }, - { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d422b945683e409000c888e384546dbab9009bb92f7c0b456e217988cf316107" }, - { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a7711fa562ba2da1aa757e11024ad6d93bad6ad7ede5afb9af144623e5f76a" }, - { file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238e8c8610cb7c29460e37184f6799547f7e09e6a9bdbdab4e8edb90986a2318" }, - { file = "rpds_py-0.26.0-cp311-cp311-win32.whl", hash = "sha256:893b022bfbdf26d7bedb083efeea624e8550ca6eb98bf7fea30211ce95b9201a" }, - { file = "rpds_py-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:87a5531de9f71aceb8af041d72fc4cab4943648d91875ed56d2e629bef6d4c03" }, - { file = "rpds_py-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:de2713f48c1ad57f89ac25b3cb7daed2156d8e822cf0eca9b96a6f990718cc41" }, - { file = "rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d" }, - { file = "rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a" }, - { file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323" }, - { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158" }, - { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3" }, - { file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2" }, - { file = "rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44" }, - { file = "rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c" }, - { file = "rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8" }, - { file = "rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d" }, - { file = "rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04" }, - { file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1" }, - { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9" }, - { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9" }, - { file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba" }, - { file = "rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b" }, - { file = "rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5" }, - { file = "rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256" }, - { file = "rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618" }, - { file = "rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f" }, - { file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed" }, - { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632" }, - { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c" }, - { file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0" }, - { file = "rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9" }, - { file = "rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9" }, - { file = "rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a" }, - { file = "rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246" }, - { file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387" }, - { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af" }, - { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33" }, - { file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953" }, - { file = "rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9" }, - { file = "rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37" }, - { file = "rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867" }, - { file = "rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da" }, - { file = "rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8" }, - { file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b" }, - { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a" }, - { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170" }, - { file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e" }, - { file = "rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f" }, - { file = "rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7" }, - { file = "rpds_py-0.26.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:7a48af25d9b3c15684059d0d1fc0bc30e8eee5ca521030e2bffddcab5be40226" }, - { file = "rpds_py-0.26.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0c71c2f6bf36e61ee5c47b2b9b5d47e4d1baad6426bfed9eea3e858fc6ee8806" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d815d48b1804ed7867b539236b6dd62997850ca1c91cad187f2ddb1b7bbef19" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84cfbd4d4d2cdeb2be61a057a258d26b22877266dd905809e94172dff01a42ae" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fbaa70553ca116c77717f513e08815aec458e6b69a028d4028d403b3bc84ff37" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39bfea47c375f379d8e87ab4bb9eb2c836e4f2069f0f65731d85e55d74666387" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1533b7eb683fb5f38c1d68a3c78f5fdd8f1412fa6b9bf03b40f450785a0ab915" }, - { file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c5ab0ee51f560d179b057555b4f601b7df909ed31312d301b99f8b9fc6028284" }, - { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e5162afc9e0d1f9cae3b577d9c29ddbab3505ab39012cb794d94a005825bde21" }, - { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:43f10b007033f359bc3fa9cd5e6c1e76723f056ffa9a6b5c117cc35720a80292" }, - { file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e3730a48e5622e598293eee0762b09cff34dd3f271530f47b0894891281f051d" }, - { file = "rpds_py-0.26.0-cp39-cp39-win32.whl", hash = "sha256:4b1f66eb81eab2e0ff5775a3a312e5e2e16bf758f7b06be82fb0d04078c7ac51" }, - { file = "rpds_py-0.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:519067e29f67b5c90e64fb1a6b6e9d2ec0ba28705c51956637bac23a2f4ddae1" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3c0909c5234543ada2515c05dc08595b08d621ba919629e94427e8e03539c958" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c1fb0cda2abcc0ac62f64e2ea4b4e64c57dfd6b885e693095460c61bde7bb18e" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84d142d2d6cf9b31c12aa4878d82ed3b2324226270b89b676ac62ccd7df52d08" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a547e21c5610b7e9093d870be50682a6a6cf180d6da0f42c47c306073bfdbbf6" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:35e9a70a0f335371275cdcd08bc5b8051ac494dd58bff3bbfb421038220dc871" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dfa6115c6def37905344d56fb54c03afc49104e2ca473d5dedec0f6606913b4" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:313cfcd6af1a55a286a3c9a25f64af6d0e46cf60bc5798f1db152d97a216ff6f" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f7bf2496fa563c046d05e4d232d7b7fd61346e2402052064b773e5c378bf6f73" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:aa81873e2c8c5aa616ab8e017a481a96742fdf9313c40f14338ca7dbf50cb55f" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:68ffcf982715f5b5b7686bdd349ff75d422e8f22551000c24b30eaa1b7f7ae84" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6188de70e190847bb6db3dc3981cbadff87d27d6fe9b4f0e18726d55795cee9b" }, - { file = "rpds_py-0.26.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1c962145c7473723df9722ba4c058de12eb5ebedcb4e27e7d902920aa3831ee8" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f61a9326f80ca59214d1cceb0a09bb2ece5b2563d4e0cd37bfd5515c28510674" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:183f857a53bcf4b1b42ef0f57ca553ab56bdd170e49d8091e96c51c3d69ca696" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:941c1cfdf4799d623cf3aa1d326a6b4fdb7a5799ee2687f3516738216d2262fb" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72a8d9564a717ee291f554eeb4bfeafe2309d5ec0aa6c475170bdab0f9ee8e88" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:511d15193cbe013619dd05414c35a7dedf2088fcee93c6bbb7c77859765bd4e8" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aea1f9741b603a8d8fedb0ed5502c2bc0accbc51f43e2ad1337fe7259c2b77a5" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4019a9d473c708cf2f16415688ef0b4639e07abaa569d72f74745bbeffafa2c7" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:093d63b4b0f52d98ebae33b8c50900d3d67e0666094b1be7a12fffd7f65de74b" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2abe21d8ba64cded53a2a677e149ceb76dcf44284202d737178afe7ba540c1eb" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:4feb7511c29f8442cbbc28149a92093d32e815a28aa2c50d333826ad2a20fdf0" }, - { file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e99685fc95d386da368013e7fb4269dd39c30d99f812a8372d62f244f662709c" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a90a13408a7a856b87be8a9f008fff53c5080eea4e4180f6c2e546e4a972fb5d" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ac51b65e8dc76cf4949419c54c5528adb24fc721df722fd452e5fbc236f5c40" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59b2093224a18c6508d95cfdeba8db9cbfd6f3494e94793b58972933fcee4c6d" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f01a5d6444a3258b00dc07b6ea4733e26f8072b788bef750baa37b370266137" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6e2c12160c72aeda9d1283e612f68804621f448145a210f1bf1d79151c47090" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb28c1f569f8d33b2b5dcd05d0e6ef7005d8639c54c2f0be824f05aedf715255" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1766b5724c3f779317d5321664a343c07773c8c5fd1532e4039e6cc7d1a815be" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b6d9e5a2ed9c4988c8f9b28b3bc0e3e5b1aaa10c28d210a594ff3a8c02742daf" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b5f7a446ddaf6ca0fad9a5535b56fbfc29998bf0e0b450d174bbec0d600e1d72" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:eed5ac260dd545fbc20da5f4f15e7efe36a55e0e7cf706e4ec005b491a9546a0" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:582462833ba7cee52e968b0341b85e392ae53d44c0f9af6a5927c80e539a8b67" }, - { file = "rpds_py-0.26.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:69a607203441e07e9a8a529cff1d5b73f6a160f22db1097211e6212a68567d11" }, - { file = "rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0" }, -] +chardet = ["chardet (>=3.0.2)"] +charset-normalizer = ["charset-normalizer (>=2.0.5)"] +file-magic = ["file-magic (>=0.4.1)"] [[package]] name = "ruff" -version = "0.12.4" +version = "0.15.2" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - { file = "ruff-0.12.4-py3-none-linux_armv6l.whl", hash = "sha256:cb0d261dac457ab939aeb247e804125a5d521b21adf27e721895b0d3f83a0d0a" }, - { file = "ruff-0.12.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:55c0f4ca9769408d9b9bac530c30d3e66490bd2beb2d3dae3e4128a1f05c7442" }, - { file = "ruff-0.12.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a8224cc3722c9ad9044da7f89c4c1ec452aef2cfe3904365025dd2f51daeae0e" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9949d01d64fa3672449a51ddb5d7548b33e130240ad418884ee6efa7a229586" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:be0593c69df9ad1465e8a2d10e3defd111fdb62dcd5be23ae2c06da77e8fcffb" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7dea966bcb55d4ecc4cc3270bccb6f87a337326c9dcd3c07d5b97000dbff41c" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:afcfa3ab5ab5dd0e1c39bf286d829e042a15e966b3726eea79528e2e24d8371a" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c057ce464b1413c926cdb203a0f858cd52f3e73dcb3270a3318d1630f6395bb3" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e64b90d1122dc2713330350626b10d60818930819623abbb56535c6466cce045" }, - { file = "ruff-0.12.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2abc48f3d9667fdc74022380b5c745873499ff827393a636f7a59da1515e7c57" }, - { file = "ruff-0.12.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2b2449dc0c138d877d629bea151bee8c0ae3b8e9c43f5fcaafcd0c0d0726b184" }, - { file = "ruff-0.12.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:56e45bb11f625db55f9b70477062e6a1a04d53628eda7784dce6e0f55fd549eb" }, - { file = "ruff-0.12.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:478fccdb82ca148a98a9ff43658944f7ab5ec41c3c49d77cd99d44da019371a1" }, - { file = "ruff-0.12.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0fc426bec2e4e5f4c4f182b9d2ce6a75c85ba9bcdbe5c6f2a74fcb8df437df4b" }, - { file = "ruff-0.12.4-py3-none-win32.whl", hash = "sha256:4de27977827893cdfb1211d42d84bc180fceb7b72471104671c59be37041cf93" }, - { file = "ruff-0.12.4-py3-none-win_amd64.whl", hash = "sha256:fe0b9e9eb23736b453143d72d2ceca5db323963330d5b7859d60d101147d461a" }, - { file = "ruff-0.12.4-py3-none-win_arm64.whl", hash = "sha256:0618ec4442a83ab545e5b71202a5c0ed7791e8471435b94e655b570a5031a98e" }, - { file = "ruff-0.12.4.tar.gz", hash = "sha256:13efa16df6c6eeb7d0f091abae50f58e9522f3843edb40d56ad52a5a4a4b6873" }, -] - -[[package]] -name = "send2trash" -version = "1.8.3" -description = "Send file to trash natively under Mac OS X, Windows and Linux" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -groups = ["dev"] -files = [ - {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, - {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, + {file = "ruff-0.15.2-py3-none-linux_armv6l.whl", hash = "sha256:120691a6fdae2f16d65435648160f5b81a9625288f75544dc40637436b5d3c0d"}, + {file = "ruff-0.15.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:a89056d831256099658b6bba4037ac6dd06f49d194199215befe2bb10457ea5e"}, + {file = "ruff-0.15.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e36dee3a64be0ebd23c86ffa3aa3fd3ac9a712ff295e192243f814a830b6bd87"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9fb47b6d9764677f8c0a193c0943ce9a05d6763523f132325af8a858eadc2b9"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f376990f9d0d6442ea9014b19621d8f2aaf2b8e39fdbfc79220b7f0c596c9b80"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2dcc987551952d73cbf5c88d9fdee815618d497e4df86cd4c4824cc59d5dd75f"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:42a47fd785cbe8c01b9ff45031af875d101b040ad8f4de7bbb716487c74c9a77"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cbe9f49354866e575b4c6943856989f966421870e85cd2ac94dccb0a9dcb2fea"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7a672c82b5f9887576087d97be5ce439f04bbaf548ee987b92d3a7dede41d3a"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:72ecc64f46f7019e2bcc3cdc05d4a7da958b629a5ab7033195e11a438403d956"}, + {file = "ruff-0.15.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:8dcf243b15b561c655c1ef2f2b0050e5d50db37fe90115507f6ff37d865dc8b4"}, + {file = "ruff-0.15.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:dab6941c862c05739774677c6273166d2510d254dac0695c0e3f5efa1b5585de"}, + {file = "ruff-0.15.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:1b9164f57fc36058e9a6806eb92af185b0697c9fe4c7c52caa431c6554521e5c"}, + {file = "ruff-0.15.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:80d24fcae24d42659db7e335b9e1531697a7102c19185b8dc4a028b952865fd8"}, + {file = "ruff-0.15.2-py3-none-win32.whl", hash = "sha256:fd5ff9e5f519a7e1bd99cbe8daa324010a74f5e2ebc97c6242c08f26f3714f6f"}, + {file = "ruff-0.15.2-py3-none-win_amd64.whl", hash = "sha256:d20014e3dfa400f3ff84830dfb5755ece2de45ab62ecea4af6b7262d0fb4f7c5"}, + {file = "ruff-0.15.2-py3-none-win_arm64.whl", hash = "sha256:cabddc5822acdc8f7b5527b36ceac55cc51eec7b1946e60181de8fe83ca8876e"}, + {file = "ruff-0.15.2.tar.gz", hash = "sha256:14b965afee0969e68bb871eba625343b8673375f457af4abe98553e8bbb98342"}, ] -[package.extras] -nativelib = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\"", "pywin32 ; sys_platform == \"win32\""] -objc = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\""] -win32 = ["pywin32 ; sys_platform == \"win32\""] - [[package]] -name = "setuptools" -version = "80.9.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" +name = "shapely" +version = "2.1.2" +description = "Manipulation and analysis of geometric objects" optional = false -python-versions = ">=3.9" -groups = ["dev"] +python-versions = ">=3.10" +groups = ["main"] files = [ - { file = "setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922" }, - { file = "setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c" }, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.8.0) ; sys_platform != \"cygwin\""] -core = ["importlib_metadata (>=6) ; python_version < \"3.10\"", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.14.*)", "pytest-mypy"] + {file = "shapely-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7ae48c236c0324b4e139bea88a306a04ca630f49be66741b340729d380d8f52f"}, + {file = "shapely-2.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eba6710407f1daa8e7602c347dfc94adc02205ec27ed956346190d66579eb9ea"}, + {file = "shapely-2.1.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ef4a456cc8b7b3d50ccec29642aa4aeda959e9da2fe9540a92754770d5f0cf1f"}, + {file = "shapely-2.1.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e38a190442aacc67ff9f75ce60aec04893041f16f97d242209106d502486a142"}, + {file = "shapely-2.1.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:40d784101f5d06a1fd30b55fc11ea58a61be23f930d934d86f19a180909908a4"}, + {file = "shapely-2.1.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f6f6cd5819c50d9bcf921882784586aab34a4bd53e7553e175dece6db513a6f0"}, + {file = "shapely-2.1.2-cp310-cp310-win32.whl", hash = "sha256:fe9627c39c59e553c90f5bc3128252cb85dc3b3be8189710666d2f8bc3a5503e"}, + {file = "shapely-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:1d0bfb4b8f661b3b4ec3565fa36c340bfb1cda82087199711f86a88647d26b2f"}, + {file = "shapely-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:91121757b0a36c9aac3427a651a7e6567110a4a67c97edf04f8d55d4765f6618"}, + {file = "shapely-2.1.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:16a9c722ba774cf50b5d4541242b4cce05aafd44a015290c82ba8a16931ff63d"}, + {file = "shapely-2.1.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cc4f7397459b12c0b196c9efe1f9d7e92463cbba142632b4cc6d8bbbbd3e2b09"}, + {file = "shapely-2.1.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:136ab87b17e733e22f0961504d05e77e7be8c9b5a8184f685b4a91a84efe3c26"}, + {file = "shapely-2.1.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:16c5d0fc45d3aa0a69074979f4f1928ca2734fb2e0dde8af9611e134e46774e7"}, + {file = "shapely-2.1.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6ddc759f72b5b2b0f54a7e7cde44acef680a55019eb52ac63a7af2cf17cb9cd2"}, + {file = "shapely-2.1.2-cp311-cp311-win32.whl", hash = "sha256:2fa78b49485391224755a856ed3b3bd91c8455f6121fee0db0e71cefb07d0ef6"}, + {file = "shapely-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:c64d5c97b2f47e3cd9b712eaced3b061f2b71234b3fc263e0fcf7d889c6559dc"}, + {file = "shapely-2.1.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fe2533caae6a91a543dec62e8360fe86ffcdc42a7c55f9dfd0128a977a896b94"}, + {file = "shapely-2.1.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ba4d1333cc0bc94381d6d4308d2e4e008e0bd128bdcff5573199742ee3634359"}, + {file = "shapely-2.1.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0bd308103340030feef6c111d3eb98d50dc13feea33affc8a6f9fa549e9458a3"}, + {file = "shapely-2.1.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1e7d4d7ad262a48bb44277ca12c7c78cb1b0f56b32c10734ec9a1d30c0b0c54b"}, + {file = "shapely-2.1.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e9eddfe513096a71896441a7c37db72da0687b34752c4e193577a145c71736fc"}, + {file = "shapely-2.1.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:980c777c612514c0cf99bc8a9de6d286f5e186dcaf9091252fcd444e5638193d"}, + {file = "shapely-2.1.2-cp312-cp312-win32.whl", hash = "sha256:9111274b88e4d7b54a95218e243282709b330ef52b7b86bc6aaf4f805306f454"}, + {file = "shapely-2.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:743044b4cfb34f9a67205cee9279feaf60ba7d02e69febc2afc609047cb49179"}, + {file = "shapely-2.1.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b510dda1a3672d6879beb319bc7c5fd302c6c354584690973c838f46ec3e0fa8"}, + {file = "shapely-2.1.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8cff473e81017594d20ec55d86b54bc635544897e13a7cfc12e36909c5309a2a"}, + {file = "shapely-2.1.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fe7b77dc63d707c09726b7908f575fc04ff1d1ad0f3fb92aec212396bc6cfe5e"}, + {file = "shapely-2.1.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7ed1a5bbfb386ee8332713bf7508bc24e32d24b74fc9a7b9f8529a55db9f4ee6"}, + {file = "shapely-2.1.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a84e0582858d841d54355246ddfcbd1fce3179f185da7470f41ce39d001ee1af"}, + {file = "shapely-2.1.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dc3487447a43d42adcdf52d7ac73804f2312cbfa5d433a7d2c506dcab0033dfd"}, + {file = "shapely-2.1.2-cp313-cp313-win32.whl", hash = "sha256:9c3a3c648aedc9f99c09263b39f2d8252f199cb3ac154fadc173283d7d111350"}, + {file = "shapely-2.1.2-cp313-cp313-win_amd64.whl", hash = "sha256:ca2591bff6645c216695bdf1614fca9c82ea1144d4a7591a466fef64f28f0715"}, + {file = "shapely-2.1.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2d93d23bdd2ed9dc157b46bc2f19b7da143ca8714464249bef6771c679d5ff40"}, + {file = "shapely-2.1.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:01d0d304b25634d60bd7cf291828119ab55a3bab87dc4af1e44b07fb225f188b"}, + {file = "shapely-2.1.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8d8382dd120d64b03698b7298b89611a6ea6f55ada9d39942838b79c9bc89801"}, + {file = "shapely-2.1.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:19efa3611eef966e776183e338b2d7ea43569ae99ab34f8d17c2c054d3205cc0"}, + {file = "shapely-2.1.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:346ec0c1a0fcd32f57f00e4134d1200e14bf3f5ae12af87ba83ca275c502498c"}, + {file = "shapely-2.1.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6305993a35989391bd3476ee538a5c9a845861462327efe00dd11a5c8c709a99"}, + {file = "shapely-2.1.2-cp313-cp313t-win32.whl", hash = "sha256:c8876673449f3401f278c86eb33224c5764582f72b653a415d0e6672fde887bf"}, + {file = "shapely-2.1.2-cp313-cp313t-win_amd64.whl", hash = "sha256:4a44bc62a10d84c11a7a3d7c1c4fe857f7477c3506e24c9062da0db0ae0c449c"}, + {file = "shapely-2.1.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:9a522f460d28e2bf4e12396240a5fc1518788b2fcd73535166d748399ef0c223"}, + {file = "shapely-2.1.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1ff629e00818033b8d71139565527ced7d776c269a49bd78c9df84e8f852190c"}, + {file = "shapely-2.1.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f67b34271dedc3c653eba4e3d7111aa421d5be9b4c4c7d38d30907f796cb30df"}, + {file = "shapely-2.1.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:21952dc00df38a2c28375659b07a3979d22641aeb104751e769c3ee825aadecf"}, + {file = "shapely-2.1.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1f2f33f486777456586948e333a56ae21f35ae273be99255a191f5c1fa302eb4"}, + {file = "shapely-2.1.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:cf831a13e0d5a7eb519e96f58ec26e049b1fad411fc6fc23b162a7ce04d9cffc"}, + {file = "shapely-2.1.2-cp314-cp314-win32.whl", hash = "sha256:61edcd8d0d17dd99075d320a1dd39c0cb9616f7572f10ef91b4b5b00c4aeb566"}, + {file = "shapely-2.1.2-cp314-cp314-win_amd64.whl", hash = "sha256:a444e7afccdb0999e203b976adb37ea633725333e5b119ad40b1ca291ecf311c"}, + {file = "shapely-2.1.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:5ebe3f84c6112ad3d4632b1fd2290665aa75d4cef5f6c5d77c4c95b324527c6a"}, + {file = "shapely-2.1.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5860eb9f00a1d49ebb14e881f5caf6c2cf472c7fd38bd7f253bbd34f934eb076"}, + {file = "shapely-2.1.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b705c99c76695702656327b819c9660768ec33f5ce01fa32b2af62b56ba400a1"}, + {file = "shapely-2.1.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a1fd0ea855b2cf7c9cddaf25543e914dd75af9de08785f20ca3085f2c9ca60b0"}, + {file = "shapely-2.1.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:df90e2db118c3671a0754f38e36802db75fe0920d211a27481daf50a711fdf26"}, + {file = "shapely-2.1.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:361b6d45030b4ac64ddd0a26046906c8202eb60d0f9f53085f5179f1d23021a0"}, + {file = "shapely-2.1.2-cp314-cp314t-win32.whl", hash = "sha256:b54df60f1fbdecc8ebc2c5b11870461a6417b3d617f555e5033f1505d36e5735"}, + {file = "shapely-2.1.2-cp314-cp314t-win_amd64.whl", hash = "sha256:0036ac886e0923417932c2e6369b6c52e38e0ff5d9120b90eef5cd9a5fc5cae9"}, + {file = "shapely-2.1.2.tar.gz", hash = "sha256:2ed4ecb28320a433db18a5bf029986aa8afcfd740745e78847e330d5d94922a9"}, +] + +[package.dependencies] +numpy = ">=1.21" + +[package.extras] +docs = ["matplotlib", "numpydoc (==1.1.*)", "sphinx", "sphinx-book-theme", "sphinx-remove-toctrees"] +test = ["pytest", "pytest-cov", "scipy-doctest"] [[package]] name = "six" @@ -3604,179 +2236,71 @@ optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" groups = ["main", "dev"] files = [ - { file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274" }, - { file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" }, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - -[[package]] -name = "soupsieve" -version = "2.7" -description = "A modern CSS selector implementation for Beautiful Soup." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4" }, - { file = "soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a" }, -] - -[[package]] -name = "stack-data" -version = "0.6.3" -description = "Extract data from python stack frames and tracebacks for informative displays" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, - {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, -] - -[package.dependencies] -asttokens = ">=2.1.0" -executing = ">=1.2.0" -pure-eval = "*" - -[package.extras] -tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] - -[[package]] -name = "terminado" -version = "0.18.1" -description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, - {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] -[package.dependencies] -ptyprocess = {version = "*", markers = "os_name != \"nt\""} -pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""} -tornado = ">=6.1.0" - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"] -typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"] - [[package]] -name = "tinycss2" -version = "1.4.0" -description = "A tiny CSS parser" +name = "tomlkit" +version = "0.14.0" +description = "Style preserving TOML library" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, - {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, + {file = "tomlkit-0.14.0-py3-none-any.whl", hash = "sha256:592064ed85b40fa213469f81ac584f67a4f2992509a7c3ea2d632208623a3680"}, + {file = "tomlkit-0.14.0.tar.gz", hash = "sha256:cf00efca415dbd57575befb1f6634c4f42d2d87dbba376128adb42c121b87064"}, ] -[package.dependencies] -webencodings = ">=0.4" - -[package.extras] -doc = ["sphinx", "sphinx_rtd_theme"] -test = ["pytest", "ruff"] - [[package]] name = "toolz" -version = "1.0.0" +version = "1.1.0" description = "List processing tools and functional utilities" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["main"] files = [ - {file = "toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236"}, - {file = "toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02"}, + {file = "toolz-1.1.0-py3-none-any.whl", hash = "sha256:15ccc861ac51c53696de0a5d6d4607f99c210739caf987b5d2054f3efed429d8"}, + {file = "toolz-1.1.0.tar.gz", hash = "sha256:27a5c770d068c110d9ed9323f24f1543e83b2f300a687b7891c1a6d56b697b5b"}, ] [[package]] -name = "tornado" -version = "6.5.1" -description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +name = "types-pyyaml" +version = "6.0.12.20250915" +description = "Typing stubs for PyYAML" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7" }, - { file = "tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6" }, - { file = "tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888" }, - { file = "tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331" }, - { file = "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" }, - { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401" }, - { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692" }, - { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a" }, - { file = "tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365" }, - { file = "tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b" }, - { file = "tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7" }, - { file = "tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c" }, -] - -[[package]] -name = "traitlets" -version = "5.14.3" -description = "Traitlets Python configuration system" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, - {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, + {file = "types_pyyaml-6.0.12.20250915-py3-none-any.whl", hash = "sha256:e7d4d9e064e89a3b3cae120b4990cd370874d2bf12fa5f46c97018dd5d3c9ab6"}, + {file = "types_pyyaml-6.0.12.20250915.tar.gz", hash = "sha256:0f8b54a528c303f0e6f7165687dd33fafa81c807fcac23f632b63aa624ced1d3"}, ] -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] - [[package]] -name = "types-python-dateutil" -version = "2.9.0.20250708" -description = "Typing stubs for python-dateutil" +name = "types-shapely" +version = "2.1.0.20250917" +description = "Typing stubs for shapely" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "types_python_dateutil-2.9.0.20250708-py3-none-any.whl", hash = "sha256:4d6d0cc1cc4d24a2dc3816024e502564094497b713f7befda4d5bc7a8e3fd21f" }, - { file = "types_python_dateutil-2.9.0.20250708.tar.gz", hash = "sha256:ccdbd75dab2d6c9696c350579f34cffe2c281e4c5f27a585b2a2438dd1d5c8ab" }, + {file = "types_shapely-2.1.0.20250917-py3-none-any.whl", hash = "sha256:9334a79339504d39b040426be4938d422cec419168414dc74972aa746a8bf3a1"}, + {file = "types_shapely-2.1.0.20250917.tar.gz", hash = "sha256:5c56670742105aebe40c16414390d35fcaa55d6f774d328c1a18273ab0e2134a"}, ] -[[package]] -name = "types-pyyaml" -version = "6.0.12.20250516" -description = "Typing stubs for PyYAML" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530" }, - { file = "types_pyyaml-6.0.12.20250516.tar.gz", hash = "sha256:9f21a70216fc0fa1b216a8176db5f9e0af6eb35d2f2932acb87689d03a5bf6ba" }, -] +[package.dependencies] +numpy = ">=1.20" [[package]] name = "typing-extensions" -version = "4.14.1" +version = "4.15.0" description = "Backported and Experimental Type Hints for Python 3.9+" optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - { file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76" }, - { file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36" }, + {file = "typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"}, + {file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"}, ] [[package]] @@ -3787,8 +2311,8 @@ optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - { file = "typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7" }, - { file = "typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464" }, + {file = "typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7"}, + {file = "typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464"}, ] [package.dependencies] @@ -3796,69 +2320,55 @@ typing-extensions = ">=4.12.0" [[package]] name = "tzdata" -version = "2025.2" +version = "2025.3" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" groups = ["main"] +markers = "sys_platform == \"win32\" or sys_platform == \"emscripten\"" files = [ - { file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8" }, - { file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9" }, -] - -[[package]] -name = "uri-template" -version = "1.3.0" -description = "RFC 6570 URI Template Processor" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, - {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, + {file = "tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1"}, + {file = "tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7"}, ] -[package.extras] -dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"] - [[package]] name = "urllib3" -version = "2.5.0" +version = "2.6.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc" }, - { file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760" }, + {file = "urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4"}, + {file = "urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed"}, ] [package.extras] -brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] +brotli = ["brotli (>=1.2.0) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=1.2.0.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] +zstd = ["backports-zstd (>=1.0.0) ; python_version < \"3.14\""] [[package]] name = "virtualenv" -version = "20.31.2" +version = "20.38.0" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - { file = "virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11" }, - { file = "virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af" }, + {file = "virtualenv-20.38.0-py3-none-any.whl", hash = "sha256:d6e78e5889de3a4742df2d3d44e779366325a90cf356f15621fddace82431794"}, + {file = "virtualenv-20.38.0.tar.gz", hash = "sha256:94f39b1abaea5185bf7ea5a46702b56f1d0c9aa2f41a6c2b8b0af4ddc74c10a7"}, ] [package.dependencies] distlib = ">=0.3.7,<1" -filelock = ">=3.12.2,<4" +filelock = {version = ">=3.24.2,<4", markers = "python_version >= \"3.10\""} platformdirs = ">=3.9.1,<5" [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"GraalVM\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""] +docs = ["furo (>=2023.7.26)", "pre-commit-uv (>=4.1.4)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinx-autodoc-typehints (>=3.6.2)", "sphinx-copybutton (>=0.5.2)", "sphinx-inline-tabs (>=2025.12.21.14)", "sphinxcontrib-mermaid (>=2)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"GraalVM\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "pytest-xdist (>=3.5)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""] [[package]] name = "watchdog" @@ -3868,116 +2378,51 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26" }, - { file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112" }, - { file = "watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3" }, - { file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c" }, - { file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2" }, - { file = "watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c" }, - { file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948" }, - { file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860" }, - { file = "watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0" }, - { file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c" }, - { file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134" }, - { file = "watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b" }, - { file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8" }, - { file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a" }, - { file = "watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c" }, - { file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881" }, - { file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11" }, - { file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa" }, - { file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c" }, - { file = "watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2" }, - { file = "watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a" }, - { file = "watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680" }, - { file = "watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f" }, - { file = "watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282" }, + {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26"}, + {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112"}, + {file = "watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c"}, + {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881"}, + {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11"}, + {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa"}, + {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2"}, + {file = "watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a"}, + {file = "watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680"}, + {file = "watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f"}, + {file = "watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282"}, ] [package.extras] watchmedo = ["PyYAML (>=3.10)"] -[[package]] -name = "wcwidth" -version = "0.2.13" -description = "Measures the displayed width of unicode strings in a terminal" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, - {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, -] - -[[package]] -name = "webcolors" -version = "24.11.1" -description = "A library for working with the color formats defined by HTML and CSS." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9" }, - { file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6" }, -] - -[[package]] -name = "webencodings" -version = "0.5.1" -description = "Character encoding aliases for legacy web content" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, - {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, -] - -[[package]] -name = "websocket-client" -version = "1.8.0" -description = "WebSocket client for Python with low level API options" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, - {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, -] - -[package.extras] -docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"] -optional = ["python-socks", "wsaccel"] -test = ["websockets"] - -[[package]] -name = "widgetsnbextension" -version = "4.0.14" -description = "Jupyter interactive widgets for Jupyter Notebook" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - { file = "widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575" }, - { file = "widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af" }, -] - [[package]] name = "xarray" -version = "2025.10.1" +version = "2026.2.0" description = "N-D labeled arrays and datasets in Python" optional = false python-versions = ">=3.11" groups = ["main"] files = [ - { file = "xarray-2025.10.1-py3-none-any.whl", hash = "sha256:a4e699433b87a7fac340951bc36648645eeef72bdd915ff055ac2fd99865a73d" }, - { file = "xarray-2025.10.1.tar.gz", hash = "sha256:3c2b5ad7389825bd624ada5ff26b01ac54b1aae72e2fe0d724d81d40a2bf5785" }, + {file = "xarray-2026.2.0-py3-none-any.whl", hash = "sha256:e927d7d716ea71dea78a13417970850a640447d8dd2ceeb65c5687f6373837c9"}, + {file = "xarray-2026.2.0.tar.gz", hash = "sha256:978b6acb018770554f8fd964af4eb02f9bcc165d4085dbb7326190d92aa74bcf"}, ] [package.dependencies] @@ -3989,33 +2434,34 @@ pandas = ">=2.2" accel = ["bottleneck", "flox (>=0.9)", "numba (>=0.62)", "numbagg (>=0.8)", "opt_einsum", "scipy (>=1.13)"] complete = ["xarray[accel,etc,io,parallel,viz]"] etc = ["sparse (>=0.15)"] -io = ["cftime", "fsspec", "h5netcdf", "netCDF4 (>=1.6.0)", "pooch", "pydap", "scipy (>=1.13)", "zarr (>=2.18)"] +io = ["cftime", "fsspec", "h5netcdf (>=1.4.0)", "netCDF4 (>=1.6.0)", "pooch", "pydap", "scipy (>=1.13)", "zarr (>=2.18)"] parallel = ["dask[complete]"] types = ["pandas-stubs", "scipy-stubs", "types-PyYAML", "types-Pygments", "types-colorama", "types-decorator", "types-defusedxml", "types-docutils", "types-networkx", "types-openpyxl", "types-pexpect", "types-psutil", "types-pycurl", "types-python-dateutil", "types-pytz", "types-requests", "types-setuptools"] -viz = ["cartopy (>=0.23)", "matplotlib", "nc-time-axis", "seaborn"] +viz = ["cartopy (>=0.23)", "matplotlib (>=3.8)", "nc-time-axis", "seaborn"] [[package]] name = "zarr" -version = "3.1.3" +version = "3.1.5" description = "An implementation of chunked, compressed, N-dimensional arrays for Python" optional = false python-versions = ">=3.11" groups = ["main"] files = [ - { file = "zarr-3.1.3-py3-none-any.whl", hash = "sha256:45f67f87f65f14fa453f99dd8110a5936b7ac69f3a21981d33e90407c80c302a" }, - { file = "zarr-3.1.3.tar.gz", hash = "sha256:01342f3e26a02ed5670db608a5576fbdb8d76acb5c280bd2d0082454b1ba6f79" }, + {file = "zarr-3.1.5-py3-none-any.whl", hash = "sha256:29cd905afb6235b94c09decda4258c888fcb79bb6c862ef7c0b8fe009b5c8563"}, + {file = "zarr-3.1.5.tar.gz", hash = "sha256:fbe0c79675a40c996de7ca08e80a1c0a20537bd4a9f43418b6d101395c0bba2b"}, ] [package.dependencies] donfig = ">=0.8" -numcodecs = { version = ">=0.14", extras = ["crc32c"] } +google-crc32c = ">=1.5" +numcodecs = ">=0.14" numpy = ">=1.26" packaging = ">=22.0" typing-extensions = ">=4.9" [package.extras] cli = ["typer"] -docs = ["astroid (<4)", "numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "pytest", "rich", "s3fs (>=2023.10.0)", "sphinx (==8.1.3)", "sphinx-autoapi (==3.4.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx-copybutton", "sphinx-design", "sphinx-issues", "sphinx-reredirects", "towncrier"] +docs = ["astroid (<4)", "griffe-inherited-docstrings", "markdown-exec[ansi]", "mike (>=2.1.3)", "mkdocs (>=1.6.1)", "mkdocs-material[imaging] (>=9.6.14)", "mkdocs-redirects (>=1.2.0)", "mkdocstrings (>=0.29.1)", "mkdocstrings-python (>=1.16.10)", "numcodecs[msgpack]", "pytest", "rich", "ruff", "s3fs (>=2023.10.0)", "towncrier"] gpu = ["cupy-cuda12x"] optional = ["rich", "universal-pathlib"] remote = ["fsspec (>=2023.10.0)", "obstore (>=0.5.1)"] @@ -4030,8 +2476,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e" }, - { file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166" }, + {file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e"}, + {file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166"}, ] [package.extras] @@ -4045,4 +2491,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = ">=3.13" -content-hash = "3a6cd56008c43cebabb3ffdbf2d79955b7d239934c00123eb283588d71e66b6a" +content-hash = "6a90954e075ce18de2389aa5ff131fb2de945f466483cdd9c459ad039fee48b5" diff --git a/pyproject.toml b/pyproject.toml index 6277846..1a6a537 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,27 +16,30 @@ repository = "https://github.com/alliander-opensource/meteoforge" documentation = "https://github.com/alliander-opensource/meteoforge" [tool.poetry.dependencies] -dask = "^2025.9.1" -netcdf4 = "^1.7.2" -numpy = "^2.3.3" -pydantic = "^2.12.0" pyproj = "^3.7.2" -xarray = "^2025.10.1" -zarr = "^3.1.3" -colorlog = "^6.9.0" # For colored logging output +colorlog = "^6.10.1" +pydantic = "^2.12.5" +xarray = "^2026.2.0" +zarr = "^3.1.5" +numpy = "^2.4.2" +netcdf4 = "^1.7.4" +dask = "^2026.1.2" +shapely = "^2.1.2" [tool.poetry.group.dev.dependencies] -coverage = "^7.9.2" -jupyter = "^1.1.1" -mkdocs = "^1.6.1" -mkdocs-material = "^9.6.15" -mkdocstrings = { extras = ["python"], version = "^0.29.1" } -mypy = "^1.17.0" -pre-commit = "^4.2.0" -pytest = "^8.4.1" -ruff = "^0.12.4" -types-pyyaml = "^6.0.12.20250516" +coverage = "^7.13.4" +pytest = "^9.0.2" +pre-commit = "^4.5.1" +ruff = "^0.15.1" +mypy = "^1.19.1" fawltydeps = "^0.20.0" +types-pyyaml = "^6.0.12.20250915" +mkdocs = "^1.6.1" +mkdocs-material = "^9.7.1" +mkdocstrings = "^1.0.3" +pytest-cov = "^7.0.0" +reuse = "^6.2.0" +types-shapely = "^2.1.0.20250917" [build-system] requires = ["poetry-core"] @@ -98,6 +101,26 @@ ignore = [ [tool.mypy] packages = ["src.meteoforge"] +plugins = [] +python_version = "3.13" +strict = true +exclude = ["tests/*", ".venv/*"] +disable_error_code = [] +follow_imports = "normal" +ignore_missing_imports = false +show_error_codes = true +namespace_packages = true +explicit_package_bases = true +check_untyped_defs = true +allow_redefinition = true +no_implicit_optional = true +install_types = true +non_interactive = true +enable_error_code = [] +files = ["src/meteoforge/spatial_temporal/locations.py"] + +[tool.pylint.format] +max-line-length = 120 [tool.pytest.ini_options] addopts = [ diff --git a/src/__init__.py b/src/__init__.py index 0a5cd78..0253492 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/__init__.py b/src/meteoforge/__init__.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/__init__.py +++ b/src/meteoforge/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/controller.py b/src/meteoforge/core/controller.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/core/controller.py +++ b/src/meteoforge/core/controller.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/manager.py b/src/meteoforge/core/manager.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/core/manager.py +++ b/src/meteoforge/core/manager.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/model.py b/src/meteoforge/core/model.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/core/model.py +++ b/src/meteoforge/core/model.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/source.py b/src/meteoforge/core/source.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/core/source.py +++ b/src/meteoforge/core/source.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/logging/__init__.py b/src/meteoforge/logging/__init__.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/logging/__init__.py +++ b/src/meteoforge/logging/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/logging/logging.py b/src/meteoforge/logging/logging.py index 546c34a..bebd332 100644 --- a/src/meteoforge/logging/logging.py +++ b/src/meteoforge/logging/logging.py @@ -1,5 +1,5 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 import logging import logging.config @@ -8,7 +8,7 @@ import yaml -def setup_logging(config_path: str | None = None): +def setup_logging(config_path: str | None = None) -> None: """Set up project logging using the 'logging_config.yaml' config file.""" if config_path is None: config_path = os.path.join(os.path.dirname(__file__), "logging_config.yaml") diff --git a/src/meteoforge/parameters/__init__.py b/src/meteoforge/parameters/__init__.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/parameters/__init__.py +++ b/src/meteoforge/parameters/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/parameters/parameters.py b/src/meteoforge/parameters/parameters.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/parameters/parameters.py +++ b/src/meteoforge/parameters/parameters.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/__init__.py b/src/meteoforge/spatial_temporal/__init__.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/spatial_temporal/__init__.py +++ b/src/meteoforge/spatial_temporal/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/locations.py b/src/meteoforge/spatial_temporal/locations.py index efb3b36..d12e85f 100644 --- a/src/meteoforge/spatial_temporal/locations.py +++ b/src/meteoforge/spatial_temporal/locations.py @@ -1,106 +1,202 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 -from pyproj import CRS -from pyproj.exceptions import CRSError +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 -from src.meteoforge.logging.logging import logger +"""Hybrid location module: easy use, CRS-flexible, fuzzy equality, and robust containment.""" +from collections.abc import Iterable +from typing import Any -class MFLocation: - """The base class for representing geographic locations in MeteoForge. - - This class serves as a base for various location based formats, such as coordinates, bounding boxes, and polygons. - It provides a common interface for working with these different formats, allowing for the easy conversion and - manipulation of geographic data. - - Attributes - ---------- - x (float): - The x-coordinate of the location. Typically, this represents longitude, but this can vary based on the - Coordinate Reference System (CRS) used. - y (float): - The y-coordinate of the location. Typically, this represents latitude, but this can vary based on the - Coordinate Reference System (CRS) used. - crs (int): - The coordinate reference system of the location, if applicable via EPSG numerical code. This is used to - properly interpret the x and y coordinates in a geographic context. The default setting is EPSG code 4326, - which represents the WGS 84 geographic coordinate system. - - """ - - def __init__(self, *, x: int | float, y: int | float, epsg_code: int = 4326): - """Initialize the MFLocation class.""" - # Validate the input parameters - if self.validate_location(x, y, epsg_code): - # Set the instance variables - self.x = float(x) - self.y = float(y) - self.crs = epsg_code - else: - raise ValueError("Invalid location parameters") - - @staticmethod - def validate_location(x: float, y: float, epsg_code: int = 4326) -> bool: - """Validate a given x,y location with an EPSG code as an existing coordinate.""" - logger.debug(f"Validating location: x={x}, y={y}, epgs_code={epsg_code}") - - # Validate the types of x, y, and epgs_code - if not isinstance(x, int | float): - raise ValueError("x must be a number") - if not isinstance(y, int | float): - raise ValueError("y must be a number") - if not isinstance(epsg_code, int): - raise ValueError("epgs_code must be an integer") - - logger.debug(f"Type validation passed: x={type(x)}, y={type(y)}, epgs_code={type(epsg_code)}") - - # Validate the CRS type suggested by the EPSG code - MFLocation.valid_crs(epsg_code) +from pyproj import CRS, Transformer +from shapely.geometry import Point, Polygon - logger.debug(f"CRS validation passed for EPSG code: {epsg_code}") +from meteoforge.spatial_temporal.validators import validate_mf_location - # Check that x and y are within valid ranges for geographic coordinates on the given CRS - ... - logger.debug(f"Location validation passed and valid: x={x}, y={y}, epsg_code={epsg_code}") - return True +def _crs_to_obj(crs_like: int | str | CRS) -> CRS: + """Convert an int, str, or CRS to a CRS object.""" + if isinstance(crs_like, CRS): + return crs_like + return CRS.from_user_input(value=crs_like) - @staticmethod - def validate_crs(epsg_code: int) -> bool: - """Validate a given EPSG code for valid and known coordinate reference systems. - A valid CRS is one that exists, is not deprecated, and is either geographic or geocentric. This helps exclude - CRS values that are unsuitable for representing x,y coordinates in a geographic context. - """ - logger.debug(f"Validating CRS with EPSG code: {epsg_code}") +def _transform_point(x: float, y: float, from_crs: CRS, to_crs: CRS) -> tuple[float, float]: + """Transform a point (x, y) from one CRS to another.""" + if from_crs == to_crs: + return x, y + transformer = Transformer.from_crs(from_crs, to_crs, always_xy=True) + x2, y2 = transformer.transform(x, y) + return float(x2), float(y2) - try: - crs = CRS.from_epsg(epsg_code) - except CRSError as e: - raise ValueError(f"invalid EPSG code '{epsg_code}': --<<-- {e} -->>--") from e - # Check that the CRS is not deprecated - if crs.is_deprecated: - raise ValueError( - f"The CRS with EPSG code {epsg_code} is deprecated. Please use a different (non-deprecated) CRS." - ) - - # Check that the CRS is for an x,y based geographic coordinate system - if not crs.is_geographic and not crs.is_geocentric: - raise ValueError( - "The MFLocation class type only supports Geographic (CRS.is_geographic=True) and Geocentric Coordinate " - "Systems (CRS.is_geocentric=True)." - ) - return True +class MFLocation: + """A geographic location with CRS, supporting transformation and fuzzy equality.""" + + def __init__(self, x: float, y: float, crs: int | str | CRS = 4326): + """Create a location with coordinates (x, y) and a CRS.""" + self.crs = _crs_to_obj(crs) + self.x = float(x) + self.y = float(y) + self.point = Point(self.x, self.y) + validate_mf_location(self.x, self.y, self.crs) + + def to(self, target_crs: int | str | CRS) -> "MFLocation": + """Return a new MFLocation transformed to the target CRS.""" + target_crs_obj = _crs_to_obj(target_crs) + x2, y2 = _transform_point(self.x, self.y, self.crs, target_crs_obj) + return MFLocation(x2, y2, target_crs_obj) + + def equals(self, other: "MFLocation", tol: float = 1e-6, crs: int | str | CRS = 4326) -> bool: + """Check if two locations are close enough in a common CRS.""" + # Compare in a common CRS (default: WGS84) + crs_obj = _crs_to_obj(crs) + a = self.to(crs_obj) + b = other.to(crs_obj) + return abs(a.x - b.x) < tol and abs(a.y - b.y) < tol + + def __eq__(self, other: Any) -> bool: + """Check equality with another MFLocation, using fuzzy equality in a common CRS.""" + if not isinstance(other, MFLocation): + return NotImplemented + return self.equals(other) + + def __repr__(self) -> str: + """Get a string representation of the location.""" + return f"MFLocation(x={self.x}, y={self.y}, crs={self.crs.to_string()})" class MFLocationList: - """A list of MFLocation objects representing multiple geographic locations.""" - - ... + """A class representing a list of MFLocation objects, with fuzzy containment and CRS handling.""" + + def __init__(self, locations: Iterable[MFLocation] | None = None, crs: int | str | CRS = 4326): + """Create a list of locations, converting all to the given CRS.""" + self.crs = _crs_to_obj(crs) + self.locations: list[MFLocation] = [] + if locations: + for loc in locations: + self.append(loc) + + def append(self, location: Any) -> None: + """Add a location to the list, converting to the list's CRS if needed.""" + if not isinstance(location, MFLocation): + raise TypeError("Only MFLocation instances can be added.") + # Accept any CRS, but store as self.crs + loc_in_crs = location.to(self.crs) + self.locations.append(loc_in_crs) + + def __getitem__(self, idx: int) -> MFLocation: + """Get a location by index.""" + return self.locations[idx] + + def __setitem__(self, idx: int, value: MFLocation) -> None: + """Set a location by index, converting to the list's CRS if needed.""" + self.locations[idx] = value.to(self.crs) + + def __delitem__(self, idx: int) -> None: + """Delete a location by index.""" + del self.locations[idx] + + def __len__(self) -> int: + """Return the number of locations in the list.""" + return len(self.locations) + + def __contains__(self, item: MFLocation) -> bool: + """Check if a location is 'fuzzily' in the list, CRS-aware.""" + # Fuzzy containment: is any location in the list 'close enough' to item? + return any(loc.equals(item) for loc in self.locations) + + def find_nearby(self, item: MFLocation, tol: float = 1e-6) -> MFLocation | None: + """Return the first location in the list close to the given item, or None.""" + for loc in self.locations: + if loc.equals(item, tol=tol): + return loc + return None + + def __repr__(self) -> str: + """Return a string representation of the MFLocationList instance.""" + return f"MFLocationList({self.locations}, crs={self.crs.to_string()})" class MFLocationVector: - """A vector of MFLocation objects representing a sequence of geographic locations.""" - - ... + """A vector (polygon) of MFLocation objects, with fuzzy containment and CRS handling.""" + + def __init__(self, locations: Iterable[MFLocation] | None = None, crs: int | str | CRS = 4326): + """Create a vector (polygon) from locations, converting all to the given CRS.""" + self.crs = _crs_to_obj(crs) + self.locations: list[MFLocation] = [] + self.polygon: Polygon | None = None + if locations: + for loc in locations: + self.append(loc) + self._update_polygon() + + def append(self, location: Any) -> None: + """Add a location to the vector, converting to the vector's CRS if needed.""" + if not isinstance(location, MFLocation): + raise TypeError("Only MFLocation instances can be added.") + loc_in_crs = location.to(self.crs) + self.locations.append(loc_in_crs) + self._update_polygon() + + def _update_polygon(self) -> None: + """Update the internal Shapely polygon from the current locations.""" + coords = [loc.to(self.crs).point for loc in self.locations] + # Only create a polygon if there are at least 3 unique points (4 for closure) + if len(coords) >= 3: + xy = [(pt.x, pt.y) for pt in coords] + # Ensure closure: first == last + if xy[0] != xy[-1]: + xy.append(xy[0]) + if len(xy) >= 4: + self.polygon = Polygon(xy) + else: + self.polygon = None + else: + self.polygon = None + + def contains(self, location: MFLocation, tol: float = 1e-6) -> bool: + """Check if the vector contains a location (fuzzy, CRS-aware, and near boundary).""" + pt = location.to(self.crs).point + # 1. True Shapely containment + if self.polygon and self.polygon.contains(pt): + return True + # 2. Fuzzy: check if any vertex is close to the point + if any(pt.distance(vertex.point) < tol for vertex in self.locations): + return True + # 3. Fuzzy: check if point is near the polygon boundary (within tol) + return bool(self.polygon and self.polygon.boundary.distance(pt) < tol) + + def __contains__(self, item: MFLocation) -> bool: + """Check if a location is in the vector, using fuzzy containment.""" + return self.contains(item) + + def __getitem__(self, idx: int) -> MFLocation: + """Get a location by index.""" + return self.locations[idx] + + def __setitem__(self, idx: int, value: MFLocation) -> None: + """Set a location by index, converting to the vector's CRS if needed.""" + self.locations[idx] = value.to(self.crs) + self._update_polygon() + + def __delitem__(self, idx: int) -> None: + """Delete a location by index.""" + del self.locations[idx] + self._update_polygon() + + def __len__(self) -> int: + """Return the number of locations in the vector.""" + return len(self.locations) + + def __repr__(self) -> str: + """Return a string representation of the MFLocationVector instance.""" + return f"MFLocationVector({self.locations}, crs={self.crs.to_string()})" + + +# Utility: fuzzy membership for a location in a list/vector + + +def fuzzy_in(item: MFLocation, container: Iterable[MFLocation], tol: float = 1e-6, crs: int | str | CRS = 4326) -> bool: + """Check if a location is 'fuzzily' in a container (list/vector), CRS-aware.""" + crs_obj = _crs_to_obj(crs) + item_in_crs = item.to(crs_obj) + return any(loc.to(crs_obj).equals(item_in_crs, tol=tol, crs=crs_obj) for loc in container) diff --git a/src/meteoforge/spatial_temporal/periods.py b/src/meteoforge/spatial_temporal/periods.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/spatial_temporal/periods.py +++ b/src/meteoforge/spatial_temporal/periods.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/validators.py b/src/meteoforge/spatial_temporal/validators.py new file mode 100644 index 0000000..f6a389f --- /dev/null +++ b/src/meteoforge/spatial_temporal/validators.py @@ -0,0 +1,138 @@ +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 + +"""Module for validating spatial and temporal data in MeteoForge.""" + +from typing import Any + +from pyproj import CRS, Transformer +from pyproj.exceptions import CRSError + +from meteoforge.logging.logging import logger + + +class CRSValidationError(ValueError): + """Raised when a CRS validation fails in MFLocation.""" + + +def validate_mf_location(x: int | float, y: int | float, crs: CRS) -> bool: + """Validate a given x,y location with an EPSG code as a valid coordinate for MeteoForge.""" + # Perform type checks on the input parameters + _perform_mf_location_type_checks(x, y, crs) + logger.debug("Type checks passed for x=%s, y=%s, crs=%s", x, y, crs) + + # Evaluate the EPSG code as a valid CRS for MeteoForge + validate_crs(crs) + logger.debug("CRS validation passed for CRS: %s", crs) + + # Evaluate the x and y coordinates as valid for the given CRS + validate_location(x, y, crs) + logger.debug("Location validation passed for x=%s, y=%s, CRS=%s", x, y, crs) + return True + + +def validate_mf_period(start_time: object, end_time: object) -> bool: + """Validate a given start and end time as a valid period for MeteoForge.""" + # Perform type checks on the input parameters + _perform_mf_period_type_checks(start_time, end_time) + + # Evaluate the start and end times as valid for MeteoForge + ... + + return True + + +def _perform_mf_location_type_checks(x: Any, y: Any, crs: Any) -> None: + """Check the types of x, y, and CRS.""" + if not isinstance(x, int | float): + raise TypeError("x must be a number") + if not isinstance(y, int | float): + raise TypeError("y must be a number") + if not isinstance(crs, CRS): + raise TypeError("crs must be a CRS instance") + + +def validate_crs(crs: Any) -> bool: + """Validate the given CRS as a valid CRS for MeteoForge.""" + logger.debug("Validating CRS: %s", crs) + + if not isinstance(crs, CRS | int | str): + raise TypeError("crs must be a CRS instance, int, or str") + + try: + # Attempt to create a CRS object from the EPSG code to check if it is valid + if isinstance(crs, CRS): + crs_object = crs + elif isinstance(crs, int): + crs_object = CRS.from_epsg(crs) + else: # Assume it's a CRS string like "EPSG:4326" + crs_object = CRS.from_string(crs) + + except CRSError as e: + raise CRSValidationError(f"Invalid CRS type or value: {crs}") from e + + # Check that the created CRS is not deprecated + if crs_object.is_deprecated: + raise CRSValidationError( + f"The CRS built from {crs} is deprecated. Please use a different (non-deprecated) CRS." + ) + + # Check that the CRS is either geographic, geocentric, or projected, as these are the types supported by MFLocation + if not crs_object.is_geographic and not crs_object.is_geocentric and not crs_object.is_projected: + raise CRSValidationError( + "The MFLocation class type only supports Geographic (CRS.is_geographic=True), Geocentric Coordinate " + "Systems (CRS.is_geocentric=True) and Projected Coordinate Systems (CRS.is_projected=True)." + ) + return True + + +def validate_location(x: int | float, y: int | float, crs: CRS) -> bool: + """Validate the given x and y coordinates as valid for the specified CRS. + + Evaluate the x and y coordinates as valid for the given CRS, e.g., check if they fall within the valid range for + the CRS. This may involve checking if the coordinates are within the bounds of the CRS's valid area. + + Attributes + ---------- + x (int | float): + The x-coordinate of the location. Typically, this represents longitude, but this can vary based on the + Coordinate Reference System (CRS) used. + y (int | float): + The y-coordinate of the location. Typically, this represents latitude, but this can vary based on the + Coordinate Reference System (CRS) used. + crs (CRS): + The coordinate reference system of the location. This is used to properly interpret the x and y coordinates + in a geographic context. + + Returns + ------- + bool + True if the location is valid for the given CRS, False otherwise. + + """ + area_of_use = crs.area_of_use + + if area_of_use is None: + logger.warning("No area of use defined for CRS %s, skipping bounds check", crs) + return True + + # Transform area_of_use bounds (WGS84) to the native CRS units + transformer = Transformer.from_crs(CRS.from_epsg(4326), crs, always_xy=True) + min_x, min_y = transformer.transform(area_of_use.west, area_of_use.south) + max_x, max_y = transformer.transform(area_of_use.east, area_of_use.north) + + if not (min_x <= x <= max_x): + raise CRSValidationError(f"x coordinate {x} is outside valid bounds [{min_x}, {max_x}] for CRS {crs}") + + if not (min_y <= y <= max_y): + raise CRSValidationError(f"y coordinate {y} is outside valid bounds [{min_y}, {max_y}] for CRS {crs}") + + logger.debug("Location validation passed and valid: x=%s, y=%s, CRS=%s", x, y, crs) + return True + + +def _perform_mf_period_type_checks(start_time: Any, end_time: Any) -> None: + """Check the types of start_time and end_time.""" + # Implement type checks for start_time and end_time, e.g., check if they are datetime objects + _, _ = start_time, end_time + ... diff --git a/src/meteoforge_tools/README.md b/src/meteoforge_tools/README.md index c781249..22083f2 100644 --- a/src/meteoforge_tools/README.md +++ b/src/meteoforge_tools/README.md @@ -1,3 +1,6 @@ +[//]: # (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) +[//]: # (SPDX-License-Identifier: MPL-2.0) + # MeteoForge Tools ... diff --git a/src/meteoforge_tools/__init__.py b/src/meteoforge_tools/__init__.py index 0a5cd78..0253492 100644 --- a/src/meteoforge_tools/__init__.py +++ b/src/meteoforge_tools/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge_tools/netfcd_to_zarr_conversion.py b/src/meteoforge_tools/netfcd_to_zarr_conversion.py index 0a5cd78..0253492 100644 --- a/src/meteoforge_tools/netfcd_to_zarr_conversion.py +++ b/src/meteoforge_tools/netfcd_to_zarr_conversion.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/tests/conftest.py b/tests/conftest.py index 0a5cd78..0253492 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/tests/test_example_test.py b/tests/test_example_test.py deleted file mode 100644 index de3ea2a..0000000 --- a/tests/test_example_test.py +++ /dev/null @@ -1,7 +0,0 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 - - -def test_example(): - """Example test function to demonstrate pytest setup.""" - assert True # Replace with actual test logic diff --git a/tests/test_locations.py b/tests/test_locations.py new file mode 100644 index 0000000..0475945 --- /dev/null +++ b/tests/test_locations.py @@ -0,0 +1,118 @@ +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 + +"""Pytest tests for the locations module (MFLocation, MFLocationList, MFLocationVector, fuzzy_in). + +Tests only the module logic, not pyproj or Shapely internals. +""" + +from typing import Any + +from pyproj import CRS + +from meteoforge.spatial_temporal.locations import ( + MFLocation, + MFLocationList, + MFLocationVector, + _crs_to_obj, # type: ignore + _transform_point, # type: ignore + fuzzy_in, +) + + +def test_crs_to_obj_accepts_crs_types(): + """Test that _crs_to_obj correctly accepts CRS objects, ints, and strings.""" + # Accepts CRS, int, str + crs = CRS.from_epsg(4326) + assert _crs_to_obj(crs) == crs + assert _crs_to_obj(4326) == CRS.from_epsg(4326) + assert _crs_to_obj("EPSG:4326") == CRS.from_epsg(4326) + + +def test_transform_point_identity(): + """Transforming a point in the same CRS should return the same coordinates.""" + crs = CRS.from_epsg(4326) + x, y = 1.0, 2.0 + assert _transform_point(x, y, crs, crs) == (x, y) + + +def test_mflocation_repr_and_eq(): + """Test MFLocation equality and string representation.""" + a = MFLocation(1, 2, 4326) + b = MFLocation(1, 2, 4326) + c = MFLocation(1.00001, 2, 4326) # Use a value outside the default tolerance for fuzzy equality + assert a == b + assert a != c + assert "MFLocation" in repr(a) + + +def test_mflocation_to_transforms(monkeypatch: Any): + """Test that MFLocation.to correctly transforms coordinates using _transform_point.""" + # Only patch to check that _transform_point is called, not to replace its math + called = {} + + def fake_transform(x: float, y: float, from_crs: CRS, to_crs: CRS) -> tuple[float, float]: + called["args"] = (x, y, from_crs, to_crs) + return (123, 456) + + monkeypatch.setattr("meteoforge.spatial_temporal.locations._transform_point", fake_transform) + a = MFLocation(1, 2, 4326) + b = a.to(3857) + assert called["args"][0] == 1 and called["args"][1] == 2 + assert isinstance(b, MFLocation) + assert b.x == 123 and b.y == 456 + + +def test_mflocationlist_append_and_contains(): + """Test MFLocationList append, contains, get, set, and delete operations.""" + a = MFLocation(1, 2, 4326) + b = MFLocation(3, 4, 4326) + lst = MFLocationList([a]) + lst.append(b) + assert len(lst) == 2 + assert a in lst + assert b in lst + c = MFLocation(1.00001, 2, 4326) # Use a value outside the default tolerance for fuzzy equality + assert c not in lst + assert lst[0] == a + lst[1] = a + assert lst[1] == a + del lst[1] + assert len(lst) == 1 + + +def test_mflocationlist_find_nearby(): + """Test MFLocationList.find_nearby method.""" + a = MFLocation(1, 2, 4326) + b = MFLocation(1.0000001, 2, 4326) + lst = MFLocationList([a]) + found = lst.find_nearby(b, tol=1e-5) + assert found == a + not_found = lst.find_nearby(MFLocation(5, 5, 4326)) + assert not_found is None + + +def test_mflocationvector_append_and_contains(): + """Test MFLocationVector with a valid closed polygon, no mutation after creation.""" + a = MFLocation(0, 0, 4326) + b = MFLocation(1, 0, 4326) + c = MFLocation(1, 1, 4326) + d = MFLocation(0, 1, 4326) + # Only pass 4 points, do not close explicitly + vec = MFLocationVector([a, b, c, d]) + pt_inside = MFLocation(0.5, 0.5, 4326) + pt_outside = MFLocation(2, 2, 4326) + assert pt_inside in vec + assert pt_outside not in vec + pt_near = MFLocation(0, 0.00001, 4326) + assert pt_near in vec + assert vec[0] == a + assert len(vec.locations) == 4 + + +def test_fuzzy_in(): + """Test the fuzzy_in function for real MFLocation objects.""" + items = [MFLocation(1, 2, 4326), MFLocation(3, 4, 4326), MFLocation(5, 6, 4326)] + item = MFLocation(3.0000001, 4, 4326) + assert fuzzy_in(item, items, tol=1e-5) + assert not fuzzy_in(MFLocation(7, 8, 4326), items, tol=1e-5) diff --git a/typings/meteoforge/__init__.pyi b/typings/meteoforge/__init__.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/core/__init__.pyi b/typings/meteoforge/core/__init__.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/core/controller.pyi b/typings/meteoforge/core/controller.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/core/manager.pyi b/typings/meteoforge/core/manager.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/core/model.pyi b/typings/meteoforge/core/model.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/core/source.pyi b/typings/meteoforge/core/source.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/logging/__init__.pyi b/typings/meteoforge/logging/__init__.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/logging/logging.pyi b/typings/meteoforge/logging/logging.pyi new file mode 100644 index 0000000..d95d0a6 --- /dev/null +++ b/typings/meteoforge/logging/logging.pyi @@ -0,0 +1,5 @@ +from _typeshed import Incomplete + +def setup_logging(config_path: str | None = None) -> None: ... + +logger: Incomplete diff --git a/typings/meteoforge/parameters/__init__.pyi b/typings/meteoforge/parameters/__init__.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/parameters/parameters.pyi b/typings/meteoforge/parameters/parameters.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/spatial_temporal/__init__.pyi b/typings/meteoforge/spatial_temporal/__init__.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/spatial_temporal/locations.pyi b/typings/meteoforge/spatial_temporal/locations.pyi new file mode 100644 index 0000000..07b80a9 --- /dev/null +++ b/typings/meteoforge/spatial_temporal/locations.pyi @@ -0,0 +1,43 @@ +from _typeshed import Incomplete +from collections.abc import Iterable +from meteoforge.spatial_temporal.validators import validate_mf_location as validate_mf_location +from pyproj import CRS +from shapely.geometry import Polygon +from typing import Any + +class MFLocation: + crs: Incomplete + x: Incomplete + y: Incomplete + point: Incomplete + def __init__(self, x: float, y: float, crs: int | str | CRS = 4326) -> None: ... + def to(self, target_crs: int | str | CRS) -> MFLocation: ... + def equals(self, other: MFLocation, tol: float = 1e-06, crs: int | str | CRS = 4326) -> bool: ... + def __eq__(self, other: Any) -> bool: ... + +class MFLocationList: + crs: Incomplete + locations: list[MFLocation] + def __init__(self, locations: Iterable[MFLocation] | None = None, crs: int | str | CRS = 4326) -> None: ... + def append(self, location: Any) -> None: ... + def __getitem__(self, idx: int) -> MFLocation: ... + def __setitem__(self, idx: int, value: MFLocation) -> None: ... + def __delitem__(self, idx: int) -> None: ... + def __len__(self) -> int: ... + def __contains__(self, item: MFLocation) -> bool: ... + def find_nearby(self, item: MFLocation, tol: float = 1e-06) -> MFLocation | None: ... + +class MFLocationVector: + crs: Incomplete + locations: list[MFLocation] + polygon: Polygon | None + def __init__(self, locations: Iterable[MFLocation] | None = None, crs: int | str | CRS = 4326) -> None: ... + def append(self, location: Any) -> None: ... + def contains(self, location: MFLocation, tol: float = 1e-06) -> bool: ... + def __contains__(self, item: MFLocation) -> bool: ... + def __getitem__(self, idx: int) -> MFLocation: ... + def __setitem__(self, idx: int, value: MFLocation) -> None: ... + def __delitem__(self, idx: int) -> None: ... + def __len__(self) -> int: ... + +def fuzzy_in(item: MFLocation, container: Iterable[MFLocation], tol: float = 1e-06, crs: int | str | CRS = 4326) -> bool: ... diff --git a/typings/meteoforge/spatial_temporal/periods.pyi b/typings/meteoforge/spatial_temporal/periods.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/spatial_temporal/validators.pyi b/typings/meteoforge/spatial_temporal/validators.pyi new file mode 100644 index 0000000..5090f95 --- /dev/null +++ b/typings/meteoforge/spatial_temporal/validators.pyi @@ -0,0 +1,10 @@ +from meteoforge.logging.logging import logger as logger +from pyproj import CRS +from typing import Any + +class CRSValidationError(ValueError): ... + +def validate_mf_location(x: int | float, y: int | float, crs: CRS) -> bool: ... +def validate_mf_period(start_time: object, end_time: object) -> bool: ... +def validate_crs(crs: Any) -> bool: ... +def validate_location(x: int | float, y: int | float, crs: CRS) -> bool: ... From fea7f432a3c3194562c7b01d02934322e037f680 Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Mon, 23 Mar 2026 17:03:15 +0100 Subject: [PATCH 30/50] Potential fix for code scanning alert no. 23: Workflow does not contain permissions Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .github/workflows/allowed-pr-sources-dev-release.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/allowed-pr-sources-dev-release.yaml b/.github/workflows/allowed-pr-sources-dev-release.yaml index 5bf13d5..6e0de07 100644 --- a/.github/workflows/allowed-pr-sources-dev-release.yaml +++ b/.github/workflows/allowed-pr-sources-dev-release.yaml @@ -1,5 +1,8 @@ name: Check if PR source branch is allowed for development or release branches +permissions: + contents: read + on: pull_request: types: [ opened, reopened, synchronize, edited, ready_for_review ] From 93f2779652776c67628c9b11e179899939e39b04 Mon Sep 17 00:00:00 2001 From: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Tue, 24 Mar 2026 07:18:51 +0100 Subject: [PATCH 31/50] patch : Security fixes for existing actions --- .../allowed-pr-sources-dev-release.yaml | 4 ++-- .github/workflows/openssf-scorecard.yml | 5 +++-- .github/workflows/pr-quality-gate.yaml.yml | 15 +++++++++++--- tests/test_locations.py | 20 +++++++++---------- 4 files changed, 27 insertions(+), 17 deletions(-) diff --git a/.github/workflows/allowed-pr-sources-dev-release.yaml b/.github/workflows/allowed-pr-sources-dev-release.yaml index 6e0de07..78b27c7 100644 --- a/.github/workflows/allowed-pr-sources-dev-release.yaml +++ b/.github/workflows/allowed-pr-sources-dev-release.yaml @@ -1,7 +1,5 @@ name: Check if PR source branch is allowed for development or release branches -permissions: - contents: read on: pull_request: @@ -12,6 +10,8 @@ on: jobs: enforce: + permissions: + contents: read runs-on: ubuntu-latest steps: - name: Check PR source branch diff --git a/.github/workflows/openssf-scorecard.yml b/.github/workflows/openssf-scorecard.yml index 01e17d4..276f27d 100644 --- a/.github/workflows/openssf-scorecard.yml +++ b/.github/workflows/openssf-scorecard.yml @@ -14,8 +14,9 @@ on: push: branches: [ "main" ] -# Declare default permissions as read only. -permissions: read-all +# Declare default permissions as read only (minimal for Scorecard). +permissions: + contents: read jobs: analysis: diff --git a/.github/workflows/pr-quality-gate.yaml.yml b/.github/workflows/pr-quality-gate.yaml.yml index 0f30122..d8dc4e1 100644 --- a/.github/workflows/pr-quality-gate.yaml.yml +++ b/.github/workflows/pr-quality-gate.yaml.yml @@ -5,9 +5,6 @@ on: branches: [ rc, main ] types: [ opened, synchronize, reopened, ready_for_review ] -permissions: - contents: read - pull-requests: write concurrency: group: pr-${{ github.event.pull_request.number || github.ref }} @@ -15,6 +12,9 @@ concurrency: jobs: precommit: + permissions: + contents: read + pull-requests: write name: pre-commit if: ${{ !github.event.pull_request.draft }} runs-on: ubuntu-latest @@ -28,6 +28,9 @@ jobs: python-version: ${{ env.MAIN_PYTHON_VERSION }} pytest: + permissions: + contents: read + pull-requests: write name: pytest if: ${{ !github.event.pull_request.draft }} runs-on: ubuntu-latest @@ -42,6 +45,9 @@ jobs: python-version: ${{ matrix.python-version }} pytest-windows: + permissions: + contents: read + pull-requests: write name: pytest (Windows, non-blocking) if: ${{ !github.event.pull_request.draft }} runs-on: windows-latest @@ -57,6 +63,9 @@ jobs: python-version: ${{ matrix.python-version }} sonarqube: + permissions: + contents: read + pull-requests: write name: SonarQube if: ${{ !github.event.pull_request.draft }} runs-on: ubuntu-latest diff --git a/tests/test_locations.py b/tests/test_locations.py index 0475945..8aaf25e 100644 --- a/tests/test_locations.py +++ b/tests/test_locations.py @@ -14,13 +14,13 @@ MFLocation, MFLocationList, MFLocationVector, - _crs_to_obj, # type: ignore - _transform_point, # type: ignore + _crs_to_obj, + _transform_point, fuzzy_in, ) -def test_crs_to_obj_accepts_crs_types(): +def test_crs_to_obj_accepts_crs_types() -> None: """Test that _crs_to_obj correctly accepts CRS objects, ints, and strings.""" # Accepts CRS, int, str crs = CRS.from_epsg(4326) @@ -29,14 +29,14 @@ def test_crs_to_obj_accepts_crs_types(): assert _crs_to_obj("EPSG:4326") == CRS.from_epsg(4326) -def test_transform_point_identity(): +def test_transform_point_identity() -> None: """Transforming a point in the same CRS should return the same coordinates.""" crs = CRS.from_epsg(4326) x, y = 1.0, 2.0 assert _transform_point(x, y, crs, crs) == (x, y) -def test_mflocation_repr_and_eq(): +def test_mflocation_repr_and_eq() -> None: """Test MFLocation equality and string representation.""" a = MFLocation(1, 2, 4326) b = MFLocation(1, 2, 4326) @@ -46,7 +46,7 @@ def test_mflocation_repr_and_eq(): assert "MFLocation" in repr(a) -def test_mflocation_to_transforms(monkeypatch: Any): +def test_mflocation_to_transforms(monkeypatch: Any) -> None: """Test that MFLocation.to correctly transforms coordinates using _transform_point.""" # Only patch to check that _transform_point is called, not to replace its math called = {} @@ -63,7 +63,7 @@ def fake_transform(x: float, y: float, from_crs: CRS, to_crs: CRS) -> tuple[floa assert b.x == 123 and b.y == 456 -def test_mflocationlist_append_and_contains(): +def test_mflocationlist_append_and_contains() -> None: """Test MFLocationList append, contains, get, set, and delete operations.""" a = MFLocation(1, 2, 4326) b = MFLocation(3, 4, 4326) @@ -81,7 +81,7 @@ def test_mflocationlist_append_and_contains(): assert len(lst) == 1 -def test_mflocationlist_find_nearby(): +def test_mflocationlist_find_nearby() -> None: """Test MFLocationList.find_nearby method.""" a = MFLocation(1, 2, 4326) b = MFLocation(1.0000001, 2, 4326) @@ -92,7 +92,7 @@ def test_mflocationlist_find_nearby(): assert not_found is None -def test_mflocationvector_append_and_contains(): +def test_mflocationvector_append_and_contains() -> None: """Test MFLocationVector with a valid closed polygon, no mutation after creation.""" a = MFLocation(0, 0, 4326) b = MFLocation(1, 0, 4326) @@ -110,7 +110,7 @@ def test_mflocationvector_append_and_contains(): assert len(vec.locations) == 4 -def test_fuzzy_in(): +def test_fuzzy_in() -> None: """Test the fuzzy_in function for real MFLocation objects.""" items = [MFLocation(1, 2, 4326), MFLocation(3, 4, 4326), MFLocation(5, 6, 4326)] item = MFLocation(3.0000001, 4, 4326) From b5352b7f0d75cabe39fc5a2e028637611e7c86b3 Mon Sep 17 00:00:00 2001 From: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Tue, 24 Mar 2026 07:24:52 +0100 Subject: [PATCH 32/50] Rebase commit for signage purposes Signed-off-by: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 981628e..d4c6d71 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ parameters. Unit conversion is handled with [Pint](https://pint.readthedocs.io/) > _speed" in m/s._ > _The Core System can convert Beaufort to m/s using its registry of standard parameters and Pint-based conversions._ -## How to install +## How to install MeteoForge You can install the MeteoForge Core System via pip or poetry. From dbb61f4e5a967a7bd269e94e14dabd68880e89d4 Mon Sep 17 00:00:00 2001 From: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 28 Mar 2026 08:13:25 +0100 Subject: [PATCH 33/50] Add input validation for python-version in pre-commit workflow --- .github/workflows/pre-commit/action.yaml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pre-commit/action.yaml b/.github/workflows/pre-commit/action.yaml index 80fb107..36b0aee 100644 --- a/.github/workflows/pre-commit/action.yaml +++ b/.github/workflows/pre-commit/action.yaml @@ -18,9 +18,20 @@ runs: with: python-version: ${{ inputs.python-version }} + + - name: Validate Python version + if: ${{ hashFiles('.pre-commit-config.yaml') != '' }} + run: | + ALLOWED_VERSIONS="3.9 3.10 3.11" + if ! echo "$ALLOWED_VERSIONS" | grep -wq "${{ inputs.python-version }}"; then + echo "Error: python-version ${{ inputs.python-version }} is not allowed. Allowed: $ALLOWED_VERSIONS" + exit 1 + fi + shell: bash + - name: Install Poetry if: ${{ hashFiles('.pre-commit-config.yaml') != '' }} - run: pipx install --python python${{ inputs.python-version }} poetry + run: pipx install --python "python${{ inputs.python-version }}" poetry shell: bash - name: Install pre-commit From 767547b8a389216e2a55e5ba65b2522d7f30b771 Mon Sep 17 00:00:00 2001 From: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 28 Mar 2026 08:20:00 +0100 Subject: [PATCH 34/50] Update allowed Python versions in pre-commit workflow --- .github/workflows/gh-pages-deployment.yaml | 36 ---------------------- .github/workflows/pre-commit/action.yaml | 2 +- 2 files changed, 1 insertion(+), 37 deletions(-) delete mode 100644 .github/workflows/gh-pages-deployment.yaml diff --git a/.github/workflows/gh-pages-deployment.yaml b/.github/workflows/gh-pages-deployment.yaml deleted file mode 100644 index e55fc5f..0000000 --- a/.github/workflows/gh-pages-deployment.yaml +++ /dev/null @@ -1,36 +0,0 @@ -name: GitHub Pages Deployment -on: - push: - branches: - - main - paths: - - 'docs/**' - - 'gh-pages-deployment.yaml' - - 'README.md' - workflow_dispatch: -permissions: - contents: write - pages: write -jobs: - deploy-gh-pages: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Configure Git user - run: | - git config user.name github-actions[bot] - git config user.email 41898282+github-actions[bot]@users.noreply.github.com - - uses: actions/setup-python@v5 - with: - python-version: ${{ env.MAIN_PYTHON_VERSION }} - - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV - - uses: actions/cache@v4 - with: - key: mkdocs-material-${{ env.cache_id }} - path: ~/.cache - restore-keys: | - mkdocs-material- - - run: pip install mkdocs-material - - run: mkdocs gh-deploy --force - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/pre-commit/action.yaml b/.github/workflows/pre-commit/action.yaml index 36b0aee..447e12b 100644 --- a/.github/workflows/pre-commit/action.yaml +++ b/.github/workflows/pre-commit/action.yaml @@ -22,7 +22,7 @@ runs: - name: Validate Python version if: ${{ hashFiles('.pre-commit-config.yaml') != '' }} run: | - ALLOWED_VERSIONS="3.9 3.10 3.11" + ALLOWED_VERSIONS="3.14 3.15" if ! echo "$ALLOWED_VERSIONS" | grep -wq "${{ inputs.python-version }}"; then echo "Error: python-version ${{ inputs.python-version }} is not allowed. Allowed: $ALLOWED_VERSIONS" exit 1 From 0dfb43b341e1499e81e7510514b6181069f873fb Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 15:26:09 +0200 Subject: [PATCH 35/50] feature: Initial base documentation Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Signed-off-by: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> --- poetry.lock | 3391 +++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 2769 insertions(+), 622 deletions(-) diff --git a/poetry.lock b/poetry.lock index eae691b..9e81a19 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,15 @@ -# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. + +[[package]] +name = "alabaster" +version = "1.0.0" +description = "A light, configurable Sphinx theme" +optional = false +python-versions = ">=3.10" +files = [ + {file = "alabaster-1.0.0-py3-none-any.whl", hash = "sha256:fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b"}, + {file = "alabaster-1.0.0.tar.gz", hash = "sha256:c00dca57bca26fa62a6d7d0a9fcce65f3e026e9bfe33e9c538fd3fbb2144fd9e"}, +] [[package]] name = "annotated-types" @@ -12,6 +23,171 @@ files = [ {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] +[[package]] +name = "anyio" +version = "4.6.2.post1" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.9" +files = [ + {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, + {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, +] + +[package.dependencies] +idna = ">=2.8" +sniffio = ">=1.1" + +[package.extras] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +trio = ["trio (>=0.26.1)"] + +[[package]] +name = "appnope" +version = "0.1.4" +description = "Disable App Nap on macOS >= 10.9" +optional = false +python-versions = ">=3.6" +files = [ + {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, + {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, +] + +[[package]] +name = "argon2-cffi" +version = "23.1.0" +description = "Argon2 for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"}, + {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"}, +] + +[package.dependencies] +argon2-cffi-bindings = "*" + +[package.extras] +dev = ["argon2-cffi[tests,typing]", "tox (>4)"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-copybutton", "sphinx-notfound-page"] +tests = ["hypothesis", "pytest"] +typing = ["mypy"] + +[[package]] +name = "argon2-cffi-bindings" +version = "21.2.0" +description = "Low-level CFFI bindings for Argon2" +optional = false +python-versions = ">=3.6" +files = [ + {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"}, + {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, +] + +[package.dependencies] +cffi = ">=1.0.1" + +[package.extras] +dev = ["cogapp", "pre-commit", "pytest", "wheel"] +tests = ["pytest"] + +[[package]] +name = "arrow" +version = "1.3.0" +description = "Better dates & times for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, + {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, +] + +[package.dependencies] +python-dateutil = ">=2.7.0" +types-python-dateutil = ">=2.8.10" + +[package.extras] +doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] +test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"] + +[[package]] +name = "asciitree" +version = "0.3.3" +description = "Draws ASCII trees." +optional = false +python-versions = "*" +files = [ + {file = "asciitree-0.3.3.tar.gz", hash = "sha256:4aa4b9b649f85e3fcb343363d97564aa1fb62e249677f2e18a96765145cc0f6e"}, +] + +[[package]] +name = "asttokens" +version = "2.4.1" +description = "Annotate AST trees with source code positions" +optional = false +python-versions = "*" +files = [ + {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, + {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, +] + +[package.dependencies] +six = ">=1.12.0" + +[package.extras] +astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] +test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] + +[[package]] +name = "async-lru" +version = "2.0.4" +description = "Simple LRU cache for asyncio" +optional = false +python-versions = ">=3.8" +files = [ + {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"}, + {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"}, +] + +[[package]] +name = "attrs" +version = "24.2.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.7" +files = [ + {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, + {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, +] + +[package.extras] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] + [[package]] name = "babel" version = "2.17.0" @@ -20,43 +196,181 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, - {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, + {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, + {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, +] + +[package.extras] +dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] + +[[package]] +name = "beautifulsoup4" +version = "4.12.3" +description = "Screen-scraping library" +optional = false +python-versions = ">=3.6.0" +files = [ + {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, + {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, ] +[package.dependencies] +soupsieve = ">1.2" + [package.extras] -dev = ["backports.zoneinfo ; python_version < \"3.9\"", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata ; sys_platform == \"win32\""] +cchardet = ["cchardet"] +chardet = ["chardet"] +charset-normalizer = ["charset-normalizer"] +html5lib = ["html5lib"] +lxml = ["lxml"] [[package]] -name = "backrefs" -version = "5.9" -description = "A wrapper around re and regex that adds additional back references." +name = "black" +version = "24.10.0" +description = "The uncompromising code formatter." optional = false python-versions = ">=3.9" -groups = ["dev"] files = [ - {file = "backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f"}, - {file = "backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf"}, - {file = "backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa"}, - {file = "backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b"}, - {file = "backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9"}, - {file = "backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60"}, - {file = "backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59"}, + {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, + {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, + {file = "black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f"}, + {file = "black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e"}, + {file = "black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad"}, + {file = "black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50"}, + {file = "black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392"}, + {file = "black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175"}, + {file = "black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3"}, + {file = "black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65"}, + {file = "black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f"}, + {file = "black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8"}, + {file = "black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981"}, + {file = "black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b"}, + {file = "black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2"}, + {file = "black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b"}, + {file = "black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd"}, + {file = "black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f"}, + {file = "black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800"}, + {file = "black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7"}, + {file = "black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d"}, + {file = "black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875"}, +] + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +packaging = ">=22.0" +pathspec = ">=0.9.0" +platformdirs = ">=2" + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.10)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "bleach" +version = "6.1.0" +description = "An easy safelist-based HTML-sanitizing tool." +optional = false +python-versions = ">=3.8" +files = [ + {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"}, + {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"}, ] +[package.dependencies] +six = ">=1.9.0" +webencodings = "*" + [package.extras] -extras = ["regex"] +css = ["tinycss2 (>=1.1.0,<1.3)"] [[package]] name = "certifi" version = "2025.8.3" description = "Python package for providing Mozilla's CA Bundle." optional = false -python-versions = ">=3.7" -groups = ["dev"] +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, +] + +[[package]] +name = "cffi" +version = "1.17.1" +description = "Foreign Function Interface for Python calling C code." +optional = false +python-versions = ">=3.8" files = [ - {file = "certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5"}, - {file = "certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] [[package]] @@ -71,93 +385,167 @@ files = [ {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, ] +[[package]] +name = "cftime" +version = "1.6.4.post1" +description = "Time-handling functionality from netcdf4-python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "cftime-1.6.4.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0baa9bc4850929da9f92c25329aa1f651e2d6f23e237504f337ee9e12a769f5d"}, + {file = "cftime-1.6.4.post1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6bb6b087f4b2513c37670bccd457e2a666ca489c5f2aad6e2c0e94604dc1b5b9"}, + {file = "cftime-1.6.4.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d9bdeb9174962c9ca00015190bfd693de6b0ec3ec0b3dbc35c693a4f48efdcc"}, + {file = "cftime-1.6.4.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e735cfd544878eb94d0108ff5a093bd1a332dba90f979a31a357756d609a90d5"}, + {file = "cftime-1.6.4.post1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1dcd1b140bf50da6775c56bd7ca179e84bd258b2f159b53eefd5c514b341f2bf"}, + {file = "cftime-1.6.4.post1-cp310-cp310-win_amd64.whl", hash = "sha256:e60b8f24b20753f7548f410f7510e28b941f336f84bd34e3cfd7874af6e70281"}, + {file = "cftime-1.6.4.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1bf7be0a0afc87628cb8c8483412aac6e48e83877004faa0936afb5bf8a877ba"}, + {file = "cftime-1.6.4.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f64ca83acc4e3029f737bf3a32530ffa1fbf53124f5bee70b47548bc58671a7"}, + {file = "cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ebdfd81726b0cfb8b524309224fa952898dfa177c13d5f6af5b18cefbf497d"}, + {file = "cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ea0965a4c87739aebd84fe8eed966e5809d10065eeffd35c99c274b6f8da15"}, + {file = "cftime-1.6.4.post1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:800a18aea4e8cb2b206450397cb8a53b154798738af3cdd3c922ce1ca198b0e6"}, + {file = "cftime-1.6.4.post1-cp311-cp311-win_amd64.whl", hash = "sha256:5dcfc872f455db1f12eabe3c3ba98e93757cd60ed3526a53246e966ccde46c8a"}, + {file = "cftime-1.6.4.post1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a590f73506f4704ba5e154ef55bfbaed5e1b4ac170f3caeb8c58e4f2c619ee4e"}, + {file = "cftime-1.6.4.post1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:933cb10e1af4e362e77f513e3eb92b34a688729ddbf938bbdfa5ac20a7f44ba0"}, + {file = "cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf17a1b36f62e9e73c4c9363dd811e1bbf1170f5ac26d343fb26012ccf482908"}, + {file = "cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e18021f421aa26527bad8688c1acf0c85fa72730beb6efce969c316743294f2"}, + {file = "cftime-1.6.4.post1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5835b9d622f9304d1c23a35603a0f068739f428d902860f25e6e7e5a1b7cd8ea"}, + {file = "cftime-1.6.4.post1-cp312-cp312-win_amd64.whl", hash = "sha256:7f50bf0d1b664924aaee636eb2933746b942417d1f8b82ab6c1f6e8ba0da6885"}, + {file = "cftime-1.6.4.post1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5c89766ebf088c097832ea618c24ed5075331f0b7bf8e9c2d4144aefbf2f1850"}, + {file = "cftime-1.6.4.post1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7f27113f7ccd1ca32881fdcb9a4bec806a5f54ae621fc1c374f1171f3ed98ef2"}, + {file = "cftime-1.6.4.post1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da367b23eea7cf4df071c88e014a1600d6c5bbf22e3393a4af409903fa397e28"}, + {file = "cftime-1.6.4.post1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6579c5c83cdf09d73aa94c7bc34925edd93c5f2c7dd28e074f568f7e376271a0"}, + {file = "cftime-1.6.4.post1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6b731c7133d17b479ca0c3c46a7a04f96197f0a4d753f4c2284c3ff0447279b4"}, + {file = "cftime-1.6.4.post1-cp313-cp313-win_amd64.whl", hash = "sha256:d2a8c223faea7f1248ab469cc0d7795dd46f2a423789038f439fee7190bae259"}, + {file = "cftime-1.6.4.post1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9df3e2d49e548c62d1939e923800b08d2ab732d3ac8d75b857edd7982c878552"}, + {file = "cftime-1.6.4.post1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2892b7e7654142d825655f60eb66c3e1af745901890316907071d44cf9a18d8a"}, + {file = "cftime-1.6.4.post1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4ab54e6c04e68395d454cd4001188fc4ade2fe48035589ed65af80c4527ef08"}, + {file = "cftime-1.6.4.post1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:568b69fc52f406e361db62a4d7a219c6fb0ced138937144c3b3a511648dd6c50"}, + {file = "cftime-1.6.4.post1-cp38-cp38-win_amd64.whl", hash = "sha256:640911d2629f4a8f81f6bc0163a983b6b94f86d1007449b8cbfd926136cda253"}, + {file = "cftime-1.6.4.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:44e9f8052600803b55f8cb6bcac2be49405c21efa900ec77a9fb7f692db2f7a6"}, + {file = "cftime-1.6.4.post1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a90b6ef4a3fc65322c212a2c99cec75d1886f1ebaf0ff6189f7b327566762222"}, + {file = "cftime-1.6.4.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:652700130dbcca3ae36dbb5b61ff360e62aa09fabcabc42ec521091a14389901"}, + {file = "cftime-1.6.4.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a7fb6cc541a027dab37fdeb695f8a2b21cd7d200be606f81b5abc38f2391e2"}, + {file = "cftime-1.6.4.post1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:fc2c0abe2dbd147e1b1e6d0f3de19a5ea8b04956acc204830fd8418066090989"}, + {file = "cftime-1.6.4.post1-cp39-cp39-win_amd64.whl", hash = "sha256:0ee2f5af8643aa1b47b7e388763a1a6e0dc05558cd2902cffb9cbcf954397648"}, + {file = "cftime-1.6.4.post1.tar.gz", hash = "sha256:50ac76cc9f10ab7bd46e44a71c51a6927051b499b4407df4f29ab13d741b942f"}, +] + +[package.dependencies] +numpy = {version = ">=1.26.0b1", markers = "python_version >= \"3.12.0.rc1\""} + [[package]] name = "charset-normalizer" -version = "3.4.3" +version = "3.4.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "charset_normalizer-3.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fb7f67a1bfa6e40b438170ebdc8158b78dc465a5a67b6dde178a46987b244a72"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc9370a2da1ac13f0153780040f465839e6cccb4a1e44810124b4e22483c93fe"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:07a0eae9e2787b586e129fdcbe1af6997f8d0e5abaa0bc98c0e20e124d67e601"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:74d77e25adda8581ffc1c720f1c81ca082921329452eba58b16233ab1842141c"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0e909868420b7049dafd3a31d45125b31143eec59235311fc4c57ea26a4acd2"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c6f162aabe9a91a309510d74eeb6507fab5fff92337a15acbe77753d88d9dcf0"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4ca4c094de7771a98d7fbd67d9e5dbf1eb73efa4f744a730437d8a3a5cf994f0"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:02425242e96bcf29a49711b0ca9f37e451da7c70562bc10e8ed992a5a7a25cc0"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:78deba4d8f9590fe4dae384aeff04082510a709957e968753ff3c48399f6f92a"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-win32.whl", hash = "sha256:d79c198e27580c8e958906f803e63cddb77653731be08851c7df0b1a14a8fc0f"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:c6e490913a46fa054e03699c70019ab869e990270597018cef1d8562132c2669"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-win32.whl", hash = "sha256:6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0f2be7e0cf7754b9a30eb01f4295cc3d4358a479843b31f328afd210e2c7598c"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c60e092517a73c632ec38e290eba714e9627abe9d301c8c8a12ec32c314a2a4b"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:252098c8c7a873e17dd696ed98bbe91dbacd571da4b87df3736768efa7a792e4"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3653fad4fe3ed447a596ae8638b437f827234f01a8cd801842e43f3d0a6b281b"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8999f965f922ae054125286faf9f11bc6932184b93011d138925a1773830bbe9"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d95bfb53c211b57198bb91c46dd5a2d8018b3af446583aab40074bf7988401cb"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:5b413b0b1bfd94dbf4023ad6945889f374cd24e3f62de58d6bb102c4d9ae534a"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:b5e3b2d152e74e100a9e9573837aba24aab611d39428ded46f4e4022ea7d1942"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a2d08ac246bb48479170408d6c19f6385fa743e7157d716e144cad849b2dd94b"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-win32.whl", hash = "sha256:ec557499516fc90fd374bf2e32349a2887a876fbf162c160e3c01b6849eaf557"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:5d8d01eac18c423815ed4f4a2ec3b439d654e55ee4ad610e153cf02faf67ea40"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:70bfc5f2c318afece2f5838ea5e4c3febada0be750fcf4775641052bbba14d05"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23b6b24d74478dc833444cbd927c338349d6ae852ba53a0d02a2de1fce45b96e"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:34a7f768e3f985abdb42841e20e17b330ad3aaf4bb7e7aeeb73db2e70f077b99"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fb731e5deb0c7ef82d698b0f4c5bb724633ee2a489401594c5c88b02e6cb15f7"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:257f26fed7d7ff59921b78244f3cd93ed2af1800ff048c33f624c87475819dd7"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1ef99f0456d3d46a50945c98de1774da86f8e992ab5c77865ea8b8195341fc19"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:2c322db9c8c89009a990ef07c3bcc9f011a3269bc06782f916cd3d9eed7c9312"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:511729f456829ef86ac41ca78c63a5cb55240ed23b4b737faca0eb1abb1c41bc"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:88ab34806dea0671532d3f82d82b85e8fc23d7b2dd12fa837978dad9bb392a34"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-win32.whl", hash = "sha256:16a8770207946ac75703458e2c743631c79c59c5890c80011d536248f8eaa432"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:d22dbedd33326a4a5190dd4fe9e9e693ef12160c77382d9e87919bce54f3d4ca"}, - {file = "charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a"}, - {file = "charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, + {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, + {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, ] [[package]] @@ -165,8 +553,7 @@ name = "click" version = "8.2.1" description = "Composable command line interface toolkit" optional = false -python-versions = ">=3.10" -groups = ["dev"] +python-versions = ">=3.7" files = [ {file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b"}, {file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202"}, @@ -175,6 +562,17 @@ files = [ [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} +[[package]] +name = "cloudpickle" +version = "3.1.0" +description = "Pickler class to extend the standard pickle.Pickler functionality" +optional = false +python-versions = ">=3.8" +files = [ + {file = "cloudpickle-3.1.0-py3-none-any.whl", hash = "sha256:fe11acda67f61aaaec473e3afe030feb131d78a43461b718185363384f1ba12e"}, + {file = "cloudpickle-3.1.0.tar.gz", hash = "sha256:81a929b6e3c7335c863c771d673d105f02efdb89dfaba0c90495d1c64796601b"}, +] + [[package]] name = "colorama" version = "0.4.6" @@ -186,15 +584,13 @@ files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -markers = {main = "sys_platform == \"win32\""} [[package]] name = "colorlog" version = "6.10.1" description = "Add colours to the output of Python's logging module." optional = false -python-versions = ">=3.6" -groups = ["main"] +python-versions = ">=3.8" files = [ {file = "colorlog-6.10.1-py3-none-any.whl", hash = "sha256:2d7e8348291948af66122cff006c9f8da6255d224e7cf8e37d8de2df3bad8c9c"}, {file = "colorlog-6.10.1.tar.gz", hash = "sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321"}, @@ -208,104 +604,163 @@ development = ["black", "flake8", "mypy", "pytest", "types-colorama"] [[package]] name = "coverage" -version = "7.10.4" +version = "7.6.4" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "coverage-7.10.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d92d6edb0ccafd20c6fbf9891ca720b39c2a6a4b4a6f9cf323ca2c986f33e475"}, - {file = "coverage-7.10.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7202da14dc0236884fcc45665ffb2d79d4991a53fbdf152ab22f69f70923cc22"}, - {file = "coverage-7.10.4-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ada418633ae24ec8d0fcad5efe6fc7aa3c62497c6ed86589e57844ad04365674"}, - {file = "coverage-7.10.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b828e33eca6c3322adda3b5884456f98c435182a44917ded05005adfa1415500"}, - {file = "coverage-7.10.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:802793ba397afcfdbe9f91f89d65ae88b958d95edc8caf948e1f47d8b6b2b606"}, - {file = "coverage-7.10.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d0b23512338c54101d3bf7a1ab107d9d75abda1d5f69bc0887fd079253e4c27e"}, - {file = "coverage-7.10.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f36b7dcf72d06a8c5e2dd3aca02be2b1b5db5f86404627dff834396efce958f2"}, - {file = "coverage-7.10.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fce316c367a1dc2c411821365592eeb335ff1781956d87a0410eae248188ba51"}, - {file = "coverage-7.10.4-cp310-cp310-win32.whl", hash = "sha256:8c5dab29fc8070b3766b5fc85f8d89b19634584429a2da6d42da5edfadaf32ae"}, - {file = "coverage-7.10.4-cp310-cp310-win_amd64.whl", hash = "sha256:4b0d114616f0fccb529a1817457d5fb52a10e106f86c5fb3b0bd0d45d0d69b93"}, - {file = "coverage-7.10.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:05d5f98ec893d4a2abc8bc5f046f2f4367404e7e5d5d18b83de8fde1093ebc4f"}, - {file = "coverage-7.10.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9267efd28f8994b750d171e58e481e3bbd69e44baed540e4c789f8e368b24b88"}, - {file = "coverage-7.10.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:4456a039fdc1a89ea60823d0330f1ac6f97b0dbe9e2b6fb4873e889584b085fb"}, - {file = "coverage-7.10.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c2bfbd2a9f7e68a21c5bd191be94bfdb2691ac40d325bac9ef3ae45ff5c753d9"}, - {file = "coverage-7.10.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ab7765f10ae1df7e7fe37de9e64b5a269b812ee22e2da3f84f97b1c7732a0d8"}, - {file = "coverage-7.10.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a09b13695166236e171ec1627ff8434b9a9bae47528d0ba9d944c912d33b3d2"}, - {file = "coverage-7.10.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5c9e75dfdc0167d5675e9804f04a56b2cf47fb83a524654297000b578b8adcb7"}, - {file = "coverage-7.10.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c751261bfe6481caba15ec005a194cb60aad06f29235a74c24f18546d8377df0"}, - {file = "coverage-7.10.4-cp311-cp311-win32.whl", hash = "sha256:051c7c9e765f003c2ff6e8c81ccea28a70fb5b0142671e4e3ede7cebd45c80af"}, - {file = "coverage-7.10.4-cp311-cp311-win_amd64.whl", hash = "sha256:1a647b152f10be08fb771ae4a1421dbff66141e3d8ab27d543b5eb9ea5af8e52"}, - {file = "coverage-7.10.4-cp311-cp311-win_arm64.whl", hash = "sha256:b09b9e4e1de0d406ca9f19a371c2beefe3193b542f64a6dd40cfcf435b7d6aa0"}, - {file = "coverage-7.10.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a1f0264abcabd4853d4cb9b3d164adbf1565da7dab1da1669e93f3ea60162d79"}, - {file = "coverage-7.10.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:536cbe6b118a4df231b11af3e0f974a72a095182ff8ec5f4868c931e8043ef3e"}, - {file = "coverage-7.10.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:9a4c0d84134797b7bf3f080599d0cd501471f6c98b715405166860d79cfaa97e"}, - {file = "coverage-7.10.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7c155fc0f9cee8c9803ea0ad153ab6a3b956baa5d4cd993405dc0b45b2a0b9e0"}, - {file = "coverage-7.10.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a5f2ab6e451d4b07855d8bcf063adf11e199bff421a4ba57f5bb95b7444ca62"}, - {file = "coverage-7.10.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:685b67d99b945b0c221be0780c336b303a7753b3e0ec0d618c795aada25d5e7a"}, - {file = "coverage-7.10.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0c079027e50c2ae44da51c2e294596cbc9dbb58f7ca45b30651c7e411060fc23"}, - {file = "coverage-7.10.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3749aa72b93ce516f77cf5034d8e3c0dfd45c6e8a163a602ede2dc5f9a0bb927"}, - {file = "coverage-7.10.4-cp312-cp312-win32.whl", hash = "sha256:fecb97b3a52fa9bcd5a7375e72fae209088faf671d39fae67261f37772d5559a"}, - {file = "coverage-7.10.4-cp312-cp312-win_amd64.whl", hash = "sha256:26de58f355626628a21fe6a70e1e1fad95702dafebfb0685280962ae1449f17b"}, - {file = "coverage-7.10.4-cp312-cp312-win_arm64.whl", hash = "sha256:67e8885408f8325198862bc487038a4980c9277d753cb8812510927f2176437a"}, - {file = "coverage-7.10.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2b8e1d2015d5dfdbf964ecef12944c0c8c55b885bb5c0467ae8ef55e0e151233"}, - {file = "coverage-7.10.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:25735c299439018d66eb2dccf54f625aceb78645687a05f9f848f6e6c751e169"}, - {file = "coverage-7.10.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:715c06cb5eceac4d9b7cdf783ce04aa495f6aff657543fea75c30215b28ddb74"}, - {file = "coverage-7.10.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e017ac69fac9aacd7df6dc464c05833e834dc5b00c914d7af9a5249fcccf07ef"}, - {file = "coverage-7.10.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bad180cc40b3fccb0f0e8c702d781492654ac2580d468e3ffc8065e38c6c2408"}, - {file = "coverage-7.10.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:becbdcd14f685fada010a5f792bf0895675ecf7481304fe159f0cd3f289550bd"}, - {file = "coverage-7.10.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0b485ca21e16a76f68060911f97ebbe3e0d891da1dbbce6af7ca1ab3f98b9097"}, - {file = "coverage-7.10.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6c1d098ccfe8e1e0a1ed9a0249138899948afd2978cbf48eb1cc3fcd38469690"}, - {file = "coverage-7.10.4-cp313-cp313-win32.whl", hash = "sha256:8630f8af2ca84b5c367c3df907b1706621abe06d6929f5045fd628968d421e6e"}, - {file = "coverage-7.10.4-cp313-cp313-win_amd64.whl", hash = "sha256:f68835d31c421736be367d32f179e14ca932978293fe1b4c7a6a49b555dff5b2"}, - {file = "coverage-7.10.4-cp313-cp313-win_arm64.whl", hash = "sha256:6eaa61ff6724ca7ebc5326d1fae062d85e19b38dd922d50903702e6078370ae7"}, - {file = "coverage-7.10.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:702978108876bfb3d997604930b05fe769462cc3000150b0e607b7b444f2fd84"}, - {file = "coverage-7.10.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e8f978e8c5521d9c8f2086ac60d931d583fab0a16f382f6eb89453fe998e2484"}, - {file = "coverage-7.10.4-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:df0ac2ccfd19351411c45e43ab60932b74472e4648b0a9edf6a3b58846e246a9"}, - {file = "coverage-7.10.4-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:73a0d1aaaa3796179f336448e1576a3de6fc95ff4f07c2d7251d4caf5d18cf8d"}, - {file = "coverage-7.10.4-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:873da6d0ed6b3ffc0bc01f2c7e3ad7e2023751c0d8d86c26fe7322c314b031dc"}, - {file = "coverage-7.10.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c6446c75b0e7dda5daa876a1c87b480b2b52affb972fedd6c22edf1aaf2e00ec"}, - {file = "coverage-7.10.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:6e73933e296634e520390c44758d553d3b573b321608118363e52113790633b9"}, - {file = "coverage-7.10.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:52073d4b08d2cb571234c8a71eb32af3c6923149cf644a51d5957ac128cf6aa4"}, - {file = "coverage-7.10.4-cp313-cp313t-win32.whl", hash = "sha256:e24afb178f21f9ceb1aefbc73eb524769aa9b504a42b26857243f881af56880c"}, - {file = "coverage-7.10.4-cp313-cp313t-win_amd64.whl", hash = "sha256:be04507ff1ad206f4be3d156a674e3fb84bbb751ea1b23b142979ac9eebaa15f"}, - {file = "coverage-7.10.4-cp313-cp313t-win_arm64.whl", hash = "sha256:f3e3ff3f69d02b5dad67a6eac68cc9c71ae343b6328aae96e914f9f2f23a22e2"}, - {file = "coverage-7.10.4-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:a59fe0af7dd7211ba595cf7e2867458381f7e5d7b4cffe46274e0b2f5b9f4eb4"}, - {file = "coverage-7.10.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3a6c35c5b70f569ee38dc3350cd14fdd0347a8b389a18bb37538cc43e6f730e6"}, - {file = "coverage-7.10.4-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:acb7baf49f513554c4af6ef8e2bd6e8ac74e6ea0c7386df8b3eb586d82ccccc4"}, - {file = "coverage-7.10.4-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a89afecec1ed12ac13ed203238b560cbfad3522bae37d91c102e690b8b1dc46c"}, - {file = "coverage-7.10.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:480442727f464407d8ade6e677b7f21f3b96a9838ab541b9a28ce9e44123c14e"}, - {file = "coverage-7.10.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a89bf193707f4a17f1ed461504031074d87f035153239f16ce86dfb8f8c7ac76"}, - {file = "coverage-7.10.4-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:3ddd912c2fc440f0fb3229e764feec85669d5d80a988ff1b336a27d73f63c818"}, - {file = "coverage-7.10.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:8a538944ee3a42265e61c7298aeba9ea43f31c01271cf028f437a7b4075592cf"}, - {file = "coverage-7.10.4-cp314-cp314-win32.whl", hash = "sha256:fd2e6002be1c62476eb862b8514b1ba7e7684c50165f2a8d389e77da6c9a2ebd"}, - {file = "coverage-7.10.4-cp314-cp314-win_amd64.whl", hash = "sha256:ec113277f2b5cf188d95fb66a65c7431f2b9192ee7e6ec9b72b30bbfb53c244a"}, - {file = "coverage-7.10.4-cp314-cp314-win_arm64.whl", hash = "sha256:9744954bfd387796c6a091b50d55ca7cac3d08767795b5eec69ad0f7dbf12d38"}, - {file = "coverage-7.10.4-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:5af4829904dda6aabb54a23879f0f4412094ba9ef153aaa464e3c1b1c9bc98e6"}, - {file = "coverage-7.10.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7bba5ed85e034831fac761ae506c0644d24fd5594727e174b5a73aff343a7508"}, - {file = "coverage-7.10.4-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d57d555b0719834b55ad35045de6cc80fc2b28e05adb6b03c98479f9553b387f"}, - {file = "coverage-7.10.4-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ba62c51a72048bb1ea72db265e6bd8beaabf9809cd2125bbb5306c6ce105f214"}, - {file = "coverage-7.10.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0acf0c62a6095f07e9db4ec365cc58c0ef5babb757e54745a1aa2ea2a2564af1"}, - {file = "coverage-7.10.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e1033bf0f763f5cf49ffe6594314b11027dcc1073ac590b415ea93463466deec"}, - {file = "coverage-7.10.4-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:92c29eff894832b6a40da1789b1f252305af921750b03ee4535919db9179453d"}, - {file = "coverage-7.10.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:822c4c830989c2093527e92acd97be4638a44eb042b1bdc0e7a278d84a070bd3"}, - {file = "coverage-7.10.4-cp314-cp314t-win32.whl", hash = "sha256:e694d855dac2e7cf194ba33653e4ba7aad7267a802a7b3fc4347d0517d5d65cd"}, - {file = "coverage-7.10.4-cp314-cp314t-win_amd64.whl", hash = "sha256:efcc54b38ef7d5bfa98050f220b415bc5bb3d432bd6350a861cf6da0ede2cdcd"}, - {file = "coverage-7.10.4-cp314-cp314t-win_arm64.whl", hash = "sha256:6f3a3496c0fa26bfac4ebc458747b778cff201c8ae94fa05e1391bab0dbc473c"}, - {file = "coverage-7.10.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:48fd4d52600c2a9d5622e52dfae674a7845c5e1dceaf68b88c99feb511fbcfd6"}, - {file = "coverage-7.10.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:56217b470d09d69e6b7dcae38200f95e389a77db801cb129101697a4553b18b6"}, - {file = "coverage-7.10.4-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:44ac3f21a6e28c5ff7f7a47bca5f87885f6a1e623e637899125ba47acd87334d"}, - {file = "coverage-7.10.4-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3387739d72c84d17b4d2f7348749cac2e6700e7152026912b60998ee9a40066b"}, - {file = "coverage-7.10.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3f111ff20d9a6348e0125be892608e33408dd268f73b020940dfa8511ad05503"}, - {file = "coverage-7.10.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:01a852f0a9859734b018a3f483cc962d0b381d48d350b1a0c47d618c73a0c398"}, - {file = "coverage-7.10.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:225111dd06759ba4e37cee4c0b4f3df2b15c879e9e3c37bf986389300b9917c3"}, - {file = "coverage-7.10.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2178d4183bd1ba608f0bb12e71e55838ba1b7dbb730264f8b08de9f8ef0c27d0"}, - {file = "coverage-7.10.4-cp39-cp39-win32.whl", hash = "sha256:93d175fe81913aee7a6ea430abbdf2a79f1d9fd451610e12e334e4fe3264f563"}, - {file = "coverage-7.10.4-cp39-cp39-win_amd64.whl", hash = "sha256:2221a823404bb941c7721cf0ef55ac6ee5c25d905beb60c0bba5e5e85415d353"}, - {file = "coverage-7.10.4-py3-none-any.whl", hash = "sha256:065d75447228d05121e5c938ca8f0e91eed60a1eb2d1258d42d5084fecfc3302"}, - {file = "coverage-7.10.4.tar.gz", hash = "sha256:25f5130af6c8e7297fd14634955ba9e1697f47143f289e2a23284177c0061d27"}, -] - -[package.extras] -toml = ["tomli ; python_full_version <= \"3.11.0a6\""] + {file = "coverage-7.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f8ae553cba74085db385d489c7a792ad66f7f9ba2ee85bfa508aeb84cf0ba07"}, + {file = "coverage-7.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8165b796df0bd42e10527a3f493c592ba494f16ef3c8b531288e3d0d72c1f6f0"}, + {file = "coverage-7.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c8b95bf47db6d19096a5e052ffca0a05f335bc63cef281a6e8fe864d450a72"}, + {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ed9281d1b52628e81393f5eaee24a45cbd64965f41857559c2b7ff19385df51"}, + {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0809082ee480bb8f7416507538243c8863ac74fd8a5d2485c46f0f7499f2b491"}, + {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d541423cdd416b78626b55f123412fcf979d22a2c39fce251b350de38c15c15b"}, + {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:58809e238a8a12a625c70450b48e8767cff9eb67c62e6154a642b21ddf79baea"}, + {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9b8e184898ed014884ca84c70562b4a82cbc63b044d366fedc68bc2b2f3394a"}, + {file = "coverage-7.6.4-cp310-cp310-win32.whl", hash = "sha256:6bd818b7ea14bc6e1f06e241e8234508b21edf1b242d49831831a9450e2f35fa"}, + {file = "coverage-7.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:06babbb8f4e74b063dbaeb74ad68dfce9186c595a15f11f5d5683f748fa1d172"}, + {file = "coverage-7.6.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:73d2b73584446e66ee633eaad1a56aad577c077f46c35ca3283cd687b7715b0b"}, + {file = "coverage-7.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51b44306032045b383a7a8a2c13878de375117946d68dcb54308111f39775a25"}, + {file = "coverage-7.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3fb02fe73bed561fa12d279a417b432e5b50fe03e8d663d61b3d5990f29546"}, + {file = "coverage-7.6.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed8fe9189d2beb6edc14d3ad19800626e1d9f2d975e436f84e19efb7fa19469b"}, + {file = "coverage-7.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b369ead6527d025a0fe7bd3864e46dbee3aa8f652d48df6174f8d0bac9e26e0e"}, + {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ade3ca1e5f0ff46b678b66201f7ff477e8fa11fb537f3b55c3f0568fbfe6e718"}, + {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:27fb4a050aaf18772db513091c9c13f6cb94ed40eacdef8dad8411d92d9992db"}, + {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4f704f0998911abf728a7783799444fcbbe8261c4a6c166f667937ae6a8aa522"}, + {file = "coverage-7.6.4-cp311-cp311-win32.whl", hash = "sha256:29155cd511ee058e260db648b6182c419422a0d2e9a4fa44501898cf918866cf"}, + {file = "coverage-7.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:8902dd6a30173d4ef09954bfcb24b5d7b5190cf14a43170e386979651e09ba19"}, + {file = "coverage-7.6.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12394842a3a8affa3ba62b0d4ab7e9e210c5e366fbac3e8b2a68636fb19892c2"}, + {file = "coverage-7.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2b6b4c83d8e8ea79f27ab80778c19bc037759aea298da4b56621f4474ffeb117"}, + {file = "coverage-7.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d5b8007f81b88696d06f7df0cb9af0d3b835fe0c8dbf489bad70b45f0e45613"}, + {file = "coverage-7.6.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b57b768feb866f44eeed9f46975f3d6406380275c5ddfe22f531a2bf187eda27"}, + {file = "coverage-7.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5915fcdec0e54ee229926868e9b08586376cae1f5faa9bbaf8faf3561b393d52"}, + {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0b58c672d14f16ed92a48db984612f5ce3836ae7d72cdd161001cc54512571f2"}, + {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2fdef0d83a2d08d69b1f2210a93c416d54e14d9eb398f6ab2f0a209433db19e1"}, + {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8cf717ee42012be8c0cb205dbbf18ffa9003c4cbf4ad078db47b95e10748eec5"}, + {file = "coverage-7.6.4-cp312-cp312-win32.whl", hash = "sha256:7bb92c539a624cf86296dd0c68cd5cc286c9eef2d0c3b8b192b604ce9de20a17"}, + {file = "coverage-7.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:1032e178b76a4e2b5b32e19d0fd0abbce4b58e77a1ca695820d10e491fa32b08"}, + {file = "coverage-7.6.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:023bf8ee3ec6d35af9c1c6ccc1d18fa69afa1cb29eaac57cb064dbb262a517f9"}, + {file = "coverage-7.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0ac3d42cb51c4b12df9c5f0dd2f13a4f24f01943627120ec4d293c9181219ba"}, + {file = "coverage-7.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8fe4984b431f8621ca53d9380901f62bfb54ff759a1348cd140490ada7b693c"}, + {file = "coverage-7.6.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5fbd612f8a091954a0c8dd4c0b571b973487277d26476f8480bfa4b2a65b5d06"}, + {file = "coverage-7.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dacbc52de979f2823a819571f2e3a350a7e36b8cb7484cdb1e289bceaf35305f"}, + {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dab4d16dfef34b185032580e2f2f89253d302facba093d5fa9dbe04f569c4f4b"}, + {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:862264b12ebb65ad8d863d51f17758b1684560b66ab02770d4f0baf2ff75da21"}, + {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5beb1ee382ad32afe424097de57134175fea3faf847b9af002cc7895be4e2a5a"}, + {file = "coverage-7.6.4-cp313-cp313-win32.whl", hash = "sha256:bf20494da9653f6410213424f5f8ad0ed885e01f7e8e59811f572bdb20b8972e"}, + {file = "coverage-7.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:182e6cd5c040cec0a1c8d415a87b67ed01193ed9ad458ee427741c7d8513d963"}, + {file = "coverage-7.6.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a181e99301a0ae128493a24cfe5cfb5b488c4e0bf2f8702091473d033494d04f"}, + {file = "coverage-7.6.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:df57bdbeffe694e7842092c5e2e0bc80fff7f43379d465f932ef36f027179806"}, + {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bcd1069e710600e8e4cf27f65c90c7843fa8edfb4520fb0ccb88894cad08b11"}, + {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99b41d18e6b2a48ba949418db48159d7a2e81c5cc290fc934b7d2380515bd0e3"}, + {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1e54712ba3474f34b7ef7a41e65bd9037ad47916ccb1cc78769bae324c01a"}, + {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53d202fd109416ce011578f321460795abfe10bb901b883cafd9b3ef851bacfc"}, + {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:c48167910a8f644671de9f2083a23630fbf7a1cb70ce939440cd3328e0919f70"}, + {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cc8ff50b50ce532de2fa7a7daae9dd12f0a699bfcd47f20945364e5c31799fef"}, + {file = "coverage-7.6.4-cp313-cp313t-win32.whl", hash = "sha256:b8d3a03d9bfcaf5b0141d07a88456bb6a4c3ce55c080712fec8418ef3610230e"}, + {file = "coverage-7.6.4-cp313-cp313t-win_amd64.whl", hash = "sha256:f3ddf056d3ebcf6ce47bdaf56142af51bb7fad09e4af310241e9db7a3a8022e1"}, + {file = "coverage-7.6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9cb7fa111d21a6b55cbf633039f7bc2749e74932e3aa7cb7333f675a58a58bf3"}, + {file = "coverage-7.6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:11a223a14e91a4693d2d0755c7a043db43d96a7450b4f356d506c2562c48642c"}, + {file = "coverage-7.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a413a096c4cbac202433c850ee43fa326d2e871b24554da8327b01632673a076"}, + {file = "coverage-7.6.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00a1d69c112ff5149cabe60d2e2ee948752c975d95f1e1096742e6077affd376"}, + {file = "coverage-7.6.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f76846299ba5c54d12c91d776d9605ae33f8ae2b9d1d3c3703cf2db1a67f2c0"}, + {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fe439416eb6380de434886b00c859304338f8b19f6f54811984f3420a2e03858"}, + {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0294ca37f1ba500667b1aef631e48d875ced93ad5e06fa665a3295bdd1d95111"}, + {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6f01ba56b1c0e9d149f9ac85a2f999724895229eb36bd997b61e62999e9b0901"}, + {file = "coverage-7.6.4-cp39-cp39-win32.whl", hash = "sha256:bc66f0bf1d7730a17430a50163bb264ba9ded56739112368ba985ddaa9c3bd09"}, + {file = "coverage-7.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:c481b47f6b5845064c65a7bc78bc0860e635a9b055af0df46fdf1c58cebf8e8f"}, + {file = "coverage-7.6.4-pp39.pp310-none-any.whl", hash = "sha256:3c65d37f3a9ebb703e710befdc489a38683a5b152242664b973a7b7b22348a4e"}, + {file = "coverage-7.6.4.tar.gz", hash = "sha256:29fc0f17b1d3fea332f8001d4558f8214af7f1d87a345f3a133c901d60347c73"}, +] + +[package.extras] +toml = ["tomli"] + +[[package]] +name = "dask" +version = "2024.10.0" +description = "Parallel PyData with Task Scheduling" +optional = false +python-versions = ">=3.10" +files = [ + {file = "dask-2024.10.0-py3-none-any.whl", hash = "sha256:1ddc27c7967e134b4f8296a488521485a5ac4927cc63e2abfa0b24227b93217f"}, + {file = "dask-2024.10.0.tar.gz", hash = "sha256:dfd3efec5d8d8340fb647d0347637133030cad261b714623cc27de286e9db037"}, +] + +[package.dependencies] +click = ">=8.1" +cloudpickle = ">=3.0.0" +fsspec = ">=2021.09.0" +packaging = ">=20.0" +partd = ">=1.4.0" +pyyaml = ">=5.3.1" +toolz = ">=0.10.0" + +[package.extras] +array = ["numpy (>=1.24)"] +complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=14.0.1)"] +dataframe = ["dask-expr (>=1.1,<1.2)", "dask[array]", "pandas (>=2.0)"] +diagnostics = ["bokeh (>=3.1.0)", "jinja2 (>=2.10.3)"] +distributed = ["distributed (==2024.10.0)"] +test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] + +[[package]] +name = "debugpy" +version = "1.8.7" +description = "An implementation of the Debug Adapter Protocol for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "debugpy-1.8.7-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:95fe04a573b8b22896c404365e03f4eda0ce0ba135b7667a1e57bd079793b96b"}, + {file = "debugpy-1.8.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:628a11f4b295ffb4141d8242a9bb52b77ad4a63a2ad19217a93be0f77f2c28c9"}, + {file = "debugpy-1.8.7-cp310-cp310-win32.whl", hash = "sha256:85ce9c1d0eebf622f86cc68618ad64bf66c4fc3197d88f74bb695a416837dd55"}, + {file = "debugpy-1.8.7-cp310-cp310-win_amd64.whl", hash = "sha256:29e1571c276d643757ea126d014abda081eb5ea4c851628b33de0c2b6245b037"}, + {file = "debugpy-1.8.7-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:caf528ff9e7308b74a1749c183d6808ffbedbb9fb6af78b033c28974d9b8831f"}, + {file = "debugpy-1.8.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cba1d078cf2e1e0b8402e6bda528bf8fda7ccd158c3dba6c012b7897747c41a0"}, + {file = "debugpy-1.8.7-cp311-cp311-win32.whl", hash = "sha256:171899588bcd412151e593bd40d9907133a7622cd6ecdbdb75f89d1551df13c2"}, + {file = "debugpy-1.8.7-cp311-cp311-win_amd64.whl", hash = "sha256:6e1c4ffb0c79f66e89dfd97944f335880f0d50ad29525dc792785384923e2211"}, + {file = "debugpy-1.8.7-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:4d27d842311353ede0ad572600c62e4bcd74f458ee01ab0dd3a1a4457e7e3706"}, + {file = "debugpy-1.8.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:703c1fd62ae0356e194f3e7b7a92acd931f71fe81c4b3be2c17a7b8a4b546ec2"}, + {file = "debugpy-1.8.7-cp312-cp312-win32.whl", hash = "sha256:2f729228430ef191c1e4df72a75ac94e9bf77413ce5f3f900018712c9da0aaca"}, + {file = "debugpy-1.8.7-cp312-cp312-win_amd64.whl", hash = "sha256:45c30aaefb3e1975e8a0258f5bbd26cd40cde9bfe71e9e5a7ac82e79bad64e39"}, + {file = "debugpy-1.8.7-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:d050a1ec7e925f514f0f6594a1e522580317da31fbda1af71d1530d6ea1f2b40"}, + {file = "debugpy-1.8.7-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2f4349a28e3228a42958f8ddaa6333d6f8282d5edaea456070e48609c5983b7"}, + {file = "debugpy-1.8.7-cp313-cp313-win32.whl", hash = "sha256:11ad72eb9ddb436afb8337891a986302e14944f0f755fd94e90d0d71e9100bba"}, + {file = "debugpy-1.8.7-cp313-cp313-win_amd64.whl", hash = "sha256:2efb84d6789352d7950b03d7f866e6d180284bc02c7e12cb37b489b7083d81aa"}, + {file = "debugpy-1.8.7-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:4b908291a1d051ef3331484de8e959ef3e66f12b5e610c203b5b75d2725613a7"}, + {file = "debugpy-1.8.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da8df5b89a41f1fd31503b179d0a84a5fdb752dddd5b5388dbd1ae23cda31ce9"}, + {file = "debugpy-1.8.7-cp38-cp38-win32.whl", hash = "sha256:b12515e04720e9e5c2216cc7086d0edadf25d7ab7e3564ec8b4521cf111b4f8c"}, + {file = "debugpy-1.8.7-cp38-cp38-win_amd64.whl", hash = "sha256:93176e7672551cb5281577cdb62c63aadc87ec036f0c6a486f0ded337c504596"}, + {file = "debugpy-1.8.7-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:90d93e4f2db442f8222dec5ec55ccfc8005821028982f1968ebf551d32b28907"}, + {file = "debugpy-1.8.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6db2a370e2700557a976eaadb16243ec9c91bd46f1b3bb15376d7aaa7632c81"}, + {file = "debugpy-1.8.7-cp39-cp39-win32.whl", hash = "sha256:a6cf2510740e0c0b4a40330640e4b454f928c7b99b0c9dbf48b11efba08a8cda"}, + {file = "debugpy-1.8.7-cp39-cp39-win_amd64.whl", hash = "sha256:6a9d9d6d31846d8e34f52987ee0f1a904c7baa4912bf4843ab39dadf9b8f3e0d"}, + {file = "debugpy-1.8.7-py2.py3-none-any.whl", hash = "sha256:57b00de1c8d2c84a61b90880f7e5b6deaf4c312ecbde3a0e8912f2a56c4ac9ae"}, + {file = "debugpy-1.8.7.zip", hash = "sha256:18b8f731ed3e2e1df8e9cdaa23fb1fc9c24e570cd0081625308ec51c82efe42e"}, +] + +[[package]] +name = "decorator" +version = "5.1.1" +description = "Decorators for Humans" +optional = false +python-versions = ">=3.5" +files = [ + {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, + {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +description = "XML bomb protection for Python stdlib modules" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, + {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, +] [[package]] name = "distlib" @@ -315,65 +770,191 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - {file = "distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16"}, - {file = "distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d"}, + {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, + {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, ] [[package]] -name = "filelock" -version = "3.19.1" -description = "A platform independent file lock." +name = "docutils" +version = "0.21.2" +description = "Docutils -- Python Documentation Utilities" optional = false python-versions = ">=3.9" -groups = ["dev"] files = [ - {file = "filelock-3.19.1-py3-none-any.whl", hash = "sha256:d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d"}, - {file = "filelock-3.19.1.tar.gz", hash = "sha256:66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58"}, + {file = "docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2"}, + {file = "docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f"}, ] [[package]] -name = "ghp-import" +name = "executing" version = "2.1.0" -description = "Copy your docs directly to the gh-pages branch." +description = "Get the currently executing AST node of a frame, and other information" +optional = false +python-versions = ">=3.8" +files = [ + {file = "executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf"}, + {file = "executing-2.1.0.tar.gz", hash = "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab"}, +] + +[package.extras] +tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] + +[[package]] +name = "fasteners" +version = "0.19" +description = "A python package that provides useful locks" +optional = false +python-versions = ">=3.6" +files = [ + {file = "fasteners-0.19-py3-none-any.whl", hash = "sha256:758819cb5d94cdedf4e836988b74de396ceacb8e2794d21f82d131fd9ee77237"}, + {file = "fasteners-0.19.tar.gz", hash = "sha256:b4f37c3ac52d8a445af3a66bce57b33b5e90b97c696b7b984f530cf8f0ded09c"}, +] + +[[package]] +name = "fastjsonschema" +version = "2.20.0" +description = "Fastest Python implementation of JSON schema" optional = false python-versions = "*" groups = ["dev"] files = [ - {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, - {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, + {file = "fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a"}, + {file = "fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23"}, +] + +[package.extras] +devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] + +[[package]] +name = "filelock" +version = "3.16.1" +description = "A platform independent file lock." +optional = false +python-versions = ">=3.8" +files = [ + {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, + {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] +typing = ["typing-extensions (>=4.12.2)"] + +[[package]] +name = "fqdn" +version = "1.5.1" +description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers" +optional = false +python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" +files = [ + {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"}, + {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"}, +] + +[[package]] +name = "fsspec" +version = "2024.10.0" +description = "File-system specification" +optional = false +python-versions = ">=3.8" +files = [ + {file = "fsspec-2024.10.0-py3-none-any.whl", hash = "sha256:03b9a6785766a4de40368b88906366755e2819e758b83705c88cd7cb5fe81871"}, + {file = "fsspec-2024.10.0.tar.gz", hash = "sha256:eda2d8a4116d4f2429db8550f2457da57279247dd930bb12f821b58391359493"}, +] + +[package.extras] +abfs = ["adlfs"] +adl = ["adlfs"] +arrow = ["pyarrow (>=1)"] +dask = ["dask", "distributed"] +dev = ["pre-commit", "ruff"] +doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"] +dropbox = ["dropbox", "dropboxdrivefs", "requests"] +full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] +fuse = ["fusepy"] +gcs = ["gcsfs"] +git = ["pygit2"] +github = ["requests"] +gs = ["gcsfs"] +gui = ["panel"] +hdfs = ["pyarrow (>=1)"] +http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] +libarchive = ["libarchive-c"] +oci = ["ocifs"] +s3 = ["s3fs"] +sftp = ["paramiko"] +smb = ["smbprotocol"] +ssh = ["paramiko"] +test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"] +test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask-expr", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] +test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard"] +tqdm = ["tqdm"] + +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "httpcore" +version = "1.0.6" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, ] [package.dependencies] -python-dateutil = ">=2.8.1" +certifi = "*" +h11 = ">=0.13,<0.15" [package.extras] dev = ["flake8", "markdown", "twine", "wheel"] [[package]] -name = "griffe" -version = "1.12.1" -description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." +name = "httpx" +version = "0.27.2" +description = "The next generation HTTP client." optional = false -python-versions = ">=3.9" -groups = ["dev"] +python-versions = ">=3.8" files = [ - {file = "griffe-1.12.1-py3-none-any.whl", hash = "sha256:2d7c12334de00089c31905424a00abcfd931b45b8b516967f224133903d302cc"}, - {file = "griffe-1.12.1.tar.gz", hash = "sha256:29f5a6114c0aeda7d9c86a570f736883f8a2c5b38b57323d56b3d1c000565567"}, + {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, + {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, ] [package.dependencies] -colorama = ">=0.4" +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" +sniffio = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] [[package]] name = "identify" -version = "2.6.13" +version = "2.6.1" description = "File identification library for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "identify-2.6.13-py2.py3-none-any.whl", hash = "sha256:60381139b3ae39447482ecc406944190f690d4a2997f2584062089848361b33b"}, - {file = "identify-2.6.13.tar.gz", hash = "sha256:da8d6c828e773620e13bfa86ea601c5a5310ba4bcd65edf378198b56a1f9fb32"}, + {file = "identify-2.6.1-py2.py3-none-any.whl", hash = "sha256:53863bcac7caf8d2ed85bd20312ea5dcfc22226800f6d6881f232d861db5a8f0"}, + {file = "identify-2.6.1.tar.gz", hash = "sha256:91478c5fb7c3aac5ff7bf9b4344f803843dc586832d5f110d672b19aa1984c98"}, ] [package.extras] @@ -399,56 +980,516 @@ name = "iniconfig" version = "2.1.0" description = "brain-dead simple config-ini parsing" optional = false +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "ipykernel" +version = "6.29.5" +description = "IPython Kernel for Jupyter" +optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, - {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, + {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, + {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, ] +[package.dependencies] +appnope = {version = "*", markers = "platform_system == \"Darwin\""} +comm = ">=0.1.1" +debugpy = ">=1.6.5" +ipython = ">=7.23.1" +jupyter-client = ">=6.1.12" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +matplotlib-inline = ">=0.1" +nest-asyncio = "*" +packaging = "*" +psutil = "*" +pyzmq = ">=24" +tornado = ">=6.1" +traitlets = ">=5.4.0" + +[package.extras] +cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] +pyqt5 = ["pyqt5"] +pyside6 = ["pyside6"] +test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] + [[package]] -name = "jinja2" -version = "3.1.6" -description = "A very fast and expressive template engine." +name = "ipython" +version = "8.29.0" +description = "IPython: Productive Interactive Computing" optional = false -python-versions = ">=3.7" -groups = ["dev"] +python-versions = ">=3.10" files = [ - {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, - {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, + {file = "ipython-8.29.0-py3-none-any.whl", hash = "sha256:0188a1bd83267192123ccea7f4a8ed0a78910535dbaa3f37671dca76ebd429c8"}, + {file = "ipython-8.29.0.tar.gz", hash = "sha256:40b60e15b22591450eef73e40a027cf77bd652e757523eebc5bd7c7c498290eb"}, ] [package.dependencies] -MarkupSafe = ">=2.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +decorator = "*" +jedi = ">=0.16" +matplotlib-inline = "*" +pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} +prompt-toolkit = ">=3.0.41,<3.1.0" +pygments = ">=2.4.0" +stack-data = "*" +traitlets = ">=5.13.0" [package.extras] -i18n = ["Babel (>=2.7)"] +all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"] +black = ["black"] +doc = ["docrepr", "exceptiongroup", "intersphinx-registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli", "typing-extensions"] +kernel = ["ipykernel"] +matplotlib = ["matplotlib"] +nbconvert = ["nbconvert"] +nbformat = ["nbformat"] +notebook = ["ipywidgets", "notebook"] +parallel = ["ipyparallel"] +qtconsole = ["qtconsole"] +test = ["packaging", "pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"] +test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"] [[package]] -name = "markdown" -version = "3.8.2" -description = "Python implementation of John Gruber's Markdown." +name = "ipywidgets" +version = "8.1.5" +description = "Jupyter interactive widgets" optional = false -python-versions = ">=3.9" -groups = ["dev"] +python-versions = ">=3.7" files = [ - {file = "markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24"}, - {file = "markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45"}, + {file = "ipywidgets-8.1.5-py3-none-any.whl", hash = "sha256:3290f526f87ae6e77655555baba4f36681c555b8bdbbff430b70e52c34c86245"}, + {file = "ipywidgets-8.1.5.tar.gz", hash = "sha256:870e43b1a35656a80c18c9503bbf2d16802db1cb487eec6fab27d683381dde17"}, ] +[package.dependencies] +comm = ">=0.1.3" +ipython = ">=6.1.0" +jupyterlab-widgets = ">=3.0.12,<3.1.0" +traitlets = ">=4.3.1" +widgetsnbextension = ">=4.0.12,<4.1.0" + [package.extras] -docs = ["mdx_gh_links (>=0.2)", "mkdocs (>=1.6)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] -testing = ["coverage", "pyyaml"] +test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] [[package]] -name = "markupsafe" -version = "3.0.2" -description = "Safely add untrusted strings to HTML/XML markup." +name = "isoduration" +version = "20.11.0" +description = "Operations with ISO 8601 durations" optional = false -python-versions = ">=3.9" -groups = ["dev"] +python-versions = ">=3.7" files = [ - {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, + {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, + {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, +] + +[package.dependencies] +arrow = ">=0.15.0" + +[[package]] +name = "jedi" +version = "0.19.1" +description = "An autocompletion tool for Python that can be used for text editors." +optional = false +python-versions = ">=3.6" +files = [ + {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"}, + {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, +] + +[package.dependencies] +parso = ">=0.8.3,<0.9.0" + +[package.extras] +docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] +qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] +testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] + +[[package]] +name = "jinja2" +version = "3.1.6" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "json5" +version = "0.9.25" +description = "A Python implementation of the JSON5 data format." +optional = false +python-versions = ">=3.8" +files = [ + {file = "json5-0.9.25-py3-none-any.whl", hash = "sha256:34ed7d834b1341a86987ed52f3f76cd8ee184394906b6e22a1e0deb9ab294e8f"}, + {file = "json5-0.9.25.tar.gz", hash = "sha256:548e41b9be043f9426776f05df8635a00fe06104ea51ed24b67f908856e151ae"}, +] + +[[package]] +name = "jsonpointer" +version = "3.0.0" +description = "Identify specific nodes in a JSON document (RFC 6901)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, + {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, +] + +[[package]] +name = "jsonschema" +version = "4.23.0" +description = "An implementation of JSON Schema validation for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, + {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""} +jsonschema-specifications = ">=2023.03.6" +referencing = ">=0.28.4" +rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} +rpds-py = ">=0.7.1" +uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +webcolors = {version = ">=24.6.0", optional = true, markers = "extra == \"format-nongpl\""} + +[package.extras] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=24.6.0)"] + +[[package]] +name = "jsonschema-specifications" +version = "2024.10.1" +description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf"}, + {file = "jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272"}, +] + +[package.dependencies] +referencing = ">=0.31.0" + +[[package]] +name = "jupyter" +version = "1.1.1" +description = "Jupyter metapackage. Install all the Jupyter components in one go." +optional = false +python-versions = "*" +files = [ + {file = "jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83"}, + {file = "jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a"}, +] + +[package.dependencies] +ipykernel = "*" +ipywidgets = "*" +jupyter-console = "*" +jupyterlab = "*" +nbconvert = "*" +notebook = "*" + +[[package]] +name = "jupyter-client" +version = "8.6.3" +description = "Jupyter protocol implementation and client libraries" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, + {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, +] + +[package.extras] +docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] + +[[package]] +name = "jupyter-console" +version = "6.6.3" +description = "Jupyter terminal console" +optional = false +python-versions = ">=3.7" +files = [ + {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"}, + {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"}, +] + +[package.dependencies] +ipykernel = ">=6.14" +ipython = "*" +jupyter-client = ">=7.0.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +prompt-toolkit = ">=3.0.30" +pygments = "*" +pyzmq = ">=17" +traitlets = ">=5.4" + +[package.extras] +test = ["flaky", "pexpect", "pytest"] + +[[package]] +name = "jupyter-core" +version = "5.7.2" +description = "Jupyter core package. A base package on which Jupyter projects rely." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, + {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, +] + +[package.dependencies] +platformdirs = ">=2.5" +pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} +traitlets = ">=5.3" + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] +test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "jupyter-events" +version = "0.10.0" +description = "Jupyter Event System library" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_events-0.10.0-py3-none-any.whl", hash = "sha256:4b72130875e59d57716d327ea70d3ebc3af1944d3717e5a498b8a06c6c159960"}, + {file = "jupyter_events-0.10.0.tar.gz", hash = "sha256:670b8229d3cc882ec782144ed22e0d29e1c2d639263f92ca8383e66682845e22"}, +] + +[package.dependencies] +jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]} +python-json-logger = ">=2.0.4" +pyyaml = ">=5.3" +referencing = "*" +rfc3339-validator = "*" +rfc3986-validator = ">=0.1.1" +traitlets = ">=5.3" + +[package.extras] +cli = ["click", "rich"] +docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"] +test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"] + +[[package]] +name = "jupyter-lsp" +version = "2.2.5" +description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001"}, + {file = "jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da"}, +] + +[package.dependencies] +jupyter-server = ">=1.1.2" + +[[package]] +name = "jupyter-server" +version = "2.14.2" +description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_server-2.14.2-py3-none-any.whl", hash = "sha256:47ff506127c2f7851a17bf4713434208fc490955d0e8632e95014a9a9afbeefd"}, + {file = "jupyter_server-2.14.2.tar.gz", hash = "sha256:66095021aa9638ced276c248b1d81862e4c50f292d575920bbe960de1c56b12b"}, +] + +[package.dependencies] +anyio = ">=3.1.0" +argon2-cffi = ">=21.1" +jinja2 = ">=3.0.3" +jupyter-client = ">=7.4.4" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +jupyter-events = ">=0.9.0" +jupyter-server-terminals = ">=0.4.4" +nbconvert = ">=6.4.4" +nbformat = ">=5.3.0" +overrides = ">=5.0" +packaging = ">=22.0" +prometheus-client = ">=0.9" +pywinpty = {version = ">=2.0.1", markers = "os_name == \"nt\""} +pyzmq = ">=24" +send2trash = ">=1.8.2" +terminado = ">=0.8.3" +tornado = ">=6.2.0" +traitlets = ">=5.6.0" +websocket-client = ">=1.7" + +[package.extras] +docs = ["ipykernel", "jinja2", "jupyter-client", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"] +test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0,<9)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.7)", "pytest-timeout", "requests"] + +[[package]] +name = "jupyter-server-terminals" +version = "0.5.3" +description = "A Jupyter Server Extension Providing Terminals." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, + {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, +] + +[package.dependencies] +pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""} +terminado = ">=0.8.3" + +[package.extras] +docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"] +test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"] + +[[package]] +name = "jupyterlab" +version = "4.2.5" +description = "JupyterLab computational environment" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyterlab-4.2.5-py3-none-any.whl", hash = "sha256:73b6e0775d41a9fee7ee756c80f58a6bed4040869ccc21411dc559818874d321"}, + {file = "jupyterlab-4.2.5.tar.gz", hash = "sha256:ae7f3a1b8cb88b4f55009ce79fa7c06f99d70cd63601ee4aa91815d054f46f75"}, +] + +[package.dependencies] +async-lru = ">=1.0.0" +httpx = ">=0.25.0" +ipykernel = ">=6.5.0" +jinja2 = ">=3.0.3" +jupyter-core = "*" +jupyter-lsp = ">=2.0.0" +jupyter-server = ">=2.4.0,<3" +jupyterlab-server = ">=2.27.1,<3" +notebook-shim = ">=0.2" +packaging = "*" +setuptools = ">=40.1.0" +tornado = ">=6.2.0" +traitlets = "*" + +[package.extras] +dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.3.5)"] +docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<7.3.0)", "sphinx-copybutton"] +docs-screenshots = ["altair (==5.3.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.2)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.1.post2)", "matplotlib (==3.8.3)", "nbconvert (>=7.0.0)", "pandas (==2.2.1)", "scipy (==1.12.0)", "vega-datasets (==0.9.0)"] +test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] +upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)", "pyyaml-include (<3.0)", "tomli-w (<2.0)"] + +[[package]] +name = "jupyterlab-pygments" +version = "0.3.0" +description = "Pygments theme using JupyterLab CSS variables" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, + {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, +] + +[[package]] +name = "jupyterlab-server" +version = "2.27.3" +description = "A set of server components for JupyterLab and JupyterLab like applications." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4"}, + {file = "jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4"}, +] + +[package.dependencies] +babel = ">=2.10" +jinja2 = ">=3.0.3" +json5 = ">=0.9.0" +jsonschema = ">=4.18.0" +jupyter-server = ">=1.21,<3" +packaging = ">=21.3" +requests = ">=2.31" + +[package.extras] +docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"] +openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"] +test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0,<8)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] + +[[package]] +name = "jupyterlab-widgets" +version = "3.0.13" +description = "Jupyter interactive widgets for JupyterLab" +optional = false +python-versions = ">=3.7" +files = [ + {file = "jupyterlab_widgets-3.0.13-py3-none-any.whl", hash = "sha256:e3cda2c233ce144192f1e29914ad522b2f4c40e77214b0cc97377ca3d323db54"}, + {file = "jupyterlab_widgets-3.0.13.tar.gz", hash = "sha256:a2966d385328c1942b683a8cd96b89b8dd82c8b8f81dda902bb2bc06d46f5bed"}, +] + +[[package]] +name = "locket" +version = "1.0.0" +description = "File-based locks for Python on Linux and Windows" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3"}, + {file = "locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632"}, +] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +optional = false +python-versions = ">=3.8" +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + +[[package]] +name = "markupsafe" +version = "3.0.2" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, @@ -516,39 +1557,26 @@ name = "mergedeep" version = "1.3.4" description = "A deep merge function for 🐍." optional = false -python-versions = ">=3.6" -groups = ["dev"] +python-versions = ">=3.8" files = [ {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, ] [[package]] -name = "mkdocs" -version = "1.6.1" -description = "Project documentation with Markdown." +name = "mdit-py-plugins" +version = "0.4.2" +description = "Collection of plugins for markdown-it-py" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e"}, - {file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2"}, + {file = "mdit_py_plugins-0.4.2-py3-none-any.whl", hash = "sha256:0c673c3f889399a33b95e88d2f0d111b4447bdfea7f237dab2d488f459835636"}, + {file = "mdit_py_plugins-0.4.2.tar.gz", hash = "sha256:5f2cd1fdb606ddf152d37ec30e46101a60512bc0e5fa1a7002c36647b09e26b5"}, ] [package.dependencies] -click = ">=7.0" -colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} -ghp-import = ">=1.0" -jinja2 = ">=2.11.1" -markdown = ">=3.3.6" -markupsafe = ">=2.0.1" -mergedeep = ">=1.3.4" -mkdocs-get-deps = ">=0.2.0" -packaging = ">=20.5" -pathspec = ">=0.11.1" -pyyaml = ">=5.1" -pyyaml-env-tag = ">=0.1" -watchdog = ">=2.0" +markdown-it-py = ">=1.0.0,<4.0.0" [package.extras] i18n = ["babel (>=2.9.0)"] @@ -562,8 +1590,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13"}, - {file = "mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749"}, + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, ] [package.dependencies] @@ -579,8 +1607,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, - {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, + {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"}, + {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"}, ] [package.dependencies] @@ -589,30 +1617,50 @@ platformdirs = ">=2.2.0" pyyaml = ">=5.1" [[package]] -name = "mkdocs-material" -version = "9.6.17" -description = "Documentation that simply works" +name = "mypy" +version = "1.13.0" +description = "Optional static typing for Python" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "mkdocs_material-9.6.17-py3-none-any.whl", hash = "sha256:221dd8b37a63f52e580bcab4a7e0290e4a6f59bd66190be9c3d40767e05f9417"}, - {file = "mkdocs_material-9.6.17.tar.gz", hash = "sha256:48ae7aec72a3f9f501a70be3fbd329c96ff5f5a385b67a1563e5ed5ce064affe"}, + {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"}, + {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"}, + {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"}, + {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"}, + {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"}, + {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"}, + {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"}, + {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"}, + {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"}, + {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"}, + {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"}, + {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"}, + {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"}, + {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"}, + {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"}, + {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"}, + {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"}, + {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"}, + {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"}, + {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"}, + {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"}, + {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"}, + {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"}, + {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"}, + {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"}, + {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"}, + {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"}, + {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"}, + {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"}, + {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"}, + {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"}, + {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"}, ] [package.dependencies] -babel = ">=2.10,<3.0" -backrefs = ">=5.7.post1,<6.0" -click = "<8.2.2" -colorama = ">=0.4,<1.0" -jinja2 = ">=3.1,<4.0" -markdown = ">=3.2,<4.0" -mkdocs = ">=1.6,<2.0" -mkdocs-material-extensions = ">=1.3,<2.0" -paginate = ">=0.5,<1.0" -pygments = ">=2.16,<3.0" -pymdown-extensions = ">=10.2,<11.0" -requests = ">=2.26,<3.0" +mypy-extensions = ">=1.0.0" +typing-extensions = ">=4.6.0" [package.extras] git = ["mkdocs-git-committers-plugin-2 (>=1.1,<3)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] @@ -627,8 +1675,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, - {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, ] [[package]] @@ -639,93 +1687,74 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "mkdocstrings-0.29.1-py3-none-any.whl", hash = "sha256:37a9736134934eea89cbd055a513d40a020d87dfcae9e3052c2a6b8cd4af09b6"}, - {file = "mkdocstrings-0.29.1.tar.gz", hash = "sha256:8722f8f8c5cd75da56671e0a0c1bbed1df9946c0cef74794d6141b34011abd42"}, + {file = "myst_parser-4.0.0-py3-none-any.whl", hash = "sha256:b9317997552424448c6096c2558872fdb6f81d3ecb3a40ce84a7518798f3f28d"}, + {file = "myst_parser-4.0.0.tar.gz", hash = "sha256:851c9dfb44e36e56d15d05e72f02b80da21a9e0d07cba96baf5e2d476bb91531"}, ] [package.dependencies] -Jinja2 = ">=2.11.1" -Markdown = ">=3.6" -MarkupSafe = ">=1.1" -mkdocs = ">=1.6" -mkdocs-autorefs = ">=1.4" -mkdocstrings-python = {version = ">=1.16.2", optional = true, markers = "extra == \"python\""} -pymdown-extensions = ">=6.3" +docutils = ">=0.19,<0.22" +jinja2 = "*" +markdown-it-py = ">=3.0,<4.0" +mdit-py-plugins = ">=0.4.1,<1.0" +pyyaml = "*" +sphinx = ">=7,<9" [package.extras] -crystal = ["mkdocstrings-crystal (>=0.3.4)"] -python = ["mkdocstrings-python (>=1.16.2)"] -python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] +code-style = ["pre-commit (>=3.0,<4.0)"] +linkify = ["linkify-it-py (>=2.0,<3.0)"] +rtd = ["ipython", "sphinx (>=7)", "sphinx-autodoc2 (>=0.5.0,<0.6.0)", "sphinx-book-theme (>=1.1,<2.0)", "sphinx-copybutton", "sphinx-design", "sphinx-pyscript", "sphinx-tippy (>=0.4.3)", "sphinx-togglebutton", "sphinxext-opengraph (>=0.9.0,<0.10.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)"] +testing = ["beautifulsoup4", "coverage[toml]", "defusedxml", "pytest (>=8,<9)", "pytest-cov", "pytest-param-files (>=0.6.0,<0.7.0)", "pytest-regressions", "sphinx-pytest"] +testing-docutils = ["pygments", "pytest (>=8,<9)", "pytest-param-files (>=0.6.0,<0.7.0)"] [[package]] -name = "mkdocstrings-python" -version = "1.16.12" -description = "A Python handler for mkdocstrings." +name = "nbclient" +version = "0.10.0" +description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." optional = false -python-versions = ">=3.9" -groups = ["dev"] +python-versions = ">=3.8.0" files = [ - {file = "mkdocstrings_python-1.16.12-py3-none-any.whl", hash = "sha256:22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374"}, - {file = "mkdocstrings_python-1.16.12.tar.gz", hash = "sha256:9b9eaa066e0024342d433e332a41095c4e429937024945fea511afe58f63175d"}, + {file = "nbclient-0.10.0-py3-none-any.whl", hash = "sha256:f13e3529332a1f1f81d82a53210322476a168bb7090a0289c795fe9cc11c9d3f"}, + {file = "nbclient-0.10.0.tar.gz", hash = "sha256:4b3f1b7dba531e498449c4db4f53da339c91d449dc11e9af3a43b4eb5c5abb09"}, ] [package.dependencies] -griffe = ">=1.6.2" -mkdocs-autorefs = ">=1.4" -mkdocstrings = ">=0.28.3" +jupyter-client = ">=6.1.12" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +nbformat = ">=5.1" +traitlets = ">=5.4" + +[package.extras] +dev = ["pre-commit"] +docs = ["autodoc-traits", "mock", "moto", "myst-parser", "nbclient[test]", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling"] +test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] [[package]] -name = "mypy" -version = "1.17.1" -description = "Optional static typing for Python" +name = "nbconvert" +version = "7.16.4" +description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." optional = false -python-versions = ">=3.9" -groups = ["dev"] +python-versions = ">=3.8" files = [ - {file = "mypy-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3fbe6d5555bf608c47203baa3e72dbc6ec9965b3d7c318aa9a4ca76f465bd972"}, - {file = "mypy-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80ef5c058b7bce08c83cac668158cb7edea692e458d21098c7d3bce35a5d43e7"}, - {file = "mypy-1.17.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4a580f8a70c69e4a75587bd925d298434057fe2a428faaf927ffe6e4b9a98df"}, - {file = "mypy-1.17.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd86bb649299f09d987a2eebb4d52d10603224500792e1bee18303bbcc1ce390"}, - {file = "mypy-1.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a76906f26bd8d51ea9504966a9c25419f2e668f012e0bdf3da4ea1526c534d94"}, - {file = "mypy-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:e79311f2d904ccb59787477b7bd5d26f3347789c06fcd7656fa500875290264b"}, - {file = "mypy-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad37544be07c5d7fba814eb370e006df58fed8ad1ef33ed1649cb1889ba6ff58"}, - {file = "mypy-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:064e2ff508e5464b4bd807a7c1625bc5047c5022b85c70f030680e18f37273a5"}, - {file = "mypy-1.17.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:70401bbabd2fa1aa7c43bb358f54037baf0586f41e83b0ae67dd0534fc64edfd"}, - {file = "mypy-1.17.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e92bdc656b7757c438660f775f872a669b8ff374edc4d18277d86b63edba6b8b"}, - {file = "mypy-1.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c1fdf4abb29ed1cb091cf432979e162c208a5ac676ce35010373ff29247bcad5"}, - {file = "mypy-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:ff2933428516ab63f961644bc49bc4cbe42bbffb2cd3b71cc7277c07d16b1a8b"}, - {file = "mypy-1.17.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:69e83ea6553a3ba79c08c6e15dbd9bfa912ec1e493bf75489ef93beb65209aeb"}, - {file = "mypy-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b16708a66d38abb1e6b5702f5c2c87e133289da36f6a1d15f6a5221085c6403"}, - {file = "mypy-1.17.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:89e972c0035e9e05823907ad5398c5a73b9f47a002b22359b177d40bdaee7056"}, - {file = "mypy-1.17.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03b6d0ed2b188e35ee6d5c36b5580cffd6da23319991c49ab5556c023ccf1341"}, - {file = "mypy-1.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c837b896b37cd103570d776bda106eabb8737aa6dd4f248451aecf53030cdbeb"}, - {file = "mypy-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:665afab0963a4b39dff7c1fa563cc8b11ecff7910206db4b2e64dd1ba25aed19"}, - {file = "mypy-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93378d3203a5c0800c6b6d850ad2f19f7a3cdf1a3701d3416dbf128805c6a6a7"}, - {file = "mypy-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:15d54056f7fe7a826d897789f53dd6377ec2ea8ba6f776dc83c2902b899fee81"}, - {file = "mypy-1.17.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:209a58fed9987eccc20f2ca94afe7257a8f46eb5df1fb69958650973230f91e6"}, - {file = "mypy-1.17.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:099b9a5da47de9e2cb5165e581f158e854d9e19d2e96b6698c0d64de911dd849"}, - {file = "mypy-1.17.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa6ffadfbe6994d724c5a1bb6123a7d27dd68fc9c059561cd33b664a79578e14"}, - {file = "mypy-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:9a2b7d9180aed171f033c9f2fc6c204c1245cf60b0cb61cf2e7acc24eea78e0a"}, - {file = "mypy-1.17.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:15a83369400454c41ed3a118e0cc58bd8123921a602f385cb6d6ea5df050c733"}, - {file = "mypy-1.17.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:55b918670f692fc9fba55c3298d8a3beae295c5cded0a55dccdc5bbead814acd"}, - {file = "mypy-1.17.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:62761474061feef6f720149d7ba876122007ddc64adff5ba6f374fda35a018a0"}, - {file = "mypy-1.17.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c49562d3d908fd49ed0938e5423daed8d407774a479b595b143a3d7f87cdae6a"}, - {file = "mypy-1.17.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:397fba5d7616a5bc60b45c7ed204717eaddc38f826e3645402c426057ead9a91"}, - {file = "mypy-1.17.1-cp314-cp314-win_amd64.whl", hash = "sha256:9d6b20b97d373f41617bd0708fd46aa656059af57f2ef72aa8c7d6a2b73b74ed"}, - {file = "mypy-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5d1092694f166a7e56c805caaf794e0585cabdbf1df36911c414e4e9abb62ae9"}, - {file = "mypy-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:79d44f9bfb004941ebb0abe8eff6504223a9c1ac51ef967d1263c6572bbebc99"}, - {file = "mypy-1.17.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b01586eed696ec905e61bd2568f48740f7ac4a45b3a468e6423a03d3788a51a8"}, - {file = "mypy-1.17.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43808d9476c36b927fbcd0b0255ce75efe1b68a080154a38ae68a7e62de8f0f8"}, - {file = "mypy-1.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:feb8cc32d319edd5859da2cc084493b3e2ce5e49a946377663cc90f6c15fb259"}, - {file = "mypy-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d7598cf74c3e16539d4e2f0b8d8c318e00041553d83d4861f87c7a72e95ac24d"}, - {file = "mypy-1.17.1-py3-none-any.whl", hash = "sha256:a9f52c0351c21fe24c21d8c0eb1f62967b262d6729393397b6f443c3b773c3b9"}, - {file = "mypy-1.17.1.tar.gz", hash = "sha256:25e01ec741ab5bb3eec8ba9cdb0f769230368a22c959c4937360efb89b7e9f01"}, -] - -[package.dependencies] -mypy_extensions = ">=1.0.0" -pathspec = ">=0.9.0" -typing_extensions = ">=4.6.0" + {file = "nbconvert-7.16.4-py3-none-any.whl", hash = "sha256:05873c620fe520b6322bf8a5ad562692343fe3452abda5765c7a34b7d1aa3eb3"}, + {file = "nbconvert-7.16.4.tar.gz", hash = "sha256:86ca91ba266b0a448dc96fa6c5b9d98affabde2867b363258703536807f9f7f4"}, +] + +[package.dependencies] +beautifulsoup4 = "*" +bleach = "!=5.0.0" +defusedxml = "*" +jinja2 = ">=3.0" +jupyter-core = ">=4.7" +jupyterlab-pygments = "*" +markupsafe = ">=2.0" +mistune = ">=2.0.3,<4" +nbclient = ">=0.5.0" +nbformat = ">=5.7" +packaging = "*" +pandocfilters = ">=1.4.1" +pygments = ">=2.4.1" +tinycss2 = "*" +traitlets = ">=5.1" [package.extras] dmypy = ["psutil (>=4.0)"] @@ -742,8 +1771,68 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, - {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, + {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, + {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, +] + +[package.dependencies] +fastjsonschema = ">=2.15" +jsonschema = ">=2.6" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +traitlets = ">=5.1" + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["pep440", "pre-commit", "pytest", "testpath"] + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +description = "Patch asyncio to allow nested event loops" +optional = false +python-versions = ">=3.5" +files = [ + {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, + {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, +] + +[[package]] +name = "netcdf4" +version = "1.7.2" +description = "Provides an object-oriented python interface to the netCDF version 4 library" +optional = false +python-versions = ">=3.8" +files = [ + {file = "netCDF4-1.7.2-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:5e9b485e3bd9294d25ff7dc9addefce42b3d23c1ee7e3627605277d159819392"}, + {file = "netCDF4-1.7.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:118b476fd00d7e3ab9aa7771186d547da645ae3b49c0c7bdab866793ebf22f07"}, + {file = "netCDF4-1.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abe5b1837ff209185ecfe50bd71884c866b3ee69691051833e410e57f177e059"}, + {file = "netCDF4-1.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28021c7e886e5bccf9a8ce504c032d1d7f98d86f67495fb7cf2c9564eba04510"}, + {file = "netCDF4-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:7460b638e41c8ce4179d082a81cb6456f0ce083d4d959f4d9e87a95cd86f64cb"}, + {file = "netCDF4-1.7.2-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:09d61c2ddb6011afb51e77ea0f25cd0bdc28887fb426ffbbc661d920f20c9749"}, + {file = "netCDF4-1.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:fd2a16dbddeb8fa7cf48c37bfc1967290332f2862bb82f984eec2007bb120aeb"}, + {file = "netCDF4-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f54f5d39ffbcf1726a1e6fd90cb5fa74277ecea739a5fa0f424636d71beafe24"}, + {file = "netCDF4-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:902aa50d70f49d002d896212a171d344c38f7b8ca520837c56c922ac1535c4a3"}, + {file = "netCDF4-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3291f9ad0c98c49a4dd16aefad1a9abd3a1b884171db6c81bdcee94671cfabe3"}, + {file = "netCDF4-1.7.2-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e73e3baa0b74afc414e53ff5095748fdbec7fb346eda351e567c23f2f0d247f1"}, + {file = "netCDF4-1.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a51da09258b31776f474c1d47e484fc7214914cdc59edf4cee789ba632184591"}, + {file = "netCDF4-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb95b11804fe051897d1f2044b05d82a1847bc2549631cdd2f655dde7de77a9c"}, + {file = "netCDF4-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d8a848373723f41ef662590b4f5e1832227501c9fd4513e8ad8da58c269977"}, + {file = "netCDF4-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:568ea369e00b581302d77fc5fd0b8f78e520c7e08d0b5af5219ba51f3f1cd694"}, + {file = "netCDF4-1.7.2-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:205a5f1de3ddb993c7c97fb204a923a22408cc2e5facf08d75a8eb89b3e7e1a8"}, + {file = "netCDF4-1.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:96653fc75057df196010818367c63ba6d7e9af603df0a7fe43fcdad3fe0e9e56"}, + {file = "netCDF4-1.7.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30d20e56b9ba2c48884eb89c91b63e6c0612b4927881707e34402719153ef17f"}, + {file = "netCDF4-1.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d6bfd38ba0bde04d56f06c1554714a2ea9dab75811c89450dc3ec57a9d36b80"}, + {file = "netCDF4-1.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:5c5fbee6134ee1246c397e1508e5297d825aa19221fdf3fa8dc9727ad824d7a5"}, + {file = "netCDF4-1.7.2-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:6bf402c2c7c063474576e5cf89af877d0b0cd097d9316d5bc4fcb22b62f12567"}, + {file = "netCDF4-1.7.2-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:5bdf3b34e6fd4210e34fdc5d1a669a22c4863d96f8a20a3928366acae7b3cbbb"}, + {file = "netCDF4-1.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:657774404b9f78a5e4d26506ac9bfe106e4a37238282a70803cc7ce679c5a6cc"}, + {file = "netCDF4-1.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e896d92f01fbf365e33e2513d5a8c4cfe16ff406aae9b6034e5ba1538c8c7a8"}, + {file = "netCDF4-1.7.2-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:eb87c08d1700fe67c301898cf5ba3a3e1f8f2fbb417fcd0e2ac784846b60b058"}, + {file = "netCDF4-1.7.2-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:59b403032774c723ee749d7f2135be311bad7d00d1db284bebfab58b9d5cdb92"}, + {file = "netCDF4-1.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:572f71459ef4b30e8554dcc4e1e6f55de515acc82a50968b48fe622244a64548"}, + {file = "netCDF4-1.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f77e72281acc5f331f82271e5f7f014d46f5ca9bcaa5aafe3e46d66cee21320"}, + {file = "netCDF4-1.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:d0fa7a9674fae8ae4877e813173c3ff7a6beee166b8730bdc847f517b282ed31"}, + {file = "netcdf4-1.7.2.tar.gz", hash = "sha256:a4c6375540b19989896136943abb6d44850ff6f1fa7d3f063253b1ad3f8b7fce"}, ] [[package]] @@ -759,37 +1848,266 @@ files = [ ] [[package]] -name = "packaging" -version = "25.0" -description = "Core utilities for Python packages" +name = "notebook" +version = "7.2.2" +description = "Jupyter Notebook - A web-based notebook environment for interactive computing" optional = false python-versions = ">=3.8" -groups = ["dev"] files = [ - {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, - {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, + {file = "notebook-7.2.2-py3-none-any.whl", hash = "sha256:c89264081f671bc02eec0ed470a627ed791b9156cad9285226b31611d3e9fe1c"}, + {file = "notebook-7.2.2.tar.gz", hash = "sha256:2ef07d4220421623ad3fe88118d687bc0450055570cdd160814a59cf3a1c516e"}, ] +[package.dependencies] +jupyter-server = ">=2.4.0,<3" +jupyterlab = ">=4.2.0,<4.3" +jupyterlab-server = ">=2.27.1,<3" +notebook-shim = ">=0.2,<0.3" +tornado = ">=6.2.0" + +[package.extras] +dev = ["hatch", "pre-commit"] +docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] + [[package]] -name = "paginate" -version = "0.5.7" -description = "Divides large result sets into pages for easier browsing" +name = "notebook-shim" +version = "0.2.4" +description = "A shim layer for notebook traits and config" optional = false -python-versions = "*" -groups = ["dev"] +python-versions = ">=3.7" files = [ - {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, - {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, + {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, + {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, ] +[package.dependencies] +jupyter-server = ">=1.8,<3" + [package.extras] -dev = ["pytest", "tox"] -lint = ["black"] +test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"] [[package]] -name = "pathspec" -version = "0.12.1" -description = "Utility library for gitignore style pattern matching of file paths." +name = "numcodecs" +version = "0.13.1" +description = "A Python package providing buffer compression and transformation codecs for use in data storage and communication applications." +optional = false +python-versions = ">=3.10" +files = [ + {file = "numcodecs-0.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:96add4f783c5ce57cc7e650b6cac79dd101daf887c479a00a29bc1487ced180b"}, + {file = "numcodecs-0.13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:237b7171609e868a20fd313748494444458ccd696062f67e198f7f8f52000c15"}, + {file = "numcodecs-0.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96e42f73c31b8c24259c5fac6adba0c3ebf95536e37749dc6c62ade2989dca28"}, + {file = "numcodecs-0.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:eda7d7823c9282e65234731fd6bd3986b1f9e035755f7fed248d7d366bb291ab"}, + {file = "numcodecs-0.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2eda97dd2f90add98df6d295f2c6ae846043396e3d51a739ca5db6c03b5eb666"}, + {file = "numcodecs-0.13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2a86f5367af9168e30f99727ff03b27d849c31ad4522060dde0bce2923b3a8bc"}, + {file = "numcodecs-0.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233bc7f26abce24d57e44ea8ebeb5cd17084690b4e7409dd470fdb75528d615f"}, + {file = "numcodecs-0.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:796b3e6740107e4fa624cc636248a1580138b3f1c579160f260f76ff13a4261b"}, + {file = "numcodecs-0.13.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5195bea384a6428f8afcece793860b1ab0ae28143c853f0b2b20d55a8947c917"}, + {file = "numcodecs-0.13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3501a848adaddce98a71a262fee15cd3618312692aa419da77acd18af4a6a3f6"}, + {file = "numcodecs-0.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2230484e6102e5fa3cc1a5dd37ca1f92dfbd183d91662074d6f7574e3e8f53"}, + {file = "numcodecs-0.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:e5db4824ebd5389ea30e54bc8aeccb82d514d28b6b68da6c536b8fa4596f4bca"}, + {file = "numcodecs-0.13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7a60d75179fd6692e301ddfb3b266d51eb598606dcae7b9fc57f986e8d65cb43"}, + {file = "numcodecs-0.13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f593c7506b0ab248961a3b13cb148cc6e8355662ff124ac591822310bc55ecf"}, + {file = "numcodecs-0.13.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80d3071465f03522e776a31045ddf2cfee7f52df468b977ed3afdd7fe5869701"}, + {file = "numcodecs-0.13.1-cp313-cp313-win_amd64.whl", hash = "sha256:90d3065ae74c9342048ae0046006f99dcb1388b7288da5a19b3bddf9c30c3176"}, + {file = "numcodecs-0.13.1.tar.gz", hash = "sha256:a3cf37881df0898f3a9c0d4477df88133fe85185bffe57ba31bcc2fa207709bc"}, +] + +[package.dependencies] +numpy = ">=1.7" + +[package.extras] +docs = ["mock", "numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-issues"] +msgpack = ["msgpack"] +pcodec = ["pcodec (>=0.2.0)"] +test = ["coverage", "pytest", "pytest-cov"] +test-extras = ["importlib-metadata"] +zfpy = ["numpy (<2.0.0)", "zfpy (>=1.0.0)"] + +[[package]] +name = "numpy" +version = "2.1.2" +description = "Fundamental package for array computing in Python" +optional = false +python-versions = ">=3.10" +files = [ + {file = "numpy-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:30d53720b726ec36a7f88dc873f0eec8447fbc93d93a8f079dfac2629598d6ee"}, + {file = "numpy-2.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8d3ca0a72dd8846eb6f7dfe8f19088060fcb76931ed592d29128e0219652884"}, + {file = "numpy-2.1.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:fc44e3c68ff00fd991b59092a54350e6e4911152682b4782f68070985aa9e648"}, + {file = "numpy-2.1.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:7c1c60328bd964b53f8b835df69ae8198659e2b9302ff9ebb7de4e5a5994db3d"}, + {file = "numpy-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cdb606a7478f9ad91c6283e238544451e3a95f30fb5467fbf715964341a8a86"}, + {file = "numpy-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d666cb72687559689e9906197e3bec7b736764df6a2e58ee265e360663e9baf7"}, + {file = "numpy-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c6eef7a2dbd0abfb0d9eaf78b73017dbfd0b54051102ff4e6a7b2980d5ac1a03"}, + {file = "numpy-2.1.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:12edb90831ff481f7ef5f6bc6431a9d74dc0e5ff401559a71e5e4611d4f2d466"}, + {file = "numpy-2.1.2-cp310-cp310-win32.whl", hash = "sha256:a65acfdb9c6ebb8368490dbafe83c03c7e277b37e6857f0caeadbbc56e12f4fb"}, + {file = "numpy-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:860ec6e63e2c5c2ee5e9121808145c7bf86c96cca9ad396c0bd3e0f2798ccbe2"}, + {file = "numpy-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b42a1a511c81cc78cbc4539675713bbcf9d9c3913386243ceff0e9429ca892fe"}, + {file = "numpy-2.1.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:faa88bc527d0f097abdc2c663cddf37c05a1c2f113716601555249805cf573f1"}, + {file = "numpy-2.1.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:c82af4b2ddd2ee72d1fc0c6695048d457e00b3582ccde72d8a1c991b808bb20f"}, + {file = "numpy-2.1.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:13602b3174432a35b16c4cfb5de9a12d229727c3dd47a6ce35111f2ebdf66ff4"}, + {file = "numpy-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ebec5fd716c5a5b3d8dfcc439be82a8407b7b24b230d0ad28a81b61c2f4659a"}, + {file = "numpy-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2b49c3c0804e8ecb05d59af8386ec2f74877f7ca8fd9c1e00be2672e4d399b1"}, + {file = "numpy-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2cbba4b30bf31ddbe97f1c7205ef976909a93a66bb1583e983adbd155ba72ac2"}, + {file = "numpy-2.1.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8e00ea6fc82e8a804433d3e9cedaa1051a1422cb6e443011590c14d2dea59146"}, + {file = "numpy-2.1.2-cp311-cp311-win32.whl", hash = "sha256:5006b13a06e0b38d561fab5ccc37581f23c9511879be7693bd33c7cd15ca227c"}, + {file = "numpy-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:f1eb068ead09f4994dec71c24b2844f1e4e4e013b9629f812f292f04bd1510d9"}, + {file = "numpy-2.1.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d7bf0a4f9f15b32b5ba53147369e94296f5fffb783db5aacc1be15b4bf72f43b"}, + {file = "numpy-2.1.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b1d0fcae4f0949f215d4632be684a539859b295e2d0cb14f78ec231915d644db"}, + {file = "numpy-2.1.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f751ed0a2f250541e19dfca9f1eafa31a392c71c832b6bb9e113b10d050cb0f1"}, + {file = "numpy-2.1.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:bd33f82e95ba7ad632bc57837ee99dba3d7e006536200c4e9124089e1bf42426"}, + {file = "numpy-2.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b8cde4f11f0a975d1fd59373b32e2f5a562ade7cde4f85b7137f3de8fbb29a0"}, + {file = "numpy-2.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d95f286b8244b3649b477ac066c6906fbb2905f8ac19b170e2175d3d799f4df"}, + {file = "numpy-2.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ab4754d432e3ac42d33a269c8567413bdb541689b02d93788af4131018cbf366"}, + {file = "numpy-2.1.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e585c8ae871fd38ac50598f4763d73ec5497b0de9a0ab4ef5b69f01c6a046142"}, + {file = "numpy-2.1.2-cp312-cp312-win32.whl", hash = "sha256:9c6c754df29ce6a89ed23afb25550d1c2d5fdb9901d9c67a16e0b16eaf7e2550"}, + {file = "numpy-2.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:456e3b11cb79ac9946c822a56346ec80275eaf2950314b249b512896c0d2505e"}, + {file = "numpy-2.1.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a84498e0d0a1174f2b3ed769b67b656aa5460c92c9554039e11f20a05650f00d"}, + {file = "numpy-2.1.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4d6ec0d4222e8ffdab1744da2560f07856421b367928026fb540e1945f2eeeaf"}, + {file = "numpy-2.1.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:259ec80d54999cc34cd1eb8ded513cb053c3bf4829152a2e00de2371bd406f5e"}, + {file = "numpy-2.1.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:675c741d4739af2dc20cd6c6a5c4b7355c728167845e3c6b0e824e4e5d36a6c3"}, + {file = "numpy-2.1.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05b2d4e667895cc55e3ff2b56077e4c8a5604361fc21a042845ea3ad67465aa8"}, + {file = "numpy-2.1.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43cca367bf94a14aca50b89e9bc2061683116cfe864e56740e083392f533ce7a"}, + {file = "numpy-2.1.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:76322dcdb16fccf2ac56f99048af32259dcc488d9b7e25b51e5eca5147a3fb98"}, + {file = "numpy-2.1.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:32e16a03138cabe0cb28e1007ee82264296ac0983714094380b408097a418cfe"}, + {file = "numpy-2.1.2-cp313-cp313-win32.whl", hash = "sha256:242b39d00e4944431a3cd2db2f5377e15b5785920421993770cddb89992c3f3a"}, + {file = "numpy-2.1.2-cp313-cp313-win_amd64.whl", hash = "sha256:f2ded8d9b6f68cc26f8425eda5d3877b47343e68ca23d0d0846f4d312ecaa445"}, + {file = "numpy-2.1.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2ffef621c14ebb0188a8633348504a35c13680d6da93ab5cb86f4e54b7e922b5"}, + {file = "numpy-2.1.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ad369ed238b1959dfbade9018a740fb9392c5ac4f9b5173f420bd4f37ba1f7a0"}, + {file = "numpy-2.1.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d82075752f40c0ddf57e6e02673a17f6cb0f8eb3f587f63ca1eaab5594da5b17"}, + {file = "numpy-2.1.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:1600068c262af1ca9580a527d43dc9d959b0b1d8e56f8a05d830eea39b7c8af6"}, + {file = "numpy-2.1.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a26ae94658d3ba3781d5e103ac07a876b3e9b29db53f68ed7df432fd033358a8"}, + {file = "numpy-2.1.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13311c2db4c5f7609b462bc0f43d3c465424d25c626d95040f073e30f7570e35"}, + {file = "numpy-2.1.2-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:2abbf905a0b568706391ec6fa15161fad0fb5d8b68d73c461b3c1bab6064dd62"}, + {file = "numpy-2.1.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:ef444c57d664d35cac4e18c298c47d7b504c66b17c2ea91312e979fcfbdfb08a"}, + {file = "numpy-2.1.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:bdd407c40483463898b84490770199d5714dcc9dd9b792f6c6caccc523c00952"}, + {file = "numpy-2.1.2-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:da65fb46d4cbb75cb417cddf6ba5e7582eb7bb0b47db4b99c9fe5787ce5d91f5"}, + {file = "numpy-2.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c193d0b0238638e6fc5f10f1b074a6993cb13b0b431f64079a509d63d3aa8b7"}, + {file = "numpy-2.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a7d80b2e904faa63068ead63107189164ca443b42dd1930299e0d1cb041cec2e"}, + {file = "numpy-2.1.2.tar.gz", hash = "sha256:13532a088217fa624c99b843eeb54640de23b3414b14aa66d023805eb731066c"}, +] + +[[package]] +name = "overrides" +version = "7.7.0" +description = "A decorator to automatically detect mismatch when overriding a method." +optional = false +python-versions = ">=3.6" +files = [ + {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, + {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, +] + +[[package]] +name = "packaging" +version = "25.0" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, + {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, +] + +[[package]] +name = "paginate" +version = "0.5.7" +description = "Divides large result sets into pages for easier browsing" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + { file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591" }, + { file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945" }, +] + +[package.extras] +dev = ["pytest", "tox"] +lint = ["black"] + +[[package]] +name = "paginate" +version = "0.5.7" +description = "Divides large result sets into pages for easier browsing" +optional = false +python-versions = ">=3.9" +files = [ + {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, + {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, +] + +[package.extras] +all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] +aws = ["s3fs (>=2022.11.0)"] +clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] +compression = ["zstandard (>=0.19.0)"] +computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] +feather = ["pyarrow (>=10.0.1)"] +fss = ["fsspec (>=2022.11.0)"] +gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] +hdf5 = ["tables (>=3.8.0)"] +html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] +mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] +parquet = ["pyarrow (>=10.0.1)"] +performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] +plot = ["matplotlib (>=3.6.3)"] +postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] +spss = ["pyreadstat (>=1.2.0)"] +sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.9.2)"] + +[[package]] +name = "pandocfilters" +version = "1.5.1" +description = "Utilities for writing pandoc filters in python" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, + {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, +] + +[[package]] +name = "parso" +version = "0.8.4" +description = "A Python Parser" +optional = false +python-versions = ">=3.6" +files = [ + {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, + {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, +] + +[package.extras] +qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] +testing = ["docopt", "pytest"] + +[[package]] +name = "partd" +version = "1.4.2" +description = "Appendable key-value storage" +optional = false +python-versions = ">=3.9" +files = [ + {file = "partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f"}, + {file = "partd-1.4.2.tar.gz", hash = "sha256:d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c"}, +] + +[package.dependencies] +locket = "*" +toolz = "*" + +[package.extras] +complete = ["blosc", "numpy (>=1.20.0)", "pandas (>=1.3)", "pyzmq"] + +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.8" groups = ["dev"] @@ -798,6 +2116,20 @@ files = [ {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] +[[package]] +name = "pexpect" +version = "4.9.0" +description = "Pexpect allows easy control of interactive console applications." +optional = false +python-versions = "*" +files = [ + {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, + {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, +] + +[package.dependencies] +ptyprocess = ">=0.5" + [[package]] name = "platformdirs" version = "4.3.8" @@ -806,8 +2138,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4"}, - {file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc"}, + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] [package.extras] @@ -820,8 +2152,7 @@ name = "pluggy" version = "1.6.0" description = "plugin and hook calling mechanisms for python" optional = false -python-versions = ">=3.9" -groups = ["dev"] +python-versions = ">=3.8" files = [ {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, @@ -845,14 +2176,14 @@ files = [ [[package]] name = "pre-commit" -version = "4.3.0" +version = "3.8.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pre_commit-4.3.0-py2.py3-none-any.whl", hash = "sha256:2b0747ad7e6e967169136edffee14c16e148a778a54e4f967921aa1ebf2308d8"}, - {file = "pre_commit-4.3.0.tar.gz", hash = "sha256:499fe450cc9d42e9d58e606262795ecb64dd05438943c62b66f6a8673da30b16"}, + {file = "pre_commit-3.8.0-py2.py3-none-any.whl", hash = "sha256:9a90a53bf82fdd8778d58085faf8d83df56e40dfe18f45b19446e26bf1b3a63f"}, + {file = "pre_commit-3.8.0.tar.gz", hash = "sha256:8bb6494d4a20423842e198980c9ecf9f96607a07ea29549e180eef9ae80fe7af"}, ] [package.dependencies] @@ -862,23 +2193,119 @@ nodeenv = ">=0.11.1" pyyaml = ">=5.1" virtualenv = ">=20.10.0" +[[package]] +name = "prometheus-client" +version = "0.21.0" +description = "Python client for the Prometheus monitoring system." +optional = false +python-versions = ">=3.8" +files = [ + {file = "prometheus_client-0.21.0-py3-none-any.whl", hash = "sha256:4fa6b4dd0ac16d58bb587c04b1caae65b8c5043e85f778f42f5f632f6af2e166"}, + {file = "prometheus_client-0.21.0.tar.gz", hash = "sha256:96c83c606b71ff2b0a433c98889d275f51ffec6c5e267de37c7a2b5c9aa9233e"}, +] + +[package.extras] +twisted = ["twisted"] + +[[package]] +name = "prompt-toolkit" +version = "3.0.48" +description = "Library for building powerful interactive command lines in Python" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e"}, + {file = "prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90"}, +] + +[package.dependencies] +wcwidth = "*" + +[[package]] +name = "psutil" +version = "6.1.0" +description = "Cross-platform lib for process and system monitoring in Python." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "psutil-6.1.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ff34df86226c0227c52f38b919213157588a678d049688eded74c76c8ba4a5d0"}, + {file = "psutil-6.1.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:c0e0c00aa18ca2d3b2b991643b799a15fc8f0563d2ebb6040f64ce8dc027b942"}, + {file = "psutil-6.1.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:000d1d1ebd634b4efb383f4034437384e44a6d455260aaee2eca1e9c1b55f047"}, + {file = "psutil-6.1.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:5cd2bcdc75b452ba2e10f0e8ecc0b57b827dd5d7aaffbc6821b2a9a242823a76"}, + {file = "psutil-6.1.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:045f00a43c737f960d273a83973b2511430d61f283a44c96bf13a6e829ba8fdc"}, + {file = "psutil-6.1.0-cp27-none-win32.whl", hash = "sha256:9118f27452b70bb1d9ab3198c1f626c2499384935aaf55388211ad982611407e"}, + {file = "psutil-6.1.0-cp27-none-win_amd64.whl", hash = "sha256:a8506f6119cff7015678e2bce904a4da21025cc70ad283a53b099e7620061d85"}, + {file = "psutil-6.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6e2dcd475ce8b80522e51d923d10c7871e45f20918e027ab682f94f1c6351688"}, + {file = "psutil-6.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0895b8414afafc526712c498bd9de2b063deaac4021a3b3c34566283464aff8e"}, + {file = "psutil-6.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9dcbfce5d89f1d1f2546a2090f4fcf87c7f669d1d90aacb7d7582addece9fb38"}, + {file = "psutil-6.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:498c6979f9c6637ebc3a73b3f87f9eb1ec24e1ce53a7c5173b8508981614a90b"}, + {file = "psutil-6.1.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d905186d647b16755a800e7263d43df08b790d709d575105d419f8b6ef65423a"}, + {file = "psutil-6.1.0-cp36-cp36m-win32.whl", hash = "sha256:6d3fbbc8d23fcdcb500d2c9f94e07b1342df8ed71b948a2649b5cb060a7c94ca"}, + {file = "psutil-6.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1209036fbd0421afde505a4879dee3b2fd7b1e14fee81c0069807adcbbcca747"}, + {file = "psutil-6.1.0-cp37-abi3-win32.whl", hash = "sha256:1ad45a1f5d0b608253b11508f80940985d1d0c8f6111b5cb637533a0e6ddc13e"}, + {file = "psutil-6.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:a8fb3752b491d246034fa4d279ff076501588ce8cbcdbb62c32fd7a377d996be"}, + {file = "psutil-6.1.0.tar.gz", hash = "sha256:353815f59a7f64cdaca1c0307ee13558a0512f6db064e92fe833784f08539c7a"}, +] + +[package.extras] +dev = ["black", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest-cov", "requests", "rstcheck", "ruff", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "wheel"] +test = ["pytest", "pytest-xdist", "setuptools"] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +description = "Run a subprocess in a pseudo terminal" +optional = false +python-versions = "*" +files = [ + {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, + {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +description = "Safely evaluate AST nodes without side effects" +optional = false +python-versions = "*" +files = [ + {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, + {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, +] + +[package.extras] +tests = ["pytest"] + +[[package]] +name = "pycparser" +version = "2.22" +description = "C parser in Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, +] + [[package]] name = "pydantic" -version = "2.12.3" +version = "2.9.2" description = "Data validation using Python type hints" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "pydantic-2.12.3-py3-none-any.whl", hash = "sha256:6986454a854bc3bc6e5443e1369e06a3a456af9d339eda45510f517d9ea5c6bf"}, - {file = "pydantic-2.12.3.tar.gz", hash = "sha256:1da1c82b0fc140bb0103bc1441ffe062154c8d38491189751ee00fd8ca65ce74"}, + {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, + {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.41.4" -typing-extensions = ">=4.14.1" -typing-inspection = ">=0.4.2" +pydantic-core = "2.23.4" +typing-extensions = [ + {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, + {version = ">=4.6.1", markers = "python_version < \"3.13\""}, +] [package.extras] email = ["email-validator (>=2.0.0)"] @@ -886,129 +2313,101 @@ timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows [[package]] name = "pydantic-core" -version = "2.41.4" +version = "2.23.4" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "pydantic_core-2.41.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2442d9a4d38f3411f22eb9dd0912b7cbf4b7d5b6c92c4173b75d3e1ccd84e36e"}, - {file = "pydantic_core-2.41.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:30a9876226dda131a741afeab2702e2d127209bde3c65a2b8133f428bc5d006b"}, - {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d55bbac04711e2980645af68b97d445cdbcce70e5216de444a6c4b6943ebcccd"}, - {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e1d778fb7849a42d0ee5927ab0f7453bf9f85eef8887a546ec87db5ddb178945"}, - {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b65077a4693a98b90ec5ad8f203ad65802a1b9b6d4a7e48066925a7e1606706"}, - {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:62637c769dee16eddb7686bf421be48dfc2fae93832c25e25bc7242e698361ba"}, - {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dfe3aa529c8f501babf6e502936b9e8d4698502b2cfab41e17a028d91b1ac7b"}, - {file = "pydantic_core-2.41.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ca2322da745bf2eeb581fc9ea3bbb31147702163ccbcbf12a3bb630e4bf05e1d"}, - {file = "pydantic_core-2.41.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e8cd3577c796be7231dcf80badcf2e0835a46665eaafd8ace124d886bab4d700"}, - {file = "pydantic_core-2.41.4-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:1cae8851e174c83633f0833e90636832857297900133705ee158cf79d40f03e6"}, - {file = "pydantic_core-2.41.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a26d950449aae348afe1ac8be5525a00ae4235309b729ad4d3399623125b43c9"}, - {file = "pydantic_core-2.41.4-cp310-cp310-win32.whl", hash = "sha256:0cf2a1f599efe57fa0051312774280ee0f650e11152325e41dfd3018ef2c1b57"}, - {file = "pydantic_core-2.41.4-cp310-cp310-win_amd64.whl", hash = "sha256:a8c2e340d7e454dc3340d3d2e8f23558ebe78c98aa8f68851b04dcb7bc37abdc"}, - {file = "pydantic_core-2.41.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:28ff11666443a1a8cf2a044d6a545ebffa8382b5f7973f22c36109205e65dc80"}, - {file = "pydantic_core-2.41.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:61760c3925d4633290292bad462e0f737b840508b4f722247d8729684f6539ae"}, - {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eae547b7315d055b0de2ec3965643b0ab82ad0106a7ffd29615ee9f266a02827"}, - {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef9ee5471edd58d1fcce1c80ffc8783a650e3e3a193fe90d52e43bb4d87bff1f"}, - {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:15dd504af121caaf2c95cb90c0ebf71603c53de98305621b94da0f967e572def"}, - {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3a926768ea49a8af4d36abd6a8968b8790f7f76dd7cbd5a4c180db2b4ac9a3a2"}, - {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6916b9b7d134bff5440098a4deb80e4cb623e68974a87883299de9124126c2a8"}, - {file = "pydantic_core-2.41.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5cf90535979089df02e6f17ffd076f07237efa55b7343d98760bde8743c4b265"}, - {file = "pydantic_core-2.41.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7533c76fa647fade2d7ec75ac5cc079ab3f34879626dae5689b27790a6cf5a5c"}, - {file = "pydantic_core-2.41.4-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:37e516bca9264cbf29612539801ca3cd5d1be465f940417b002905e6ed79d38a"}, - {file = "pydantic_core-2.41.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0c19cb355224037c83642429b8ce261ae108e1c5fbf5c028bac63c77b0f8646e"}, - {file = "pydantic_core-2.41.4-cp311-cp311-win32.whl", hash = "sha256:09c2a60e55b357284b5f31f5ab275ba9f7f70b7525e18a132ec1f9160b4f1f03"}, - {file = "pydantic_core-2.41.4-cp311-cp311-win_amd64.whl", hash = "sha256:711156b6afb5cb1cb7c14a2cc2c4a8b4c717b69046f13c6b332d8a0a8f41ca3e"}, - {file = "pydantic_core-2.41.4-cp311-cp311-win_arm64.whl", hash = "sha256:6cb9cf7e761f4f8a8589a45e49ed3c0d92d1d696a45a6feaee8c904b26efc2db"}, - {file = "pydantic_core-2.41.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ab06d77e053d660a6faaf04894446df7b0a7e7aba70c2797465a0a1af00fc887"}, - {file = "pydantic_core-2.41.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c53ff33e603a9c1179a9364b0a24694f183717b2e0da2b5ad43c316c956901b2"}, - {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:304c54176af2c143bd181d82e77c15c41cbacea8872a2225dd37e6544dce9999"}, - {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:025ba34a4cf4fb32f917d5d188ab5e702223d3ba603be4d8aca2f82bede432a4"}, - {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9f5f30c402ed58f90c70e12eff65547d3ab74685ffe8283c719e6bead8ef53f"}, - {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd96e5d15385d301733113bcaa324c8bcf111275b7675a9c6e88bfb19fc05e3b"}, - {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98f348cbb44fae6e9653c1055db7e29de67ea6a9ca03a5fa2c2e11a47cff0e47"}, - {file = "pydantic_core-2.41.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec22626a2d14620a83ca583c6f5a4080fa3155282718b6055c2ea48d3ef35970"}, - {file = "pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3a95d4590b1f1a43bf33ca6d647b990a88f4a3824a8c4572c708f0b45a5290ed"}, - {file = "pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:f9672ab4d398e1b602feadcffcdd3af44d5f5e6ddc15bc7d15d376d47e8e19f8"}, - {file = "pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:84d8854db5f55fead3b579f04bda9a36461dab0730c5d570e1526483e7bb8431"}, - {file = "pydantic_core-2.41.4-cp312-cp312-win32.whl", hash = "sha256:9be1c01adb2ecc4e464392c36d17f97e9110fbbc906bcbe1c943b5b87a74aabd"}, - {file = "pydantic_core-2.41.4-cp312-cp312-win_amd64.whl", hash = "sha256:d682cf1d22bab22a5be08539dca3d1593488a99998f9f412137bc323179067ff"}, - {file = "pydantic_core-2.41.4-cp312-cp312-win_arm64.whl", hash = "sha256:833eebfd75a26d17470b58768c1834dfc90141b7afc6eb0429c21fc5a21dcfb8"}, - {file = "pydantic_core-2.41.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:85e050ad9e5f6fe1004eec65c914332e52f429bc0ae12d6fa2092407a462c746"}, - {file = "pydantic_core-2.41.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7393f1d64792763a48924ba31d1e44c2cfbc05e3b1c2c9abb4ceeadd912cced"}, - {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94dab0940b0d1fb28bcab847adf887c66a27a40291eedf0b473be58761c9799a"}, - {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:de7c42f897e689ee6f9e93c4bec72b99ae3b32a2ade1c7e4798e690ff5246e02"}, - {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:664b3199193262277b8b3cd1e754fb07f2c6023289c815a1e1e8fb415cb247b1"}, - {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d95b253b88f7d308b1c0b417c4624f44553ba4762816f94e6986819b9c273fb2"}, - {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1351f5bbdbbabc689727cb91649a00cb9ee7203e0a6e54e9f5ba9e22e384b84"}, - {file = "pydantic_core-2.41.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1affa4798520b148d7182da0615d648e752de4ab1a9566b7471bc803d88a062d"}, - {file = "pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7b74e18052fea4aa8dea2fb7dbc23d15439695da6cbe6cfc1b694af1115df09d"}, - {file = "pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:285b643d75c0e30abda9dc1077395624f314a37e3c09ca402d4015ef5979f1a2"}, - {file = "pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:f52679ff4218d713b3b33f88c89ccbf3a5c2c12ba665fb80ccc4192b4608dbab"}, - {file = "pydantic_core-2.41.4-cp313-cp313-win32.whl", hash = "sha256:ecde6dedd6fff127c273c76821bb754d793be1024bc33314a120f83a3c69460c"}, - {file = "pydantic_core-2.41.4-cp313-cp313-win_amd64.whl", hash = "sha256:d081a1f3800f05409ed868ebb2d74ac39dd0c1ff6c035b5162356d76030736d4"}, - {file = "pydantic_core-2.41.4-cp313-cp313-win_arm64.whl", hash = "sha256:f8e49c9c364a7edcbe2a310f12733aad95b022495ef2a8d653f645e5d20c1564"}, - {file = "pydantic_core-2.41.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ed97fd56a561f5eb5706cebe94f1ad7c13b84d98312a05546f2ad036bafe87f4"}, - {file = "pydantic_core-2.41.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a870c307bf1ee91fc58a9a61338ff780d01bfae45922624816878dce784095d2"}, - {file = "pydantic_core-2.41.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d25e97bc1f5f8f7985bdc2335ef9e73843bb561eb1fa6831fdfc295c1c2061cf"}, - {file = "pydantic_core-2.41.4-cp313-cp313t-win_amd64.whl", hash = "sha256:d405d14bea042f166512add3091c1af40437c2e7f86988f3915fabd27b1e9cd2"}, - {file = "pydantic_core-2.41.4-cp313-cp313t-win_arm64.whl", hash = "sha256:19f3684868309db5263a11bace3c45d93f6f24afa2ffe75a647583df22a2ff89"}, - {file = "pydantic_core-2.41.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:e9205d97ed08a82ebb9a307e92914bb30e18cdf6f6b12ca4bedadb1588a0bfe1"}, - {file = "pydantic_core-2.41.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:82df1f432b37d832709fbcc0e24394bba04a01b6ecf1ee87578145c19cde12ac"}, - {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc3b4cc4539e055cfa39a3763c939f9d409eb40e85813257dcd761985a108554"}, - {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b1eb1754fce47c63d2ff57fdb88c351a6c0150995890088b33767a10218eaa4e"}, - {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e6ab5ab30ef325b443f379ddb575a34969c333004fca5a1daa0133a6ffaad616"}, - {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:31a41030b1d9ca497634092b46481b937ff9397a86f9f51bd41c4767b6fc04af"}, - {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a44ac1738591472c3d020f61c6df1e4015180d6262ebd39bf2aeb52571b60f12"}, - {file = "pydantic_core-2.41.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d72f2b5e6e82ab8f94ea7d0d42f83c487dc159c5240d8f83beae684472864e2d"}, - {file = "pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:c4d1e854aaf044487d31143f541f7aafe7b482ae72a022c664b2de2e466ed0ad"}, - {file = "pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b568af94267729d76e6ee5ececda4e283d07bbb28e8148bb17adad93d025d25a"}, - {file = "pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:6d55fb8b1e8929b341cc313a81a26e0d48aa3b519c1dbaadec3a6a2b4fcad025"}, - {file = "pydantic_core-2.41.4-cp314-cp314-win32.whl", hash = "sha256:5b66584e549e2e32a1398df11da2e0a7eff45d5c2d9db9d5667c5e6ac764d77e"}, - {file = "pydantic_core-2.41.4-cp314-cp314-win_amd64.whl", hash = "sha256:557a0aab88664cc552285316809cab897716a372afaf8efdbef756f8b890e894"}, - {file = "pydantic_core-2.41.4-cp314-cp314-win_arm64.whl", hash = "sha256:3f1ea6f48a045745d0d9f325989d8abd3f1eaf47dd00485912d1a3a63c623a8d"}, - {file = "pydantic_core-2.41.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6c1fe4c5404c448b13188dd8bd2ebc2bdd7e6727fa61ff481bcc2cca894018da"}, - {file = "pydantic_core-2.41.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:523e7da4d43b113bf8e7b49fa4ec0c35bf4fe66b2230bfc5c13cc498f12c6c3e"}, - {file = "pydantic_core-2.41.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5729225de81fb65b70fdb1907fcf08c75d498f4a6f15af005aabb1fdadc19dfa"}, - {file = "pydantic_core-2.41.4-cp314-cp314t-win_amd64.whl", hash = "sha256:de2cfbb09e88f0f795fd90cf955858fc2c691df65b1f21f0aa00b99f3fbc661d"}, - {file = "pydantic_core-2.41.4-cp314-cp314t-win_arm64.whl", hash = "sha256:d34f950ae05a83e0ede899c595f312ca976023ea1db100cd5aa188f7005e3ab0"}, - {file = "pydantic_core-2.41.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:646e76293345954acea6966149683047b7b2ace793011922208c8e9da12b0062"}, - {file = "pydantic_core-2.41.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cc8e85a63085a137d286e2791037f5fdfff0aabb8b899483ca9c496dd5797338"}, - {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:692c622c8f859a17c156492783902d8370ac7e121a611bd6fe92cc71acf9ee8d"}, - {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d1e2906efb1031a532600679b424ef1d95d9f9fb507f813951f23320903adbd7"}, - {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e04e2f7f8916ad3ddd417a7abdd295276a0bf216993d9318a5d61cc058209166"}, - {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df649916b81822543d1c8e0e1d079235f68acdc7d270c911e8425045a8cfc57e"}, - {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c529f862fdba70558061bb936fe00ddbaaa0c647fd26e4a4356ef1d6561891"}, - {file = "pydantic_core-2.41.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3b4c5a1fd3a311563ed866c2c9b62da06cb6398bee186484ce95c820db71cb"}, - {file = "pydantic_core-2.41.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6e0fc40d84448f941df9b3334c4b78fe42f36e3bf631ad54c3047a0cdddc2514"}, - {file = "pydantic_core-2.41.4-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:44e7625332683b6c1c8b980461475cde9595eff94447500e80716db89b0da005"}, - {file = "pydantic_core-2.41.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:170ee6835f6c71081d031ef1c3b4dc4a12b9efa6a9540f93f95b82f3c7571ae8"}, - {file = "pydantic_core-2.41.4-cp39-cp39-win32.whl", hash = "sha256:3adf61415efa6ce977041ba9745183c0e1f637ca849773afa93833e04b163feb"}, - {file = "pydantic_core-2.41.4-cp39-cp39-win_amd64.whl", hash = "sha256:a238dd3feee263eeaeb7dc44aea4ba1364682c4f9f9467e6af5596ba322c2332"}, - {file = "pydantic_core-2.41.4-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:a1b2cfec3879afb742a7b0bcfa53e4f22ba96571c9e54d6a3afe1052d17d843b"}, - {file = "pydantic_core-2.41.4-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:d175600d975b7c244af6eb9c9041f10059f20b8bbffec9e33fdd5ee3f67cdc42"}, - {file = "pydantic_core-2.41.4-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f184d657fa4947ae5ec9c47bd7e917730fa1cbb78195037e32dcbab50aca5ee"}, - {file = "pydantic_core-2.41.4-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ed810568aeffed3edc78910af32af911c835cc39ebbfacd1f0ab5dd53028e5c"}, - {file = "pydantic_core-2.41.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:4f5d640aeebb438517150fdeec097739614421900e4a08db4a3ef38898798537"}, - {file = "pydantic_core-2.41.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:4a9ab037b71927babc6d9e7fc01aea9e66dc2a4a34dff06ef0724a4049629f94"}, - {file = "pydantic_core-2.41.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4dab9484ec605c3016df9ad4fd4f9a390bc5d816a3b10c6550f8424bb80b18c"}, - {file = "pydantic_core-2.41.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8a5028425820731d8c6c098ab642d7b8b999758e24acae03ed38a66eca8335"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e5ab4fc177dd41536b3c32b2ea11380dd3d4619a385860621478ac2d25ceb00"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:3d88d0054d3fa11ce936184896bed3c1c5441d6fa483b498fac6a5d0dd6f64a9"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b2a054a8725f05b4b6503357e0ac1c4e8234ad3b0c2ac130d6ffc66f0e170e2"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0d9db5a161c99375a0c68c058e227bee1d89303300802601d76a3d01f74e258"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:6273ea2c8ffdac7b7fda2653c49682db815aebf4a89243a6feccf5e36c18c347"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:4c973add636efc61de22530b2ef83a65f39b6d6f656df97f678720e20de26caa"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b69d1973354758007f46cf2d44a4f3d0933f10b6dc9bf15cf1356e037f6f731a"}, - {file = "pydantic_core-2.41.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3619320641fd212aaf5997b6ca505e97540b7e16418f4a241f44cdf108ffb50d"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:491535d45cd7ad7e4a2af4a5169b0d07bebf1adfd164b0368da8aa41e19907a5"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:54d86c0cada6aba4ec4c047d0e348cbad7063b87ae0f005d9f8c9ad04d4a92a2"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eca1124aced216b2500dc2609eade086d718e8249cb9696660ab447d50a758bd"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c9024169becccf0cb470ada03ee578d7348c119a0d42af3dcf9eda96e3a247c"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:26895a4268ae5a2849269f4991cdc97236e4b9c010e51137becf25182daac405"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:ca4df25762cf71308c446e33c9b1fdca2923a3f13de616e2a949f38bf21ff5a8"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:5a28fcedd762349519276c36634e71853b4541079cab4acaaac60c4421827308"}, - {file = "pydantic_core-2.41.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c173ddcd86afd2535e2b695217e82191580663a1d1928239f877f5a1649ef39f"}, - {file = "pydantic_core-2.41.4.tar.gz", hash = "sha256:70e47929a9d4a1905a67e4b687d5946026390568a8e952b92824118063cee4d5"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, + {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, + {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, + {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, + {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, + {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, + {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, + {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, + {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, + {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, + {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, + {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, + {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, + {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, ] [package.dependencies] @@ -1031,14 +2430,55 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pymdown-extensions" -version = "10.16.1" +version = "10.16" description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pymdown_extensions-10.16.1-py3-none-any.whl", hash = "sha256:d6ba157a6c03146a7fb122b2b9a121300056384eafeec9c9f9e584adfdb2a32d"}, - {file = "pymdown_extensions-10.16.1.tar.gz", hash = "sha256:aace82bcccba3efc03e25d584e6a22d27a8e17caa3f4dd9f207e49b787aa9a91"}, + { file = "pymdown_extensions-10.16-py3-none-any.whl", hash = "sha256:f5dd064a4db588cb2d95229fc4ee63a1b16cc8b4d0e6145c0899ed8723da1df2" }, + { file = "pymdown_extensions-10.16.tar.gz", hash = "sha256:71dac4fca63fabeffd3eb9038b756161a33ec6e8d230853d3cecf562155ab3de" }, +] + +[package.dependencies] +markdown = ">=3.6" +pyyaml = "*" + +[package.extras] +extra = ["pygments (>=2.19.1)"] + +[[package]] +name = "pyproj" +version = "3.7.0" +description = "Python interface to PROJ (cartographic projections and coordinate transformations library)" +optional = false +python-versions = ">=3.10" +files = [ + {file = "pyproj-3.7.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d5c7e7d24b967e328a5efd013f466804a1f226d1106ac7efc47dcc99360dbc8f"}, + {file = "pyproj-3.7.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:448958c46bd3fe2da91c89ba551ac5835e63073ca861422c6eb1af89979dfab1"}, + {file = "pyproj-3.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f673ca345bb92afc93d4235938ca0c9a76237aa7addf42a95965c8dc8cad9b49"}, + {file = "pyproj-3.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee60895f60cbd1a9c903ab2bc22adea63004296a1c28b8775a11cf50905cf085"}, + {file = "pyproj-3.7.0-cp310-cp310-win32.whl", hash = "sha256:0dd31b0740ee010934234f848d2d092c66146cb8d0ba009a64e41d192caa7686"}, + {file = "pyproj-3.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:7943d85ba39e89c51b920339ff63162d63bf89da161f0acb6206b0d39b11661e"}, + {file = "pyproj-3.7.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:e66d8d42dbdf232e121546c5a1dec097caf0454e4885c09a8e03cdcee0753c03"}, + {file = "pyproj-3.7.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:7764b64a0aefe40134a2828b3a40be88f6c8b7832c45d8a9f2bd592ace4b2a3b"}, + {file = "pyproj-3.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53c442c5081dc95346996f5c4323fde2caafc69c6e60b4707aa46e88244f1e04"}, + {file = "pyproj-3.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc5b305d4d5d7697885681d9b660623e328227612823d5c660e0a9566cb48838"}, + {file = "pyproj-3.7.0-cp311-cp311-win32.whl", hash = "sha256:de2b47d748dc41cccb6b3b713d4d7dc9aa1046a82141c8665026908726426abc"}, + {file = "pyproj-3.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:38cba7c4c5679e40242dd959133e95b908d3b912dd66291094fd13510e8517ff"}, + {file = "pyproj-3.7.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:8cbec92bdd6e9933ca08795c12717d1384e9b51cf4b1acf0d753db255a75c51e"}, + {file = "pyproj-3.7.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:8c4a8e4d3ba76c3adac3c087544cf92f7f9a19ea34946904a13fca48cc1c0106"}, + {file = "pyproj-3.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82624fb42aa31f6b1a860fbc0316babd07fd712642bc31022df4e9b4056bf463"}, + {file = "pyproj-3.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34e1bbb3f89c68d4a6835c40b2da8b27680eec60e8cc7cdb08c09bcc725b2b62"}, + {file = "pyproj-3.7.0-cp312-cp312-win32.whl", hash = "sha256:952515d5592167ad4436b355485f82acebed2a49b46722159e4584b75a763dd3"}, + {file = "pyproj-3.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:0692f806224e8ed82fe4acfa57268ff444fdaf9f330689f24c0d96e59480cce1"}, + {file = "pyproj-3.7.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:94e8b903a9e83448fd2379c49dec3e8cd83c9ed36f54354e68b601cef56d5426"}, + {file = "pyproj-3.7.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:64cb5c17d6f6305a8b978a40f95560c87c5b363fcac40632337955664437875a"}, + {file = "pyproj-3.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c54e9bdda7ab9c4a5af50f9d6e6ee7704e05fafd504896b96ed1208c7aea098"}, + {file = "pyproj-3.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24fa4e9e0abba875f9524808410cc520067eaf38fd5549ed0ef7c43ac39923c9"}, + {file = "pyproj-3.7.0-cp313-cp313-win32.whl", hash = "sha256:b9e8353fc3c79dc14d1f5ac758a1a6e4eee04102c3c0b138670f121f5ac52eb4"}, + {file = "pyproj-3.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:10a8dc6ec61af97c89ff032647d743f8dc023645773da42ef43f7ae1125b3509"}, + {file = "pyproj-3.7.0.tar.gz", hash = "sha256:bf658f4aaf815d9d03c8121650b6f0b8067265c36e31bc6660b98ef144d81813"}, ] [package.dependencies] @@ -1056,36 +2496,34 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7"}, - {file = "pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c"}, + {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, + {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, ] [package.dependencies] -colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} -iniconfig = ">=1" -packaging = ">=20" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +iniconfig = "*" +packaging = "*" pluggy = ">=1.5,<2" pygments = ">=2.7.2" [package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-cov" -version = "6.2.1" +version = "5.0.0" description = "Pytest plugin for measuring coverage." optional = false -python-versions = ">=3.9" -groups = ["dev"] +python-versions = ">=3.8" files = [ - {file = "pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5"}, - {file = "pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2"}, + {file = "pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"}, + {file = "pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652"}, ] [package.dependencies] -coverage = {version = ">=7.5", extras = ["toml"]} -pluggy = ">=1.2" -pytest = ">=6.2.5" +coverage = {version = ">=5.2.1", extras = ["toml"]} +pytest = ">=4.6" [package.extras] testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] @@ -1096,7 +2534,6 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["dev"] files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -1105,13 +2542,76 @@ files = [ [package.dependencies] six = ">=1.5" +[[package]] +name = "python-json-logger" +version = "2.0.7" +description = "A python library adding a json log formatter" +optional = false +python-versions = ">=3.6" +files = [ + {file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"}, + {file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"}, +] + +[[package]] +name = "pytz" +version = "2024.2" +description = "World timezone definitions, modern and historical" +optional = false +python-versions = "*" +files = [ + {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, + {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, +] + +[[package]] +name = "pywin32" +version = "308" +description = "Python for Window Extensions" +optional = false +python-versions = "*" +files = [ + {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, + {file = "pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e"}, + {file = "pywin32-308-cp310-cp310-win_arm64.whl", hash = "sha256:a5ab5381813b40f264fa3495b98af850098f814a25a63589a8e9eb12560f450c"}, + {file = "pywin32-308-cp311-cp311-win32.whl", hash = "sha256:5d8c8015b24a7d6855b1550d8e660d8daa09983c80e5daf89a273e5c6fb5095a"}, + {file = "pywin32-308-cp311-cp311-win_amd64.whl", hash = "sha256:575621b90f0dc2695fec346b2d6302faebd4f0f45c05ea29404cefe35d89442b"}, + {file = "pywin32-308-cp311-cp311-win_arm64.whl", hash = "sha256:100a5442b7332070983c4cd03f2e906a5648a5104b8a7f50175f7906efd16bb6"}, + {file = "pywin32-308-cp312-cp312-win32.whl", hash = "sha256:587f3e19696f4bf96fde9d8a57cec74a57021ad5f204c9e627e15c33ff568897"}, + {file = "pywin32-308-cp312-cp312-win_amd64.whl", hash = "sha256:00b3e11ef09ede56c6a43c71f2d31857cf7c54b0ab6e78ac659497abd2834f47"}, + {file = "pywin32-308-cp312-cp312-win_arm64.whl", hash = "sha256:9b4de86c8d909aed15b7011182c8cab38c8850de36e6afb1f0db22b8959e3091"}, + {file = "pywin32-308-cp313-cp313-win32.whl", hash = "sha256:1c44539a37a5b7b21d02ab34e6a4d314e0788f1690d65b48e9b0b89f31abbbed"}, + {file = "pywin32-308-cp313-cp313-win_amd64.whl", hash = "sha256:fd380990e792eaf6827fcb7e187b2b4b1cede0585e3d0c9e84201ec27b9905e4"}, + {file = "pywin32-308-cp313-cp313-win_arm64.whl", hash = "sha256:ef313c46d4c18dfb82a2431e3051ac8f112ccee1a34f29c263c583c568db63cd"}, + {file = "pywin32-308-cp37-cp37m-win32.whl", hash = "sha256:1f696ab352a2ddd63bd07430080dd598e6369152ea13a25ebcdd2f503a38f1ff"}, + {file = "pywin32-308-cp37-cp37m-win_amd64.whl", hash = "sha256:13dcb914ed4347019fbec6697a01a0aec61019c1046c2b905410d197856326a6"}, + {file = "pywin32-308-cp38-cp38-win32.whl", hash = "sha256:5794e764ebcabf4ff08c555b31bd348c9025929371763b2183172ff4708152f0"}, + {file = "pywin32-308-cp38-cp38-win_amd64.whl", hash = "sha256:3b92622e29d651c6b783e368ba7d6722b1634b8e70bd376fd7610fe1992e19de"}, + {file = "pywin32-308-cp39-cp39-win32.whl", hash = "sha256:7873ca4dc60ab3287919881a7d4f88baee4a6e639aa6962de25a98ba6b193341"}, + {file = "pywin32-308-cp39-cp39-win_amd64.whl", hash = "sha256:71b3322d949b4cc20776436a9c9ba0eeedcbc9c650daa536df63f0ff111bb920"}, +] + +[[package]] +name = "pywinpty" +version = "2.0.14" +description = "Pseudo terminal support for Windows from Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pywinpty-2.0.14-cp310-none-win_amd64.whl", hash = "sha256:0b149c2918c7974f575ba79f5a4aad58bd859a52fa9eb1296cc22aa412aa411f"}, + {file = "pywinpty-2.0.14-cp311-none-win_amd64.whl", hash = "sha256:cf2a43ac7065b3e0dc8510f8c1f13a75fb8fde805efa3b8cff7599a1ef497bc7"}, + {file = "pywinpty-2.0.14-cp312-none-win_amd64.whl", hash = "sha256:55dad362ef3e9408ade68fd173e4f9032b3ce08f68cfe7eacb2c263ea1179737"}, + {file = "pywinpty-2.0.14-cp313-none-win_amd64.whl", hash = "sha256:074fb988a56ec79ca90ed03a896d40707131897cefb8f76f926e3834227f2819"}, + {file = "pywinpty-2.0.14-cp39-none-win_amd64.whl", hash = "sha256:5725fd56f73c0531ec218663bd8c8ff5acc43c78962fab28564871b5fce053fd"}, + {file = "pywinpty-2.0.14.tar.gz", hash = "sha256:18bd9529e4a5daf2d9719aa17788ba6013e594ae94c5a0c27e83df3278b0660e"}, +] + [[package]] name = "pyyaml" version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" -groups = ["dev"] files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -1176,13 +2676,149 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04"}, - {file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff"}, + { file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04" }, + { file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff" }, ] [package.dependencies] pyyaml = "*" +[[package]] +name = "pyzmq" +version = "26.2.0" +description = "Python bindings for 0MQ" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:ddf33d97d2f52d89f6e6e7ae66ee35a4d9ca6f36eda89c24591b0c40205a3629"}, + {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dacd995031a01d16eec825bf30802fceb2c3791ef24bcce48fa98ce40918c27b"}, + {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89289a5ee32ef6c439086184529ae060c741334b8970a6855ec0b6ad3ff28764"}, + {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5506f06d7dc6ecf1efacb4a013b1f05071bb24b76350832c96449f4a2d95091c"}, + {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ea039387c10202ce304af74def5021e9adc6297067f3441d348d2b633e8166a"}, + {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a2224fa4a4c2ee872886ed00a571f5e967c85e078e8e8c2530a2fb01b3309b88"}, + {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:28ad5233e9c3b52d76196c696e362508959741e1a005fb8fa03b51aea156088f"}, + {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1c17211bc037c7d88e85ed8b7d8f7e52db6dc8eca5590d162717c654550f7282"}, + {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b8f86dd868d41bea9a5f873ee13bf5551c94cf6bc51baebc6f85075971fe6eea"}, + {file = "pyzmq-26.2.0-cp310-cp310-win32.whl", hash = "sha256:46a446c212e58456b23af260f3d9fb785054f3e3653dbf7279d8f2b5546b21c2"}, + {file = "pyzmq-26.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:49d34ab71db5a9c292a7644ce74190b1dd5a3475612eefb1f8be1d6961441971"}, + {file = "pyzmq-26.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:bfa832bfa540e5b5c27dcf5de5d82ebc431b82c453a43d141afb1e5d2de025fa"}, + {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:8f7e66c7113c684c2b3f1c83cdd3376103ee0ce4c49ff80a648643e57fb22218"}, + {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3a495b30fc91db2db25120df5847d9833af237546fd59170701acd816ccc01c4"}, + {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77eb0968da535cba0470a5165468b2cac7772cfb569977cff92e240f57e31bef"}, + {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ace4f71f1900a548f48407fc9be59c6ba9d9aaf658c2eea6cf2779e72f9f317"}, + {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92a78853d7280bffb93df0a4a6a2498cba10ee793cc8076ef797ef2f74d107cf"}, + {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:689c5d781014956a4a6de61d74ba97b23547e431e9e7d64f27d4922ba96e9d6e"}, + {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0aca98bc423eb7d153214b2df397c6421ba6373d3397b26c057af3c904452e37"}, + {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f3496d76b89d9429a656293744ceca4d2ac2a10ae59b84c1da9b5165f429ad3"}, + {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5c2b3bfd4b9689919db068ac6c9911f3fcb231c39f7dd30e3138be94896d18e6"}, + {file = "pyzmq-26.2.0-cp311-cp311-win32.whl", hash = "sha256:eac5174677da084abf378739dbf4ad245661635f1600edd1221f150b165343f4"}, + {file = "pyzmq-26.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:5a509df7d0a83a4b178d0f937ef14286659225ef4e8812e05580776c70e155d5"}, + {file = "pyzmq-26.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0e6091b157d48cbe37bd67233318dbb53e1e6327d6fc3bb284afd585d141003"}, + {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:ded0fc7d90fe93ae0b18059930086c51e640cdd3baebdc783a695c77f123dcd9"}, + {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17bf5a931c7f6618023cdacc7081f3f266aecb68ca692adac015c383a134ca52"}, + {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55cf66647e49d4621a7e20c8d13511ef1fe1efbbccf670811864452487007e08"}, + {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4661c88db4a9e0f958c8abc2b97472e23061f0bc737f6f6179d7a27024e1faa5"}, + {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea7f69de383cb47522c9c208aec6dd17697db7875a4674c4af3f8cfdac0bdeae"}, + {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:7f98f6dfa8b8ccaf39163ce872bddacca38f6a67289116c8937a02e30bbe9711"}, + {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e3e0210287329272539eea617830a6a28161fbbd8a3271bf4150ae3e58c5d0e6"}, + {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6b274e0762c33c7471f1a7471d1a2085b1a35eba5cdc48d2ae319f28b6fc4de3"}, + {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:29c6a4635eef69d68a00321e12a7d2559fe2dfccfa8efae3ffb8e91cd0b36a8b"}, + {file = "pyzmq-26.2.0-cp312-cp312-win32.whl", hash = "sha256:989d842dc06dc59feea09e58c74ca3e1678c812a4a8a2a419046d711031f69c7"}, + {file = "pyzmq-26.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a50625acdc7801bc6f74698c5c583a491c61d73c6b7ea4dee3901bb99adb27a"}, + {file = "pyzmq-26.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d29ab8592b6ad12ebbf92ac2ed2bedcfd1cec192d8e559e2e099f648570e19b"}, + {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9dd8cd1aeb00775f527ec60022004d030ddc51d783d056e3e23e74e623e33726"}, + {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:28c812d9757fe8acecc910c9ac9dafd2ce968c00f9e619db09e9f8f54c3a68a3"}, + {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d80b1dd99c1942f74ed608ddb38b181b87476c6a966a88a950c7dee118fdf50"}, + {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c997098cc65e3208eca09303630e84d42718620e83b733d0fd69543a9cab9cb"}, + {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ad1bc8d1b7a18497dda9600b12dc193c577beb391beae5cd2349184db40f187"}, + {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bea2acdd8ea4275e1278350ced63da0b166421928276c7c8e3f9729d7402a57b"}, + {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:23f4aad749d13698f3f7b64aad34f5fc02d6f20f05999eebc96b89b01262fb18"}, + {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a4f96f0d88accc3dbe4a9025f785ba830f968e21e3e2c6321ccdfc9aef755115"}, + {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ced65e5a985398827cc9276b93ef6dfabe0273c23de8c7931339d7e141c2818e"}, + {file = "pyzmq-26.2.0-cp313-cp313-win32.whl", hash = "sha256:31507f7b47cc1ead1f6e86927f8ebb196a0bab043f6345ce070f412a59bf87b5"}, + {file = "pyzmq-26.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:70fc7fcf0410d16ebdda9b26cbd8bf8d803d220a7f3522e060a69a9c87bf7bad"}, + {file = "pyzmq-26.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:c3789bd5768ab5618ebf09cef6ec2b35fed88709b104351748a63045f0ff9797"}, + {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:034da5fc55d9f8da09015d368f519478a52675e558c989bfcb5cf6d4e16a7d2a"}, + {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c92d73464b886931308ccc45b2744e5968cbaade0b1d6aeb40d8ab537765f5bc"}, + {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:794a4562dcb374f7dbbfb3f51d28fb40123b5a2abadee7b4091f93054909add5"}, + {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aee22939bb6075e7afededabad1a56a905da0b3c4e3e0c45e75810ebe3a52672"}, + {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ae90ff9dad33a1cfe947d2c40cb9cb5e600d759ac4f0fd22616ce6540f72797"}, + {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:43a47408ac52647dfabbc66a25b05b6a61700b5165807e3fbd40063fcaf46386"}, + {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:25bf2374a2a8433633c65ccb9553350d5e17e60c8eb4de4d92cc6bd60f01d306"}, + {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:007137c9ac9ad5ea21e6ad97d3489af654381324d5d3ba614c323f60dab8fae6"}, + {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:470d4a4f6d48fb34e92d768b4e8a5cc3780db0d69107abf1cd7ff734b9766eb0"}, + {file = "pyzmq-26.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3b55a4229ce5da9497dd0452b914556ae58e96a4381bb6f59f1305dfd7e53fc8"}, + {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9cb3a6460cdea8fe8194a76de8895707e61ded10ad0be97188cc8463ffa7e3a8"}, + {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8ab5cad923cc95c87bffee098a27856c859bd5d0af31bd346035aa816b081fe1"}, + {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ed69074a610fad1c2fda66180e7b2edd4d31c53f2d1872bc2d1211563904cd9"}, + {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cccba051221b916a4f5e538997c45d7d136a5646442b1231b916d0164067ea27"}, + {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:0eaa83fc4c1e271c24eaf8fb083cbccef8fde77ec8cd45f3c35a9a123e6da097"}, + {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9edda2df81daa129b25a39b86cb57dfdfe16f7ec15b42b19bfac503360d27a93"}, + {file = "pyzmq-26.2.0-cp37-cp37m-win32.whl", hash = "sha256:ea0eb6af8a17fa272f7b98d7bebfab7836a0d62738e16ba380f440fceca2d951"}, + {file = "pyzmq-26.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4ff9dc6bc1664bb9eec25cd17506ef6672d506115095411e237d571e92a58231"}, + {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2eb7735ee73ca1b0d71e0e67c3739c689067f055c764f73aac4cc8ecf958ee3f"}, + {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a534f43bc738181aa7cbbaf48e3eca62c76453a40a746ab95d4b27b1111a7d2"}, + {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:aedd5dd8692635813368e558a05266b995d3d020b23e49581ddd5bbe197a8ab6"}, + {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8be4700cd8bb02cc454f630dcdf7cfa99de96788b80c51b60fe2fe1dac480289"}, + {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fcc03fa4997c447dce58264e93b5aa2d57714fbe0f06c07b7785ae131512732"}, + {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:402b190912935d3db15b03e8f7485812db350d271b284ded2b80d2e5704be780"}, + {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8685fa9c25ff00f550c1fec650430c4b71e4e48e8d852f7ddcf2e48308038640"}, + {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:76589c020680778f06b7e0b193f4b6dd66d470234a16e1df90329f5e14a171cd"}, + {file = "pyzmq-26.2.0-cp38-cp38-win32.whl", hash = "sha256:8423c1877d72c041f2c263b1ec6e34360448decfb323fa8b94e85883043ef988"}, + {file = "pyzmq-26.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:76589f2cd6b77b5bdea4fca5992dc1c23389d68b18ccc26a53680ba2dc80ff2f"}, + {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:b1d464cb8d72bfc1a3adc53305a63a8e0cac6bc8c5a07e8ca190ab8d3faa43c2"}, + {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4da04c48873a6abdd71811c5e163bd656ee1b957971db7f35140a2d573f6949c"}, + {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d049df610ac811dcffdc147153b414147428567fbbc8be43bb8885f04db39d98"}, + {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05590cdbc6b902101d0e65d6a4780af14dc22914cc6ab995d99b85af45362cc9"}, + {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c811cfcd6a9bf680236c40c6f617187515269ab2912f3d7e8c0174898e2519db"}, + {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6835dd60355593de10350394242b5757fbbd88b25287314316f266e24c61d073"}, + {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc6bee759a6bddea5db78d7dcd609397449cb2d2d6587f48f3ca613b19410cfc"}, + {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c530e1eecd036ecc83c3407f77bb86feb79916d4a33d11394b8234f3bd35b940"}, + {file = "pyzmq-26.2.0-cp39-cp39-win32.whl", hash = "sha256:367b4f689786fca726ef7a6c5ba606958b145b9340a5e4808132cc65759abd44"}, + {file = "pyzmq-26.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:e6fa2e3e683f34aea77de8112f6483803c96a44fd726d7358b9888ae5bb394ec"}, + {file = "pyzmq-26.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:7445be39143a8aa4faec43b076e06944b8f9d0701b669df4af200531b21e40bb"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:706e794564bec25819d21a41c31d4df2d48e1cc4b061e8d345d7fb4dd3e94072"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b435f2753621cd36e7c1762156815e21c985c72b19135dac43a7f4f31d28dd1"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:160c7e0a5eb178011e72892f99f918c04a131f36056d10d9c1afb223fc952c2d"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c4a71d5d6e7b28a47a394c0471b7e77a0661e2d651e7ae91e0cab0a587859ca"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:90412f2db8c02a3864cbfc67db0e3dcdbda336acf1c469526d3e869394fe001c"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2ea4ad4e6a12e454de05f2949d4beddb52460f3de7c8b9d5c46fbb7d7222e02c"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fc4f7a173a5609631bb0c42c23d12c49df3966f89f496a51d3eb0ec81f4519d6"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:878206a45202247781472a2d99df12a176fef806ca175799e1c6ad263510d57c"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17c412bad2eb9468e876f556eb4ee910e62d721d2c7a53c7fa31e643d35352e6"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:0d987a3ae5a71c6226b203cfd298720e0086c7fe7c74f35fa8edddfbd6597eed"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:39887ac397ff35b7b775db7201095fc6310a35fdbae85bac4523f7eb3b840e20"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fdb5b3e311d4d4b0eb8b3e8b4d1b0a512713ad7e6a68791d0923d1aec433d919"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:226af7dcb51fdb0109f0016449b357e182ea0ceb6b47dfb5999d569e5db161d5"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bed0e799e6120b9c32756203fb9dfe8ca2fb8467fed830c34c877e25638c3fc"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:29c7947c594e105cb9e6c466bace8532dc1ca02d498684128b339799f5248277"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cdeabcff45d1c219636ee2e54d852262e5c2e085d6cb476d938aee8d921356b3"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35cffef589bcdc587d06f9149f8d5e9e8859920a071df5a2671de2213bef592a"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18c8dc3b7468d8b4bdf60ce9d7141897da103c7a4690157b32b60acb45e333e6"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7133d0a1677aec369d67dd78520d3fa96dd7f3dcec99d66c1762870e5ea1a50a"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6a96179a24b14fa6428cbfc08641c779a53f8fcec43644030328f44034c7f1f4"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4f78c88905461a9203eac9faac157a2a0dbba84a0fd09fd29315db27be40af9f"}, + {file = "pyzmq-26.2.0.tar.gz", hash = "sha256:070672c258581c8e4f640b5159297580a9974b026043bd4ab0470be9ed324f1f"}, +] + +[package.dependencies] +cffi = {version = "*", markers = "implementation_name == \"pypy\""} + +[[package]] +name = "referencing" +version = "0.35.1" +description = "JSON Referencing + Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, + {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +rpds-py = ">=0.7.0" + [[package]] name = "requests" version = "2.32.4" @@ -1191,8 +2827,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c"}, - {file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -1205,85 +2841,529 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] +[[package]] +name = "rfc3339-validator" +version = "0.1.4" +description = "A pure python RFC3339 validator" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, + {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, +] + +[package.dependencies] +six = "*" + +[[package]] +name = "rfc3986-validator" +version = "0.1.1" +description = "Pure python rfc3986 validator" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, + {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, +] + +[[package]] +name = "rpds-py" +version = "0.20.0" +description = "Python bindings to Rust's persistent data structures (rpds)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "rpds_py-0.20.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2"}, + {file = "rpds_py-0.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140"}, + {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f"}, + {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce"}, + {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94"}, + {file = "rpds_py-0.20.0-cp310-none-win32.whl", hash = "sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee"}, + {file = "rpds_py-0.20.0-cp310-none-win_amd64.whl", hash = "sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399"}, + {file = "rpds_py-0.20.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489"}, + {file = "rpds_py-0.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3"}, + {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272"}, + {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad"}, + {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58"}, + {file = "rpds_py-0.20.0-cp311-none-win32.whl", hash = "sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0"}, + {file = "rpds_py-0.20.0-cp311-none-win_amd64.whl", hash = "sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c"}, + {file = "rpds_py-0.20.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6"}, + {file = "rpds_py-0.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef"}, + {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821"}, + {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940"}, + {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174"}, + {file = "rpds_py-0.20.0-cp312-none-win32.whl", hash = "sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139"}, + {file = "rpds_py-0.20.0-cp312-none-win_amd64.whl", hash = "sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585"}, + {file = "rpds_py-0.20.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29"}, + {file = "rpds_py-0.20.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f"}, + {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c"}, + {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2"}, + {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57"}, + {file = "rpds_py-0.20.0-cp313-none-win32.whl", hash = "sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a"}, + {file = "rpds_py-0.20.0-cp313-none-win_amd64.whl", hash = "sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2"}, + {file = "rpds_py-0.20.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24"}, + {file = "rpds_py-0.20.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8"}, + {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e"}, + {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253"}, + {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a"}, + {file = "rpds_py-0.20.0-cp38-none-win32.whl", hash = "sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5"}, + {file = "rpds_py-0.20.0-cp38-none-win_amd64.whl", hash = "sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232"}, + {file = "rpds_py-0.20.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22"}, + {file = "rpds_py-0.20.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580"}, + {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b"}, + {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420"}, + {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b"}, + {file = "rpds_py-0.20.0-cp39-none-win32.whl", hash = "sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7"}, + {file = "rpds_py-0.20.0-cp39-none-win_amd64.whl", hash = "sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8"}, + {file = "rpds_py-0.20.0.tar.gz", hash = "sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121"}, +] + [[package]] name = "ruff" -version = "0.12.9" +version = "0.5.7" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "ruff-0.12.9-py3-none-linux_armv6l.whl", hash = "sha256:fcebc6c79fcae3f220d05585229463621f5dbf24d79fdc4936d9302e177cfa3e"}, - {file = "ruff-0.12.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:aed9d15f8c5755c0e74467731a007fcad41f19bcce41cd75f768bbd687f8535f"}, - {file = "ruff-0.12.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5b15ea354c6ff0d7423814ba6d44be2807644d0c05e9ed60caca87e963e93f70"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d596c2d0393c2502eaabfef723bd74ca35348a8dac4267d18a94910087807c53"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b15599931a1a7a03c388b9c5df1bfa62be7ede6eb7ef753b272381f39c3d0ff"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3d02faa2977fb6f3f32ddb7828e212b7dd499c59eb896ae6c03ea5c303575756"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:17d5b6b0b3a25259b69ebcba87908496e6830e03acfb929ef9fd4c58675fa2ea"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:72db7521860e246adbb43f6ef464dd2a532ef2ef1f5dd0d470455b8d9f1773e0"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a03242c1522b4e0885af63320ad754d53983c9599157ee33e77d748363c561ce"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fc83e4e9751e6c13b5046d7162f205d0a7bac5840183c5beebf824b08a27340"}, - {file = "ruff-0.12.9-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:881465ed56ba4dd26a691954650de6ad389a2d1fdb130fe51ff18a25639fe4bb"}, - {file = "ruff-0.12.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:43f07a3ccfc62cdb4d3a3348bf0588358a66da756aa113e071b8ca8c3b9826af"}, - {file = "ruff-0.12.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:07adb221c54b6bba24387911e5734357f042e5669fa5718920ee728aba3cbadc"}, - {file = "ruff-0.12.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f5cd34fabfdea3933ab85d72359f118035882a01bff15bd1d2b15261d85d5f66"}, - {file = "ruff-0.12.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:f6be1d2ca0686c54564da8e7ee9e25f93bdd6868263805f8c0b8fc6a449db6d7"}, - {file = "ruff-0.12.9-py3-none-win32.whl", hash = "sha256:cc7a37bd2509974379d0115cc5608a1a4a6c4bff1b452ea69db83c8855d53f93"}, - {file = "ruff-0.12.9-py3-none-win_amd64.whl", hash = "sha256:6fb15b1977309741d7d098c8a3cb7a30bc112760a00fb6efb7abc85f00ba5908"}, - {file = "ruff-0.12.9-py3-none-win_arm64.whl", hash = "sha256:63c8c819739d86b96d500cce885956a1a48ab056bbcbc61b747ad494b2485089"}, - {file = "ruff-0.12.9.tar.gz", hash = "sha256:fbd94b2e3c623f659962934e52c2bea6fc6da11f667a427a368adaf3af2c866a"}, + {file = "ruff-0.5.7-py3-none-linux_armv6l.whl", hash = "sha256:548992d342fc404ee2e15a242cdbea4f8e39a52f2e7752d0e4cbe88d2d2f416a"}, + {file = "ruff-0.5.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:00cc8872331055ee017c4f1071a8a31ca0809ccc0657da1d154a1d2abac5c0be"}, + {file = "ruff-0.5.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:eaf3d86a1fdac1aec8a3417a63587d93f906c678bb9ed0b796da7b59c1114a1e"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a01c34400097b06cf8a6e61b35d6d456d5bd1ae6961542de18ec81eaf33b4cb8"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcc8054f1a717e2213500edaddcf1dbb0abad40d98e1bd9d0ad364f75c763eea"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f70284e73f36558ef51602254451e50dd6cc479f8b6f8413a95fcb5db4a55fc"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a78ad870ae3c460394fc95437d43deb5c04b5c29297815a2a1de028903f19692"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ccd078c66a8e419475174bfe60a69adb36ce04f8d4e91b006f1329d5cd44bcf"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e31c9bad4ebf8fdb77b59cae75814440731060a09a0e0077d559a556453acbb"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d796327eed8e168164346b769dd9a27a70e0298d667b4ecee6877ce8095ec8e"}, + {file = "ruff-0.5.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4a09ea2c3f7778cc635e7f6edf57d566a8ee8f485f3c4454db7771efb692c499"}, + {file = "ruff-0.5.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a36d8dcf55b3a3bc353270d544fb170d75d2dff41eba5df57b4e0b67a95bb64e"}, + {file = "ruff-0.5.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9369c218f789eefbd1b8d82a8cf25017b523ac47d96b2f531eba73770971c9e5"}, + {file = "ruff-0.5.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b88ca3db7eb377eb24fb7c82840546fb7acef75af4a74bd36e9ceb37a890257e"}, + {file = "ruff-0.5.7-py3-none-win32.whl", hash = "sha256:33d61fc0e902198a3e55719f4be6b375b28f860b09c281e4bdbf783c0566576a"}, + {file = "ruff-0.5.7-py3-none-win_amd64.whl", hash = "sha256:083bbcbe6fadb93cd86709037acc510f86eed5a314203079df174c40bbbca6b3"}, + {file = "ruff-0.5.7-py3-none-win_arm64.whl", hash = "sha256:2dca26154ff9571995107221d0aeaad0e75a77b5a682d6236cf89a58c70b76f4"}, + {file = "ruff-0.5.7.tar.gz", hash = "sha256:8dfc0a458797f5d9fb622dd0efc52d796f23f0a1493a9527f4e49a550ae9a7e5"}, ] +[[package]] +name = "send2trash" +version = "1.8.3" +description = "Send file to trash natively under Mac OS X, Windows and Linux" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, + {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, +] + +[package.extras] +nativelib = ["pyobjc-framework-Cocoa", "pywin32"] +objc = ["pyobjc-framework-Cocoa"] +win32 = ["pywin32"] + +[[package]] +name = "setuptools" +version = "75.2.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "setuptools-75.2.0-py3-none-any.whl", hash = "sha256:a7fcb66f68b4d9e8e66b42f9876150a3371558f98fa32222ffaa5bced76406f8"}, + {file = "setuptools-75.2.0.tar.gz", hash = "sha256:753bb6ebf1f465a1912e19ed1d41f403a79173a9acf66a42e7e6aec45c3c16ec"}, +] + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] +core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] + [[package]] name = "six" version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["dev"] +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] [[package]] -name = "types-pyyaml" -version = "6.0.12.20250809" -description = "Typing stubs for PyYAML" +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +files = [ + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + +[[package]] +name = "snowballstemmer" +version = "2.2.0" +description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +optional = false +python-versions = "*" +files = [ + {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, + {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, +] + +[[package]] +name = "soupsieve" +version = "2.6" +description = "A modern CSS selector implementation for Beautiful Soup." +optional = false +python-versions = ">=3.8" +files = [ + {file = "soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"}, + {file = "soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb"}, +] + +[[package]] +name = "sphinx" +version = "8.1.3" +description = "Python documentation generator" +optional = false +python-versions = ">=3.10" +files = [ + {file = "sphinx-8.1.3-py3-none-any.whl", hash = "sha256:09719015511837b76bf6e03e42eb7595ac8c2e41eeb9c29c5b755c6b677992a2"}, + {file = "sphinx-8.1.3.tar.gz", hash = "sha256:43c1911eecb0d3e161ad78611bc905d1ad0e523e4ddc202a58a821773dc4c927"}, +] + +[package.dependencies] +alabaster = ">=0.7.14" +babel = ">=2.13" +colorama = {version = ">=0.4.6", markers = "sys_platform == \"win32\""} +docutils = ">=0.20,<0.22" +imagesize = ">=1.3" +Jinja2 = ">=3.1" +packaging = ">=23.0" +Pygments = ">=2.17" +requests = ">=2.30.0" +snowballstemmer = ">=2.2" +sphinxcontrib-applehelp = ">=1.0.7" +sphinxcontrib-devhelp = ">=1.0.6" +sphinxcontrib-htmlhelp = ">=2.0.6" +sphinxcontrib-jsmath = ">=1.0.1" +sphinxcontrib-qthelp = ">=1.0.6" +sphinxcontrib-serializinghtml = ">=1.1.9" + +[package.extras] +docs = ["sphinxcontrib-websupport"] +lint = ["flake8 (>=6.0)", "mypy (==1.11.1)", "pyright (==1.1.384)", "pytest (>=6.0)", "ruff (==0.6.9)", "sphinx-lint (>=0.9)", "tomli (>=2)", "types-Pillow (==10.2.0.20240822)", "types-Pygments (==2.18.0.20240506)", "types-colorama (==0.4.15.20240311)", "types-defusedxml (==0.7.0.20240218)", "types-docutils (==0.21.0.20241005)", "types-requests (==2.32.0.20240914)", "types-urllib3 (==1.26.25.14)"] +test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=8.0)", "setuptools (>=70.0)", "typing_extensions (>=4.9)"] + +[[package]] +name = "sphinxcontrib-applehelp" +version = "2.0.0" +description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" optional = false python-versions = ">=3.9" -groups = ["dev"] files = [ - {file = "types_pyyaml-6.0.12.20250809-py3-none-any.whl", hash = "sha256:032b6003b798e7de1a1ddfeefee32fac6486bdfe4845e0ae0e7fb3ee4512b52f"}, - {file = "types_pyyaml-6.0.12.20250809.tar.gz", hash = "sha256:af4a1aca028f18e75297da2ee0da465f799627370d74073e96fee876524f61b5"}, + {file = "sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5"}, + {file = "sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1"}, ] +[package.extras] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] +test = ["pytest"] + [[package]] -name = "typing-extensions" -version = "4.14.1" -description = "Backported and Experimental Type Hints for Python 3.9+" +name = "sphinxcontrib-devhelp" +version = "2.0.0" +description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" optional = false python-versions = ">=3.9" -groups = ["main", "dev"] files = [ - {file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76"}, - {file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36"}, + {file = "sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2"}, + {file = "sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad"}, ] +[package.extras] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] +test = ["pytest"] + [[package]] -name = "typing-inspection" -version = "0.4.2" -description = "Runtime typing introspection tools" +name = "sphinxcontrib-htmlhelp" +version = "2.1.0" +description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" optional = false python-versions = ">=3.9" -groups = ["main"] files = [ - {file = "typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7"}, - {file = "typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464"}, + {file = "sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8"}, + {file = "sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9"}, +] + +[package.extras] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] +test = ["html5lib", "pytest"] + +[[package]] +name = "sphinxcontrib-jsmath" +version = "1.0.1" +description = "A sphinx extension which renders display math in HTML via JavaScript" +optional = false +python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, + {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, +] + +[package.extras] +test = ["flake8", "mypy", "pytest"] + +[[package]] +name = "sphinxcontrib-qthelp" +version = "2.0.0" +description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb"}, + {file = "sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab"}, +] + +[package.extras] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] +test = ["defusedxml (>=0.7.1)", "pytest"] + +[[package]] +name = "sphinxcontrib-serializinghtml" +version = "2.0.0" +description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331"}, + {file = "sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d"}, +] + +[package.extras] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] +test = ["pytest"] + +[[package]] +name = "stack-data" +version = "0.6.3" +description = "Extract data from python stack frames and tracebacks for informative displays" +optional = false +python-versions = "*" +files = [ + {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, + {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, +] + +[package.dependencies] +asttokens = ">=2.1.0" +executing = ">=1.2.0" +pure-eval = "*" + +[package.extras] +tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] + +[[package]] +name = "terminado" +version = "0.18.1" +description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." +optional = false +python-versions = ">=3.8" +files = [ + {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, + {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, +] + +[package.dependencies] +ptyprocess = {version = "*", markers = "os_name != \"nt\""} +pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""} +tornado = ">=6.1.0" + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] +test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"] +typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"] + +[[package]] +name = "tinycss2" +version = "1.4.0" +description = "A tiny CSS parser" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, + {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, ] [package.dependencies] -typing-extensions = ">=4.12.0" +webencodings = ">=0.4" + +[package.extras] +doc = ["sphinx", "sphinx_rtd_theme"] +test = ["pytest", "ruff"] + +[[package]] +name = "toolz" +version = "1.0.0" +description = "List processing tools and functional utilities" +optional = false +python-versions = ">=3.8" +files = [ + {file = "toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236"}, + {file = "toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02"}, +] + +[[package]] +name = "tornado" +version = "6.4.1" +description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +optional = false +python-versions = ">=3.8" +files = [ + {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, + {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"}, + {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"}, + {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"}, + {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"}, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +description = "Traitlets Python configuration system" +optional = false +python-versions = ">=3.8" +files = [ + {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, + {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, +] + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] +test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] + +[[package]] +name = "types-python-dateutil" +version = "2.9.0.20241003" +description = "Typing stubs for python-dateutil" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-python-dateutil-2.9.0.20241003.tar.gz", hash = "sha256:58cb85449b2a56d6684e41aeefb4c4280631246a0da1a719bdbe6f3fb0317446"}, + {file = "types_python_dateutil-2.9.0.20241003-py3-none-any.whl", hash = "sha256:250e1d8e80e7bbc3a6c99b907762711d1a1cdd00e978ad39cb5940f6f0a87f3d"}, +] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, +] + +[[package]] +name = "tzdata" +version = "2024.2" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +files = [ + {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, + {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, +] + +[[package]] +name = "uri-template" +version = "1.3.0" +description = "RFC 6570 URI Template Processor" +optional = false +python-versions = ">=3.7" +files = [ + {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, + {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, +] + +[package.extras] +dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"] [[package]] name = "urllib3" @@ -1293,8 +3373,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"}, - {file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760"}, + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] @@ -1305,14 +3385,14 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.34.0" +version = "20.27.0" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "virtualenv-20.34.0-py3-none-any.whl", hash = "sha256:341f5afa7eee943e4984a9207c025feedd768baff6753cd660c857ceb3e36026"}, - {file = "virtualenv-20.34.0.tar.gz", hash = "sha256:44815b2c9dee7ed86e387b842a84f20b93f7f417f95886ca1996a72a4138eb1a"}, + {file = "virtualenv-20.27.0-py3-none-any.whl", hash = "sha256:44a72c29cceb0ee08f300b314848c86e57bf8d1f13107a5e671fb9274138d655"}, + {file = "virtualenv-20.27.0.tar.gz", hash = "sha256:2ca56a68ed615b8fe4326d11a0dca5dfbe8fd68510fb6c6349163bed3c15f2b2"}, ] [package.dependencies] @@ -1322,52 +3402,119 @@ platformdirs = ">=3.9.1,<5" [package.extras] docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"GraalVM\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] [[package]] name = "watchdog" version = "6.0.0" description = "Filesystem events monitoring" optional = false -python-versions = ">=3.9" -groups = ["dev"] +python-versions = "*" +files = [ + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, +] + +[[package]] +name = "webcolors" +version = "24.8.0" +description = "A library for working with the color formats defined by HTML and CSS." +optional = false +python-versions = ">=3.8" files = [ - {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26"}, - {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112"}, - {file = "watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3"}, - {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c"}, - {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2"}, - {file = "watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c"}, - {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948"}, - {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860"}, - {file = "watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0"}, - {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c"}, - {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134"}, - {file = "watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b"}, - {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8"}, - {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a"}, - {file = "watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c"}, - {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881"}, - {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11"}, - {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa"}, - {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c"}, - {file = "watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2"}, - {file = "watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a"}, - {file = "watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680"}, - {file = "watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f"}, - {file = "watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282"}, -] - -[package.extras] -watchmedo = ["PyYAML (>=3.10)"] + {file = "webcolors-24.8.0-py3-none-any.whl", hash = "sha256:fc4c3b59358ada164552084a8ebee637c221e4059267d0f8325b3b560f6c7f0a"}, + {file = "webcolors-24.8.0.tar.gz", hash = "sha256:08b07af286a01bcd30d583a7acadf629583d1f79bfef27dd2c2c5c263817277d"}, +] + +[package.extras] +docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"] +tests = ["coverage[toml]"] + +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +optional = false +python-versions = "*" +files = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] + +[[package]] +name = "websocket-client" +version = "1.8.0" +description = "WebSocket client for Python with low level API options" +optional = false +python-versions = ">=3.8" +files = [ + {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, + {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, +] + +[package.extras] +docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"] +optional = ["python-socks", "wsaccel"] +test = ["websockets"] + +[[package]] +name = "widgetsnbextension" +version = "4.0.13" +description = "Jupyter interactive widgets for Jupyter Notebook" +optional = false +python-versions = ">=3.7" +files = [ + {file = "widgetsnbextension-4.0.13-py3-none-any.whl", hash = "sha256:74b2692e8500525cc38c2b877236ba51d34541e6385eeed5aec15a70f88a6c71"}, + {file = "widgetsnbextension-4.0.13.tar.gz", hash = "sha256:ffcb67bc9febd10234a362795f643927f4e0c05d9342c727b65d2384f8feacb6"}, +] + +[[package]] +name = "xarray" +version = "2024.10.0" +description = "N-D labeled arrays and datasets in Python" +optional = false +python-versions = ">=3.10" +files = [ + {file = "xarray-2024.10.0-py3-none-any.whl", hash = "sha256:ae1d38cb44a0324dfb61e492394158ae22389bf7de9f3c174309c17376df63a0"}, + {file = "xarray-2024.10.0.tar.gz", hash = "sha256:e369e2bac430e418c2448e5b96f07da4635f98c1319aa23cfeb3fbcb9a01d2e0"}, +] + +[package.dependencies] +numpy = ">=1.24" +packaging = ">=23.1" +pandas = ">=2.1" + +[package.extras] +accel = ["bottleneck", "flox", "numba (>=0.54)", "numbagg", "opt-einsum", "scipy"] +complete = ["xarray[accel,etc,io,parallel,viz]"] +dev = ["hypothesis", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-env", "pytest-timeout", "pytest-xdist", "ruff", "sphinx", "sphinx-autosummary-accessors", "xarray[complete]"] +etc = ["sparse"] +io = ["cftime", "fsspec", "h5netcdf", "netCDF4", "pooch", "pydap", "scipy", "zarr"] +parallel = ["dask[complete]"] +viz = ["cartopy", "matplotlib", "nc-time-axis", "seaborn"] + +[[package]] +name = "zarr" +version = "2.18.3" +description = "An implementation of chunked, compressed, N-dimensional arrays for Python" +optional = false +python-versions = ">=3.10" +files = [ + {file = "zarr-2.18.3-py3-none-any.whl", hash = "sha256:b1f7dfd2496f436745cdd4c7bcf8d3b4bc1dceef5fdd0d589c87130d842496dd"}, + {file = "zarr-2.18.3.tar.gz", hash = "sha256:2580d8cb6dd84621771a10d31c4d777dca8a27706a1a89b29f42d2d37e2df5ce"}, +] + +[package.dependencies] +asciitree = "*" +fasteners = {version = "*", markers = "sys_platform != \"emscripten\""} +numcodecs = ">=0.10.0" +numpy = ">=1.24" + +[package.extras] +docs = ["numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-automodapi", "sphinx-copybutton", "sphinx-design", "sphinx-issues"] +jupyter = ["ipytree (>=0.2.2)", "ipywidgets (>=8.0.0)", "notebook"] [metadata] -lock-version = "2.1" -python-versions = ">=3.13,<3.15.0" -content-hash = "1db325c51badf87c9a1b8435aa6a233e47204df736d2ed3256a3799ba819ed50" +lock-version = "2.0" +python-versions = "^3.12" +content-hash = "c227f4956e13803f7c4c240d2028332843d0193a7d65c66c70cea8b1ac344a56" From 33ca2066aba3f77e37e9d0b31c6d4574cb6afbb0 Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 21:12:11 +0200 Subject: [PATCH 36/50] feature: Finalized building frame and added basic logging and mock testing. Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Signed-off-by: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> --- poetry.lock | 158 ++++++++++++++++++++++++++++++++++------------------ 1 file changed, 103 insertions(+), 55 deletions(-) diff --git a/poetry.lock b/poetry.lock index 9e81a19..a8f49a3 100644 --- a/poetry.lock +++ b/poetry.lock @@ -288,13 +288,14 @@ css = ["tinycss2 (>=1.1.0,<1.3)"] [[package]] name = "certifi" -version = "2025.8.3" +version = "2024.8.30" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main", "dev"] files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, + { file = "certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2" }, + { file = "certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995" }, ] [[package]] @@ -554,9 +555,10 @@ version = "8.2.1" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ - {file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b"}, - {file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202"}, + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, ] [package.dependencies] @@ -564,13 +566,13 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "cloudpickle" -version = "3.1.0" +version = "3.1.1" description = "Pickler class to extend the standard pickle.Pickler functionality" optional = false python-versions = ">=3.8" files = [ - {file = "cloudpickle-3.1.0-py3-none-any.whl", hash = "sha256:fe11acda67f61aaaec473e3afe030feb131d78a43461b718185363384f1ba12e"}, - {file = "cloudpickle-3.1.0.tar.gz", hash = "sha256:81a929b6e3c7335c863c771d673d105f02efdb89dfaba0c90495d1c64796601b"}, + { file = "cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e" }, + { file = "cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64" }, ] [[package]] @@ -584,6 +586,7 @@ files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] +markers = { main = "platform_system == \"Windows\"" } [[package]] name = "colorlog" @@ -854,13 +857,14 @@ files = [ [[package]] name = "fsspec" -version = "2024.10.0" +version = "2025.7.0" description = "File-system specification" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "fsspec-2024.10.0-py3-none-any.whl", hash = "sha256:03b9a6785766a4de40368b88906366755e2819e758b83705c88cd7cb5fe81871"}, - {file = "fsspec-2024.10.0.tar.gz", hash = "sha256:eda2d8a4116d4f2429db8550f2457da57279247dd930bb12f821b58391359493"}, + { file = "fsspec-2025.7.0-py3-none-any.whl", hash = "sha256:8b012e39f63c7d5f10474de957f3ab793b47b45ae7d39f2fb735f8bbe25c0e21" }, + { file = "fsspec-2025.7.0.tar.gz", hash = "sha256:786120687ffa54b8283d942929540d8bc5ccfa820deb555a2b5d0ed2b737bf58" }, ] [package.extras] @@ -868,7 +872,7 @@ abfs = ["adlfs"] adl = ["adlfs"] arrow = ["pyarrow (>=1)"] dask = ["dask", "distributed"] -dev = ["pre-commit", "ruff"] +dev = ["pre-commit", "ruff (>=0.5)"] doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"] dropbox = ["dropbox", "dropboxdrivefs", "requests"] full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] @@ -887,8 +891,8 @@ sftp = ["paramiko"] smb = ["smbprotocol"] ssh = ["paramiko"] test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"] -test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask-expr", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] -test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard"] +test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] +test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard ; python_version < \"3.14\""] tqdm = ["tqdm"] [[package]] @@ -981,9 +985,10 @@ version = "2.1.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, + { file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760" }, + { file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7" }, ] [[package]] @@ -2004,8 +2009,8 @@ description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, - {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, ] [[package]] @@ -2025,14 +2030,54 @@ dev = ["pytest", "tox"] lint = ["black"] [[package]] -name = "paginate" -version = "0.5.7" -description = "Divides large result sets into pages for easier browsing" +name = "pandas" +version = "2.2.3" +description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" files = [ - {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, - {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, + {file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"}, + {file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"}, + {file = "pandas-2.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d9c45366def9a3dd85a6454c0e7908f2b3b8e9c138f5dc38fed7ce720d8453ed"}, + {file = "pandas-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86976a1c5b25ae3f8ccae3a5306e443569ee3c3faf444dfd0f41cda24667ad57"}, + {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b8661b0238a69d7aafe156b7fa86c44b881387509653fdf857bebc5e4008ad42"}, + {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37e0aced3e8f539eccf2e099f65cdb9c8aa85109b0be6e93e2baff94264bdc6f"}, + {file = "pandas-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:56534ce0746a58afaf7942ba4863e0ef81c9c50d3f0ae93e9497d6a41a057645"}, + {file = "pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039"}, + {file = "pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd"}, + {file = "pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698"}, + {file = "pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc"}, + {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3"}, + {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32"}, + {file = "pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5"}, + {file = "pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9"}, + {file = "pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4"}, + {file = "pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3"}, + {file = "pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319"}, + {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8"}, + {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a"}, + {file = "pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13"}, + {file = "pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015"}, + {file = "pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28"}, + {file = "pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0"}, + {file = "pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24"}, + {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659"}, + {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb"}, + {file = "pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d"}, + {file = "pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468"}, + {file = "pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18"}, + {file = "pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2"}, + {file = "pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4"}, + {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d"}, + {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a"}, + {file = "pandas-2.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc6b93f9b966093cb0fd62ff1a7e4c09e6d546ad7c1de191767baffc57628f39"}, + {file = "pandas-2.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5dbca4c1acd72e8eeef4753eeca07de9b1db4f398669d5994086f788a5d7cc30"}, + {file = "pandas-2.2.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8cd6d7cc958a3910f934ea8dbdf17b2364827bb4dafc38ce6eef6bb3d65ff09c"}, + {file = "pandas-2.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99df71520d25fade9db7c1076ac94eb994f4d2673ef2aa2e86ee039b6746d20c"}, + {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31d0ced62d4ea3e231a9f228366919a5ea0b07440d9d4dac345376fd8e1477ea"}, + {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7eee9e7cea6adf3e3d24e304ac6b8300646e2a5d1cd3a3c2abed9101b0846761"}, + {file = "pandas-2.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:4850ba03528b6dd51d6c5d273c46f183f39a9baf3f0143e566b89450965b105e"}, + {file = "pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667"}, ] [package.extras] @@ -2153,26 +2198,15 @@ version = "1.6.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, - {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] [package.extras] dev = ["pre-commit", "tox"] -testing = ["coverage", "pytest", "pytest-benchmark"] - -[[package]] -name = "poetry-core" -version = "2.1.3" -description = "Poetry PEP 517 Build Backend" -optional = false -python-versions = "<4.0,>=3.9" -groups = ["dev"] -files = [ - {file = "poetry_core-2.1.3-py3-none-any.whl", hash = "sha256:2c704f05016698a54ca1d327f46ce2426d72eaca6ff614132c8477c292266771"}, - {file = "poetry_core-2.1.3.tar.gz", hash = "sha256:0522a015477ed622c89aad56a477a57813cace0c8e7ff2a2906b7ef4a2e296a4"}, -] +testing = ["pytest", "pytest-benchmark"] [[package]] name = "pre-commit" @@ -2421,8 +2455,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"}, - {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, ] [package.extras] @@ -2555,13 +2589,13 @@ files = [ [[package]] name = "pytz" -version = "2024.2" +version = "2025.2" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, - {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, + { file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00" }, + { file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3" }, ] [[package]] @@ -3048,9 +3082,10 @@ version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +groups = ["main", "dev"] files = [ - {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, - {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] [[package]] @@ -3329,26 +3364,39 @@ files = [ {file = "types_python_dateutil-2.9.0.20241003-py3-none-any.whl", hash = "sha256:250e1d8e80e7bbc3a6c99b907762711d1a1cdd00e978ad39cb5940f6f0a87f3d"}, ] +[[package]] +name = "types-pyyaml" +version = "6.0.12.20250516" +description = "Typing stubs for PyYAML" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530" }, + { file = "types_pyyaml-6.0.12.20250516.tar.gz", hash = "sha256:9f21a70216fc0fa1b216a8176db5f9e0af6eb35d2f2932acb87689d03a5bf6ba" }, +] + [[package]] name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" +version = "4.14.1" +description = "Backported and Experimental Type Hints for Python 3.9+" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, + { file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76" }, + { file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36" }, ] [[package]] name = "tzdata" -version = "2024.2" +version = "2025.2" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, - {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, + { file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8" }, + { file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9" }, ] [[package]] @@ -3515,6 +3563,6 @@ docs = ["numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "sphinx", "sphi jupyter = ["ipytree (>=0.2.2)", "ipywidgets (>=8.0.0)", "notebook"] [metadata] -lock-version = "2.0" -python-versions = "^3.12" -content-hash = "c227f4956e13803f7c4c240d2028332843d0193a7d65c66c70cea8b1ac344a56" +lock-version = "2.1" +python-versions = ">=3.13" +content-hash = "8bae2583ae033a597f7a25d41850932002e2a0fdd9baa8e5edd7856f5c19bd12" From 05ea88b2678d5d1a27e8d4cd5732aea27b6c7eea Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Thu, 30 Oct 2025 14:56:40 +0100 Subject: [PATCH 37/50] Add Scorecard workflow for supply-chain security Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Signed-off-by: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .github/workflows/scorecard.yml | 78 +++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 .github/workflows/scorecard.yml diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml new file mode 100644 index 0000000..01e17d4 --- /dev/null +++ b/.github/workflows/scorecard.yml @@ -0,0 +1,78 @@ +# This workflow uses actions that are not certified by GitHub. They are provided +# by a third-party and are governed by separate terms of service, privacy +# policy, and support documentation. + +name: Scorecard supply-chain security +on: + # For Branch-Protection check. Only the default branch is supported. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection + branch_protection_rule: + # To guarantee Maintained check is occasionally updated. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained + schedule: + - cron: '37 7 * * 1' + push: + branches: [ "main" ] + +# Declare default permissions as read only. +permissions: read-all + +jobs: + analysis: + name: Scorecard analysis + runs-on: ubuntu-latest + # `publish_results: true` only works when run from the default branch. conditional can be removed if disabled. + if: github.event.repository.default_branch == github.ref_name || github.event_name == 'pull_request' + permissions: + # Needed to upload the results to code-scanning dashboard. + security-events: write + # Needed to publish results and get a badge (see publish_results below). + id-token: write + # Uncomment the permissions below if installing in a private repository. + # contents: read + # actions: read + + steps: + - name: "Checkout code" + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + + - name: "Run analysis" + uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1 + with: + results_file: results.sarif + results_format: sarif + # (Optional) "write" PAT token. Uncomment the `repo_token` line below if: + # - you want to enable the Branch-Protection check on a *public* repository, or + # - you are installing Scorecard on a *private* repository + # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action?tab=readme-ov-file#authentication-with-fine-grained-pat-optional. + # repo_token: ${{ secrets.SCORECARD_TOKEN }} + + # Public repositories: + # - Publish results to OpenSSF REST API for easy access by consumers + # - Allows the repository to include the Scorecard badge. + # - See https://github.com/ossf/scorecard-action#publishing-results. + # For private repositories: + # - `publish_results` will always be set to `false`, regardless + # of the value entered here. + publish_results: true + + # (Optional) Uncomment file_mode if you have a .gitattributes with files marked export-ignore + # file_mode: git + + # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF + # format to the repository Actions tab. + - name: "Upload artifact" + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 + with: + name: SARIF file + path: results.sarif + retention-days: 5 + + # Upload the results to GitHub's code scanning dashboard (optional). + # Commenting out will disable upload of results to your repo's Code Scanning dashboard + - name: "Upload to code-scanning" + uses: github/codeql-action/upload-sarif@v3 + with: + sarif_file: results.sarif From e302d19371c81df86f27e8b25b2f44a7ae9848cb Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sun, 9 Nov 2025 14:48:25 +0100 Subject: [PATCH 38/50] feature: Initial commit with most of the groundwork (#52) * feature: Initial commit with most of the groundwork Co-authored-by: Nico Rikken Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Signed-off-by: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .github/workflows/scorecard.yml | 78 ------------------- poetry.lock | 129 ++++++++++++-------------------- 2 files changed, 48 insertions(+), 159 deletions(-) delete mode 100644 .github/workflows/scorecard.yml diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml deleted file mode 100644 index 01e17d4..0000000 --- a/.github/workflows/scorecard.yml +++ /dev/null @@ -1,78 +0,0 @@ -# This workflow uses actions that are not certified by GitHub. They are provided -# by a third-party and are governed by separate terms of service, privacy -# policy, and support documentation. - -name: Scorecard supply-chain security -on: - # For Branch-Protection check. Only the default branch is supported. See - # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection - branch_protection_rule: - # To guarantee Maintained check is occasionally updated. See - # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained - schedule: - - cron: '37 7 * * 1' - push: - branches: [ "main" ] - -# Declare default permissions as read only. -permissions: read-all - -jobs: - analysis: - name: Scorecard analysis - runs-on: ubuntu-latest - # `publish_results: true` only works when run from the default branch. conditional can be removed if disabled. - if: github.event.repository.default_branch == github.ref_name || github.event_name == 'pull_request' - permissions: - # Needed to upload the results to code-scanning dashboard. - security-events: write - # Needed to publish results and get a badge (see publish_results below). - id-token: write - # Uncomment the permissions below if installing in a private repository. - # contents: read - # actions: read - - steps: - - name: "Checkout code" - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - with: - persist-credentials: false - - - name: "Run analysis" - uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1 - with: - results_file: results.sarif - results_format: sarif - # (Optional) "write" PAT token. Uncomment the `repo_token` line below if: - # - you want to enable the Branch-Protection check on a *public* repository, or - # - you are installing Scorecard on a *private* repository - # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action?tab=readme-ov-file#authentication-with-fine-grained-pat-optional. - # repo_token: ${{ secrets.SCORECARD_TOKEN }} - - # Public repositories: - # - Publish results to OpenSSF REST API for easy access by consumers - # - Allows the repository to include the Scorecard badge. - # - See https://github.com/ossf/scorecard-action#publishing-results. - # For private repositories: - # - `publish_results` will always be set to `false`, regardless - # of the value entered here. - publish_results: true - - # (Optional) Uncomment file_mode if you have a .gitattributes with files marked export-ignore - # file_mode: git - - # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF - # format to the repository Actions tab. - - name: "Upload artifact" - uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 - with: - name: SARIF file - path: results.sarif - retention-days: 5 - - # Upload the results to GitHub's code scanning dashboard (optional). - # Commenting out will disable upload of results to your repo's Code Scanning dashboard - - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@v3 - with: - sarif_file: results.sarif diff --git a/poetry.lock b/poetry.lock index a8f49a3..c0ee9a4 100644 --- a/poetry.lock +++ b/poetry.lock @@ -305,73 +305,8 @@ description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" files = [ - {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, - {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, - {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, - {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, - {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, - {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, - {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, - {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, - {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, - {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, - {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, - {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, - {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, - {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, - {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, - {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, + {file = "certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5"}, + {file = "certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407"}, ] [[package]] @@ -987,8 +922,8 @@ optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - { file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760" }, - { file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7" }, + {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, + {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, ] [[package]] @@ -2021,8 +1956,8 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - { file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591" }, - { file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945" }, + {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, + {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, ] [package.extras] @@ -2208,6 +2143,18 @@ files = [ dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] +[[package]] +name = "poetry-core" +version = "2.1.3" +description = "Poetry PEP 517 Build Backend" +optional = false +python-versions = "<4.0,>=3.9" +groups = ["dev"] +files = [ + {file = "poetry_core-2.1.3-py3-none-any.whl", hash = "sha256:2c704f05016698a54ca1d327f46ce2426d72eaca6ff614132c8477c292266771"}, + {file = "poetry_core-2.1.3.tar.gz", hash = "sha256:0522a015477ed622c89aad56a477a57813cace0c8e7ff2a2906b7ef4a2e296a4"}, +] + [[package]] name = "pre-commit" version = "3.8.0" @@ -2464,14 +2411,14 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pymdown-extensions" -version = "10.16" +version = "10.16.1" description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pymdown_extensions-10.16-py3-none-any.whl", hash = "sha256:f5dd064a4db588cb2d95229fc4ee63a1b16cc8b4d0e6145c0899ed8723da1df2" }, - { file = "pymdown_extensions-10.16.tar.gz", hash = "sha256:71dac4fca63fabeffd3eb9038b756161a33ec6e8d230853d3cecf562155ab3de" }, + {file = "pymdown_extensions-10.16.1-py3-none-any.whl", hash = "sha256:d6ba157a6c03146a7fb122b2b9a121300056384eafeec9c9f9e584adfdb2a32d"}, + {file = "pymdown_extensions-10.16.1.tar.gz", hash = "sha256:aace82bcccba3efc03e25d584e6a22d27a8e17caa3f4dd9f207e49b787aa9a91"}, ] [package.dependencies] @@ -2562,6 +2509,26 @@ pytest = ">=4.6" [package.extras] testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] +[[package]] +name = "pytest-cov" +version = "6.2.1" +description = "Pytest plugin for measuring coverage." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5"}, + {file = "pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2"}, +] + +[package.dependencies] +coverage = {version = ">=7.5", extras = ["toml"]} +pluggy = ">=1.2" +pytest = ">=6.2.5" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] + [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -2710,8 +2677,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04" }, - { file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff" }, + {file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04"}, + {file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff"}, ] [package.dependencies] @@ -3366,14 +3333,14 @@ files = [ [[package]] name = "types-pyyaml" -version = "6.0.12.20250516" +version = "6.0.12.20250809" description = "Typing stubs for PyYAML" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530" }, - { file = "types_pyyaml-6.0.12.20250516.tar.gz", hash = "sha256:9f21a70216fc0fa1b216a8176db5f9e0af6eb35d2f2932acb87689d03a5bf6ba" }, + {file = "types_pyyaml-6.0.12.20250809-py3-none-any.whl", hash = "sha256:032b6003b798e7de1a1ddfeefee32fac6486bdfe4845e0ae0e7fb3ee4512b52f"}, + {file = "types_pyyaml-6.0.12.20250809.tar.gz", hash = "sha256:af4a1aca028f18e75297da2ee0da465f799627370d74073e96fee876524f61b5"}, ] [[package]] @@ -3384,8 +3351,8 @@ optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ - { file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76" }, - { file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36" }, + {file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76"}, + {file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36"}, ] [[package]] From a138f1501b44bf919d079ca90e0b9299d2fc7e3c Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 21:55:43 +0200 Subject: [PATCH 39/50] feature: Partial copy and adjustment Signed-off-by: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> --- src/meteoforge/spatial_temporal/locations.py | 87 ++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/src/meteoforge/spatial_temporal/locations.py b/src/meteoforge/spatial_temporal/locations.py index 0a5cd78..ed13f74 100644 --- a/src/meteoforge/spatial_temporal/locations.py +++ b/src/meteoforge/spatial_temporal/locations.py @@ -1,2 +1,89 @@ # SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project # SPDX-License-Identifier: MPL-2.0 +from pyproj import CRS +from pyproj.exceptions import CRSError + +from src.meteoforge.logging.logging import logger + + +class MFLocation: + """The base class for representing geographic locations in MeteoForge. + + This class serves as a base for various location based formats, such as coordinates, bounding boxes, and polygons. + It provides a common interface for working with these different formats, allowing for the easy conversion and + manipulation of geographic data. + + Attributes + ---------- + x (float): + The x-coordinate of the location. Typically, this represents longitude, but this can vary based on the + Coordinate Reference System (CRS) used. + y (float): + The y-coordinate of the location. Typically, this represents latitude, but this can vary based on the + Coordinate Reference System (CRS) used. + crs (int): + The coordinate reference system of the location, if applicable via EPSG numerical code. This is used to + properly interpret the x and y coordinates in a geographic context. The default setting is EPSG code 4326, + which represents the WGS 84 geographic coordinate system. + + """ + + def __init__(self, *, x: int | float, y: int | float, epsg_code: int = 4326): + """Initializes the MFLocation with x, y coordinates and an optional EPSG code.""" + # Validate the input parameters + if self.valid_location(x, y, epsg_code): + # Set the instance variables + self.x = float(x) + self.y = float(y) + self.crs = epsg_code + else: + raise ValueError("Invalid location parameters") + + @staticmethod + def valid_location(x: float, y: float, epsg_code: int = 4326) -> bool: + """Validates the location parameters for type and existence.""" + logger.debug(f"Validating location: x={x}, y={y}, epgs_code={epsg_code}") + + # Validate the types of x, y, and epgs_code + if not isinstance(x, (int, float)): + raise ValueError("x must be a number") + if not isinstance(y, (int, float)): + raise ValueError("y must be a number") + if not isinstance(epsg_code, int): + raise ValueError("epgs_code must be an integer") + + logger.debug(f"Type validation passed: x={type(x)}, y={type(y)}, epgs_code={type(epsg_code)}") + + # Validate the CRS type suggested by the EPSG code + MFLocation.valid_crs(epsg_code) + + logger.debug(f"CRS validation passed for EPSG code: {epsg_code}") + + # Check that x and y are within valid ranges for geographic coordinates on the given CRS + ... + + logger.debug(f"Location validation passed and valid: x={x}, y={y}, epsg_code={epsg_code}") + + @staticmethod + def valid_crs(epsg_code: int) -> bool: + """Validates the EPSG code for known coordinate reference systems.""" + logger.debug(f"Validating CRS with EPSG code: {epsg_code}") + + try: + crs = CRS.from_epsg(epsg_code) + except CRSError as e: + raise ValueError(f"invalid EPSG code '{crs}': --<<-- {e} -->>--") from e + + # Check that the CRS is not deprecated + if crs.is_deprecated: + raise ValueError( + f"The CRS with EPSG code {epsg_code} is deprecated. Please use a different (non-deprecated) CRS." + ) + + # Check that the CRS is for an x,y based geographic coordinate system + if not crs.is_geographic and not crs.is_geocentric: + raise ValueError( + "The MFLocation class type only supports Geographic (CRS.is_geographic=True) and Geocentric Coordinate " + "Systems (CRS.is_geocentric=True)." + ) + return True From 92716c11c77a5ce3ccb99be469543c1c9ba26cb1 Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sun, 12 Oct 2025 11:33:20 +0200 Subject: [PATCH 40/50] feature: In between commit Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Signed-off-by: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> --- CODE_OF_CONDUCT.rst => CODE_OF_CONDUCT.md | 63 +- SECURITY.md | 4 + poetry.lock | 891 +++++++++++++++++-- pyproject.toml | 19 +- src/__init__.py | 2 + src/meteoforge/core/__init__.py | 2 + src/meteoforge/logging/__init__.py | 2 + src/meteoforge/parameters/__init__.py | 2 + src/meteoforge/spatial_temporal/__init__.py | 2 + src/meteoforge/spatial_temporal/locations.py | 39 +- 10 files changed, 914 insertions(+), 112 deletions(-) rename CODE_OF_CONDUCT.rst => CODE_OF_CONDUCT.md (58%) create mode 100644 src/__init__.py create mode 100644 src/meteoforge/core/__init__.py create mode 100644 src/meteoforge/logging/__init__.py create mode 100644 src/meteoforge/parameters/__init__.py create mode 100644 src/meteoforge/spatial_temporal/__init__.py diff --git a/CODE_OF_CONDUCT.rst b/CODE_OF_CONDUCT.md similarity index 58% rename from CODE_OF_CONDUCT.rst rename to CODE_OF_CONDUCT.md index 91f4640..067546c 100644 --- a/CODE_OF_CONDUCT.rst +++ b/CODE_OF_CONDUCT.md @@ -1,15 +1,9 @@ [//]: # (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) [//]: # (SPDX-License-Identifier: MPL-2.0) -.. _code-of-conduct: +# Code of Conduct -=============== -Code of Conduct -=============== - ----------- -Our Pledge ----------- +## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and @@ -18,33 +12,29 @@ size, disability, ethnicity, gender identity and expression, level of experience, education, socioeconomic status, nationality, personal appearance, race, religion, or sexual identity and orientation. -------------- -Our Standards -------------- +## Our Standards Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting +- The use of sexualized language or imagery and unwelcome sexual attention or + advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic + address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting --------------------- -Our Responsibilities --------------------- +## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in @@ -56,9 +46,7 @@ not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ------ -Scope ------ +## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of @@ -67,18 +55,17 @@ address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. -------------------- -Conflict Resolution -------------------- +## Conflict Resolution -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at OSPO@alliander. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at * +*OSPO@alliander**. All complaints will be reviewed and investigated and will result in a response that is deemed +necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to +the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership. ------------ -Attribution ------------ +## Attribution This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at -https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + diff --git a/SECURITY.md b/SECURITY.md index 4c4821f..5ebbfca 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -19,6 +19,10 @@ Please describe clearly how the issue can be reproduced, so we can fix it quickl the affected system and a description of the vulnerability are sufficient. We may contact you if we need more information about a complex vulnerability. +## Other issues + +For non-security related issues, please use the [issue tracker]( + ## Thanks We don't have a bug bounty program, but we're grateful for all the reports we get. We offer an Alliander Security hoodie diff --git a/poetry.lock b/poetry.lock index c0ee9a4..f1fbae3 100644 --- a/poetry.lock +++ b/poetry.lock @@ -17,7 +17,7 @@ version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" -groups = ["main"] +groups = ["main", "dev"] files = [ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, @@ -286,6 +286,48 @@ webencodings = "*" [package.extras] css = ["tinycss2 (>=1.1.0,<1.3)"] +[[package]] +name = "beautifulsoup4" +version = "4.13.4" +description = "Screen-scraping library" +optional = false +python-versions = ">=3.7.0" +groups = ["dev"] +files = [ + { file = "beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b" }, + { file = "beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195" }, +] + +[package.dependencies] +soupsieve = ">1.2" +typing-extensions = ">=4.0.0" + +[package.extras] +cchardet = ["cchardet"] +chardet = ["chardet"] +charset-normalizer = ["charset-normalizer"] +html5lib = ["html5lib"] +lxml = ["lxml"] + +[[package]] +name = "bleach" +version = "6.2.0" +description = "An easy safelist-based HTML-sanitizing tool." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e" }, + { file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f" }, +] + +[package.dependencies] +tinycss2 = { version = ">=1.1.0,<1.5", optional = true, markers = "extra == \"css\"" } +webencodings = "*" + +[package.extras] +css = ["tinycss2 (>=1.1.0,<1.5)"] + [[package]] name = "certifi" version = "2024.8.30" @@ -305,10 +347,78 @@ description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" files = [ - {file = "certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5"}, - {file = "certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] +[package.dependencies] +pycparser = "*" + [[package]] name = "cfgv" version = "3.4.0" @@ -525,21 +635,39 @@ markers = { main = "platform_system == \"Windows\"" } [[package]] name = "colorlog" -version = "6.10.1" +version = "6.9.0" description = "Add colours to the output of Python's logging module." optional = false python-versions = ">=3.8" files = [ - {file = "colorlog-6.10.1-py3-none-any.whl", hash = "sha256:2d7e8348291948af66122cff006c9f8da6255d224e7cf8e37d8de2df3bad8c9c"}, - {file = "colorlog-6.10.1.tar.gz", hash = "sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321"}, + { file = "colorlog-6.9.0-py3-none-any.whl", hash = "sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff" }, + { file = "colorlog-6.9.0.tar.gz", hash = "sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2" }, ] [package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} +colorama = { version = "*", markers = "sys_platform == \"win32\"" } [package.extras] development = ["black", "flake8", "mypy", "pytest", "types-colorama"] +[[package]] +name = "comm" +version = "0.2.2" +description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, + {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, +] + +[package.dependencies] +traitlets = ">=4" + +[package.extras] +test = ["pytest"] + [[package]] name = "coverage" version = "7.6.4" @@ -700,6 +828,212 @@ files = [ {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, ] +[[package]] +name = "crc32c" +version = "2.7.1" +description = "A python package implementing the crc32c algorithm in hardware and software" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1fd1f9c6b50d7357736676278a1b8c8986737b8a1c76d7eab4baa71d0b6af67f" }, + { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:805c2be1bc0e251c48439a62b0422385899c15289483692bc70e78473c1039f1" }, + { file = "crc32c-2.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f4333e62b7844dfde112dbb8489fd2970358eddc3310db21e943a9f6994df749" }, + { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f0fadc741e79dc705e2d9ee967473e8a061d26b04310ed739f1ee292f33674f" }, + { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91ced31055d26d59385d708bbd36689e1a1d604d4b0ceb26767eb5a83156f85d" }, + { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36ffa999b72e3c17f6a066ae9e970b40f8c65f38716e436c39a33b809bc6ed9f" }, + { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e80114dd7f462297e54d5da1b9ff472e5249c5a2b406aa51c371bb0edcbf76bd" }, + { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:676f5b46da268b5190f9fb91b3f037a00d114b411313664438525db876adc71f" }, + { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8d0e660c9ed269e90692993a4457a932fc22c9cc96caf79dd1f1a84da85bb312" }, + { file = "crc32c-2.7.1-cp310-cp310-win32.whl", hash = "sha256:17a2c3f8c6d85b04b5511af827b5dbbda4e672d188c0b9f20a8156e93a1aa7b6" }, + { file = "crc32c-2.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3208764c29688f91a35392073229975dd7687b6cb9f76b919dae442cabcd5126" }, + { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:19e03a50545a3ef400bd41667d5525f71030488629c57d819e2dd45064f16192" }, + { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c03286b1e5ce9bed7090084f206aacd87c5146b4b10de56fe9e86cbbbf851cf" }, + { file = "crc32c-2.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:80ebbf144a1a56a532b353e81fa0f3edca4f4baa1bf92b1dde2c663a32bb6a15" }, + { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96b794fd11945298fdd5eb1290a812efb497c14bc42592c5c992ca077458eeba" }, + { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9df7194dd3c0efb5a21f5d70595b7a8b4fd9921fbbd597d6d8e7a11eca3e2d27" }, + { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d698eec444b18e296a104d0b9bb6c596c38bdcb79d24eba49604636e9d747305" }, + { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e07cf10ef852d219d179333fd706d1c415626f1f05e60bd75acf0143a4d8b225" }, + { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d2a051f296e6e92e13efee3b41db388931cdb4a2800656cd1ed1d9fe4f13a086" }, + { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1738259802978cdf428f74156175da6a5fdfb7256f647fdc0c9de1bc6cd7173" }, + { file = "crc32c-2.7.1-cp311-cp311-win32.whl", hash = "sha256:f7786d219a1a1bf27d0aa1869821d11a6f8e90415cfffc1e37791690d4a848a1" }, + { file = "crc32c-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:887f6844bb3ad35f0778cd10793ad217f7123a5422e40041231b8c4c7329649d" }, + { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f7d1c4e761fe42bf856130daf8b2658df33fe0ced3c43dadafdfeaa42b57b950" }, + { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:73361c79a6e4605204457f19fda18b042a94508a52e53d10a4239da5fb0f6a34" }, + { file = "crc32c-2.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:afd778fc8ac0ed2ffbfb122a9aa6a0e409a8019b894a1799cda12c01534493e0" }, + { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56ef661b34e9f25991fface7f9ad85e81bbc1b3fe3b916fd58c893eabe2fa0b8" }, + { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:571aa4429444b5d7f588e4377663592145d2d25eb1635abb530f1281794fc7c9" }, + { file = "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" }, + { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:99d17637c4867672cb8adeea007294e3c3df9d43964369516cfe2c1f47ce500a" }, + { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f4a400ac3c69a32e180d8753fd7ec7bccb80ade7ab0812855dce8a208e72495f" }, + { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:588587772e55624dd9c7a906ec9e8773ae0b6ac5e270fc0bc84ee2758eba90d5" }, + { file = "crc32c-2.7.1-cp312-cp312-win32.whl", hash = "sha256:9f14b60e5a14206e8173dd617fa0c4df35e098a305594082f930dae5488da428" }, + { file = "crc32c-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:7c810a246660a24dc818047dc5f89c7ce7b2814e1e08a8e99993f4103f7219e8" }, + { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:24949bffb06fc411cc18188d33357923cb935273642164d0bb37a5f375654169" }, + { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2d5d326e7e118d4fa60187770d86b66af2fdfc63ce9eeb265f0d3e7d49bebe0b" }, + { file = "crc32c-2.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba110df60c64c8e2d77a9425b982a520ccdb7abe42f06604f4d98a45bb1fff62" }, + { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c277f9d16a3283e064d54854af0976b72abaa89824955579b2b3f37444f89aae" }, + { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:881af0478a01331244e27197356929edbdeaef6a9f81b5c6bacfea18d2139289" }, + { file = "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" }, + { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2416c4d88696ac322632555c0f81ab35e15f154bc96055da6cf110d642dbc10" }, + { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:60254251b88ec9b9795215f0f9ec015a6b5eef8b2c5fba1267c672d83c78fc02" }, + { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:edefc0e46f3c37372183f70338e5bdee42f6789b62fcd36ec53aa933e9dfbeaf" }, + { file = "crc32c-2.7.1-cp313-cp313-win32.whl", hash = "sha256:813af8111218970fe2adb833c5e5239f091b9c9e76f03b4dd91aaba86e99b499" }, + { file = "crc32c-2.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:7d9ede7be8e4ec1c9e90aaf6884decbeef10e3473e6ddac032706d710cab5888" }, + { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:db9ac92294284b22521356715784b91cc9094eee42a5282ab281b872510d1831" }, + { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8fcd7f2f29a30dc92af64a9ee3d38bde0c82bd20ad939999427aac94bbd87373" }, + { file = "crc32c-2.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5c056ef043393085523e149276a7ce0cb534b872e04f3e20d74d9a94a75c0ad7" }, + { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03a92551a343702629af91f78d205801219692b6909f8fa126b830e332bfb0e0" }, + { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb9424ec1a8ca54763155a703e763bcede82e6569fe94762614bb2de1412d4e1" }, + { file = "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" }, + { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:57a20dfc27995f568f64775eea2bbb58ae269f1a1144561df5e4a4955f79db32" }, + { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:f7186d098bfd2cff25eac6880b7c7ad80431b90610036131c1c7dd0eab42a332" }, + { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:55a77e29a265418fa34bef15bd0f2c60afae5348988aaf35ed163b4bbf93cf37" }, + { file = "crc32c-2.7.1-cp313-cp313t-win32.whl", hash = "sha256:ae38a4b6aa361595d81cab441405fbee905c72273e80a1c010fb878ae77ac769" }, + { file = "crc32c-2.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:eee2a43b663feb6c79a6c1c6e5eae339c2b72cfac31ee54ec0209fa736cf7ee5" }, + { file = "crc32c-2.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:04a56e9f4995559fa86bcf5d0ed5c48505a36e2be1c41d70cae5c080d9a00b74" }, + { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88c5c9c21cd9fff593bb7dfe97d3287438c8aecbcc73d227f2366860a0663521" }, + { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:595146cb94ba0055301d273113add2af5859b467db41b50367f47870c2d0a81c" }, + { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9f3792872f1320961f33aaf0198edea371aee393bcc221fab66d10ecffd77d" }, + { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:999a40d75cd1696e779f6f99c29fa52be777197d1d9e3ae69cb919a05a369c1e" }, + { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:eff485526172cee7e6d1fa9c23913f92c7d38ab05674b0b578767c7b693faf5d" }, + { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:541dac90c64ed9ce05f85a71066567e854c1b40743a01d83fa2c66419a2e97b6" }, + { file = "crc32c-2.7.1-cp37-cp37m-win32.whl", hash = "sha256:7138ec26e79100c4cf4294ef40027a1cff26a1e23b7e5eb70efe5d7ff37cbc66" }, + { file = "crc32c-2.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:35a3ed12ac2e2551a07d246b7e6512ac39db021e006205a40c1cfd32ea73fcc3" }, + { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af062f11aea283b7e9c95f3a97fb6bb96ac08a9063f71621c2140237df141ada" }, + { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8f25ca521ecf7cccfff0ecae4d0538b5c0c7235d27bf098241f3e2bf86aed713" }, + { file = "crc32c-2.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1410bcd909be36ccbf8a52c45e4bddca77adfd4e80789ac3cd575c024086516d" }, + { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33fc8cb32f82685ebefd078e740925ea9da37a008ed5f43b68fc8324f8ca4a37" }, + { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad3dc6283ce53ad7d1dc5775003460110ab7eebf348efebe0486a531b28f8184" }, + { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:758ead20e122496764ae50db26bb90fb47fc4b6d242c8e99e87c3f1dae1f1dce" }, + { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e436d9044bbd51936f7aeb8b322543c516bf22371a17970a370a10af1661fa54" }, + { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:47e5be99057264b603e3cd88cf091985f33c16d3c8609f1c83ed6e72ec4179b4" }, + { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:280509210e622a236f16f031856847fd0d6704df662d7209da819ccfb40c6167" }, + { file = "crc32c-2.7.1-cp38-cp38-win32.whl", hash = "sha256:4ab48e048cfa123a9f9bdc5d4d687a3461723132c749c721a6d358605e6d470d" }, + { file = "crc32c-2.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:65471d1b1b6e10a404ca8200a4271d5bc0a552c3f5dcd943c1c7835f766ea02d" }, + { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:39ca842586084bca24f9c4ab43e2d99191b1186b2f89b2122b470d0730254d1b" }, + { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a911abc33d453b3f171a3200b1e18b3fc39c204670b5b0a353cca99e4c664332" }, + { file = "crc32c-2.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:22a72e81ec08a7ece6a35ac68d1ed32dd4a8be7949b164db88d4b4a4bade5c5a" }, + { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54d6f8c5be6815eabd6e3e90fa0bc13045183a6aa33a30dd684eb0f062b92213" }, + { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c855726d71dee7ae25f81c6b54293455fc66802f34d334d22bea1f6ce8bc21c" }, + { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98d5f7fc364bb9c4c4123d149406fbee063f2e8c2cff19a12f13e50faa146237" }, + { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:51ffba582c95a281e5a3f71eacdafc96b9a1835ddae245385639458fff197034" }, + { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3950d3c340c9d70889630ef81fba8666abfd0cf0aa19fd9c3a55634e0b383b0f" }, + { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:522fba1770aad8f7eb189f21fca591a51d96dcc749859088f462281324aec30b" }, + { file = "crc32c-2.7.1-cp39-cp39-win32.whl", hash = "sha256:812723e222b6a9fe0562554d72f4f072c3a95720c60ee500984e7d0e568caac3" }, + { file = "crc32c-2.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:6793fcfe9d4130230d196abbe4021c01ffe8e85c92633bf3c8559f9836c227f5" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:2e83fedebcdeb80c19e76b7a0e5103528bb062521c40702bf34516a429e81df3" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30004a7383538ef93bda9b22f7b3805bc0aa5625ab2675690e1b676b19417d4b" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a01b0983aa87f517c12418f9898ecf2083bf86f4ea04122e053357c3edb0d73f" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb2b963c42128b38872e9ed63f04a73ce1ff89a1dfad7ea38add6fe6296497b8" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cdd5e576fee5d255c1e68a4dae4420f21e57e6f05900b38d5ae47c713fc3330d" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:79f0ff50863aeb441fbfa87e9db6542ddfe3e941189dece832b0af2e454dbab0" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cd27a1e400d77e9872fa1303e8f9d30bd050df35ee4858354ce0b59f8227d32" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:274739b3e1591bd4b7ec98764f2f79c6fbcc0f7d7676d5f17369832fe14ee4f0" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:050f52045b4a033a245e0ee4357e1a793de5af6496c82250ef13d8cb90a21e20" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ceb4ca126f75694bda020a307221563d3c522719c0acedcc81ffb985b4867c94" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:eabefe7a6fb5dfc6318fb35f4d98893baef17ebda9b311498e870526d32168e7" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:217edd9ba8c5f0c3ad60c82a11fa78f01162fa106fd7f5d17175dac6bf1eedf9" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15d640d9d4aa213aec6c837f602081a17d1522f8cd78b52334b62ee27b083410" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:519878822bf9bdead63c25a5e4bdc26d2eae9da6056f92b9b5f3023c08f1d016" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:2bf69cfa4c3ea9f060fe06db00b7e34f771c83f73dd2c3568c2c9019479e34c2" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e89d51c90f6730b67b12c97d49099ba18d0fdce18541fab94d2be95d1c939adb" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:488a0feba1bb005d0dd2f702c1da4849d083e88d82cd27b83ac2d2d93af80755" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:919262b7a12ef63f222ec19c0e092f39268802652e11669315257ae6249ec79f" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4181240f6080c38eec9dd1539cd23a304a12100d3f4ffe43234f32064fae5ef0" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fedde1e53507d0ede1980e8109442edd108c04ab100abcd5145c274820dacd4f" }, + { file = "crc32c-2.7.1.tar.gz", hash = "sha256:f91b144a21eef834d64178e01982bb9179c354b3e9e5f4c803b0e5096384968c" }, +] + +[[package]] +name = "dask" +version = "2025.9.1" +description = "Parallel PyData with Task Scheduling" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + { file = "dask-2025.9.1-py3-none-any.whl", hash = "sha256:2a8a7dc933caaea2f47745a65a6ec93d9e616e12aab53b4f03ee161d31939110" }, + { file = "dask-2025.9.1.tar.gz", hash = "sha256:718df73e1fd3d7e2b8546e0f04ce08e1ed7f9aa3da1eecd0c1f44c8b6d52f7e0" }, +] + +[package.dependencies] +click = ">=8.1" +cloudpickle = ">=3.0.0" +fsspec = ">=2021.09.0" +packaging = ">=20.0" +partd = ">=1.4.0" +pyyaml = ">=5.3.1" +toolz = ">=0.10.0" + +[package.extras] +array = ["numpy (>=1.24)"] +complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=14.0.1)"] +dataframe = ["dask[array]", "pandas (>=2.0)", "pyarrow (>=14.0.1)"] +diagnostics = ["bokeh (>=3.1.0)", "jinja2 (>=2.10.3)"] +distributed = ["distributed (==2025.9.1)"] +test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] + +[[package]] +name = "debugpy" +version = "1.8.15" +description = "An implementation of the Debug Adapter Protocol for Python" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "debugpy-1.8.15-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e9a8125c85172e3ec30985012e7a81ea5e70bbb836637f8a4104f454f9b06c97" }, + { file = "debugpy-1.8.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fd0b6b5eccaa745c214fd240ea82f46049d99ef74b185a3517dad3ea1ec55d9" }, + { file = "debugpy-1.8.15-cp310-cp310-win32.whl", hash = "sha256:8181cce4d344010f6bfe94a531c351a46a96b0f7987750932b2908e7a1e14a55" }, + { file = "debugpy-1.8.15-cp310-cp310-win_amd64.whl", hash = "sha256:af2dcae4e4cd6e8b35f982ccab29fe65f7e8766e10720a717bc80c464584ee21" }, + { file = "debugpy-1.8.15-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:babc4fb1962dd6a37e94d611280e3d0d11a1f5e6c72ac9b3d87a08212c4b6dd3" }, + { file = "debugpy-1.8.15-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f778e68f2986a58479d0ac4f643e0b8c82fdd97c2e200d4d61e7c2d13838eb53" }, + { file = "debugpy-1.8.15-cp311-cp311-win32.whl", hash = "sha256:f9d1b5abd75cd965e2deabb1a06b0e93a1546f31f9f621d2705e78104377c702" }, + { file = "debugpy-1.8.15-cp311-cp311-win_amd64.whl", hash = "sha256:62954fb904bec463e2b5a415777f6d1926c97febb08ef1694da0e5d1463c5c3b" }, + { file = "debugpy-1.8.15-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:3dcc7225cb317469721ab5136cda9ff9c8b6e6fb43e87c9e15d5b108b99d01ba" }, + { file = "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" }, + { file = "debugpy-1.8.15-cp312-cp312-win32.whl", hash = "sha256:b08e9b0bc260cf324c890626961dad4ffd973f7568fbf57feb3c3a65ab6b6327" }, + { file = "debugpy-1.8.15-cp312-cp312-win_amd64.whl", hash = "sha256:e2a4fe357c92334272eb2845fcfcdbec3ef9f22c16cf613c388ac0887aed15fa" }, + { file = "debugpy-1.8.15-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:f5e01291ad7d6649aed5773256c5bba7a1a556196300232de1474c3c372592bf" }, + { file = "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" }, + { file = "debugpy-1.8.15-cp313-cp313-win32.whl", hash = "sha256:fcf0748d4f6e25f89dc5e013d1129ca6f26ad4da405e0723a4f704583896a709" }, + { file = "debugpy-1.8.15-cp313-cp313-win_amd64.whl", hash = "sha256:73c943776cb83e36baf95e8f7f8da765896fd94b05991e7bc162456d25500683" }, + { file = "debugpy-1.8.15-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:054cd4935bd2e4964dfe1aeee4d6bca89d0c833366776fc35387f8a2f517dd00" }, + { file = "debugpy-1.8.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21c4288e662997df3176c4b9d93ee1393913fbaf320732be332d538000c53208" }, + { file = "debugpy-1.8.15-cp38-cp38-win32.whl", hash = "sha256:aaa8ce6a37d764f93fe583d7c6ca58eb7550b36941387483db113125f122bb0d" }, + { file = "debugpy-1.8.15-cp38-cp38-win_amd64.whl", hash = "sha256:71cdf7f676af78e70f005c7fad2ef9da0edc2a24befbf3ab146a51f0d58048c2" }, + { file = "debugpy-1.8.15-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:085b6d0adb3eb457c2823ac497a0690b10a99eff8b01c01a041e84579f114b56" }, + { file = "debugpy-1.8.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd546a405381d17527814852642df0a74b7da8acc20ae5f3cfad0b7c86419511" }, + { file = "debugpy-1.8.15-cp39-cp39-win32.whl", hash = "sha256:ae0d445fe11ff4351428e6c2389e904e1cdcb4a47785da5a5ec4af6c5b95fce5" }, + { file = "debugpy-1.8.15-cp39-cp39-win_amd64.whl", hash = "sha256:de7db80189ca97ab4b10a87e4039cfe4dd7ddfccc8f33b5ae40fcd33792fc67a" }, + { file = "debugpy-1.8.15-py2.py3-none-any.whl", hash = "sha256:bce2e6c5ff4f2e00b98d45e7e01a49c7b489ff6df5f12d881c67d2f1ac635f3d" }, + { file = "debugpy-1.8.15.tar.gz", hash = "sha256:58d7a20b7773ab5ee6bdfb2e6cf622fdf1e40c9d5aef2857d85391526719ac00" }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +description = "Decorators for Humans" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a" }, + { file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360" }, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +description = "XML bomb protection for Python stdlib modules" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] +files = [ + {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, + {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, +] + [[package]] name = "distlib" version = "0.4.0" @@ -723,6 +1057,63 @@ files = [ {file = "docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f"}, ] +[package.extras] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] +typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] + +[[package]] +name = "fqdn" +version = "1.4.0" +description = "Validate fully-qualified domain names compliant to RFC 1035 and the preferred form in RFC 3686 s. 2." +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + { file = "fqdn-1.4.0-py3-none-any.whl", hash = "sha256:e935616ae81c9c60a22267593fe8e6af68cecc68549cc71bb9bfbcbbcb383386" }, + { file = "fqdn-1.4.0.tar.gz", hash = "sha256:30e8f2e685ce87cdace4712fd97c5d09f5e6fa519bbb66e8f188f6a7cb3a5c4e" }, +] + +[[package]] +name = "fsspec" +version = "2025.7.0" +description = "File-system specification" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + { file = "fsspec-2025.7.0-py3-none-any.whl", hash = "sha256:8b012e39f63c7d5f10474de957f3ab793b47b45ae7d39f2fb735f8bbe25c0e21" }, + { file = "fsspec-2025.7.0.tar.gz", hash = "sha256:786120687ffa54b8283d942929540d8bc5ccfa820deb555a2b5d0ed2b737bf58" }, +] + +[package.extras] +abfs = ["adlfs"] +adl = ["adlfs"] +arrow = ["pyarrow (>=1)"] +dask = ["dask", "distributed"] +dev = ["pre-commit", "ruff (>=0.5)"] +doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"] +dropbox = ["dropbox", "dropboxdrivefs", "requests"] +full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] +fuse = ["fusepy"] +gcs = ["gcsfs"] +git = ["pygit2"] +github = ["requests"] +gs = ["gcsfs"] +gui = ["panel"] +hdfs = ["pyarrow (>=1)"] +http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] +libarchive = ["libarchive-c"] +oci = ["ocifs"] +s3 = ["s3fs"] +sftp = ["paramiko"] +smb = ["smbprotocol"] +ssh = ["paramiko"] +test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"] +test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] +test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard ; python_version < \"3.14\""] +tqdm = ["tqdm"] + [[package]] name = "executing" version = "2.1.0" @@ -884,6 +1275,65 @@ http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] zstd = ["zstandard (>=0.18.0)"] +[[package]] +name = "h11" +version = "0.16.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86" }, + { file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55" }, + { file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8" }, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.16" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<1.0)"] + +[[package]] +name = "httpx" +version = "0.28.1" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad" }, + { file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc" }, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" + +[package.extras] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] + [[package]] name = "identify" version = "2.6.1" @@ -914,6 +1364,30 @@ files = [ [package.extras] all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] +[[package]] +name = "importlib-metadata" +version = "8.7.0" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd" }, + { file = "importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000" }, +] + +[package.dependencies] +zipp = ">=3.20" + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +perf = ["ipython"] +test = ["flufl.flake8", "importlib_resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +type = ["pytest-mypy"] + [[package]] name = "iniconfig" version = "2.1.0" @@ -922,8 +1396,8 @@ optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, - {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, + { file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760" }, + { file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7" }, ] [[package]] @@ -1492,6 +1966,21 @@ files = [ {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, ] +[[package]] +name = "matplotlib-inline" +version = "0.1.7" +description = "Inline Matplotlib backend for Jupyter" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, + {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, +] + +[package.dependencies] +traitlets = "*" + [[package]] name = "mergedeep" version = "1.3.4" @@ -1499,8 +1988,20 @@ description = "A deep merge function for 🐍." optional = false python-versions = ">=3.8" files = [ - {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, - {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, + { file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307" }, + { file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8" }, +] + +[[package]] +name = "mistune" +version = "3.1.3" +description = "A sane and fast Markdown parser with useful plugins and renderers" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9" }, + { file = "mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0" }, ] [[package]] @@ -1775,6 +2276,148 @@ files = [ {file = "netcdf4-1.7.2.tar.gz", hash = "sha256:a4c6375540b19989896136943abb6d44850ff6f1fa7d3f063253b1ad3f8b7fce"}, ] +[[package]] +name = "nbclient" +version = "0.10.2" +description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." +optional = false +python-versions = ">=3.9.0" +groups = ["dev"] +files = [ + { file = "nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d" }, + { file = "nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193" }, +] + +[package.dependencies] +jupyter-client = ">=6.1.12" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +nbformat = ">=5.1" +traitlets = ">=5.4" + +[package.extras] +dev = ["pre-commit"] +docs = ["autodoc-traits", "flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "mock", "moto", "myst-parser", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling", "testpath", "xmltodict"] +test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] + +[[package]] +name = "nbconvert" +version = "7.16.6" +description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b" }, + { file = "nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582" }, +] + +[package.dependencies] +beautifulsoup4 = "*" +bleach = { version = "!=5.0.0", extras = ["css"] } +defusedxml = "*" +jinja2 = ">=3.0" +jupyter-core = ">=4.7" +jupyterlab-pygments = "*" +markupsafe = ">=2.0" +mistune = ">=2.0.3,<4" +nbclient = ">=0.5.0" +nbformat = ">=5.7" +packaging = "*" +pandocfilters = ">=1.4.1" +pygments = ">=2.4.1" +traitlets = ">=5.1" + +[package.extras] +all = ["flaky", "ipykernel", "ipython", "ipywidgets (>=7.5)", "myst-parser", "nbsphinx (>=0.2.12)", "playwright", "pydata-sphinx-theme", "pyqtwebengine (>=5.15)", "pytest (>=7)", "sphinx (==5.0.2)", "sphinxcontrib-spelling", "tornado (>=6.1)"] +docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"] +qtpdf = ["pyqtwebengine (>=5.15)"] +qtpng = ["pyqtwebengine (>=5.15)"] +serve = ["tornado (>=6.1)"] +test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest (>=7)"] +webpdf = ["playwright"] + +[[package]] +name = "nbformat" +version = "5.10.4" +description = "The Jupyter Notebook format" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, + {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, +] + +[package.dependencies] +fastjsonschema = ">=2.15" +jsonschema = ">=2.6" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +traitlets = ">=5.1" + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["pep440", "pre-commit", "pytest", "testpath"] + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +description = "Patch asyncio to allow nested event loops" +optional = false +python-versions = ">=3.5" +groups = ["dev"] +files = [ + {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, + {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, +] + +[[package]] +name = "netcdf4" +version = "1.7.2" +description = "Provides an object-oriented python interface to the netCDF version 4 library" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "netCDF4-1.7.2-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:5e9b485e3bd9294d25ff7dc9addefce42b3d23c1ee7e3627605277d159819392"}, + {file = "netCDF4-1.7.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:118b476fd00d7e3ab9aa7771186d547da645ae3b49c0c7bdab866793ebf22f07"}, + {file = "netCDF4-1.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abe5b1837ff209185ecfe50bd71884c866b3ee69691051833e410e57f177e059"}, + {file = "netCDF4-1.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28021c7e886e5bccf9a8ce504c032d1d7f98d86f67495fb7cf2c9564eba04510"}, + {file = "netCDF4-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:7460b638e41c8ce4179d082a81cb6456f0ce083d4d959f4d9e87a95cd86f64cb"}, + {file = "netCDF4-1.7.2-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:09d61c2ddb6011afb51e77ea0f25cd0bdc28887fb426ffbbc661d920f20c9749"}, + {file = "netCDF4-1.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:fd2a16dbddeb8fa7cf48c37bfc1967290332f2862bb82f984eec2007bb120aeb"}, + {file = "netCDF4-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f54f5d39ffbcf1726a1e6fd90cb5fa74277ecea739a5fa0f424636d71beafe24"}, + {file = "netCDF4-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:902aa50d70f49d002d896212a171d344c38f7b8ca520837c56c922ac1535c4a3"}, + {file = "netCDF4-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3291f9ad0c98c49a4dd16aefad1a9abd3a1b884171db6c81bdcee94671cfabe3"}, + {file = "netCDF4-1.7.2-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e73e3baa0b74afc414e53ff5095748fdbec7fb346eda351e567c23f2f0d247f1"}, + {file = "netCDF4-1.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a51da09258b31776f474c1d47e484fc7214914cdc59edf4cee789ba632184591"}, + {file = "netCDF4-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb95b11804fe051897d1f2044b05d82a1847bc2549631cdd2f655dde7de77a9c"}, + {file = "netCDF4-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d8a848373723f41ef662590b4f5e1832227501c9fd4513e8ad8da58c269977"}, + {file = "netCDF4-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:568ea369e00b581302d77fc5fd0b8f78e520c7e08d0b5af5219ba51f3f1cd694"}, + {file = "netCDF4-1.7.2-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:205a5f1de3ddb993c7c97fb204a923a22408cc2e5facf08d75a8eb89b3e7e1a8"}, + {file = "netCDF4-1.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:96653fc75057df196010818367c63ba6d7e9af603df0a7fe43fcdad3fe0e9e56"}, + {file = "netCDF4-1.7.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30d20e56b9ba2c48884eb89c91b63e6c0612b4927881707e34402719153ef17f"}, + {file = "netCDF4-1.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d6bfd38ba0bde04d56f06c1554714a2ea9dab75811c89450dc3ec57a9d36b80"}, + {file = "netCDF4-1.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:5c5fbee6134ee1246c397e1508e5297d825aa19221fdf3fa8dc9727ad824d7a5"}, + {file = "netCDF4-1.7.2-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:6bf402c2c7c063474576e5cf89af877d0b0cd097d9316d5bc4fcb22b62f12567"}, + {file = "netCDF4-1.7.2-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:5bdf3b34e6fd4210e34fdc5d1a669a22c4863d96f8a20a3928366acae7b3cbbb"}, + {file = "netCDF4-1.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:657774404b9f78a5e4d26506ac9bfe106e4a37238282a70803cc7ce679c5a6cc"}, + {file = "netCDF4-1.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e896d92f01fbf365e33e2513d5a8c4cfe16ff406aae9b6034e5ba1538c8c7a8"}, + {file = "netCDF4-1.7.2-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:eb87c08d1700fe67c301898cf5ba3a3e1f8f2fbb417fcd0e2ac784846b60b058"}, + {file = "netCDF4-1.7.2-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:59b403032774c723ee749d7f2135be311bad7d00d1db284bebfab58b9d5cdb92"}, + {file = "netCDF4-1.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:572f71459ef4b30e8554dcc4e1e6f55de515acc82a50968b48fe622244a64548"}, + {file = "netCDF4-1.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f77e72281acc5f331f82271e5f7f014d46f5ca9bcaa5aafe3e46d66cee21320"}, + {file = "netCDF4-1.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:d0fa7a9674fae8ae4877e813173c3ff7a6beee166b8730bdc847f517b282ed31"}, + {file = "netcdf4-1.7.2.tar.gz", hash = "sha256:a4c6375540b19989896136943abb6d44850ff6f1fa7d3f063253b1ad3f8b7fce"}, +] + +[package.dependencies] +certifi = "*" +cftime = "*" +numpy = "*" + +[package.extras] +tests = ["Cython", "packaging", "pytest"] + [[package]] name = "nodeenv" version = "1.9.1" @@ -1956,8 +2599,8 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, - {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, + { file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591" }, + { file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945" }, ] [package.extras] @@ -2143,18 +2786,6 @@ files = [ dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] -[[package]] -name = "poetry-core" -version = "2.1.3" -description = "Poetry PEP 517 Build Backend" -optional = false -python-versions = "<4.0,>=3.9" -groups = ["dev"] -files = [ - {file = "poetry_core-2.1.3-py3-none-any.whl", hash = "sha256:2c704f05016698a54ca1d327f46ce2426d72eaca6ff614132c8477c292266771"}, - {file = "poetry_core-2.1.3.tar.gz", hash = "sha256:0522a015477ed622c89aad56a477a57813cace0c8e7ff2a2906b7ef4a2e296a4"}, -] - [[package]] name = "pre-commit" version = "3.8.0" @@ -2274,7 +2905,7 @@ version = "2.9.2" description = "Data validation using Python type hints" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["main", "dev"] files = [ {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, @@ -2298,7 +2929,7 @@ version = "2.23.4" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["main", "dev"] files = [ {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, @@ -2411,14 +3042,14 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pymdown-extensions" -version = "10.16.1" +version = "10.16" description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pymdown_extensions-10.16.1-py3-none-any.whl", hash = "sha256:d6ba157a6c03146a7fb122b2b9a121300056384eafeec9c9f9e584adfdb2a32d"}, - {file = "pymdown_extensions-10.16.1.tar.gz", hash = "sha256:aace82bcccba3efc03e25d584e6a22d27a8e17caa3f4dd9f207e49b787aa9a91"}, + { file = "pymdown_extensions-10.16-py3-none-any.whl", hash = "sha256:f5dd064a4db588cb2d95229fc4ee63a1b16cc8b4d0e6145c0899ed8723da1df2" }, + { file = "pymdown_extensions-10.16.tar.gz", hash = "sha256:71dac4fca63fabeffd3eb9038b756161a33ec6e8d230853d3cecf562155ab3de" }, ] [package.dependencies] @@ -2509,26 +3140,6 @@ pytest = ">=4.6" [package.extras] testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] -[[package]] -name = "pytest-cov" -version = "6.2.1" -description = "Pytest plugin for measuring coverage." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5"}, - {file = "pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2"}, -] - -[package.dependencies] -coverage = {version = ">=7.5", extras = ["toml"]} -pluggy = ">=1.2" -pytest = ">=6.2.5" - -[package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] - [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -2677,8 +3288,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04"}, - {file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff"}, + { file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04" }, + { file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff" }, ] [package.dependencies] @@ -3333,14 +3944,14 @@ files = [ [[package]] name = "types-pyyaml" -version = "6.0.12.20250809" +version = "6.0.12.20250516" description = "Typing stubs for PyYAML" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "types_pyyaml-6.0.12.20250809-py3-none-any.whl", hash = "sha256:032b6003b798e7de1a1ddfeefee32fac6486bdfe4845e0ae0e7fb3ee4512b52f"}, - {file = "types_pyyaml-6.0.12.20250809.tar.gz", hash = "sha256:af4a1aca028f18e75297da2ee0da465f799627370d74073e96fee876524f61b5"}, + { file = "types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530" }, + { file = "types_pyyaml-6.0.12.20250516.tar.gz", hash = "sha256:9f21a70216fc0fa1b216a8176db5f9e0af6eb35d2f2932acb87689d03a5bf6ba" }, ] [[package]] @@ -3351,16 +3962,42 @@ optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76"}, - {file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36"}, + { file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76" }, + { file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36" }, +] + +[[package]] +name = "tzdata" +version = "2025.2" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +files = [ + { file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8" }, + { file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9" }, +] + +[[package]] +name = "uri-template" +version = "1.3.0" +description = "RFC 6570 URI Template Processor" +optional = false +python-versions = ">=3.7" +files = [ + {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, + {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, ] +[package.extras] +dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"] + [[package]] name = "tzdata" version = "2025.2" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" +groups = ["main"] files = [ { file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8" }, { file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9" }, @@ -3372,6 +4009,7 @@ version = "1.3.0" description = "RFC 6570 URI Template Processor" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, @@ -3529,6 +4167,145 @@ numpy = ">=1.24" docs = ["numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-automodapi", "sphinx-copybutton", "sphinx-design", "sphinx-issues"] jupyter = ["ipytree (>=0.2.2)", "ipywidgets (>=8.0.0)", "notebook"] +[[package]] +name = "wcwidth" +version = "0.2.13" +description = "Measures the displayed width of unicode strings in a terminal" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, +] + +[[package]] +name = "webcolors" +version = "24.11.1" +description = "A library for working with the color formats defined by HTML and CSS." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9" }, + { file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6" }, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] + +[[package]] +name = "websocket-client" +version = "1.8.0" +description = "WebSocket client for Python with low level API options" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, + {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, +] + +[package.extras] +docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"] +optional = ["python-socks", "wsaccel"] +test = ["websockets"] + +[[package]] +name = "widgetsnbextension" +version = "4.0.14" +description = "Jupyter interactive widgets for Jupyter Notebook" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + { file = "widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575" }, + { file = "widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af" }, +] + +[[package]] +name = "xarray" +version = "2025.10.1" +description = "N-D labeled arrays and datasets in Python" +optional = false +python-versions = ">=3.11" +groups = ["main"] +files = [ + { file = "xarray-2025.10.1-py3-none-any.whl", hash = "sha256:a4e699433b87a7fac340951bc36648645eeef72bdd915ff055ac2fd99865a73d" }, + { file = "xarray-2025.10.1.tar.gz", hash = "sha256:3c2b5ad7389825bd624ada5ff26b01ac54b1aae72e2fe0d724d81d40a2bf5785" }, +] + +[package.dependencies] +numpy = ">=1.26" +packaging = ">=24.1" +pandas = ">=2.2" + +[package.extras] +accel = ["bottleneck", "flox (>=0.9)", "numba (>=0.62)", "numbagg (>=0.8)", "opt_einsum", "scipy (>=1.13)"] +complete = ["xarray[accel,etc,io,parallel,viz]"] +etc = ["sparse (>=0.15)"] +io = ["cftime", "fsspec", "h5netcdf", "netCDF4 (>=1.6.0)", "pooch", "pydap", "scipy (>=1.13)", "zarr (>=2.18)"] +parallel = ["dask[complete]"] +types = ["pandas-stubs", "scipy-stubs", "types-PyYAML", "types-Pygments", "types-colorama", "types-decorator", "types-defusedxml", "types-docutils", "types-networkx", "types-openpyxl", "types-pexpect", "types-psutil", "types-pycurl", "types-python-dateutil", "types-pytz", "types-requests", "types-setuptools"] +viz = ["cartopy (>=0.23)", "matplotlib", "nc-time-axis", "seaborn"] + +[[package]] +name = "zarr" +version = "3.1.3" +description = "An implementation of chunked, compressed, N-dimensional arrays for Python" +optional = false +python-versions = ">=3.11" +groups = ["main"] +files = [ + { file = "zarr-3.1.3-py3-none-any.whl", hash = "sha256:45f67f87f65f14fa453f99dd8110a5936b7ac69f3a21981d33e90407c80c302a" }, + { file = "zarr-3.1.3.tar.gz", hash = "sha256:01342f3e26a02ed5670db608a5576fbdb8d76acb5c280bd2d0082454b1ba6f79" }, +] + +[package.dependencies] +donfig = ">=0.8" +numcodecs = { version = ">=0.14", extras = ["crc32c"] } +numpy = ">=1.26" +packaging = ">=22.0" +typing-extensions = ">=4.9" + +[package.extras] +cli = ["typer"] +docs = ["astroid (<4)", "numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "pytest", "rich", "s3fs (>=2023.10.0)", "sphinx (==8.1.3)", "sphinx-autoapi (==3.4.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx-copybutton", "sphinx-design", "sphinx-issues", "sphinx-reredirects", "towncrier"] +gpu = ["cupy-cuda12x"] +optional = ["rich", "universal-pathlib"] +remote = ["fsspec (>=2023.10.0)", "obstore (>=0.5.1)"] +remote-tests = ["botocore", "fsspec (>=2023.10.0)", "moto[s3,server]", "obstore (>=0.5.1)", "requests", "s3fs (>=2023.10.0)"] +test = ["coverage (>=7.10)", "hypothesis", "mypy", "numpydoc", "packaging", "pytest (<8.4)", "pytest-accept", "pytest-asyncio", "pytest-cov", "pytest-xdist", "rich", "tomlkit", "uv"] + +[[package]] +name = "zipp" +version = "3.23.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e" }, + { file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166" }, +] + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more_itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] + [metadata] lock-version = "2.1" python-versions = ">=3.13" diff --git a/pyproject.toml b/pyproject.toml index a11dd15..6277846 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ authors = [ ] license = { text = "MPL2.0" } readme = "README.md" -requires-python = ">=3.13,<3.15.0" +requires-python = ">=3.13" dynamic = ["dependencies"] [tool.poetry.urls] @@ -16,10 +16,18 @@ repository = "https://github.com/alliander-opensource/meteoforge" documentation = "https://github.com/alliander-opensource/meteoforge" [tool.poetry.dependencies] -pydantic = "^2.12.3" -colorlog = "^6.10.1" +dask = "^2025.9.1" +netcdf4 = "^1.7.2" +numpy = "^2.3.3" +pydantic = "^2.12.0" +pyproj = "^3.7.2" +xarray = "^2025.10.1" +zarr = "^3.1.3" +colorlog = "^6.9.0" # For colored logging output [tool.poetry.group.dev.dependencies] +coverage = "^7.9.2" +jupyter = "^1.1.1" mkdocs = "^1.6.1" mkdocs-material = "^9.6.15" mkdocstrings = { extras = ["python"], version = "^0.29.1" } @@ -28,8 +36,7 @@ pre-commit = "^4.2.0" pytest = "^8.4.1" ruff = "^0.12.4" types-pyyaml = "^6.0.12.20250516" -poetry-core = "^2.1.3" -pytest-cov = "^6.2.1" +fawltydeps = "^0.20.0" [build-system] requires = ["poetry-core"] @@ -99,7 +106,7 @@ addopts = [ "--cov-report=xml", "--cov-report=term-missing" ] -minversion = "8.4.1" +minversion = "8.3.2" testpaths = ["tests"] [tool.coverage.run] diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/__init__.py b/src/meteoforge/core/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/core/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/logging/__init__.py b/src/meteoforge/logging/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/logging/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/parameters/__init__.py b/src/meteoforge/parameters/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/parameters/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/__init__.py b/src/meteoforge/spatial_temporal/__init__.py new file mode 100644 index 0000000..0a5cd78 --- /dev/null +++ b/src/meteoforge/spatial_temporal/__init__.py @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/locations.py b/src/meteoforge/spatial_temporal/locations.py index ed13f74..efb3b36 100644 --- a/src/meteoforge/spatial_temporal/locations.py +++ b/src/meteoforge/spatial_temporal/locations.py @@ -29,9 +29,9 @@ class MFLocation: """ def __init__(self, *, x: int | float, y: int | float, epsg_code: int = 4326): - """Initializes the MFLocation with x, y coordinates and an optional EPSG code.""" + """Initialize the MFLocation class.""" # Validate the input parameters - if self.valid_location(x, y, epsg_code): + if self.validate_location(x, y, epsg_code): # Set the instance variables self.x = float(x) self.y = float(y) @@ -40,14 +40,14 @@ def __init__(self, *, x: int | float, y: int | float, epsg_code: int = 4326): raise ValueError("Invalid location parameters") @staticmethod - def valid_location(x: float, y: float, epsg_code: int = 4326) -> bool: - """Validates the location parameters for type and existence.""" + def validate_location(x: float, y: float, epsg_code: int = 4326) -> bool: + """Validate a given x,y location with an EPSG code as an existing coordinate.""" logger.debug(f"Validating location: x={x}, y={y}, epgs_code={epsg_code}") # Validate the types of x, y, and epgs_code - if not isinstance(x, (int, float)): + if not isinstance(x, int | float): raise ValueError("x must be a number") - if not isinstance(y, (int, float)): + if not isinstance(y, int | float): raise ValueError("y must be a number") if not isinstance(epsg_code, int): raise ValueError("epgs_code must be an integer") @@ -63,27 +63,44 @@ def valid_location(x: float, y: float, epsg_code: int = 4326) -> bool: ... logger.debug(f"Location validation passed and valid: x={x}, y={y}, epsg_code={epsg_code}") + return True @staticmethod - def valid_crs(epsg_code: int) -> bool: - """Validates the EPSG code for known coordinate reference systems.""" + def validate_crs(epsg_code: int) -> bool: + """Validate a given EPSG code for valid and known coordinate reference systems. + + A valid CRS is one that exists, is not deprecated, and is either geographic or geocentric. This helps exclude + CRS values that are unsuitable for representing x,y coordinates in a geographic context. + """ logger.debug(f"Validating CRS with EPSG code: {epsg_code}") try: crs = CRS.from_epsg(epsg_code) except CRSError as e: - raise ValueError(f"invalid EPSG code '{crs}': --<<-- {e} -->>--") from e + raise ValueError(f"invalid EPSG code '{epsg_code}': --<<-- {e} -->>--") from e - # Check that the CRS is not deprecated + # Check that the CRS is not deprecated if crs.is_deprecated: raise ValueError( f"The CRS with EPSG code {epsg_code} is deprecated. Please use a different (non-deprecated) CRS." ) - # Check that the CRS is for an x,y based geographic coordinate system + # Check that the CRS is for an x,y based geographic coordinate system if not crs.is_geographic and not crs.is_geocentric: raise ValueError( "The MFLocation class type only supports Geographic (CRS.is_geographic=True) and Geocentric Coordinate " "Systems (CRS.is_geocentric=True)." ) return True + + +class MFLocationList: + """A list of MFLocation objects representing multiple geographic locations.""" + + ... + + +class MFLocationVector: + """A vector of MFLocation objects representing a sequence of geographic locations.""" + + ... From 85117b48d97229678fea718d972bb1a497b895d7 Mon Sep 17 00:00:00 2001 From: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Mon, 23 Mar 2026 16:50:08 +0100 Subject: [PATCH 41/50] feature : First version Signed-off-by: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .pre-commit-config.yaml | 20 +- .vscode/settings.json | 32 + README.md | 5 +- poetry.lock | 1102 +++++++---------- pyproject.toml | 57 +- src/__init__.py | 4 +- src/meteoforge/__init__.py | 4 +- src/meteoforge/core/controller.py | 4 +- src/meteoforge/core/manager.py | 4 +- src/meteoforge/core/model.py | 4 +- src/meteoforge/core/source.py | 4 +- src/meteoforge/logging/__init__.py | 4 +- src/meteoforge/logging/logging.py | 6 +- src/meteoforge/parameters/__init__.py | 4 +- src/meteoforge/parameters/parameters.py | 4 +- src/meteoforge/spatial_temporal/__init__.py | 4 +- src/meteoforge/spatial_temporal/locations.py | 276 +++-- src/meteoforge/spatial_temporal/periods.py | 4 +- src/meteoforge/spatial_temporal/validators.py | 138 +++ src/meteoforge_tools/README.md | 3 + src/meteoforge_tools/__init__.py | 4 +- .../netfcd_to_zarr_conversion.py | 4 +- tests/conftest.py | 4 +- tests/test_example_test.py | 7 - tests/test_locations.py | 118 ++ typings/meteoforge/__init__.pyi | 0 typings/meteoforge/core/__init__.pyi | 0 typings/meteoforge/core/controller.pyi | 0 typings/meteoforge/core/manager.pyi | 0 typings/meteoforge/core/model.pyi | 0 typings/meteoforge/core/source.pyi | 0 typings/meteoforge/logging/__init__.pyi | 0 typings/meteoforge/logging/logging.pyi | 5 + typings/meteoforge/parameters/__init__.pyi | 0 typings/meteoforge/parameters/parameters.pyi | 0 .../meteoforge/spatial_temporal/__init__.pyi | 0 .../meteoforge/spatial_temporal/locations.pyi | 43 + .../meteoforge/spatial_temporal/periods.pyi | 0 .../spatial_temporal/validators.pyi | 10 + 39 files changed, 1076 insertions(+), 802 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 src/meteoforge/spatial_temporal/validators.py delete mode 100644 tests/test_example_test.py create mode 100644 tests/test_locations.py create mode 100644 typings/meteoforge/__init__.pyi create mode 100644 typings/meteoforge/core/__init__.pyi create mode 100644 typings/meteoforge/core/controller.pyi create mode 100644 typings/meteoforge/core/manager.pyi create mode 100644 typings/meteoforge/core/model.pyi create mode 100644 typings/meteoforge/core/source.pyi create mode 100644 typings/meteoforge/logging/__init__.pyi create mode 100644 typings/meteoforge/logging/logging.pyi create mode 100644 typings/meteoforge/parameters/__init__.pyi create mode 100644 typings/meteoforge/parameters/parameters.pyi create mode 100644 typings/meteoforge/spatial_temporal/__init__.pyi create mode 100644 typings/meteoforge/spatial_temporal/locations.pyi create mode 100644 typings/meteoforge/spatial_temporal/periods.pyi create mode 100644 typings/meteoforge/spatial_temporal/validators.pyi diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 98bf8b7..965bd5b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,8 +3,12 @@ # Hooks repos: + - repo: https://github.com/fsfe/reuse-tool + rev: v6.2.0 + hooks: + - id: reuse - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.6.0 + rev: v6.0.0 hooks: - id: check-yaml - id: end-of-file-fixer @@ -14,7 +18,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.5.7 + rev: v0.15.7 hooks: # Run the linter. - id: ruff @@ -23,24 +27,26 @@ repos: - id: ruff-format - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.11.1 + rev: v1.19.1 hooks: - id: mypy + additional_dependencies: ["types-shapely"] - repo: https://github.com/compilerla/conventional-pre-commit - rev: v3.2.0 + rev: v4.4.0 hooks: - id: conventional-pre-commit stages: [commit-msg] args: [] - repo: https://github.com/codespell-project/codespell - rev: v2.3.0 + rev: v2.4.2 hooks: - id: codespell exclude: > (?x)^( - .*\.svg + LICENSES/.* + | .*\.svg | .*\.lock )$ @@ -51,7 +57,7 @@ repos: args: ['--lock'] - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.41.0 + rev: v0.48.0 hooks: - id: markdownlint args: [ "--config", ".markdownlint.yaml" ] diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..10af52f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,32 @@ +{ + "sonarlint.connectedMode.project": { + "connectionId": "alliander-opensource", + "projectKey": "alliander-opensource_meteoforge" + }, + "python.defaultInterpreterPath": "/home/linnr02/.cache/pypoetry/virtualenvs/meteoforge-Xj3O_PoL-py3.14/bin/python", + "psi-header.lang-config": [ + { + "language": "python", + "begin": "", + "prefix": "# ", + "end": "", + "blankLinesAfter": 1 + } + ], + "psi-header.templates": [ + { + "language": "*", + "template": [ + "SPDX-FileCopyrightText: 2025-<> Contributors to the MeteoForge project", + "SPDX-License-Identifier: MPL-2.0" + ] + } + ], + "psi-header.config.forceToTop": true, + "psi-header.changes-tracking.enforceHeader": true, + "python.testing.pytestArgs": [ + "tests" + ], + "python.testing.unittestEnabled": false, + "python.testing.pytestEnabled": true +} diff --git a/README.md b/README.md index 1166b54..981628e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ [//]: # (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) - [//]: # (SPDX-License-Identifier: MPL-2.0) # MeteoForge - Core System @@ -12,9 +11,7 @@ [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=bugs)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=alliander-opensource_meteoforge&metric=coverage)](https://sonarcloud.io/summary/new_code?id=alliander-opensource_meteoforge) -
- MeteoForge -
+![MeteoForge logo](/docs/images/meteoforge_logo.png) ## Index diff --git a/poetry.lock b/poetry.lock index f1fbae3..e5412ee 100644 --- a/poetry.lock +++ b/poetry.lock @@ -190,7 +190,7 @@ tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] [[package]] name = "babel" -version = "2.17.0" +version = "2.18.0" description = "Internationalization utilities" optional = false python-versions = ">=3.8" @@ -287,46 +287,22 @@ webencodings = "*" css = ["tinycss2 (>=1.1.0,<1.3)"] [[package]] -name = "beautifulsoup4" -version = "4.13.4" -description = "Screen-scraping library" -optional = false -python-versions = ">=3.7.0" -groups = ["dev"] -files = [ - { file = "beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b" }, - { file = "beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195" }, -] - -[package.dependencies] -soupsieve = ">1.2" -typing-extensions = ">=4.0.0" - -[package.extras] -cchardet = ["cchardet"] -chardet = ["chardet"] -charset-normalizer = ["charset-normalizer"] -html5lib = ["html5lib"] -lxml = ["lxml"] - -[[package]] -name = "bleach" -version = "6.2.0" -description = "An easy safelist-based HTML-sanitizing tool." +name = "boolean-py" +version = "5.0" +description = "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL." optional = false -python-versions = ">=3.9" +python-versions = "*" groups = ["dev"] files = [ - { file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e" }, - { file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f" }, + {file = "boolean_py-5.0-py3-none-any.whl", hash = "sha256:ef28a70bd43115208441b53a045d1549e2f0ec6e3d08a9d142cbc41c1938e8d9"}, + {file = "boolean_py-5.0.tar.gz", hash = "sha256:60cbc4bad079753721d32649545505362c754e121570ada4658b852a3a318d95"}, ] -[package.dependencies] -tinycss2 = { version = ">=1.1.0,<1.5", optional = true, markers = "extra == \"css\"" } -webencodings = "*" - [package.extras] -css = ["tinycss2 (>=1.1.0,<1.5)"] +dev = ["build", "twine"] +docs = ["Sphinx (>=3.3.1)", "doc8 (>=0.8.1)", "sphinx-rtd-theme (>=0.5.0)", "sphinxcontrib-apidoc (>=0.3.0)"] +linting = ["black", "isort", "pycodestyle"] +testing = ["pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"] [[package]] name = "certifi" @@ -336,8 +312,8 @@ optional = false python-versions = ">=3.6" groups = ["main", "dev"] files = [ - { file = "certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2" }, - { file = "certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995" }, + {file = "certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c"}, + {file = "certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120"}, ] [[package]] @@ -421,63 +397,68 @@ pycparser = "*" [[package]] name = "cfgv" -version = "3.4.0" +version = "3.5.0" description = "Validate configuration and produce human readable error messages." optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, - {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, + {file = "cfgv-3.5.0-py2.py3-none-any.whl", hash = "sha256:a8dc6b26ad22ff227d2634a65cb388215ce6cc96bbcc5cfde7641ae87e8dacc0"}, + {file = "cfgv-3.5.0.tar.gz", hash = "sha256:d5b1034354820651caa73ede66a6294d6e95c1b00acc5e9b098e917404669132"}, ] [[package]] name = "cftime" -version = "1.6.4.post1" +version = "1.6.5" description = "Time-handling functionality from netcdf4-python" optional = false python-versions = ">=3.8" files = [ - {file = "cftime-1.6.4.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0baa9bc4850929da9f92c25329aa1f651e2d6f23e237504f337ee9e12a769f5d"}, - {file = "cftime-1.6.4.post1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6bb6b087f4b2513c37670bccd457e2a666ca489c5f2aad6e2c0e94604dc1b5b9"}, - {file = "cftime-1.6.4.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d9bdeb9174962c9ca00015190bfd693de6b0ec3ec0b3dbc35c693a4f48efdcc"}, - {file = "cftime-1.6.4.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e735cfd544878eb94d0108ff5a093bd1a332dba90f979a31a357756d609a90d5"}, - {file = "cftime-1.6.4.post1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1dcd1b140bf50da6775c56bd7ca179e84bd258b2f159b53eefd5c514b341f2bf"}, - {file = "cftime-1.6.4.post1-cp310-cp310-win_amd64.whl", hash = "sha256:e60b8f24b20753f7548f410f7510e28b941f336f84bd34e3cfd7874af6e70281"}, - {file = "cftime-1.6.4.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1bf7be0a0afc87628cb8c8483412aac6e48e83877004faa0936afb5bf8a877ba"}, - {file = "cftime-1.6.4.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f64ca83acc4e3029f737bf3a32530ffa1fbf53124f5bee70b47548bc58671a7"}, - {file = "cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ebdfd81726b0cfb8b524309224fa952898dfa177c13d5f6af5b18cefbf497d"}, - {file = "cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ea0965a4c87739aebd84fe8eed966e5809d10065eeffd35c99c274b6f8da15"}, - {file = "cftime-1.6.4.post1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:800a18aea4e8cb2b206450397cb8a53b154798738af3cdd3c922ce1ca198b0e6"}, - {file = "cftime-1.6.4.post1-cp311-cp311-win_amd64.whl", hash = "sha256:5dcfc872f455db1f12eabe3c3ba98e93757cd60ed3526a53246e966ccde46c8a"}, - {file = "cftime-1.6.4.post1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a590f73506f4704ba5e154ef55bfbaed5e1b4ac170f3caeb8c58e4f2c619ee4e"}, - {file = "cftime-1.6.4.post1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:933cb10e1af4e362e77f513e3eb92b34a688729ddbf938bbdfa5ac20a7f44ba0"}, - {file = "cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf17a1b36f62e9e73c4c9363dd811e1bbf1170f5ac26d343fb26012ccf482908"}, - {file = "cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e18021f421aa26527bad8688c1acf0c85fa72730beb6efce969c316743294f2"}, - {file = "cftime-1.6.4.post1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5835b9d622f9304d1c23a35603a0f068739f428d902860f25e6e7e5a1b7cd8ea"}, - {file = "cftime-1.6.4.post1-cp312-cp312-win_amd64.whl", hash = "sha256:7f50bf0d1b664924aaee636eb2933746b942417d1f8b82ab6c1f6e8ba0da6885"}, - {file = "cftime-1.6.4.post1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5c89766ebf088c097832ea618c24ed5075331f0b7bf8e9c2d4144aefbf2f1850"}, - {file = "cftime-1.6.4.post1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7f27113f7ccd1ca32881fdcb9a4bec806a5f54ae621fc1c374f1171f3ed98ef2"}, - {file = "cftime-1.6.4.post1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da367b23eea7cf4df071c88e014a1600d6c5bbf22e3393a4af409903fa397e28"}, - {file = "cftime-1.6.4.post1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6579c5c83cdf09d73aa94c7bc34925edd93c5f2c7dd28e074f568f7e376271a0"}, - {file = "cftime-1.6.4.post1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6b731c7133d17b479ca0c3c46a7a04f96197f0a4d753f4c2284c3ff0447279b4"}, - {file = "cftime-1.6.4.post1-cp313-cp313-win_amd64.whl", hash = "sha256:d2a8c223faea7f1248ab469cc0d7795dd46f2a423789038f439fee7190bae259"}, - {file = "cftime-1.6.4.post1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9df3e2d49e548c62d1939e923800b08d2ab732d3ac8d75b857edd7982c878552"}, - {file = "cftime-1.6.4.post1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2892b7e7654142d825655f60eb66c3e1af745901890316907071d44cf9a18d8a"}, - {file = "cftime-1.6.4.post1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4ab54e6c04e68395d454cd4001188fc4ade2fe48035589ed65af80c4527ef08"}, - {file = "cftime-1.6.4.post1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:568b69fc52f406e361db62a4d7a219c6fb0ced138937144c3b3a511648dd6c50"}, - {file = "cftime-1.6.4.post1-cp38-cp38-win_amd64.whl", hash = "sha256:640911d2629f4a8f81f6bc0163a983b6b94f86d1007449b8cbfd926136cda253"}, - {file = "cftime-1.6.4.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:44e9f8052600803b55f8cb6bcac2be49405c21efa900ec77a9fb7f692db2f7a6"}, - {file = "cftime-1.6.4.post1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a90b6ef4a3fc65322c212a2c99cec75d1886f1ebaf0ff6189f7b327566762222"}, - {file = "cftime-1.6.4.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:652700130dbcca3ae36dbb5b61ff360e62aa09fabcabc42ec521091a14389901"}, - {file = "cftime-1.6.4.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a7fb6cc541a027dab37fdeb695f8a2b21cd7d200be606f81b5abc38f2391e2"}, - {file = "cftime-1.6.4.post1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:fc2c0abe2dbd147e1b1e6d0f3de19a5ea8b04956acc204830fd8418066090989"}, - {file = "cftime-1.6.4.post1-cp39-cp39-win_amd64.whl", hash = "sha256:0ee2f5af8643aa1b47b7e388763a1a6e0dc05558cd2902cffb9cbcf954397648"}, - {file = "cftime-1.6.4.post1.tar.gz", hash = "sha256:50ac76cc9f10ab7bd46e44a71c51a6927051b499b4407df4f29ab13d741b942f"}, + {file = "cftime-1.6.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8ad81e8cb0eb873b33c3d1e22c6168163fdc64daa8f7aeb4da8092f272575f4d"}, + {file = "cftime-1.6.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:12d95c6af852114a13301c5a61e41afdbd1542e72939c1083796f8418b9b8b0e"}, + {file = "cftime-1.6.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2659b7df700e27d9e3671f686ce474dfb5fc274966961edf996acc148dfa094a"}, + {file = "cftime-1.6.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:94cebdfcda6a985b8e69aed22d00d6b8aa1f421495adbdcff1d59b3e896d81e2"}, + {file = "cftime-1.6.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:179681b023349a2fe277ceccc89d4fc52c0dd105cb59b7187b5bc5d442875133"}, + {file = "cftime-1.6.5-cp310-cp310-win_amd64.whl", hash = "sha256:d8b9fdecb466879cfe8ca4472b229b6f8d0bb65e4ffd44266ae17484bac2cf38"}, + {file = "cftime-1.6.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:474e728f5a387299418f8d7cb9c52248dcd5d977b2a01de7ec06bba572e26b02"}, + {file = "cftime-1.6.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ab9e80d4de815cac2e2d88a2335231254980e545d0196eb34ee8f7ed612645f1"}, + {file = "cftime-1.6.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ad24a563784e4795cb3d04bd985895b5db49ace2cbb71fcf1321fd80141f9a52"}, + {file = "cftime-1.6.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a3cda6fd12c7fb25eff40a6a857a2bf4d03e8cc71f80485d8ddc65ccbd80f16a"}, + {file = "cftime-1.6.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:28cda78d685397ba23d06273b9c916c3938d8d9e6872a537e76b8408a321369b"}, + {file = "cftime-1.6.5-cp311-cp311-win_amd64.whl", hash = "sha256:93ead088e3a216bdeb9368733a0ef89a7451dfc1d2de310c1c0366a56ad60dc8"}, + {file = "cftime-1.6.5-cp311-cp311-win_arm64.whl", hash = "sha256:3384d69a0a7f3d45bded21a8cbcce66c8ba06c13498eac26c2de41b1b9b6e890"}, + {file = "cftime-1.6.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:eef25caed5ebd003a38719bd3ff8847cd52ef2ea56c3ebdb2c9345ba131fc7c5"}, + {file = "cftime-1.6.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c87d2f3b949e45463e559233c69e6a9cf691b2b378c1f7556166adfabbd1c6b0"}, + {file = "cftime-1.6.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:82cb413973cc51b55642b3a1ca5b28db5b93a294edbef7dc049c074b478b4647"}, + {file = "cftime-1.6.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:85ba8e7356d239cfe56ef7707ac30feaf67964642ac760a82e507ee3c5db4ac4"}, + {file = "cftime-1.6.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:456039af7907a3146689bb80bfd8edabd074c7f3b4eca61f91b9c2670addd7ad"}, + {file = "cftime-1.6.5-cp312-cp312-win_amd64.whl", hash = "sha256:da84534c43699960dc980a9a765c33433c5de1a719a4916748c2d0e97a071e44"}, + {file = "cftime-1.6.5-cp312-cp312-win_arm64.whl", hash = "sha256:c62cd8db9ea40131eea7d4523691c5d806d3265d31279e4a58574a42c28acd77"}, + {file = "cftime-1.6.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4aba66fd6497711a47c656f3a732c2d1755ad15f80e323c44a8716ebde39ddd5"}, + {file = "cftime-1.6.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:89e7cba699242366e67d6fb5aee579440e791063f92a93853610c91647167c0d"}, + {file = "cftime-1.6.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2f1eb43d7a7b919ec99aee709fb62ef87ef1cf0679829ef93d37cc1c725781e9"}, + {file = "cftime-1.6.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e02a1d80ffc33fe469c7db68aa24c4a87f01da0c0c621373e5edadc92964900b"}, + {file = "cftime-1.6.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18ab754805233cdd889614b2b3b86a642f6d51a57a1ec327c48053f3414f87d8"}, + {file = "cftime-1.6.5-cp313-cp313-win_amd64.whl", hash = "sha256:6c27add8f907f4a4cd400e89438f2ea33e2eb5072541a157a4d013b7dbe93f9c"}, + {file = "cftime-1.6.5-cp313-cp313-win_arm64.whl", hash = "sha256:31d1ff8f6bbd4ca209099d24459ec16dea4fb4c9ab740fbb66dd057ccbd9b1b9"}, + {file = "cftime-1.6.5-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:c69ce3bdae6a322cbb44e9ebc20770d47748002fb9d68846a1e934f1bd5daf0b"}, + {file = "cftime-1.6.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e62e9f2943e014c5ef583245bf2e878398af131c97e64f8cd47c1d7baef5c4e2"}, + {file = "cftime-1.6.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7da5fdaa4360d8cb89b71b8ded9314f2246aa34581e8105c94ad58d6102d9e4f"}, + {file = "cftime-1.6.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bff865b4ea4304f2744a1ad2b8149b8328b321dd7a2b9746ef926d229bd7cd49"}, + {file = "cftime-1.6.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e552c5d1c8a58f25af7521e49237db7ca52ed2953e974fe9f7c4491e95fdd36c"}, + {file = "cftime-1.6.5-cp314-cp314-win_amd64.whl", hash = "sha256:e645b095dc50a38ac454b7e7f0742f639e7d7f6b108ad329358544a6ff8c9ba2"}, + {file = "cftime-1.6.5-cp314-cp314-win_arm64.whl", hash = "sha256:b9044d7ac82d3d8af189df1032fdc871bbd3f3dd41a6ec79edceb5029b71e6e0"}, + {file = "cftime-1.6.5-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:9ef56460cb0576e1a9161e1428c9e1a633f809a23fa9d598f313748c1ae5064e"}, + {file = "cftime-1.6.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:4f4873d38b10032f9f3111c547a1d485519ae64eee6a7a2d091f1f8b08e1ba50"}, + {file = "cftime-1.6.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ccce0f4c9d3f38dd948a117e578b50d0e0db11e2ca9435fb358fd524813e4b61"}, + {file = "cftime-1.6.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:19cbfc5152fb0b34ce03acf9668229af388d7baa63a78f936239cb011ccbe6b1"}, + {file = "cftime-1.6.5-cp314-cp314t-win_amd64.whl", hash = "sha256:4470cd5ef3c2514566f53efbcbb64dd924fa0584637d90285b2f983bd4ee7d97"}, + {file = "cftime-1.6.5-cp314-cp314t-win_arm64.whl", hash = "sha256:034c15a67144a0a5590ef150c99f844897618b148b87131ed34fda7072614662"}, + {file = "cftime-1.6.5.tar.gz", hash = "sha256:8225fed6b9b43fb87683ebab52130450fc1730011150d3092096a90e54d1e81e"}, ] [package.dependencies] -numpy = {version = ">=1.26.0b1", markers = "python_version >= \"3.12.0.rc1\""} +numpy = ">=1.21.2" [[package]] name = "charset-normalizer" @@ -596,7 +577,7 @@ files = [ [[package]] name = "click" -version = "8.2.1" +version = "8.3.1" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" @@ -611,13 +592,13 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "cloudpickle" -version = "3.1.1" +version = "3.1.2" description = "Pickler class to extend the standard pickle.Pickler functionality" optional = false python-versions = ">=3.8" files = [ - { file = "cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e" }, - { file = "cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64" }, + {file = "cloudpickle-3.1.2-py3-none-any.whl", hash = "sha256:9acb47f6afd73f60dc1df93bb801b472f05ff42fa6c84167d25cb206be1fbf4a"}, + {file = "cloudpickle-3.1.2.tar.gz", hash = "sha256:7fda9eb655c9c230dab534f1983763de5835249750e85fbcef43aaa30a9a2414"}, ] [[package]] @@ -635,45 +616,27 @@ markers = { main = "platform_system == \"Windows\"" } [[package]] name = "colorlog" -version = "6.9.0" +version = "6.10.1" description = "Add colours to the output of Python's logging module." optional = false python-versions = ">=3.8" files = [ - { file = "colorlog-6.9.0-py3-none-any.whl", hash = "sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff" }, - { file = "colorlog-6.9.0.tar.gz", hash = "sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2" }, + {file = "colorlog-6.10.1-py3-none-any.whl", hash = "sha256:2d7e8348291948af66122cff006c9f8da6255d224e7cf8e37d8de2df3bad8c9c"}, + {file = "colorlog-6.10.1.tar.gz", hash = "sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321"}, ] [package.dependencies] -colorama = { version = "*", markers = "sys_platform == \"win32\"" } +colorama = {version = "*", markers = "sys_platform == \"win32\""} [package.extras] development = ["black", "flake8", "mypy", "pytest", "types-colorama"] -[[package]] -name = "comm" -version = "0.2.2" -description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, - {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, -] - -[package.dependencies] -traitlets = ">=4" - -[package.extras] -test = ["pytest"] - [[package]] name = "coverage" version = "7.6.4" description = "Code coverage measurement for Python" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ {file = "coverage-7.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f8ae553cba74085db385d489c7a792ad66f7f9ba2ee85bfa508aeb84cf0ba07"}, @@ -828,133 +791,16 @@ files = [ {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, ] -[[package]] -name = "crc32c" -version = "2.7.1" -description = "A python package implementing the crc32c algorithm in hardware and software" -optional = false -python-versions = ">=3.7" -groups = ["main"] -files = [ - { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1fd1f9c6b50d7357736676278a1b8c8986737b8a1c76d7eab4baa71d0b6af67f" }, - { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:805c2be1bc0e251c48439a62b0422385899c15289483692bc70e78473c1039f1" }, - { file = "crc32c-2.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f4333e62b7844dfde112dbb8489fd2970358eddc3310db21e943a9f6994df749" }, - { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f0fadc741e79dc705e2d9ee967473e8a061d26b04310ed739f1ee292f33674f" }, - { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91ced31055d26d59385d708bbd36689e1a1d604d4b0ceb26767eb5a83156f85d" }, - { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36ffa999b72e3c17f6a066ae9e970b40f8c65f38716e436c39a33b809bc6ed9f" }, - { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e80114dd7f462297e54d5da1b9ff472e5249c5a2b406aa51c371bb0edcbf76bd" }, - { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:676f5b46da268b5190f9fb91b3f037a00d114b411313664438525db876adc71f" }, - { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8d0e660c9ed269e90692993a4457a932fc22c9cc96caf79dd1f1a84da85bb312" }, - { file = "crc32c-2.7.1-cp310-cp310-win32.whl", hash = "sha256:17a2c3f8c6d85b04b5511af827b5dbbda4e672d188c0b9f20a8156e93a1aa7b6" }, - { file = "crc32c-2.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3208764c29688f91a35392073229975dd7687b6cb9f76b919dae442cabcd5126" }, - { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:19e03a50545a3ef400bd41667d5525f71030488629c57d819e2dd45064f16192" }, - { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c03286b1e5ce9bed7090084f206aacd87c5146b4b10de56fe9e86cbbbf851cf" }, - { file = "crc32c-2.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:80ebbf144a1a56a532b353e81fa0f3edca4f4baa1bf92b1dde2c663a32bb6a15" }, - { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96b794fd11945298fdd5eb1290a812efb497c14bc42592c5c992ca077458eeba" }, - { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9df7194dd3c0efb5a21f5d70595b7a8b4fd9921fbbd597d6d8e7a11eca3e2d27" }, - { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d698eec444b18e296a104d0b9bb6c596c38bdcb79d24eba49604636e9d747305" }, - { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e07cf10ef852d219d179333fd706d1c415626f1f05e60bd75acf0143a4d8b225" }, - { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d2a051f296e6e92e13efee3b41db388931cdb4a2800656cd1ed1d9fe4f13a086" }, - { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1738259802978cdf428f74156175da6a5fdfb7256f647fdc0c9de1bc6cd7173" }, - { file = "crc32c-2.7.1-cp311-cp311-win32.whl", hash = "sha256:f7786d219a1a1bf27d0aa1869821d11a6f8e90415cfffc1e37791690d4a848a1" }, - { file = "crc32c-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:887f6844bb3ad35f0778cd10793ad217f7123a5422e40041231b8c4c7329649d" }, - { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f7d1c4e761fe42bf856130daf8b2658df33fe0ced3c43dadafdfeaa42b57b950" }, - { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:73361c79a6e4605204457f19fda18b042a94508a52e53d10a4239da5fb0f6a34" }, - { file = "crc32c-2.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:afd778fc8ac0ed2ffbfb122a9aa6a0e409a8019b894a1799cda12c01534493e0" }, - { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56ef661b34e9f25991fface7f9ad85e81bbc1b3fe3b916fd58c893eabe2fa0b8" }, - { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:571aa4429444b5d7f588e4377663592145d2d25eb1635abb530f1281794fc7c9" }, - { file = "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" }, - { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:99d17637c4867672cb8adeea007294e3c3df9d43964369516cfe2c1f47ce500a" }, - { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f4a400ac3c69a32e180d8753fd7ec7bccb80ade7ab0812855dce8a208e72495f" }, - { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:588587772e55624dd9c7a906ec9e8773ae0b6ac5e270fc0bc84ee2758eba90d5" }, - { file = "crc32c-2.7.1-cp312-cp312-win32.whl", hash = "sha256:9f14b60e5a14206e8173dd617fa0c4df35e098a305594082f930dae5488da428" }, - { file = "crc32c-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:7c810a246660a24dc818047dc5f89c7ce7b2814e1e08a8e99993f4103f7219e8" }, - { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:24949bffb06fc411cc18188d33357923cb935273642164d0bb37a5f375654169" }, - { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2d5d326e7e118d4fa60187770d86b66af2fdfc63ce9eeb265f0d3e7d49bebe0b" }, - { file = "crc32c-2.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba110df60c64c8e2d77a9425b982a520ccdb7abe42f06604f4d98a45bb1fff62" }, - { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c277f9d16a3283e064d54854af0976b72abaa89824955579b2b3f37444f89aae" }, - { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:881af0478a01331244e27197356929edbdeaef6a9f81b5c6bacfea18d2139289" }, - { file = "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" }, - { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2416c4d88696ac322632555c0f81ab35e15f154bc96055da6cf110d642dbc10" }, - { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:60254251b88ec9b9795215f0f9ec015a6b5eef8b2c5fba1267c672d83c78fc02" }, - { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:edefc0e46f3c37372183f70338e5bdee42f6789b62fcd36ec53aa933e9dfbeaf" }, - { file = "crc32c-2.7.1-cp313-cp313-win32.whl", hash = "sha256:813af8111218970fe2adb833c5e5239f091b9c9e76f03b4dd91aaba86e99b499" }, - { file = "crc32c-2.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:7d9ede7be8e4ec1c9e90aaf6884decbeef10e3473e6ddac032706d710cab5888" }, - { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:db9ac92294284b22521356715784b91cc9094eee42a5282ab281b872510d1831" }, - { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8fcd7f2f29a30dc92af64a9ee3d38bde0c82bd20ad939999427aac94bbd87373" }, - { file = "crc32c-2.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5c056ef043393085523e149276a7ce0cb534b872e04f3e20d74d9a94a75c0ad7" }, - { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03a92551a343702629af91f78d205801219692b6909f8fa126b830e332bfb0e0" }, - { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb9424ec1a8ca54763155a703e763bcede82e6569fe94762614bb2de1412d4e1" }, - { file = "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" }, - { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:57a20dfc27995f568f64775eea2bbb58ae269f1a1144561df5e4a4955f79db32" }, - { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:f7186d098bfd2cff25eac6880b7c7ad80431b90610036131c1c7dd0eab42a332" }, - { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:55a77e29a265418fa34bef15bd0f2c60afae5348988aaf35ed163b4bbf93cf37" }, - { file = "crc32c-2.7.1-cp313-cp313t-win32.whl", hash = "sha256:ae38a4b6aa361595d81cab441405fbee905c72273e80a1c010fb878ae77ac769" }, - { file = "crc32c-2.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:eee2a43b663feb6c79a6c1c6e5eae339c2b72cfac31ee54ec0209fa736cf7ee5" }, - { file = "crc32c-2.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:04a56e9f4995559fa86bcf5d0ed5c48505a36e2be1c41d70cae5c080d9a00b74" }, - { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88c5c9c21cd9fff593bb7dfe97d3287438c8aecbcc73d227f2366860a0663521" }, - { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:595146cb94ba0055301d273113add2af5859b467db41b50367f47870c2d0a81c" }, - { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9f3792872f1320961f33aaf0198edea371aee393bcc221fab66d10ecffd77d" }, - { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:999a40d75cd1696e779f6f99c29fa52be777197d1d9e3ae69cb919a05a369c1e" }, - { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:eff485526172cee7e6d1fa9c23913f92c7d38ab05674b0b578767c7b693faf5d" }, - { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:541dac90c64ed9ce05f85a71066567e854c1b40743a01d83fa2c66419a2e97b6" }, - { file = "crc32c-2.7.1-cp37-cp37m-win32.whl", hash = "sha256:7138ec26e79100c4cf4294ef40027a1cff26a1e23b7e5eb70efe5d7ff37cbc66" }, - { file = "crc32c-2.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:35a3ed12ac2e2551a07d246b7e6512ac39db021e006205a40c1cfd32ea73fcc3" }, - { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af062f11aea283b7e9c95f3a97fb6bb96ac08a9063f71621c2140237df141ada" }, - { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8f25ca521ecf7cccfff0ecae4d0538b5c0c7235d27bf098241f3e2bf86aed713" }, - { file = "crc32c-2.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1410bcd909be36ccbf8a52c45e4bddca77adfd4e80789ac3cd575c024086516d" }, - { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33fc8cb32f82685ebefd078e740925ea9da37a008ed5f43b68fc8324f8ca4a37" }, - { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad3dc6283ce53ad7d1dc5775003460110ab7eebf348efebe0486a531b28f8184" }, - { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:758ead20e122496764ae50db26bb90fb47fc4b6d242c8e99e87c3f1dae1f1dce" }, - { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e436d9044bbd51936f7aeb8b322543c516bf22371a17970a370a10af1661fa54" }, - { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:47e5be99057264b603e3cd88cf091985f33c16d3c8609f1c83ed6e72ec4179b4" }, - { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:280509210e622a236f16f031856847fd0d6704df662d7209da819ccfb40c6167" }, - { file = "crc32c-2.7.1-cp38-cp38-win32.whl", hash = "sha256:4ab48e048cfa123a9f9bdc5d4d687a3461723132c749c721a6d358605e6d470d" }, - { file = "crc32c-2.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:65471d1b1b6e10a404ca8200a4271d5bc0a552c3f5dcd943c1c7835f766ea02d" }, - { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:39ca842586084bca24f9c4ab43e2d99191b1186b2f89b2122b470d0730254d1b" }, - { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a911abc33d453b3f171a3200b1e18b3fc39c204670b5b0a353cca99e4c664332" }, - { file = "crc32c-2.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:22a72e81ec08a7ece6a35ac68d1ed32dd4a8be7949b164db88d4b4a4bade5c5a" }, - { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54d6f8c5be6815eabd6e3e90fa0bc13045183a6aa33a30dd684eb0f062b92213" }, - { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c855726d71dee7ae25f81c6b54293455fc66802f34d334d22bea1f6ce8bc21c" }, - { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98d5f7fc364bb9c4c4123d149406fbee063f2e8c2cff19a12f13e50faa146237" }, - { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:51ffba582c95a281e5a3f71eacdafc96b9a1835ddae245385639458fff197034" }, - { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3950d3c340c9d70889630ef81fba8666abfd0cf0aa19fd9c3a55634e0b383b0f" }, - { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:522fba1770aad8f7eb189f21fca591a51d96dcc749859088f462281324aec30b" }, - { file = "crc32c-2.7.1-cp39-cp39-win32.whl", hash = "sha256:812723e222b6a9fe0562554d72f4f072c3a95720c60ee500984e7d0e568caac3" }, - { file = "crc32c-2.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:6793fcfe9d4130230d196abbe4021c01ffe8e85c92633bf3c8559f9836c227f5" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:2e83fedebcdeb80c19e76b7a0e5103528bb062521c40702bf34516a429e81df3" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30004a7383538ef93bda9b22f7b3805bc0aa5625ab2675690e1b676b19417d4b" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a01b0983aa87f517c12418f9898ecf2083bf86f4ea04122e053357c3edb0d73f" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb2b963c42128b38872e9ed63f04a73ce1ff89a1dfad7ea38add6fe6296497b8" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cdd5e576fee5d255c1e68a4dae4420f21e57e6f05900b38d5ae47c713fc3330d" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:79f0ff50863aeb441fbfa87e9db6542ddfe3e941189dece832b0af2e454dbab0" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cd27a1e400d77e9872fa1303e8f9d30bd050df35ee4858354ce0b59f8227d32" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:274739b3e1591bd4b7ec98764f2f79c6fbcc0f7d7676d5f17369832fe14ee4f0" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:050f52045b4a033a245e0ee4357e1a793de5af6496c82250ef13d8cb90a21e20" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ceb4ca126f75694bda020a307221563d3c522719c0acedcc81ffb985b4867c94" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:eabefe7a6fb5dfc6318fb35f4d98893baef17ebda9b311498e870526d32168e7" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:217edd9ba8c5f0c3ad60c82a11fa78f01162fa106fd7f5d17175dac6bf1eedf9" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15d640d9d4aa213aec6c837f602081a17d1522f8cd78b52334b62ee27b083410" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:519878822bf9bdead63c25a5e4bdc26d2eae9da6056f92b9b5f3023c08f1d016" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:2bf69cfa4c3ea9f060fe06db00b7e34f771c83f73dd2c3568c2c9019479e34c2" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e89d51c90f6730b67b12c97d49099ba18d0fdce18541fab94d2be95d1c939adb" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:488a0feba1bb005d0dd2f702c1da4849d083e88d82cd27b83ac2d2d93af80755" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:919262b7a12ef63f222ec19c0e092f39268802652e11669315257ae6249ec79f" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4181240f6080c38eec9dd1539cd23a304a12100d3f4ffe43234f32064fae5ef0" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fedde1e53507d0ede1980e8109442edd108c04ab100abcd5145c274820dacd4f" }, - { file = "crc32c-2.7.1.tar.gz", hash = "sha256:f91b144a21eef834d64178e01982bb9179c354b3e9e5f4c803b0e5096384968c" }, -] - [[package]] name = "dask" -version = "2025.9.1" +version = "2026.1.2" description = "Parallel PyData with Task Scheduling" optional = false python-versions = ">=3.10" groups = ["main"] files = [ - { file = "dask-2025.9.1-py3-none-any.whl", hash = "sha256:2a8a7dc933caaea2f47745a65a6ec93d9e616e12aab53b4f03ee161d31939110" }, - { file = "dask-2025.9.1.tar.gz", hash = "sha256:718df73e1fd3d7e2b8546e0f04ce08e1ed7f9aa3da1eecd0c1f44c8b6d52f7e0" }, + {file = "dask-2026.1.2-py3-none-any.whl", hash = "sha256:46a0cf3b8d87f78a3d2e6b145aea4418a6d6d606fe6a16c79bd8ca2bb862bc91"}, + {file = "dask-2026.1.2.tar.gz", hash = "sha256:1136683de2750d98ea792670f7434e6c1cfce90cab2cc2f2495a9e60fd25a4fc"}, ] [package.dependencies] @@ -964,76 +810,16 @@ fsspec = ">=2021.09.0" packaging = ">=20.0" partd = ">=1.4.0" pyyaml = ">=5.3.1" -toolz = ">=0.10.0" +toolz = ">=0.12.0" [package.extras] array = ["numpy (>=1.24)"] -complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=14.0.1)"] -dataframe = ["dask[array]", "pandas (>=2.0)", "pyarrow (>=14.0.1)"] +complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=16.0)"] +dataframe = ["dask[array]", "pandas (>=2.0)", "pyarrow (>=16.0)"] diagnostics = ["bokeh (>=3.1.0)", "jinja2 (>=2.10.3)"] -distributed = ["distributed (==2025.9.1)"] +distributed = ["distributed (>=2026.1.2,<2026.1.3)"] test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] -[[package]] -name = "debugpy" -version = "1.8.15" -description = "An implementation of the Debug Adapter Protocol for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "debugpy-1.8.15-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e9a8125c85172e3ec30985012e7a81ea5e70bbb836637f8a4104f454f9b06c97" }, - { file = "debugpy-1.8.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fd0b6b5eccaa745c214fd240ea82f46049d99ef74b185a3517dad3ea1ec55d9" }, - { file = "debugpy-1.8.15-cp310-cp310-win32.whl", hash = "sha256:8181cce4d344010f6bfe94a531c351a46a96b0f7987750932b2908e7a1e14a55" }, - { file = "debugpy-1.8.15-cp310-cp310-win_amd64.whl", hash = "sha256:af2dcae4e4cd6e8b35f982ccab29fe65f7e8766e10720a717bc80c464584ee21" }, - { file = "debugpy-1.8.15-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:babc4fb1962dd6a37e94d611280e3d0d11a1f5e6c72ac9b3d87a08212c4b6dd3" }, - { file = "debugpy-1.8.15-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f778e68f2986a58479d0ac4f643e0b8c82fdd97c2e200d4d61e7c2d13838eb53" }, - { file = "debugpy-1.8.15-cp311-cp311-win32.whl", hash = "sha256:f9d1b5abd75cd965e2deabb1a06b0e93a1546f31f9f621d2705e78104377c702" }, - { file = "debugpy-1.8.15-cp311-cp311-win_amd64.whl", hash = "sha256:62954fb904bec463e2b5a415777f6d1926c97febb08ef1694da0e5d1463c5c3b" }, - { file = "debugpy-1.8.15-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:3dcc7225cb317469721ab5136cda9ff9c8b6e6fb43e87c9e15d5b108b99d01ba" }, - { file = "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" }, - { file = "debugpy-1.8.15-cp312-cp312-win32.whl", hash = "sha256:b08e9b0bc260cf324c890626961dad4ffd973f7568fbf57feb3c3a65ab6b6327" }, - { file = "debugpy-1.8.15-cp312-cp312-win_amd64.whl", hash = "sha256:e2a4fe357c92334272eb2845fcfcdbec3ef9f22c16cf613c388ac0887aed15fa" }, - { file = "debugpy-1.8.15-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:f5e01291ad7d6649aed5773256c5bba7a1a556196300232de1474c3c372592bf" }, - { file = "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" }, - { file = "debugpy-1.8.15-cp313-cp313-win32.whl", hash = "sha256:fcf0748d4f6e25f89dc5e013d1129ca6f26ad4da405e0723a4f704583896a709" }, - { file = "debugpy-1.8.15-cp313-cp313-win_amd64.whl", hash = "sha256:73c943776cb83e36baf95e8f7f8da765896fd94b05991e7bc162456d25500683" }, - { file = "debugpy-1.8.15-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:054cd4935bd2e4964dfe1aeee4d6bca89d0c833366776fc35387f8a2f517dd00" }, - { file = "debugpy-1.8.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21c4288e662997df3176c4b9d93ee1393913fbaf320732be332d538000c53208" }, - { file = "debugpy-1.8.15-cp38-cp38-win32.whl", hash = "sha256:aaa8ce6a37d764f93fe583d7c6ca58eb7550b36941387483db113125f122bb0d" }, - { file = "debugpy-1.8.15-cp38-cp38-win_amd64.whl", hash = "sha256:71cdf7f676af78e70f005c7fad2ef9da0edc2a24befbf3ab146a51f0d58048c2" }, - { file = "debugpy-1.8.15-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:085b6d0adb3eb457c2823ac497a0690b10a99eff8b01c01a041e84579f114b56" }, - { file = "debugpy-1.8.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd546a405381d17527814852642df0a74b7da8acc20ae5f3cfad0b7c86419511" }, - { file = "debugpy-1.8.15-cp39-cp39-win32.whl", hash = "sha256:ae0d445fe11ff4351428e6c2389e904e1cdcb4a47785da5a5ec4af6c5b95fce5" }, - { file = "debugpy-1.8.15-cp39-cp39-win_amd64.whl", hash = "sha256:de7db80189ca97ab4b10a87e4039cfe4dd7ddfccc8f33b5ae40fcd33792fc67a" }, - { file = "debugpy-1.8.15-py2.py3-none-any.whl", hash = "sha256:bce2e6c5ff4f2e00b98d45e7e01a49c7b489ff6df5f12d881c67d2f1ac635f3d" }, - { file = "debugpy-1.8.15.tar.gz", hash = "sha256:58d7a20b7773ab5ee6bdfb2e6cf622fdf1e40c9d5aef2857d85391526719ac00" }, -] - -[[package]] -name = "decorator" -version = "5.2.1" -description = "Decorators for Humans" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a" }, - { file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360" }, -] - -[[package]] -name = "defusedxml" -version = "0.7.1" -description = "XML bomb protection for Python stdlib modules" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["dev"] -files = [ - {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, - {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, -] - [[package]] name = "distlib" version = "0.4.0" @@ -1076,14 +862,14 @@ files = [ [[package]] name = "fsspec" -version = "2025.7.0" +version = "2026.2.0" description = "File-system specification" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["main"] files = [ - { file = "fsspec-2025.7.0-py3-none-any.whl", hash = "sha256:8b012e39f63c7d5f10474de957f3ab793b47b45ae7d39f2fb735f8bbe25c0e21" }, - { file = "fsspec-2025.7.0.tar.gz", hash = "sha256:786120687ffa54b8283d942929540d8bc5ccfa820deb555a2b5d0ed2b737bf58" }, + {file = "fsspec-2026.2.0-py3-none-any.whl", hash = "sha256:98de475b5cb3bd66bedd5c4679e87b4fdfe1a3bf4d707b151b3c07e58c9a2437"}, + {file = "fsspec-2026.2.0.tar.gz", hash = "sha256:6544e34b16869f5aacd5b90bdf1a71acb37792ea3ddf6125ee69a22a53fb8bff"}, ] [package.extras] @@ -1094,9 +880,9 @@ dask = ["dask", "distributed"] dev = ["pre-commit", "ruff (>=0.5)"] doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"] dropbox = ["dropbox", "dropboxdrivefs", "requests"] -full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] +full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs (>2024.2.0)", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs (>2024.2.0)", "smbprotocol", "tqdm"] fuse = ["fusepy"] -gcs = ["gcsfs"] +gcs = ["gcsfs (>2024.2.0)"] git = ["pygit2"] github = ["requests"] gs = ["gcsfs"] @@ -1105,13 +891,13 @@ hdfs = ["pyarrow (>=1)"] http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] libarchive = ["libarchive-c"] oci = ["ocifs"] -s3 = ["s3fs"] +s3 = ["s3fs (>2024.2.0)"] sftp = ["paramiko"] smb = ["smbprotocol"] ssh = ["paramiko"] test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"] test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] -test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard ; python_version < \"3.14\""] +test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "backports-zstd ; python_version < \"3.14\"", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas (<3.0.0)", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard ; python_version < \"3.14\""] tqdm = ["tqdm"] [[package]] @@ -1339,7 +1125,7 @@ name = "identify" version = "2.6.1" description = "File identification library for Python" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ {file = "identify-2.6.1-py2.py3-none-any.whl", hash = "sha256:53863bcac7caf8d2ed85bd20312ea5dcfc22226800f6d6881f232d861db5a8f0"}, @@ -1351,14 +1137,14 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "3.10" +version = "3.11" description = "Internationalized Domain Names in Applications (IDNA)" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, + {file = "idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea"}, + {file = "idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902"}, ] [package.extras] @@ -1366,14 +1152,14 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 [[package]] name = "importlib-metadata" -version = "8.7.0" +version = "8.7.1" description = "Read metadata from Python packages" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd" }, - { file = "importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000" }, + {file = "importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151"}, + {file = "importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb"}, ] [package.dependencies] @@ -1383,21 +1169,21 @@ zipp = ">=3.20" check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -enabler = ["pytest-enabler (>=2.2)"] +enabler = ["pytest-enabler (>=3.4)"] perf = ["ipython"] -test = ["flufl.flake8", "importlib_resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] -type = ["pytest-mypy"] +test = ["flufl.flake8", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +type = ["mypy (<1.19) ; platform_python_implementation == \"PyPy\"", "pytest-mypy (>=1.0.1)"] [[package]] name = "iniconfig" -version = "2.1.0" +version = "2.3.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - { file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760" }, - { file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7" }, + {file = "iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12"}, + {file = "iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730"}, ] [[package]] @@ -1897,90 +1683,103 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" -version = "3.0.2" +version = "3.0.3" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, - {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, -] - -[[package]] -name = "matplotlib-inline" -version = "0.1.7" -description = "Inline Matplotlib backend for Jupyter" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, - {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, + {file = "markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559"}, + {file = "markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419"}, + {file = "markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695"}, + {file = "markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591"}, + {file = "markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c"}, + {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f"}, + {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6"}, + {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1"}, + {file = "markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa"}, + {file = "markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8"}, + {file = "markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1"}, + {file = "markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad"}, + {file = "markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a"}, + {file = "markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50"}, + {file = "markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf"}, + {file = "markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f"}, + {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a"}, + {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115"}, + {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a"}, + {file = "markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19"}, + {file = "markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01"}, + {file = "markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c"}, + {file = "markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e"}, + {file = "markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce"}, + {file = "markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d"}, + {file = "markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d"}, + {file = "markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a"}, + {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b"}, + {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f"}, + {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b"}, + {file = "markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d"}, + {file = "markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c"}, + {file = "markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f"}, + {file = "markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795"}, + {file = "markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219"}, + {file = "markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6"}, + {file = "markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676"}, + {file = "markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9"}, + {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1"}, + {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc"}, + {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12"}, + {file = "markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed"}, + {file = "markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5"}, + {file = "markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485"}, + {file = "markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73"}, + {file = "markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37"}, + {file = "markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19"}, + {file = "markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025"}, + {file = "markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6"}, + {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f"}, + {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb"}, + {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009"}, + {file = "markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354"}, + {file = "markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218"}, + {file = "markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287"}, + {file = "markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe"}, + {file = "markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026"}, + {file = "markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737"}, + {file = "markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97"}, + {file = "markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d"}, + {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda"}, + {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf"}, + {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe"}, + {file = "markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9"}, + {file = "markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581"}, + {file = "markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4"}, + {file = "markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab"}, + {file = "markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175"}, + {file = "markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634"}, + {file = "markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50"}, + {file = "markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e"}, + {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5"}, + {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523"}, + {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc"}, + {file = "markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d"}, + {file = "markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9"}, + {file = "markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa"}, + {file = "markupsafe-3.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15d939a21d546304880945ca1ecb8a039db6b4dc49b2c5a400387cdae6a62e26"}, + {file = "markupsafe-3.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f71a396b3bf33ecaa1626c255855702aca4d3d9fea5e051b41ac59a9c1c41edc"}, + {file = "markupsafe-3.0.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f4b68347f8c5eab4a13419215bdfd7f8c9b19f2b25520968adfad23eb0ce60c"}, + {file = "markupsafe-3.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8fc20152abba6b83724d7ff268c249fa196d8259ff481f3b1476383f8f24e42"}, + {file = "markupsafe-3.0.3-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:949b8d66bc381ee8b007cd945914c721d9aba8e27f71959d750a46f7c282b20b"}, + {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:3537e01efc9d4dccdf77221fb1cb3b8e1a38d5428920e0657ce299b20324d758"}, + {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:591ae9f2a647529ca990bc681daebdd52c8791ff06c2bfa05b65163e28102ef2"}, + {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a320721ab5a1aba0a233739394eb907f8c8da5c98c9181d1161e77a0c8e36f2d"}, + {file = "markupsafe-3.0.3-cp39-cp39-win32.whl", hash = "sha256:df2449253ef108a379b8b5d6b43f4b1a8e81a061d6537becd5582fba5f9196d7"}, + {file = "markupsafe-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:7c3fb7d25180895632e5d3148dbdc29ea38ccb7fd210aa27acbd1201a1902c6e"}, + {file = "markupsafe-3.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:38664109c14ffc9e7437e86b4dceb442b0096dfe3541d7864d9cbe1da4cf36c8"}, + {file = "markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698"}, ] -[package.dependencies] -traitlets = "*" - [[package]] name = "mergedeep" version = "1.3.4" @@ -1988,20 +1787,8 @@ description = "A deep merge function for 🐍." optional = false python-versions = ">=3.8" files = [ - { file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307" }, - { file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8" }, -] - -[[package]] -name = "mistune" -version = "3.1.3" -description = "A sane and fast Markdown parser with useful plugins and renderers" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9" }, - { file = "mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0" }, + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, ] [[package]] @@ -2025,7 +1812,7 @@ min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4) ; platform [[package]] name = "mkdocs-autorefs" -version = "1.4.2" +version = "1.4.4" description = "Automatically link across pages in MkDocs." optional = false python-versions = ">=3.9" @@ -2104,9 +1891,9 @@ mypy-extensions = ">=1.0.0" typing-extensions = ">=4.6.0" [package.extras] -git = ["mkdocs-git-committers-plugin-2 (>=1.1,<3)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] -imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] -recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] +git = ["mkdocs-git-committers-plugin-2 (>=1.1)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4)"] +imaging = ["cairosvg (>=2.6)", "pillow (>=10.2)"] +recommended = ["mkdocs-minify-plugin (>=0.7)", "mkdocs-redirects (>=1.2)", "mkdocs-rss-plugin (>=1.6)"] [[package]] name = "mkdocs-material-extensions" @@ -2122,10 +1909,10 @@ files = [ [[package]] name = "mkdocstrings" -version = "0.29.1" +version = "1.0.3" description = "Automatic documentation from sources, for MkDocs." optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ {file = "myst_parser-4.0.0-py3-none-any.whl", hash = "sha256:b9317997552424448c6096c2558872fdb6f81d3ecb3a40ce84a7518798f3f28d"}, @@ -2372,62 +2159,58 @@ files = [ [[package]] name = "netcdf4" -version = "1.7.2" +version = "1.7.4" description = "Provides an object-oriented python interface to the netCDF version 4 library" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" groups = ["main"] files = [ - {file = "netCDF4-1.7.2-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:5e9b485e3bd9294d25ff7dc9addefce42b3d23c1ee7e3627605277d159819392"}, - {file = "netCDF4-1.7.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:118b476fd00d7e3ab9aa7771186d547da645ae3b49c0c7bdab866793ebf22f07"}, - {file = "netCDF4-1.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abe5b1837ff209185ecfe50bd71884c866b3ee69691051833e410e57f177e059"}, - {file = "netCDF4-1.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28021c7e886e5bccf9a8ce504c032d1d7f98d86f67495fb7cf2c9564eba04510"}, - {file = "netCDF4-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:7460b638e41c8ce4179d082a81cb6456f0ce083d4d959f4d9e87a95cd86f64cb"}, - {file = "netCDF4-1.7.2-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:09d61c2ddb6011afb51e77ea0f25cd0bdc28887fb426ffbbc661d920f20c9749"}, - {file = "netCDF4-1.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:fd2a16dbddeb8fa7cf48c37bfc1967290332f2862bb82f984eec2007bb120aeb"}, - {file = "netCDF4-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f54f5d39ffbcf1726a1e6fd90cb5fa74277ecea739a5fa0f424636d71beafe24"}, - {file = "netCDF4-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:902aa50d70f49d002d896212a171d344c38f7b8ca520837c56c922ac1535c4a3"}, - {file = "netCDF4-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3291f9ad0c98c49a4dd16aefad1a9abd3a1b884171db6c81bdcee94671cfabe3"}, - {file = "netCDF4-1.7.2-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e73e3baa0b74afc414e53ff5095748fdbec7fb346eda351e567c23f2f0d247f1"}, - {file = "netCDF4-1.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a51da09258b31776f474c1d47e484fc7214914cdc59edf4cee789ba632184591"}, - {file = "netCDF4-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb95b11804fe051897d1f2044b05d82a1847bc2549631cdd2f655dde7de77a9c"}, - {file = "netCDF4-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d8a848373723f41ef662590b4f5e1832227501c9fd4513e8ad8da58c269977"}, - {file = "netCDF4-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:568ea369e00b581302d77fc5fd0b8f78e520c7e08d0b5af5219ba51f3f1cd694"}, - {file = "netCDF4-1.7.2-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:205a5f1de3ddb993c7c97fb204a923a22408cc2e5facf08d75a8eb89b3e7e1a8"}, - {file = "netCDF4-1.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:96653fc75057df196010818367c63ba6d7e9af603df0a7fe43fcdad3fe0e9e56"}, - {file = "netCDF4-1.7.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30d20e56b9ba2c48884eb89c91b63e6c0612b4927881707e34402719153ef17f"}, - {file = "netCDF4-1.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d6bfd38ba0bde04d56f06c1554714a2ea9dab75811c89450dc3ec57a9d36b80"}, - {file = "netCDF4-1.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:5c5fbee6134ee1246c397e1508e5297d825aa19221fdf3fa8dc9727ad824d7a5"}, - {file = "netCDF4-1.7.2-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:6bf402c2c7c063474576e5cf89af877d0b0cd097d9316d5bc4fcb22b62f12567"}, - {file = "netCDF4-1.7.2-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:5bdf3b34e6fd4210e34fdc5d1a669a22c4863d96f8a20a3928366acae7b3cbbb"}, - {file = "netCDF4-1.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:657774404b9f78a5e4d26506ac9bfe106e4a37238282a70803cc7ce679c5a6cc"}, - {file = "netCDF4-1.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e896d92f01fbf365e33e2513d5a8c4cfe16ff406aae9b6034e5ba1538c8c7a8"}, - {file = "netCDF4-1.7.2-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:eb87c08d1700fe67c301898cf5ba3a3e1f8f2fbb417fcd0e2ac784846b60b058"}, - {file = "netCDF4-1.7.2-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:59b403032774c723ee749d7f2135be311bad7d00d1db284bebfab58b9d5cdb92"}, - {file = "netCDF4-1.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:572f71459ef4b30e8554dcc4e1e6f55de515acc82a50968b48fe622244a64548"}, - {file = "netCDF4-1.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f77e72281acc5f331f82271e5f7f014d46f5ca9bcaa5aafe3e46d66cee21320"}, - {file = "netCDF4-1.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:d0fa7a9674fae8ae4877e813173c3ff7a6beee166b8730bdc847f517b282ed31"}, - {file = "netcdf4-1.7.2.tar.gz", hash = "sha256:a4c6375540b19989896136943abb6d44850ff6f1fa7d3f063253b1ad3f8b7fce"}, + {file = "netcdf4-1.7.4-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:b1c1a7ea3678db76bf33d14f7e202385d634db38c5e70d8cf4895971023eebb9"}, + {file = "netcdf4-1.7.4-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:d3f9497873454207f9480847d02b1b19a4bc81ad6e9166e1c17d4e2f8f3555d1"}, + {file = "netcdf4-1.7.4-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c8e18294af803e80f8c0339f791901942e268c334c099bbd5f7ea8325a49801a"}, + {file = "netcdf4-1.7.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0b06c0b93fd0ecc1ec67a582f3ba98b7db9da1fa843c8f83fd75990e3701771e"}, + {file = "netcdf4-1.7.4-cp310-cp310-win_amd64.whl", hash = "sha256:889ba77f084504aebaba9c6f9a88ac213431fef0e897f887cd35aef351ff7740"}, + {file = "netcdf4-1.7.4-cp311-abi3-macosx_13_0_x86_64.whl", hash = "sha256:dec70e809cc65b04ebe95113ee9c85ba46a51c3a37c058d2b2b0cadc4d3052d8"}, + {file = "netcdf4-1.7.4-cp311-abi3-macosx_14_0_arm64.whl", hash = "sha256:75cf59100f0775bc4d6b9d4aca7cbabd12e2b8cf3b9a4fb16d810b92743a315a"}, + {file = "netcdf4-1.7.4-cp311-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ddfc7e9d261125c74708119440c85ea288b5fee41db676d2ba1ce9be11f96932"}, + {file = "netcdf4-1.7.4-cp311-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a72c9f58767779ec14cb7451c3b56bdd8fdc027a792fac2062b14e090c5617f3"}, + {file = "netcdf4-1.7.4-cp311-abi3-win_amd64.whl", hash = "sha256:9476e1f23161ae5159cd1548c50c8a37922e77d76583e247133f256ef7b825fc"}, + {file = "netcdf4-1.7.4-cp311-abi3-win_arm64.whl", hash = "sha256:876ad9d58f09c98741c066c726164c45a098a58fb90e5fac9e74de4bb8a793fd"}, + {file = "netcdf4-1.7.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56688c03444fffe0d0c7512cb45245e650389cd841c955b30e4552fa681c4cd9"}, + {file = "netcdf4-1.7.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7ecf471ba8a6ddb2200121949bedfa0095db228822f38227d5da680694a38358"}, + {file = "netcdf4-1.7.4-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a5841de0735e8e4875b367c668e81d334287858d64dd9f3e3e2261e808c84922"}, + {file = "netcdf4-1.7.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:86fac03a8c5b250d57866e7d98918a64742e4b0de1681c5c86bac5726bab8aee"}, + {file = "netcdf4-1.7.4-cp314-cp314t-macosx_13_0_x86_64.whl", hash = "sha256:ad083d260301b5add74b1669c75ab0df03bdf986decfcc092cb45eec2615b5f1"}, + {file = "netcdf4-1.7.4-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:7f22014092cc9da3f056b0368e2e38c42afd5725c87ad4843eb2f467e16dd4f6"}, + {file = "netcdf4-1.7.4-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:224a15434c165a5e0225e5831f591edf62533044b1ce62fdfee815195bbd077d"}, + {file = "netcdf4-1.7.4-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:31a2318305de6831a18df25ad0df9f03b6d68666af0356d4f6057d66c02ffeb6"}, + {file = "netcdf4-1.7.4-cp314-cp314t-win_amd64.whl", hash = "sha256:6c4a0aa9446c3a616ef3be015b629dc6173643f8b09546de26a4e40e272cd1ed"}, + {file = "netcdf4-1.7.4-cp314-cp314t-win_arm64.whl", hash = "sha256:034220887d48da032cb2db5958f69759dbb04eb33e279ec6390571d4aea734fe"}, + {file = "netcdf4-1.7.4.tar.gz", hash = "sha256:cdbfdc92d6f4d7192ca8506c9b3d4c1d9892969ff28d8e8e1fc97ca08bf12164"}, ] [package.dependencies] certifi = "*" cftime = "*" -numpy = "*" +numpy = [ + {version = ">=2.3.0", markers = "platform_system == \"Windows\" and platform_machine == \"ARM64\""}, + {version = ">=1.21.2", markers = "platform_system != \"Windows\" or platform_machine != \"ARM64\""}, +] [package.extras] -tests = ["Cython", "packaging", "pytest"] +parallel = ["mpi4py"] +tests = ["Cython", "packaging", "pytest", "typing-extensions (>=4.15.0)"] [[package]] name = "nodeenv" -version = "1.9.1" +version = "1.10.0" description = "Node.js virtual environment builder" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" groups = ["dev"] files = [ - {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, - {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, + {file = "nodeenv-1.10.0-py2.py3-none-any.whl", hash = "sha256:5bb13e3eed2923615535339b3c620e76779af4cb4c6a90deccc9e36b274d3827"}, + {file = "nodeenv-1.10.0.tar.gz", hash = "sha256:996c191ad80897d076bdfba80a41994c2b47c68e224c542b48feba42ba00f8bb"}, ] [[package]] @@ -2582,7 +2365,7 @@ files = [ [[package]] name = "packaging" -version = "25.0" +version = "26.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" @@ -2599,8 +2382,8 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - { file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591" }, - { file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945" }, + {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, + {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, ] [package.extras] @@ -2729,14 +2512,14 @@ complete = ["blosc", "numpy (>=1.20.0)", "pandas (>=1.3)", "pyzmq"] [[package]] name = "pathspec" -version = "0.12.1" +version = "1.0.4" description = "Utility library for gitignore style pattern matching of file paths." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, - {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, + {file = "pathspec-1.0.4-py3-none-any.whl", hash = "sha256:fb6ae2fd4e7c921a165808a552060e722767cfa526f99ca5156ed2ce45a5c723"}, + {file = "pathspec-1.0.4.tar.gz", hash = "sha256:0210e2ae8a21a9137c0d470578cb0e595af87edaa6ebf12ff176f14a02e0e645"}, ] [[package]] @@ -2755,21 +2538,16 @@ ptyprocess = ">=0.5" [[package]] name = "platformdirs" -version = "4.3.8" +version = "4.9.2" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.4)", "pytest-cov (>=6)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.14.1)"] - [[package]] name = "pluggy" version = "1.6.0" @@ -2791,7 +2569,7 @@ name = "pre-commit" version = "3.8.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ {file = "pre_commit-3.8.0-py2.py3-none-any.whl", hash = "sha256:9a90a53bf82fdd8778d58085faf8d83df56e40dfe18f45b19446e26bf1b3a63f"}, @@ -3042,14 +2820,14 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pymdown-extensions" -version = "10.16" +version = "10.21" description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pymdown_extensions-10.16-py3-none-any.whl", hash = "sha256:f5dd064a4db588cb2d95229fc4ee63a1b16cc8b4d0e6145c0899ed8723da1df2" }, - { file = "pymdown_extensions-10.16.tar.gz", hash = "sha256:71dac4fca63fabeffd3eb9038b756161a33ec6e8d230853d3cecf562155ab3de" }, + {file = "pymdown_extensions-10.21-py3-none-any.whl", hash = "sha256:91b879f9f864d49794c2d9534372b10150e6141096c3908a455e45ca72ad9d3f"}, + {file = "pymdown_extensions-10.21.tar.gz", hash = "sha256:39f4a020f40773f6b2ff31d2cd2546c2c04d0a6498c31d9c688d2be07e1767d5"}, ] [package.dependencies] @@ -3102,10 +2880,10 @@ extra = ["pygments (>=2.19.1)"] [[package]] name = "pytest" -version = "8.4.1" +version = "9.0.2" description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, @@ -3140,6 +2918,26 @@ pytest = ">=4.6" [package.extras] testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] +[[package]] +name = "pytest-cov" +version = "7.0.0" +description = "Pytest plugin for measuring coverage." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861"}, + {file = "pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1"}, +] + +[package.dependencies] +coverage = {version = ">=7.10.6", extras = ["toml"]} +pluggy = ">=1.2" +pytest = ">=7" + +[package.extras] +testing = ["process-tests", "pytest-xdist", "virtualenv"] + [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -3166,9 +2964,9 @@ files = [ ] [[package]] -name = "pytz" -version = "2025.2" -description = "World timezone definitions, modern and historical" +name = "python-magic" +version = "0.4.27" +description = "File type identification using libmagic" optional = false python-versions = "*" files = [ @@ -3220,64 +3018,84 @@ files = [ [[package]] name = "pyyaml" -version = "6.0.2" +version = "6.0.3" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, + {file = "PyYAML-6.0.3-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:c2514fceb77bc5e7a2f7adfaa1feb2fb311607c9cb518dbc378688ec73d8292f"}, + {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c57bb8c96f6d1808c030b1687b9b5fb476abaa47f0db9c0101f5e9f394e97f4"}, + {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:efd7b85f94a6f21e4932043973a7ba2613b059c4a000551892ac9f1d11f5baf3"}, + {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22ba7cfcad58ef3ecddc7ed1db3409af68d023b7f940da23c6c2a1890976eda6"}, + {file = "PyYAML-6.0.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:6344df0d5755a2c9a276d4473ae6b90647e216ab4757f8426893b5dd2ac3f369"}, + {file = "PyYAML-6.0.3-cp38-cp38-win32.whl", hash = "sha256:3ff07ec89bae51176c0549bc4c63aa6202991da2d9a6129d7aef7f1407d3f295"}, + {file = "PyYAML-6.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:5cf4e27da7e3fbed4d6c3d8e797387aaad68102272f8f9752883bc32d61cb87b"}, + {file = "pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b"}, + {file = "pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956"}, + {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8"}, + {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198"}, + {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b"}, + {file = "pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0"}, + {file = "pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69"}, + {file = "pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e"}, + {file = "pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c"}, + {file = "pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e"}, + {file = "pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824"}, + {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c"}, + {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00"}, + {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d"}, + {file = "pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a"}, + {file = "pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4"}, + {file = "pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b"}, + {file = "pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf"}, + {file = "pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196"}, + {file = "pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0"}, + {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28"}, + {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c"}, + {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc"}, + {file = "pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e"}, + {file = "pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea"}, + {file = "pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5"}, + {file = "pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b"}, + {file = "pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd"}, + {file = "pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8"}, + {file = "pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1"}, + {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c"}, + {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5"}, + {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6"}, + {file = "pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6"}, + {file = "pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be"}, + {file = "pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26"}, + {file = "pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c"}, + {file = "pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb"}, + {file = "pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac"}, + {file = "pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310"}, + {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7"}, + {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788"}, + {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5"}, + {file = "pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764"}, + {file = "pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35"}, + {file = "pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac"}, + {file = "pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3"}, + {file = "pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3"}, + {file = "pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba"}, + {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c"}, + {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702"}, + {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c"}, + {file = "pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065"}, + {file = "pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65"}, + {file = "pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9"}, + {file = "pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b"}, + {file = "pyyaml-6.0.3-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:b865addae83924361678b652338317d1bd7e79b1f4596f96b96c77a5a34b34da"}, + {file = "pyyaml-6.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c3355370a2c156cffb25e876646f149d5d68f5e0a3ce86a5084dd0b64a994917"}, + {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3c5677e12444c15717b902a5798264fa7909e41153cdf9ef7ad571b704a63dd9"}, + {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5ed875a24292240029e4483f9d4a4b8a1ae08843b9c54f43fcc11e404532a8a5"}, + {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0150219816b6a1fa26fb4699fb7daa9caf09eb1999f3b70fb6e786805e80375a"}, + {file = "pyyaml-6.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926"}, + {file = "pyyaml-6.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:27c0abcb4a5dac13684a37f76e701e054692a9b2d3064b70f5e4eb54810553d7"}, + {file = "pyyaml-6.0.3-cp39-cp39-win32.whl", hash = "sha256:1ebe39cb5fc479422b83de611d14e2c0d3bb2a18bbcb01f229ab3cfbd8fee7a0"}, + {file = "pyyaml-6.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:2e71d11abed7344e42a8849600193d15b6def118602c4c176f748e4583246007"}, + {file = "pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f"}, ] [[package]] @@ -3288,8 +3106,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04" }, - { file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff" }, + {file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04"}, + {file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff"}, ] [package.dependencies] @@ -3454,14 +3272,14 @@ socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] -name = "rfc3339-validator" -version = "0.1.4" -description = "A pure python RFC3339 validator" +name = "reuse" +version = "6.2.0" +description = "reuse is a tool for compliance with the REUSE recommendations." optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, - {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, + {file = "reuse-6.2.0-cp310-cp310-manylinux_2_41_x86_64.whl", hash = "sha256:12b68549bb9d5f4957f06d726a83a9780628810008fb732bb0d0f21607f8c6d6"}, + {file = "reuse-6.2.0.tar.gz", hash = "sha256:4feae057a2334c9a513e6933cdb9be819d8b822f3b5b435a36138bd218897d23"}, ] [package.dependencies] @@ -3619,14 +3437,69 @@ files = [ ] [[package]] -name = "send2trash" -version = "1.8.3" -description = "Send file to trash natively under Mac OS X, Windows and Linux" +name = "shapely" +version = "2.1.2" +description = "Manipulation and analysis of geometric objects" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, - {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, + {file = "shapely-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7ae48c236c0324b4e139bea88a306a04ca630f49be66741b340729d380d8f52f"}, + {file = "shapely-2.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eba6710407f1daa8e7602c347dfc94adc02205ec27ed956346190d66579eb9ea"}, + {file = "shapely-2.1.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ef4a456cc8b7b3d50ccec29642aa4aeda959e9da2fe9540a92754770d5f0cf1f"}, + {file = "shapely-2.1.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e38a190442aacc67ff9f75ce60aec04893041f16f97d242209106d502486a142"}, + {file = "shapely-2.1.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:40d784101f5d06a1fd30b55fc11ea58a61be23f930d934d86f19a180909908a4"}, + {file = "shapely-2.1.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f6f6cd5819c50d9bcf921882784586aab34a4bd53e7553e175dece6db513a6f0"}, + {file = "shapely-2.1.2-cp310-cp310-win32.whl", hash = "sha256:fe9627c39c59e553c90f5bc3128252cb85dc3b3be8189710666d2f8bc3a5503e"}, + {file = "shapely-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:1d0bfb4b8f661b3b4ec3565fa36c340bfb1cda82087199711f86a88647d26b2f"}, + {file = "shapely-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:91121757b0a36c9aac3427a651a7e6567110a4a67c97edf04f8d55d4765f6618"}, + {file = "shapely-2.1.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:16a9c722ba774cf50b5d4541242b4cce05aafd44a015290c82ba8a16931ff63d"}, + {file = "shapely-2.1.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cc4f7397459b12c0b196c9efe1f9d7e92463cbba142632b4cc6d8bbbbd3e2b09"}, + {file = "shapely-2.1.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:136ab87b17e733e22f0961504d05e77e7be8c9b5a8184f685b4a91a84efe3c26"}, + {file = "shapely-2.1.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:16c5d0fc45d3aa0a69074979f4f1928ca2734fb2e0dde8af9611e134e46774e7"}, + {file = "shapely-2.1.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6ddc759f72b5b2b0f54a7e7cde44acef680a55019eb52ac63a7af2cf17cb9cd2"}, + {file = "shapely-2.1.2-cp311-cp311-win32.whl", hash = "sha256:2fa78b49485391224755a856ed3b3bd91c8455f6121fee0db0e71cefb07d0ef6"}, + {file = "shapely-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:c64d5c97b2f47e3cd9b712eaced3b061f2b71234b3fc263e0fcf7d889c6559dc"}, + {file = "shapely-2.1.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fe2533caae6a91a543dec62e8360fe86ffcdc42a7c55f9dfd0128a977a896b94"}, + {file = "shapely-2.1.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ba4d1333cc0bc94381d6d4308d2e4e008e0bd128bdcff5573199742ee3634359"}, + {file = "shapely-2.1.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0bd308103340030feef6c111d3eb98d50dc13feea33affc8a6f9fa549e9458a3"}, + {file = "shapely-2.1.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1e7d4d7ad262a48bb44277ca12c7c78cb1b0f56b32c10734ec9a1d30c0b0c54b"}, + {file = "shapely-2.1.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e9eddfe513096a71896441a7c37db72da0687b34752c4e193577a145c71736fc"}, + {file = "shapely-2.1.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:980c777c612514c0cf99bc8a9de6d286f5e186dcaf9091252fcd444e5638193d"}, + {file = "shapely-2.1.2-cp312-cp312-win32.whl", hash = "sha256:9111274b88e4d7b54a95218e243282709b330ef52b7b86bc6aaf4f805306f454"}, + {file = "shapely-2.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:743044b4cfb34f9a67205cee9279feaf60ba7d02e69febc2afc609047cb49179"}, + {file = "shapely-2.1.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b510dda1a3672d6879beb319bc7c5fd302c6c354584690973c838f46ec3e0fa8"}, + {file = "shapely-2.1.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8cff473e81017594d20ec55d86b54bc635544897e13a7cfc12e36909c5309a2a"}, + {file = "shapely-2.1.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fe7b77dc63d707c09726b7908f575fc04ff1d1ad0f3fb92aec212396bc6cfe5e"}, + {file = "shapely-2.1.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7ed1a5bbfb386ee8332713bf7508bc24e32d24b74fc9a7b9f8529a55db9f4ee6"}, + {file = "shapely-2.1.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a84e0582858d841d54355246ddfcbd1fce3179f185da7470f41ce39d001ee1af"}, + {file = "shapely-2.1.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dc3487447a43d42adcdf52d7ac73804f2312cbfa5d433a7d2c506dcab0033dfd"}, + {file = "shapely-2.1.2-cp313-cp313-win32.whl", hash = "sha256:9c3a3c648aedc9f99c09263b39f2d8252f199cb3ac154fadc173283d7d111350"}, + {file = "shapely-2.1.2-cp313-cp313-win_amd64.whl", hash = "sha256:ca2591bff6645c216695bdf1614fca9c82ea1144d4a7591a466fef64f28f0715"}, + {file = "shapely-2.1.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2d93d23bdd2ed9dc157b46bc2f19b7da143ca8714464249bef6771c679d5ff40"}, + {file = "shapely-2.1.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:01d0d304b25634d60bd7cf291828119ab55a3bab87dc4af1e44b07fb225f188b"}, + {file = "shapely-2.1.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8d8382dd120d64b03698b7298b89611a6ea6f55ada9d39942838b79c9bc89801"}, + {file = "shapely-2.1.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:19efa3611eef966e776183e338b2d7ea43569ae99ab34f8d17c2c054d3205cc0"}, + {file = "shapely-2.1.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:346ec0c1a0fcd32f57f00e4134d1200e14bf3f5ae12af87ba83ca275c502498c"}, + {file = "shapely-2.1.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6305993a35989391bd3476ee538a5c9a845861462327efe00dd11a5c8c709a99"}, + {file = "shapely-2.1.2-cp313-cp313t-win32.whl", hash = "sha256:c8876673449f3401f278c86eb33224c5764582f72b653a415d0e6672fde887bf"}, + {file = "shapely-2.1.2-cp313-cp313t-win_amd64.whl", hash = "sha256:4a44bc62a10d84c11a7a3d7c1c4fe857f7477c3506e24c9062da0db0ae0c449c"}, + {file = "shapely-2.1.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:9a522f460d28e2bf4e12396240a5fc1518788b2fcd73535166d748399ef0c223"}, + {file = "shapely-2.1.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1ff629e00818033b8d71139565527ced7d776c269a49bd78c9df84e8f852190c"}, + {file = "shapely-2.1.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f67b34271dedc3c653eba4e3d7111aa421d5be9b4c4c7d38d30907f796cb30df"}, + {file = "shapely-2.1.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:21952dc00df38a2c28375659b07a3979d22641aeb104751e769c3ee825aadecf"}, + {file = "shapely-2.1.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1f2f33f486777456586948e333a56ae21f35ae273be99255a191f5c1fa302eb4"}, + {file = "shapely-2.1.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:cf831a13e0d5a7eb519e96f58ec26e049b1fad411fc6fc23b162a7ce04d9cffc"}, + {file = "shapely-2.1.2-cp314-cp314-win32.whl", hash = "sha256:61edcd8d0d17dd99075d320a1dd39c0cb9616f7572f10ef91b4b5b00c4aeb566"}, + {file = "shapely-2.1.2-cp314-cp314-win_amd64.whl", hash = "sha256:a444e7afccdb0999e203b976adb37ea633725333e5b119ad40b1ca291ecf311c"}, + {file = "shapely-2.1.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:5ebe3f84c6112ad3d4632b1fd2290665aa75d4cef5f6c5d77c4c95b324527c6a"}, + {file = "shapely-2.1.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5860eb9f00a1d49ebb14e881f5caf6c2cf472c7fd38bd7f253bbd34f934eb076"}, + {file = "shapely-2.1.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b705c99c76695702656327b819c9660768ec33f5ce01fa32b2af62b56ba400a1"}, + {file = "shapely-2.1.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a1fd0ea855b2cf7c9cddaf25543e914dd75af9de08785f20ca3085f2c9ca60b0"}, + {file = "shapely-2.1.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:df90e2db118c3671a0754f38e36802db75fe0920d211a27481daf50a711fdf26"}, + {file = "shapely-2.1.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:361b6d45030b4ac64ddd0a26046906c8202eb60d0f9f53085f5179f1d23021a0"}, + {file = "shapely-2.1.2-cp314-cp314t-win32.whl", hash = "sha256:b54df60f1fbdecc8ebc2c5b11870461a6417b3d617f555e5033f1505d36e5735"}, + {file = "shapely-2.1.2-cp314-cp314t-win_amd64.whl", hash = "sha256:0036ac886e0923417932c2e6369b6c52e38e0ff5d9120b90eef5cd9a5fc5cae9"}, + {file = "shapely-2.1.2.tar.gz", hash = "sha256:2ed4ecb28320a433db18a5bf029986aa8afcfd740745e78847e330d5d94922a9"}, ] [package.extras] @@ -3667,14 +3540,14 @@ files = [ ] [[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" +name = "tomlkit" +version = "0.14.0" +description = "Style preserving TOML library" optional = false python-versions = ">=3.7" files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, + {file = "tomlkit-0.14.0-py3-none-any.whl", hash = "sha256:592064ed85b40fa213469f81ac584f67a4f2992509a7c3ea2d632208623a3680"}, + {file = "tomlkit-0.14.0.tar.gz", hash = "sha256:cf00efca415dbd57575befb1f6634c4f42d2d87dbba376128adb42c121b87064"}, ] [[package]] @@ -3887,7 +3760,7 @@ test = ["pytest", "ruff"] [[package]] name = "toolz" -version = "1.0.0" +version = "1.1.0" description = "List processing tools and functional utilities" optional = false python-versions = ">=3.8" @@ -3944,26 +3817,41 @@ files = [ [[package]] name = "types-pyyaml" -version = "6.0.12.20250516" +version = "6.0.12.20250915" description = "Typing stubs for PyYAML" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530" }, - { file = "types_pyyaml-6.0.12.20250516.tar.gz", hash = "sha256:9f21a70216fc0fa1b216a8176db5f9e0af6eb35d2f2932acb87689d03a5bf6ba" }, + {file = "types_pyyaml-6.0.12.20250915-py3-none-any.whl", hash = "sha256:e7d4d9e064e89a3b3cae120b4990cd370874d2bf12fa5f46c97018dd5d3c9ab6"}, + {file = "types_pyyaml-6.0.12.20250915.tar.gz", hash = "sha256:0f8b54a528c303f0e6f7165687dd33fafa81c807fcac23f632b63aa624ced1d3"}, ] +[[package]] +name = "types-shapely" +version = "2.1.0.20250917" +description = "Typing stubs for shapely" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "types_shapely-2.1.0.20250917-py3-none-any.whl", hash = "sha256:9334a79339504d39b040426be4938d422cec419168414dc74972aa746a8bf3a1"}, + {file = "types_shapely-2.1.0.20250917.tar.gz", hash = "sha256:5c56670742105aebe40c16414390d35fcaa55d6f774d328c1a18273ab0e2134a"}, +] + +[package.dependencies] +numpy = ">=1.20" + [[package]] name = "typing-extensions" -version = "4.14.1" +version = "4.15.0" description = "Backported and Experimental Type Hints for Python 3.9+" optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ - { file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76" }, - { file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36" }, + {file = "typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"}, + {file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"}, ] [[package]] @@ -3993,34 +3881,20 @@ dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake [[package]] name = "tzdata" -version = "2025.2" +version = "2025.3" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" groups = ["main"] +markers = "sys_platform == \"win32\" or sys_platform == \"emscripten\"" files = [ - { file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8" }, - { file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9" }, + {file = "tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1"}, + {file = "tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7"}, ] -[[package]] -name = "uri-template" -version = "1.3.0" -description = "RFC 6570 URI Template Processor" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, - {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, -] - -[package.extras] -dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"] - [[package]] name = "urllib3" -version = "2.5.0" +version = "2.6.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.9" @@ -4031,10 +3905,10 @@ files = [ ] [package.extras] -brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] +brotli = ["brotli (>=1.2.0) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=1.2.0.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] +zstd = ["backports-zstd (>=1.0.0) ; python_version < \"3.14\""] [[package]] name = "virtualenv" @@ -4050,7 +3924,7 @@ files = [ [package.dependencies] distlib = ">=0.3.7,<1" -filelock = ">=3.12.2,<4" +filelock = {version = ">=3.24.2,<4", markers = "python_version >= \"3.10\""} platformdirs = ">=3.9.1,<5" [package.extras] @@ -4167,81 +4041,16 @@ numpy = ">=1.24" docs = ["numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-automodapi", "sphinx-copybutton", "sphinx-design", "sphinx-issues"] jupyter = ["ipytree (>=0.2.2)", "ipywidgets (>=8.0.0)", "notebook"] -[[package]] -name = "wcwidth" -version = "0.2.13" -description = "Measures the displayed width of unicode strings in a terminal" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, - {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, -] - -[[package]] -name = "webcolors" -version = "24.11.1" -description = "A library for working with the color formats defined by HTML and CSS." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9" }, - { file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6" }, -] - -[[package]] -name = "webencodings" -version = "0.5.1" -description = "Character encoding aliases for legacy web content" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, - {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, -] - -[[package]] -name = "websocket-client" -version = "1.8.0" -description = "WebSocket client for Python with low level API options" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, - {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, -] - -[package.extras] -docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"] -optional = ["python-socks", "wsaccel"] -test = ["websockets"] - -[[package]] -name = "widgetsnbextension" -version = "4.0.14" -description = "Jupyter interactive widgets for Jupyter Notebook" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - { file = "widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575" }, - { file = "widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af" }, -] - [[package]] name = "xarray" -version = "2025.10.1" +version = "2026.2.0" description = "N-D labeled arrays and datasets in Python" optional = false python-versions = ">=3.11" groups = ["main"] files = [ - { file = "xarray-2025.10.1-py3-none-any.whl", hash = "sha256:a4e699433b87a7fac340951bc36648645eeef72bdd915ff055ac2fd99865a73d" }, - { file = "xarray-2025.10.1.tar.gz", hash = "sha256:3c2b5ad7389825bd624ada5ff26b01ac54b1aae72e2fe0d724d81d40a2bf5785" }, + {file = "xarray-2026.2.0-py3-none-any.whl", hash = "sha256:e927d7d716ea71dea78a13417970850a640447d8dd2ceeb65c5687f6373837c9"}, + {file = "xarray-2026.2.0.tar.gz", hash = "sha256:978b6acb018770554f8fd964af4eb02f9bcc165d4085dbb7326190d92aa74bcf"}, ] [package.dependencies] @@ -4253,33 +4062,34 @@ pandas = ">=2.2" accel = ["bottleneck", "flox (>=0.9)", "numba (>=0.62)", "numbagg (>=0.8)", "opt_einsum", "scipy (>=1.13)"] complete = ["xarray[accel,etc,io,parallel,viz]"] etc = ["sparse (>=0.15)"] -io = ["cftime", "fsspec", "h5netcdf", "netCDF4 (>=1.6.0)", "pooch", "pydap", "scipy (>=1.13)", "zarr (>=2.18)"] +io = ["cftime", "fsspec", "h5netcdf (>=1.4.0)", "netCDF4 (>=1.6.0)", "pooch", "pydap", "scipy (>=1.13)", "zarr (>=2.18)"] parallel = ["dask[complete]"] types = ["pandas-stubs", "scipy-stubs", "types-PyYAML", "types-Pygments", "types-colorama", "types-decorator", "types-defusedxml", "types-docutils", "types-networkx", "types-openpyxl", "types-pexpect", "types-psutil", "types-pycurl", "types-python-dateutil", "types-pytz", "types-requests", "types-setuptools"] -viz = ["cartopy (>=0.23)", "matplotlib", "nc-time-axis", "seaborn"] +viz = ["cartopy (>=0.23)", "matplotlib (>=3.8)", "nc-time-axis", "seaborn"] [[package]] name = "zarr" -version = "3.1.3" +version = "3.1.5" description = "An implementation of chunked, compressed, N-dimensional arrays for Python" optional = false python-versions = ">=3.11" groups = ["main"] files = [ - { file = "zarr-3.1.3-py3-none-any.whl", hash = "sha256:45f67f87f65f14fa453f99dd8110a5936b7ac69f3a21981d33e90407c80c302a" }, - { file = "zarr-3.1.3.tar.gz", hash = "sha256:01342f3e26a02ed5670db608a5576fbdb8d76acb5c280bd2d0082454b1ba6f79" }, + {file = "zarr-3.1.5-py3-none-any.whl", hash = "sha256:29cd905afb6235b94c09decda4258c888fcb79bb6c862ef7c0b8fe009b5c8563"}, + {file = "zarr-3.1.5.tar.gz", hash = "sha256:fbe0c79675a40c996de7ca08e80a1c0a20537bd4a9f43418b6d101395c0bba2b"}, ] [package.dependencies] donfig = ">=0.8" -numcodecs = { version = ">=0.14", extras = ["crc32c"] } +google-crc32c = ">=1.5" +numcodecs = ">=0.14" numpy = ">=1.26" packaging = ">=22.0" typing-extensions = ">=4.9" [package.extras] cli = ["typer"] -docs = ["astroid (<4)", "numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "pytest", "rich", "s3fs (>=2023.10.0)", "sphinx (==8.1.3)", "sphinx-autoapi (==3.4.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx-copybutton", "sphinx-design", "sphinx-issues", "sphinx-reredirects", "towncrier"] +docs = ["astroid (<4)", "griffe-inherited-docstrings", "markdown-exec[ansi]", "mike (>=2.1.3)", "mkdocs (>=1.6.1)", "mkdocs-material[imaging] (>=9.6.14)", "mkdocs-redirects (>=1.2.0)", "mkdocstrings (>=0.29.1)", "mkdocstrings-python (>=1.16.10)", "numcodecs[msgpack]", "pytest", "rich", "ruff", "s3fs (>=2023.10.0)", "towncrier"] gpu = ["cupy-cuda12x"] optional = ["rich", "universal-pathlib"] remote = ["fsspec (>=2023.10.0)", "obstore (>=0.5.1)"] @@ -4294,8 +4104,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e" }, - { file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166" }, + {file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e"}, + {file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166"}, ] [package.extras] diff --git a/pyproject.toml b/pyproject.toml index 6277846..1a6a537 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,27 +16,30 @@ repository = "https://github.com/alliander-opensource/meteoforge" documentation = "https://github.com/alliander-opensource/meteoforge" [tool.poetry.dependencies] -dask = "^2025.9.1" -netcdf4 = "^1.7.2" -numpy = "^2.3.3" -pydantic = "^2.12.0" pyproj = "^3.7.2" -xarray = "^2025.10.1" -zarr = "^3.1.3" -colorlog = "^6.9.0" # For colored logging output +colorlog = "^6.10.1" +pydantic = "^2.12.5" +xarray = "^2026.2.0" +zarr = "^3.1.5" +numpy = "^2.4.2" +netcdf4 = "^1.7.4" +dask = "^2026.1.2" +shapely = "^2.1.2" [tool.poetry.group.dev.dependencies] -coverage = "^7.9.2" -jupyter = "^1.1.1" -mkdocs = "^1.6.1" -mkdocs-material = "^9.6.15" -mkdocstrings = { extras = ["python"], version = "^0.29.1" } -mypy = "^1.17.0" -pre-commit = "^4.2.0" -pytest = "^8.4.1" -ruff = "^0.12.4" -types-pyyaml = "^6.0.12.20250516" +coverage = "^7.13.4" +pytest = "^9.0.2" +pre-commit = "^4.5.1" +ruff = "^0.15.1" +mypy = "^1.19.1" fawltydeps = "^0.20.0" +types-pyyaml = "^6.0.12.20250915" +mkdocs = "^1.6.1" +mkdocs-material = "^9.7.1" +mkdocstrings = "^1.0.3" +pytest-cov = "^7.0.0" +reuse = "^6.2.0" +types-shapely = "^2.1.0.20250917" [build-system] requires = ["poetry-core"] @@ -98,6 +101,26 @@ ignore = [ [tool.mypy] packages = ["src.meteoforge"] +plugins = [] +python_version = "3.13" +strict = true +exclude = ["tests/*", ".venv/*"] +disable_error_code = [] +follow_imports = "normal" +ignore_missing_imports = false +show_error_codes = true +namespace_packages = true +explicit_package_bases = true +check_untyped_defs = true +allow_redefinition = true +no_implicit_optional = true +install_types = true +non_interactive = true +enable_error_code = [] +files = ["src/meteoforge/spatial_temporal/locations.py"] + +[tool.pylint.format] +max-line-length = 120 [tool.pytest.ini_options] addopts = [ diff --git a/src/__init__.py b/src/__init__.py index 0a5cd78..0253492 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/__init__.py b/src/meteoforge/__init__.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/__init__.py +++ b/src/meteoforge/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/controller.py b/src/meteoforge/core/controller.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/core/controller.py +++ b/src/meteoforge/core/controller.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/manager.py b/src/meteoforge/core/manager.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/core/manager.py +++ b/src/meteoforge/core/manager.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/model.py b/src/meteoforge/core/model.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/core/model.py +++ b/src/meteoforge/core/model.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/core/source.py b/src/meteoforge/core/source.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/core/source.py +++ b/src/meteoforge/core/source.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/logging/__init__.py b/src/meteoforge/logging/__init__.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/logging/__init__.py +++ b/src/meteoforge/logging/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/logging/logging.py b/src/meteoforge/logging/logging.py index 546c34a..bebd332 100644 --- a/src/meteoforge/logging/logging.py +++ b/src/meteoforge/logging/logging.py @@ -1,5 +1,5 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 import logging import logging.config @@ -8,7 +8,7 @@ import yaml -def setup_logging(config_path: str | None = None): +def setup_logging(config_path: str | None = None) -> None: """Set up project logging using the 'logging_config.yaml' config file.""" if config_path is None: config_path = os.path.join(os.path.dirname(__file__), "logging_config.yaml") diff --git a/src/meteoforge/parameters/__init__.py b/src/meteoforge/parameters/__init__.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/parameters/__init__.py +++ b/src/meteoforge/parameters/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/parameters/parameters.py b/src/meteoforge/parameters/parameters.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/parameters/parameters.py +++ b/src/meteoforge/parameters/parameters.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/__init__.py b/src/meteoforge/spatial_temporal/__init__.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/spatial_temporal/__init__.py +++ b/src/meteoforge/spatial_temporal/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/locations.py b/src/meteoforge/spatial_temporal/locations.py index efb3b36..d12e85f 100644 --- a/src/meteoforge/spatial_temporal/locations.py +++ b/src/meteoforge/spatial_temporal/locations.py @@ -1,106 +1,202 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 -from pyproj import CRS -from pyproj.exceptions import CRSError +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 -from src.meteoforge.logging.logging import logger +"""Hybrid location module: easy use, CRS-flexible, fuzzy equality, and robust containment.""" +from collections.abc import Iterable +from typing import Any -class MFLocation: - """The base class for representing geographic locations in MeteoForge. - - This class serves as a base for various location based formats, such as coordinates, bounding boxes, and polygons. - It provides a common interface for working with these different formats, allowing for the easy conversion and - manipulation of geographic data. - - Attributes - ---------- - x (float): - The x-coordinate of the location. Typically, this represents longitude, but this can vary based on the - Coordinate Reference System (CRS) used. - y (float): - The y-coordinate of the location. Typically, this represents latitude, but this can vary based on the - Coordinate Reference System (CRS) used. - crs (int): - The coordinate reference system of the location, if applicable via EPSG numerical code. This is used to - properly interpret the x and y coordinates in a geographic context. The default setting is EPSG code 4326, - which represents the WGS 84 geographic coordinate system. - - """ - - def __init__(self, *, x: int | float, y: int | float, epsg_code: int = 4326): - """Initialize the MFLocation class.""" - # Validate the input parameters - if self.validate_location(x, y, epsg_code): - # Set the instance variables - self.x = float(x) - self.y = float(y) - self.crs = epsg_code - else: - raise ValueError("Invalid location parameters") - - @staticmethod - def validate_location(x: float, y: float, epsg_code: int = 4326) -> bool: - """Validate a given x,y location with an EPSG code as an existing coordinate.""" - logger.debug(f"Validating location: x={x}, y={y}, epgs_code={epsg_code}") - - # Validate the types of x, y, and epgs_code - if not isinstance(x, int | float): - raise ValueError("x must be a number") - if not isinstance(y, int | float): - raise ValueError("y must be a number") - if not isinstance(epsg_code, int): - raise ValueError("epgs_code must be an integer") - - logger.debug(f"Type validation passed: x={type(x)}, y={type(y)}, epgs_code={type(epsg_code)}") - - # Validate the CRS type suggested by the EPSG code - MFLocation.valid_crs(epsg_code) +from pyproj import CRS, Transformer +from shapely.geometry import Point, Polygon - logger.debug(f"CRS validation passed for EPSG code: {epsg_code}") +from meteoforge.spatial_temporal.validators import validate_mf_location - # Check that x and y are within valid ranges for geographic coordinates on the given CRS - ... - logger.debug(f"Location validation passed and valid: x={x}, y={y}, epsg_code={epsg_code}") - return True +def _crs_to_obj(crs_like: int | str | CRS) -> CRS: + """Convert an int, str, or CRS to a CRS object.""" + if isinstance(crs_like, CRS): + return crs_like + return CRS.from_user_input(value=crs_like) - @staticmethod - def validate_crs(epsg_code: int) -> bool: - """Validate a given EPSG code for valid and known coordinate reference systems. - A valid CRS is one that exists, is not deprecated, and is either geographic or geocentric. This helps exclude - CRS values that are unsuitable for representing x,y coordinates in a geographic context. - """ - logger.debug(f"Validating CRS with EPSG code: {epsg_code}") +def _transform_point(x: float, y: float, from_crs: CRS, to_crs: CRS) -> tuple[float, float]: + """Transform a point (x, y) from one CRS to another.""" + if from_crs == to_crs: + return x, y + transformer = Transformer.from_crs(from_crs, to_crs, always_xy=True) + x2, y2 = transformer.transform(x, y) + return float(x2), float(y2) - try: - crs = CRS.from_epsg(epsg_code) - except CRSError as e: - raise ValueError(f"invalid EPSG code '{epsg_code}': --<<-- {e} -->>--") from e - # Check that the CRS is not deprecated - if crs.is_deprecated: - raise ValueError( - f"The CRS with EPSG code {epsg_code} is deprecated. Please use a different (non-deprecated) CRS." - ) - - # Check that the CRS is for an x,y based geographic coordinate system - if not crs.is_geographic and not crs.is_geocentric: - raise ValueError( - "The MFLocation class type only supports Geographic (CRS.is_geographic=True) and Geocentric Coordinate " - "Systems (CRS.is_geocentric=True)." - ) - return True +class MFLocation: + """A geographic location with CRS, supporting transformation and fuzzy equality.""" + + def __init__(self, x: float, y: float, crs: int | str | CRS = 4326): + """Create a location with coordinates (x, y) and a CRS.""" + self.crs = _crs_to_obj(crs) + self.x = float(x) + self.y = float(y) + self.point = Point(self.x, self.y) + validate_mf_location(self.x, self.y, self.crs) + + def to(self, target_crs: int | str | CRS) -> "MFLocation": + """Return a new MFLocation transformed to the target CRS.""" + target_crs_obj = _crs_to_obj(target_crs) + x2, y2 = _transform_point(self.x, self.y, self.crs, target_crs_obj) + return MFLocation(x2, y2, target_crs_obj) + + def equals(self, other: "MFLocation", tol: float = 1e-6, crs: int | str | CRS = 4326) -> bool: + """Check if two locations are close enough in a common CRS.""" + # Compare in a common CRS (default: WGS84) + crs_obj = _crs_to_obj(crs) + a = self.to(crs_obj) + b = other.to(crs_obj) + return abs(a.x - b.x) < tol and abs(a.y - b.y) < tol + + def __eq__(self, other: Any) -> bool: + """Check equality with another MFLocation, using fuzzy equality in a common CRS.""" + if not isinstance(other, MFLocation): + return NotImplemented + return self.equals(other) + + def __repr__(self) -> str: + """Get a string representation of the location.""" + return f"MFLocation(x={self.x}, y={self.y}, crs={self.crs.to_string()})" class MFLocationList: - """A list of MFLocation objects representing multiple geographic locations.""" - - ... + """A class representing a list of MFLocation objects, with fuzzy containment and CRS handling.""" + + def __init__(self, locations: Iterable[MFLocation] | None = None, crs: int | str | CRS = 4326): + """Create a list of locations, converting all to the given CRS.""" + self.crs = _crs_to_obj(crs) + self.locations: list[MFLocation] = [] + if locations: + for loc in locations: + self.append(loc) + + def append(self, location: Any) -> None: + """Add a location to the list, converting to the list's CRS if needed.""" + if not isinstance(location, MFLocation): + raise TypeError("Only MFLocation instances can be added.") + # Accept any CRS, but store as self.crs + loc_in_crs = location.to(self.crs) + self.locations.append(loc_in_crs) + + def __getitem__(self, idx: int) -> MFLocation: + """Get a location by index.""" + return self.locations[idx] + + def __setitem__(self, idx: int, value: MFLocation) -> None: + """Set a location by index, converting to the list's CRS if needed.""" + self.locations[idx] = value.to(self.crs) + + def __delitem__(self, idx: int) -> None: + """Delete a location by index.""" + del self.locations[idx] + + def __len__(self) -> int: + """Return the number of locations in the list.""" + return len(self.locations) + + def __contains__(self, item: MFLocation) -> bool: + """Check if a location is 'fuzzily' in the list, CRS-aware.""" + # Fuzzy containment: is any location in the list 'close enough' to item? + return any(loc.equals(item) for loc in self.locations) + + def find_nearby(self, item: MFLocation, tol: float = 1e-6) -> MFLocation | None: + """Return the first location in the list close to the given item, or None.""" + for loc in self.locations: + if loc.equals(item, tol=tol): + return loc + return None + + def __repr__(self) -> str: + """Return a string representation of the MFLocationList instance.""" + return f"MFLocationList({self.locations}, crs={self.crs.to_string()})" class MFLocationVector: - """A vector of MFLocation objects representing a sequence of geographic locations.""" - - ... + """A vector (polygon) of MFLocation objects, with fuzzy containment and CRS handling.""" + + def __init__(self, locations: Iterable[MFLocation] | None = None, crs: int | str | CRS = 4326): + """Create a vector (polygon) from locations, converting all to the given CRS.""" + self.crs = _crs_to_obj(crs) + self.locations: list[MFLocation] = [] + self.polygon: Polygon | None = None + if locations: + for loc in locations: + self.append(loc) + self._update_polygon() + + def append(self, location: Any) -> None: + """Add a location to the vector, converting to the vector's CRS if needed.""" + if not isinstance(location, MFLocation): + raise TypeError("Only MFLocation instances can be added.") + loc_in_crs = location.to(self.crs) + self.locations.append(loc_in_crs) + self._update_polygon() + + def _update_polygon(self) -> None: + """Update the internal Shapely polygon from the current locations.""" + coords = [loc.to(self.crs).point for loc in self.locations] + # Only create a polygon if there are at least 3 unique points (4 for closure) + if len(coords) >= 3: + xy = [(pt.x, pt.y) for pt in coords] + # Ensure closure: first == last + if xy[0] != xy[-1]: + xy.append(xy[0]) + if len(xy) >= 4: + self.polygon = Polygon(xy) + else: + self.polygon = None + else: + self.polygon = None + + def contains(self, location: MFLocation, tol: float = 1e-6) -> bool: + """Check if the vector contains a location (fuzzy, CRS-aware, and near boundary).""" + pt = location.to(self.crs).point + # 1. True Shapely containment + if self.polygon and self.polygon.contains(pt): + return True + # 2. Fuzzy: check if any vertex is close to the point + if any(pt.distance(vertex.point) < tol for vertex in self.locations): + return True + # 3. Fuzzy: check if point is near the polygon boundary (within tol) + return bool(self.polygon and self.polygon.boundary.distance(pt) < tol) + + def __contains__(self, item: MFLocation) -> bool: + """Check if a location is in the vector, using fuzzy containment.""" + return self.contains(item) + + def __getitem__(self, idx: int) -> MFLocation: + """Get a location by index.""" + return self.locations[idx] + + def __setitem__(self, idx: int, value: MFLocation) -> None: + """Set a location by index, converting to the vector's CRS if needed.""" + self.locations[idx] = value.to(self.crs) + self._update_polygon() + + def __delitem__(self, idx: int) -> None: + """Delete a location by index.""" + del self.locations[idx] + self._update_polygon() + + def __len__(self) -> int: + """Return the number of locations in the vector.""" + return len(self.locations) + + def __repr__(self) -> str: + """Return a string representation of the MFLocationVector instance.""" + return f"MFLocationVector({self.locations}, crs={self.crs.to_string()})" + + +# Utility: fuzzy membership for a location in a list/vector + + +def fuzzy_in(item: MFLocation, container: Iterable[MFLocation], tol: float = 1e-6, crs: int | str | CRS = 4326) -> bool: + """Check if a location is 'fuzzily' in a container (list/vector), CRS-aware.""" + crs_obj = _crs_to_obj(crs) + item_in_crs = item.to(crs_obj) + return any(loc.to(crs_obj).equals(item_in_crs, tol=tol, crs=crs_obj) for loc in container) diff --git a/src/meteoforge/spatial_temporal/periods.py b/src/meteoforge/spatial_temporal/periods.py index 0a5cd78..0253492 100644 --- a/src/meteoforge/spatial_temporal/periods.py +++ b/src/meteoforge/spatial_temporal/periods.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge/spatial_temporal/validators.py b/src/meteoforge/spatial_temporal/validators.py new file mode 100644 index 0000000..f6a389f --- /dev/null +++ b/src/meteoforge/spatial_temporal/validators.py @@ -0,0 +1,138 @@ +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 + +"""Module for validating spatial and temporal data in MeteoForge.""" + +from typing import Any + +from pyproj import CRS, Transformer +from pyproj.exceptions import CRSError + +from meteoforge.logging.logging import logger + + +class CRSValidationError(ValueError): + """Raised when a CRS validation fails in MFLocation.""" + + +def validate_mf_location(x: int | float, y: int | float, crs: CRS) -> bool: + """Validate a given x,y location with an EPSG code as a valid coordinate for MeteoForge.""" + # Perform type checks on the input parameters + _perform_mf_location_type_checks(x, y, crs) + logger.debug("Type checks passed for x=%s, y=%s, crs=%s", x, y, crs) + + # Evaluate the EPSG code as a valid CRS for MeteoForge + validate_crs(crs) + logger.debug("CRS validation passed for CRS: %s", crs) + + # Evaluate the x and y coordinates as valid for the given CRS + validate_location(x, y, crs) + logger.debug("Location validation passed for x=%s, y=%s, CRS=%s", x, y, crs) + return True + + +def validate_mf_period(start_time: object, end_time: object) -> bool: + """Validate a given start and end time as a valid period for MeteoForge.""" + # Perform type checks on the input parameters + _perform_mf_period_type_checks(start_time, end_time) + + # Evaluate the start and end times as valid for MeteoForge + ... + + return True + + +def _perform_mf_location_type_checks(x: Any, y: Any, crs: Any) -> None: + """Check the types of x, y, and CRS.""" + if not isinstance(x, int | float): + raise TypeError("x must be a number") + if not isinstance(y, int | float): + raise TypeError("y must be a number") + if not isinstance(crs, CRS): + raise TypeError("crs must be a CRS instance") + + +def validate_crs(crs: Any) -> bool: + """Validate the given CRS as a valid CRS for MeteoForge.""" + logger.debug("Validating CRS: %s", crs) + + if not isinstance(crs, CRS | int | str): + raise TypeError("crs must be a CRS instance, int, or str") + + try: + # Attempt to create a CRS object from the EPSG code to check if it is valid + if isinstance(crs, CRS): + crs_object = crs + elif isinstance(crs, int): + crs_object = CRS.from_epsg(crs) + else: # Assume it's a CRS string like "EPSG:4326" + crs_object = CRS.from_string(crs) + + except CRSError as e: + raise CRSValidationError(f"Invalid CRS type or value: {crs}") from e + + # Check that the created CRS is not deprecated + if crs_object.is_deprecated: + raise CRSValidationError( + f"The CRS built from {crs} is deprecated. Please use a different (non-deprecated) CRS." + ) + + # Check that the CRS is either geographic, geocentric, or projected, as these are the types supported by MFLocation + if not crs_object.is_geographic and not crs_object.is_geocentric and not crs_object.is_projected: + raise CRSValidationError( + "The MFLocation class type only supports Geographic (CRS.is_geographic=True), Geocentric Coordinate " + "Systems (CRS.is_geocentric=True) and Projected Coordinate Systems (CRS.is_projected=True)." + ) + return True + + +def validate_location(x: int | float, y: int | float, crs: CRS) -> bool: + """Validate the given x and y coordinates as valid for the specified CRS. + + Evaluate the x and y coordinates as valid for the given CRS, e.g., check if they fall within the valid range for + the CRS. This may involve checking if the coordinates are within the bounds of the CRS's valid area. + + Attributes + ---------- + x (int | float): + The x-coordinate of the location. Typically, this represents longitude, but this can vary based on the + Coordinate Reference System (CRS) used. + y (int | float): + The y-coordinate of the location. Typically, this represents latitude, but this can vary based on the + Coordinate Reference System (CRS) used. + crs (CRS): + The coordinate reference system of the location. This is used to properly interpret the x and y coordinates + in a geographic context. + + Returns + ------- + bool + True if the location is valid for the given CRS, False otherwise. + + """ + area_of_use = crs.area_of_use + + if area_of_use is None: + logger.warning("No area of use defined for CRS %s, skipping bounds check", crs) + return True + + # Transform area_of_use bounds (WGS84) to the native CRS units + transformer = Transformer.from_crs(CRS.from_epsg(4326), crs, always_xy=True) + min_x, min_y = transformer.transform(area_of_use.west, area_of_use.south) + max_x, max_y = transformer.transform(area_of_use.east, area_of_use.north) + + if not (min_x <= x <= max_x): + raise CRSValidationError(f"x coordinate {x} is outside valid bounds [{min_x}, {max_x}] for CRS {crs}") + + if not (min_y <= y <= max_y): + raise CRSValidationError(f"y coordinate {y} is outside valid bounds [{min_y}, {max_y}] for CRS {crs}") + + logger.debug("Location validation passed and valid: x=%s, y=%s, CRS=%s", x, y, crs) + return True + + +def _perform_mf_period_type_checks(start_time: Any, end_time: Any) -> None: + """Check the types of start_time and end_time.""" + # Implement type checks for start_time and end_time, e.g., check if they are datetime objects + _, _ = start_time, end_time + ... diff --git a/src/meteoforge_tools/README.md b/src/meteoforge_tools/README.md index c781249..22083f2 100644 --- a/src/meteoforge_tools/README.md +++ b/src/meteoforge_tools/README.md @@ -1,3 +1,6 @@ +[//]: # (SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project) +[//]: # (SPDX-License-Identifier: MPL-2.0) + # MeteoForge Tools ... diff --git a/src/meteoforge_tools/__init__.py b/src/meteoforge_tools/__init__.py index 0a5cd78..0253492 100644 --- a/src/meteoforge_tools/__init__.py +++ b/src/meteoforge_tools/__init__.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/src/meteoforge_tools/netfcd_to_zarr_conversion.py b/src/meteoforge_tools/netfcd_to_zarr_conversion.py index 0a5cd78..0253492 100644 --- a/src/meteoforge_tools/netfcd_to_zarr_conversion.py +++ b/src/meteoforge_tools/netfcd_to_zarr_conversion.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/tests/conftest.py b/tests/conftest.py index 0a5cd78..0253492 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,2 +1,2 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 diff --git a/tests/test_example_test.py b/tests/test_example_test.py deleted file mode 100644 index de3ea2a..0000000 --- a/tests/test_example_test.py +++ /dev/null @@ -1,7 +0,0 @@ -# SPDX-FileCopyrightText: 2024-2025 Copyright Contributors to the MeteoForge project -# SPDX-License-Identifier: MPL-2.0 - - -def test_example(): - """Example test function to demonstrate pytest setup.""" - assert True # Replace with actual test logic diff --git a/tests/test_locations.py b/tests/test_locations.py new file mode 100644 index 0000000..0475945 --- /dev/null +++ b/tests/test_locations.py @@ -0,0 +1,118 @@ +# SPDX-FileCopyrightText: 2025-2026 Contributors to the MeteoForge project +# SPDX-License-Identifier: MPL-2.0 + +"""Pytest tests for the locations module (MFLocation, MFLocationList, MFLocationVector, fuzzy_in). + +Tests only the module logic, not pyproj or Shapely internals. +""" + +from typing import Any + +from pyproj import CRS + +from meteoforge.spatial_temporal.locations import ( + MFLocation, + MFLocationList, + MFLocationVector, + _crs_to_obj, # type: ignore + _transform_point, # type: ignore + fuzzy_in, +) + + +def test_crs_to_obj_accepts_crs_types(): + """Test that _crs_to_obj correctly accepts CRS objects, ints, and strings.""" + # Accepts CRS, int, str + crs = CRS.from_epsg(4326) + assert _crs_to_obj(crs) == crs + assert _crs_to_obj(4326) == CRS.from_epsg(4326) + assert _crs_to_obj("EPSG:4326") == CRS.from_epsg(4326) + + +def test_transform_point_identity(): + """Transforming a point in the same CRS should return the same coordinates.""" + crs = CRS.from_epsg(4326) + x, y = 1.0, 2.0 + assert _transform_point(x, y, crs, crs) == (x, y) + + +def test_mflocation_repr_and_eq(): + """Test MFLocation equality and string representation.""" + a = MFLocation(1, 2, 4326) + b = MFLocation(1, 2, 4326) + c = MFLocation(1.00001, 2, 4326) # Use a value outside the default tolerance for fuzzy equality + assert a == b + assert a != c + assert "MFLocation" in repr(a) + + +def test_mflocation_to_transforms(monkeypatch: Any): + """Test that MFLocation.to correctly transforms coordinates using _transform_point.""" + # Only patch to check that _transform_point is called, not to replace its math + called = {} + + def fake_transform(x: float, y: float, from_crs: CRS, to_crs: CRS) -> tuple[float, float]: + called["args"] = (x, y, from_crs, to_crs) + return (123, 456) + + monkeypatch.setattr("meteoforge.spatial_temporal.locations._transform_point", fake_transform) + a = MFLocation(1, 2, 4326) + b = a.to(3857) + assert called["args"][0] == 1 and called["args"][1] == 2 + assert isinstance(b, MFLocation) + assert b.x == 123 and b.y == 456 + + +def test_mflocationlist_append_and_contains(): + """Test MFLocationList append, contains, get, set, and delete operations.""" + a = MFLocation(1, 2, 4326) + b = MFLocation(3, 4, 4326) + lst = MFLocationList([a]) + lst.append(b) + assert len(lst) == 2 + assert a in lst + assert b in lst + c = MFLocation(1.00001, 2, 4326) # Use a value outside the default tolerance for fuzzy equality + assert c not in lst + assert lst[0] == a + lst[1] = a + assert lst[1] == a + del lst[1] + assert len(lst) == 1 + + +def test_mflocationlist_find_nearby(): + """Test MFLocationList.find_nearby method.""" + a = MFLocation(1, 2, 4326) + b = MFLocation(1.0000001, 2, 4326) + lst = MFLocationList([a]) + found = lst.find_nearby(b, tol=1e-5) + assert found == a + not_found = lst.find_nearby(MFLocation(5, 5, 4326)) + assert not_found is None + + +def test_mflocationvector_append_and_contains(): + """Test MFLocationVector with a valid closed polygon, no mutation after creation.""" + a = MFLocation(0, 0, 4326) + b = MFLocation(1, 0, 4326) + c = MFLocation(1, 1, 4326) + d = MFLocation(0, 1, 4326) + # Only pass 4 points, do not close explicitly + vec = MFLocationVector([a, b, c, d]) + pt_inside = MFLocation(0.5, 0.5, 4326) + pt_outside = MFLocation(2, 2, 4326) + assert pt_inside in vec + assert pt_outside not in vec + pt_near = MFLocation(0, 0.00001, 4326) + assert pt_near in vec + assert vec[0] == a + assert len(vec.locations) == 4 + + +def test_fuzzy_in(): + """Test the fuzzy_in function for real MFLocation objects.""" + items = [MFLocation(1, 2, 4326), MFLocation(3, 4, 4326), MFLocation(5, 6, 4326)] + item = MFLocation(3.0000001, 4, 4326) + assert fuzzy_in(item, items, tol=1e-5) + assert not fuzzy_in(MFLocation(7, 8, 4326), items, tol=1e-5) diff --git a/typings/meteoforge/__init__.pyi b/typings/meteoforge/__init__.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/core/__init__.pyi b/typings/meteoforge/core/__init__.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/core/controller.pyi b/typings/meteoforge/core/controller.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/core/manager.pyi b/typings/meteoforge/core/manager.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/core/model.pyi b/typings/meteoforge/core/model.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/core/source.pyi b/typings/meteoforge/core/source.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/logging/__init__.pyi b/typings/meteoforge/logging/__init__.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/logging/logging.pyi b/typings/meteoforge/logging/logging.pyi new file mode 100644 index 0000000..d95d0a6 --- /dev/null +++ b/typings/meteoforge/logging/logging.pyi @@ -0,0 +1,5 @@ +from _typeshed import Incomplete + +def setup_logging(config_path: str | None = None) -> None: ... + +logger: Incomplete diff --git a/typings/meteoforge/parameters/__init__.pyi b/typings/meteoforge/parameters/__init__.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/parameters/parameters.pyi b/typings/meteoforge/parameters/parameters.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/spatial_temporal/__init__.pyi b/typings/meteoforge/spatial_temporal/__init__.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/spatial_temporal/locations.pyi b/typings/meteoforge/spatial_temporal/locations.pyi new file mode 100644 index 0000000..07b80a9 --- /dev/null +++ b/typings/meteoforge/spatial_temporal/locations.pyi @@ -0,0 +1,43 @@ +from _typeshed import Incomplete +from collections.abc import Iterable +from meteoforge.spatial_temporal.validators import validate_mf_location as validate_mf_location +from pyproj import CRS +from shapely.geometry import Polygon +from typing import Any + +class MFLocation: + crs: Incomplete + x: Incomplete + y: Incomplete + point: Incomplete + def __init__(self, x: float, y: float, crs: int | str | CRS = 4326) -> None: ... + def to(self, target_crs: int | str | CRS) -> MFLocation: ... + def equals(self, other: MFLocation, tol: float = 1e-06, crs: int | str | CRS = 4326) -> bool: ... + def __eq__(self, other: Any) -> bool: ... + +class MFLocationList: + crs: Incomplete + locations: list[MFLocation] + def __init__(self, locations: Iterable[MFLocation] | None = None, crs: int | str | CRS = 4326) -> None: ... + def append(self, location: Any) -> None: ... + def __getitem__(self, idx: int) -> MFLocation: ... + def __setitem__(self, idx: int, value: MFLocation) -> None: ... + def __delitem__(self, idx: int) -> None: ... + def __len__(self) -> int: ... + def __contains__(self, item: MFLocation) -> bool: ... + def find_nearby(self, item: MFLocation, tol: float = 1e-06) -> MFLocation | None: ... + +class MFLocationVector: + crs: Incomplete + locations: list[MFLocation] + polygon: Polygon | None + def __init__(self, locations: Iterable[MFLocation] | None = None, crs: int | str | CRS = 4326) -> None: ... + def append(self, location: Any) -> None: ... + def contains(self, location: MFLocation, tol: float = 1e-06) -> bool: ... + def __contains__(self, item: MFLocation) -> bool: ... + def __getitem__(self, idx: int) -> MFLocation: ... + def __setitem__(self, idx: int, value: MFLocation) -> None: ... + def __delitem__(self, idx: int) -> None: ... + def __len__(self) -> int: ... + +def fuzzy_in(item: MFLocation, container: Iterable[MFLocation], tol: float = 1e-06, crs: int | str | CRS = 4326) -> bool: ... diff --git a/typings/meteoforge/spatial_temporal/periods.pyi b/typings/meteoforge/spatial_temporal/periods.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typings/meteoforge/spatial_temporal/validators.pyi b/typings/meteoforge/spatial_temporal/validators.pyi new file mode 100644 index 0000000..5090f95 --- /dev/null +++ b/typings/meteoforge/spatial_temporal/validators.pyi @@ -0,0 +1,10 @@ +from meteoforge.logging.logging import logger as logger +from pyproj import CRS +from typing import Any + +class CRSValidationError(ValueError): ... + +def validate_mf_location(x: int | float, y: int | float, crs: CRS) -> bool: ... +def validate_mf_period(start_time: object, end_time: object) -> bool: ... +def validate_crs(crs: Any) -> bool: ... +def validate_location(x: int | float, y: int | float, crs: CRS) -> bool: ... From a3992ab0968ff995d5ed5adc65f93daa80915ba1 Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Mon, 23 Mar 2026 17:03:15 +0100 Subject: [PATCH 42/50] Potential fix for code scanning alert no. 23: Workflow does not contain permissions Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Signed-off-by: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .github/workflows/allowed-pr-sources-dev-release.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/allowed-pr-sources-dev-release.yaml b/.github/workflows/allowed-pr-sources-dev-release.yaml index 5bf13d5..6e0de07 100644 --- a/.github/workflows/allowed-pr-sources-dev-release.yaml +++ b/.github/workflows/allowed-pr-sources-dev-release.yaml @@ -1,5 +1,8 @@ name: Check if PR source branch is allowed for development or release branches +permissions: + contents: read + on: pull_request: types: [ opened, reopened, synchronize, edited, ready_for_review ] From d6978dc6d45ee075412958b9f107e4c79e873f07 Mon Sep 17 00:00:00 2001 From: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Tue, 24 Mar 2026 07:18:51 +0100 Subject: [PATCH 43/50] patch : Security fixes for existing actions Signed-off-by: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .../allowed-pr-sources-dev-release.yaml | 4 ++-- .github/workflows/openssf-scorecard.yml | 5 +++-- .github/workflows/pr-quality-gate.yaml.yml | 15 +++++++++++--- tests/test_locations.py | 20 +++++++++---------- 4 files changed, 27 insertions(+), 17 deletions(-) diff --git a/.github/workflows/allowed-pr-sources-dev-release.yaml b/.github/workflows/allowed-pr-sources-dev-release.yaml index 6e0de07..78b27c7 100644 --- a/.github/workflows/allowed-pr-sources-dev-release.yaml +++ b/.github/workflows/allowed-pr-sources-dev-release.yaml @@ -1,7 +1,5 @@ name: Check if PR source branch is allowed for development or release branches -permissions: - contents: read on: pull_request: @@ -12,6 +10,8 @@ on: jobs: enforce: + permissions: + contents: read runs-on: ubuntu-latest steps: - name: Check PR source branch diff --git a/.github/workflows/openssf-scorecard.yml b/.github/workflows/openssf-scorecard.yml index 01e17d4..276f27d 100644 --- a/.github/workflows/openssf-scorecard.yml +++ b/.github/workflows/openssf-scorecard.yml @@ -14,8 +14,9 @@ on: push: branches: [ "main" ] -# Declare default permissions as read only. -permissions: read-all +# Declare default permissions as read only (minimal for Scorecard). +permissions: + contents: read jobs: analysis: diff --git a/.github/workflows/pr-quality-gate.yaml.yml b/.github/workflows/pr-quality-gate.yaml.yml index 0f30122..d8dc4e1 100644 --- a/.github/workflows/pr-quality-gate.yaml.yml +++ b/.github/workflows/pr-quality-gate.yaml.yml @@ -5,9 +5,6 @@ on: branches: [ rc, main ] types: [ opened, synchronize, reopened, ready_for_review ] -permissions: - contents: read - pull-requests: write concurrency: group: pr-${{ github.event.pull_request.number || github.ref }} @@ -15,6 +12,9 @@ concurrency: jobs: precommit: + permissions: + contents: read + pull-requests: write name: pre-commit if: ${{ !github.event.pull_request.draft }} runs-on: ubuntu-latest @@ -28,6 +28,9 @@ jobs: python-version: ${{ env.MAIN_PYTHON_VERSION }} pytest: + permissions: + contents: read + pull-requests: write name: pytest if: ${{ !github.event.pull_request.draft }} runs-on: ubuntu-latest @@ -42,6 +45,9 @@ jobs: python-version: ${{ matrix.python-version }} pytest-windows: + permissions: + contents: read + pull-requests: write name: pytest (Windows, non-blocking) if: ${{ !github.event.pull_request.draft }} runs-on: windows-latest @@ -57,6 +63,9 @@ jobs: python-version: ${{ matrix.python-version }} sonarqube: + permissions: + contents: read + pull-requests: write name: SonarQube if: ${{ !github.event.pull_request.draft }} runs-on: ubuntu-latest diff --git a/tests/test_locations.py b/tests/test_locations.py index 0475945..8aaf25e 100644 --- a/tests/test_locations.py +++ b/tests/test_locations.py @@ -14,13 +14,13 @@ MFLocation, MFLocationList, MFLocationVector, - _crs_to_obj, # type: ignore - _transform_point, # type: ignore + _crs_to_obj, + _transform_point, fuzzy_in, ) -def test_crs_to_obj_accepts_crs_types(): +def test_crs_to_obj_accepts_crs_types() -> None: """Test that _crs_to_obj correctly accepts CRS objects, ints, and strings.""" # Accepts CRS, int, str crs = CRS.from_epsg(4326) @@ -29,14 +29,14 @@ def test_crs_to_obj_accepts_crs_types(): assert _crs_to_obj("EPSG:4326") == CRS.from_epsg(4326) -def test_transform_point_identity(): +def test_transform_point_identity() -> None: """Transforming a point in the same CRS should return the same coordinates.""" crs = CRS.from_epsg(4326) x, y = 1.0, 2.0 assert _transform_point(x, y, crs, crs) == (x, y) -def test_mflocation_repr_and_eq(): +def test_mflocation_repr_and_eq() -> None: """Test MFLocation equality and string representation.""" a = MFLocation(1, 2, 4326) b = MFLocation(1, 2, 4326) @@ -46,7 +46,7 @@ def test_mflocation_repr_and_eq(): assert "MFLocation" in repr(a) -def test_mflocation_to_transforms(monkeypatch: Any): +def test_mflocation_to_transforms(monkeypatch: Any) -> None: """Test that MFLocation.to correctly transforms coordinates using _transform_point.""" # Only patch to check that _transform_point is called, not to replace its math called = {} @@ -63,7 +63,7 @@ def fake_transform(x: float, y: float, from_crs: CRS, to_crs: CRS) -> tuple[floa assert b.x == 123 and b.y == 456 -def test_mflocationlist_append_and_contains(): +def test_mflocationlist_append_and_contains() -> None: """Test MFLocationList append, contains, get, set, and delete operations.""" a = MFLocation(1, 2, 4326) b = MFLocation(3, 4, 4326) @@ -81,7 +81,7 @@ def test_mflocationlist_append_and_contains(): assert len(lst) == 1 -def test_mflocationlist_find_nearby(): +def test_mflocationlist_find_nearby() -> None: """Test MFLocationList.find_nearby method.""" a = MFLocation(1, 2, 4326) b = MFLocation(1.0000001, 2, 4326) @@ -92,7 +92,7 @@ def test_mflocationlist_find_nearby(): assert not_found is None -def test_mflocationvector_append_and_contains(): +def test_mflocationvector_append_and_contains() -> None: """Test MFLocationVector with a valid closed polygon, no mutation after creation.""" a = MFLocation(0, 0, 4326) b = MFLocation(1, 0, 4326) @@ -110,7 +110,7 @@ def test_mflocationvector_append_and_contains(): assert len(vec.locations) == 4 -def test_fuzzy_in(): +def test_fuzzy_in() -> None: """Test the fuzzy_in function for real MFLocation objects.""" items = [MFLocation(1, 2, 4326), MFLocation(3, 4, 4326), MFLocation(5, 6, 4326)] item = MFLocation(3.0000001, 4, 4326) From 6ae138b3c572c55bcecb3e9265475990a6793516 Mon Sep 17 00:00:00 2001 From: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Tue, 24 Mar 2026 07:24:52 +0100 Subject: [PATCH 44/50] Rebase commit for signage purposes Signed-off-by: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 981628e..d4c6d71 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ parameters. Unit conversion is handled with [Pint](https://pint.readthedocs.io/) > _speed" in m/s._ > _The Core System can convert Beaufort to m/s using its registry of standard parameters and Pint-based conversions._ -## How to install +## How to install MeteoForge You can install the MeteoForge Core System via pip or poetry. From dce89b7e038d904919bce2213815999e8abdf279 Mon Sep 17 00:00:00 2001 From: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 28 Mar 2026 08:13:25 +0100 Subject: [PATCH 45/50] Add input validation for python-version in pre-commit workflow Signed-off-by: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .github/workflows/pre-commit/action.yaml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pre-commit/action.yaml b/.github/workflows/pre-commit/action.yaml index 80fb107..36b0aee 100644 --- a/.github/workflows/pre-commit/action.yaml +++ b/.github/workflows/pre-commit/action.yaml @@ -18,9 +18,20 @@ runs: with: python-version: ${{ inputs.python-version }} + + - name: Validate Python version + if: ${{ hashFiles('.pre-commit-config.yaml') != '' }} + run: | + ALLOWED_VERSIONS="3.9 3.10 3.11" + if ! echo "$ALLOWED_VERSIONS" | grep -wq "${{ inputs.python-version }}"; then + echo "Error: python-version ${{ inputs.python-version }} is not allowed. Allowed: $ALLOWED_VERSIONS" + exit 1 + fi + shell: bash + - name: Install Poetry if: ${{ hashFiles('.pre-commit-config.yaml') != '' }} - run: pipx install --python python${{ inputs.python-version }} poetry + run: pipx install --python "python${{ inputs.python-version }}" poetry shell: bash - name: Install pre-commit From 6e138825f6a69e3280148ac9988bf1242a1a21c7 Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sun, 12 Oct 2025 11:33:20 +0200 Subject: [PATCH 46/50] feature: In between commit Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Signed-off-by: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> --- poetry.lock | 956 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 946 insertions(+), 10 deletions(-) diff --git a/poetry.lock b/poetry.lock index e5412ee..7d41b2f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -304,6 +304,48 @@ docs = ["Sphinx (>=3.3.1)", "doc8 (>=0.8.1)", "sphinx-rtd-theme (>=0.5.0)", "sph linting = ["black", "isort", "pycodestyle"] testing = ["pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"] +[[package]] +name = "beautifulsoup4" +version = "4.13.4" +description = "Screen-scraping library" +optional = false +python-versions = ">=3.7.0" +groups = ["dev"] +files = [ + { file = "beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b" }, + { file = "beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195" }, +] + +[package.dependencies] +soupsieve = ">1.2" +typing-extensions = ">=4.0.0" + +[package.extras] +cchardet = ["cchardet"] +chardet = ["chardet"] +charset-normalizer = ["charset-normalizer"] +html5lib = ["html5lib"] +lxml = ["lxml"] + +[[package]] +name = "bleach" +version = "6.2.0" +description = "An easy safelist-based HTML-sanitizing tool." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e" }, + { file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f" }, +] + +[package.dependencies] +tinycss2 = { version = ">=1.1.0,<1.5", optional = true, markers = "extra == \"css\"" } +webencodings = "*" + +[package.extras] +css = ["tinycss2 (>=1.1.0,<1.5)"] + [[package]] name = "certifi" version = "2024.8.30" @@ -316,6 +358,9 @@ files = [ {file = "certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120"}, ] +[package.dependencies] +pycparser = "*" + [[package]] name = "cffi" version = "1.17.1" @@ -616,21 +661,39 @@ markers = { main = "platform_system == \"Windows\"" } [[package]] name = "colorlog" -version = "6.10.1" +version = "6.9.0" description = "Add colours to the output of Python's logging module." optional = false python-versions = ">=3.8" files = [ - {file = "colorlog-6.10.1-py3-none-any.whl", hash = "sha256:2d7e8348291948af66122cff006c9f8da6255d224e7cf8e37d8de2df3bad8c9c"}, - {file = "colorlog-6.10.1.tar.gz", hash = "sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321"}, + { file = "colorlog-6.9.0-py3-none-any.whl", hash = "sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff" }, + { file = "colorlog-6.9.0.tar.gz", hash = "sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2" }, ] [package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} +colorama = { version = "*", markers = "sys_platform == \"win32\"" } [package.extras] development = ["black", "flake8", "mypy", "pytest", "types-colorama"] +[[package]] +name = "comm" +version = "0.2.2" +description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, + {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, +] + +[package.dependencies] +traitlets = ">=4" + +[package.extras] +test = ["pytest"] + [[package]] name = "coverage" version = "7.6.4" @@ -820,6 +883,212 @@ diagnostics = ["bokeh (>=3.1.0)", "jinja2 (>=2.10.3)"] distributed = ["distributed (>=2026.1.2,<2026.1.3)"] test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] +[[package]] +name = "crc32c" +version = "2.7.1" +description = "A python package implementing the crc32c algorithm in hardware and software" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1fd1f9c6b50d7357736676278a1b8c8986737b8a1c76d7eab4baa71d0b6af67f" }, + { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:805c2be1bc0e251c48439a62b0422385899c15289483692bc70e78473c1039f1" }, + { file = "crc32c-2.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f4333e62b7844dfde112dbb8489fd2970358eddc3310db21e943a9f6994df749" }, + { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f0fadc741e79dc705e2d9ee967473e8a061d26b04310ed739f1ee292f33674f" }, + { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91ced31055d26d59385d708bbd36689e1a1d604d4b0ceb26767eb5a83156f85d" }, + { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36ffa999b72e3c17f6a066ae9e970b40f8c65f38716e436c39a33b809bc6ed9f" }, + { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e80114dd7f462297e54d5da1b9ff472e5249c5a2b406aa51c371bb0edcbf76bd" }, + { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:676f5b46da268b5190f9fb91b3f037a00d114b411313664438525db876adc71f" }, + { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8d0e660c9ed269e90692993a4457a932fc22c9cc96caf79dd1f1a84da85bb312" }, + { file = "crc32c-2.7.1-cp310-cp310-win32.whl", hash = "sha256:17a2c3f8c6d85b04b5511af827b5dbbda4e672d188c0b9f20a8156e93a1aa7b6" }, + { file = "crc32c-2.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3208764c29688f91a35392073229975dd7687b6cb9f76b919dae442cabcd5126" }, + { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:19e03a50545a3ef400bd41667d5525f71030488629c57d819e2dd45064f16192" }, + { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c03286b1e5ce9bed7090084f206aacd87c5146b4b10de56fe9e86cbbbf851cf" }, + { file = "crc32c-2.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:80ebbf144a1a56a532b353e81fa0f3edca4f4baa1bf92b1dde2c663a32bb6a15" }, + { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96b794fd11945298fdd5eb1290a812efb497c14bc42592c5c992ca077458eeba" }, + { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9df7194dd3c0efb5a21f5d70595b7a8b4fd9921fbbd597d6d8e7a11eca3e2d27" }, + { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d698eec444b18e296a104d0b9bb6c596c38bdcb79d24eba49604636e9d747305" }, + { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e07cf10ef852d219d179333fd706d1c415626f1f05e60bd75acf0143a4d8b225" }, + { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d2a051f296e6e92e13efee3b41db388931cdb4a2800656cd1ed1d9fe4f13a086" }, + { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1738259802978cdf428f74156175da6a5fdfb7256f647fdc0c9de1bc6cd7173" }, + { file = "crc32c-2.7.1-cp311-cp311-win32.whl", hash = "sha256:f7786d219a1a1bf27d0aa1869821d11a6f8e90415cfffc1e37791690d4a848a1" }, + { file = "crc32c-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:887f6844bb3ad35f0778cd10793ad217f7123a5422e40041231b8c4c7329649d" }, + { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f7d1c4e761fe42bf856130daf8b2658df33fe0ced3c43dadafdfeaa42b57b950" }, + { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:73361c79a6e4605204457f19fda18b042a94508a52e53d10a4239da5fb0f6a34" }, + { file = "crc32c-2.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:afd778fc8ac0ed2ffbfb122a9aa6a0e409a8019b894a1799cda12c01534493e0" }, + { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56ef661b34e9f25991fface7f9ad85e81bbc1b3fe3b916fd58c893eabe2fa0b8" }, + { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:571aa4429444b5d7f588e4377663592145d2d25eb1635abb530f1281794fc7c9" }, + { file = "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" }, + { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:99d17637c4867672cb8adeea007294e3c3df9d43964369516cfe2c1f47ce500a" }, + { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f4a400ac3c69a32e180d8753fd7ec7bccb80ade7ab0812855dce8a208e72495f" }, + { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:588587772e55624dd9c7a906ec9e8773ae0b6ac5e270fc0bc84ee2758eba90d5" }, + { file = "crc32c-2.7.1-cp312-cp312-win32.whl", hash = "sha256:9f14b60e5a14206e8173dd617fa0c4df35e098a305594082f930dae5488da428" }, + { file = "crc32c-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:7c810a246660a24dc818047dc5f89c7ce7b2814e1e08a8e99993f4103f7219e8" }, + { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:24949bffb06fc411cc18188d33357923cb935273642164d0bb37a5f375654169" }, + { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2d5d326e7e118d4fa60187770d86b66af2fdfc63ce9eeb265f0d3e7d49bebe0b" }, + { file = "crc32c-2.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba110df60c64c8e2d77a9425b982a520ccdb7abe42f06604f4d98a45bb1fff62" }, + { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c277f9d16a3283e064d54854af0976b72abaa89824955579b2b3f37444f89aae" }, + { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:881af0478a01331244e27197356929edbdeaef6a9f81b5c6bacfea18d2139289" }, + { file = "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" }, + { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2416c4d88696ac322632555c0f81ab35e15f154bc96055da6cf110d642dbc10" }, + { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:60254251b88ec9b9795215f0f9ec015a6b5eef8b2c5fba1267c672d83c78fc02" }, + { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:edefc0e46f3c37372183f70338e5bdee42f6789b62fcd36ec53aa933e9dfbeaf" }, + { file = "crc32c-2.7.1-cp313-cp313-win32.whl", hash = "sha256:813af8111218970fe2adb833c5e5239f091b9c9e76f03b4dd91aaba86e99b499" }, + { file = "crc32c-2.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:7d9ede7be8e4ec1c9e90aaf6884decbeef10e3473e6ddac032706d710cab5888" }, + { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:db9ac92294284b22521356715784b91cc9094eee42a5282ab281b872510d1831" }, + { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8fcd7f2f29a30dc92af64a9ee3d38bde0c82bd20ad939999427aac94bbd87373" }, + { file = "crc32c-2.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5c056ef043393085523e149276a7ce0cb534b872e04f3e20d74d9a94a75c0ad7" }, + { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03a92551a343702629af91f78d205801219692b6909f8fa126b830e332bfb0e0" }, + { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb9424ec1a8ca54763155a703e763bcede82e6569fe94762614bb2de1412d4e1" }, + { file = "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" }, + { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:57a20dfc27995f568f64775eea2bbb58ae269f1a1144561df5e4a4955f79db32" }, + { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:f7186d098bfd2cff25eac6880b7c7ad80431b90610036131c1c7dd0eab42a332" }, + { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:55a77e29a265418fa34bef15bd0f2c60afae5348988aaf35ed163b4bbf93cf37" }, + { file = "crc32c-2.7.1-cp313-cp313t-win32.whl", hash = "sha256:ae38a4b6aa361595d81cab441405fbee905c72273e80a1c010fb878ae77ac769" }, + { file = "crc32c-2.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:eee2a43b663feb6c79a6c1c6e5eae339c2b72cfac31ee54ec0209fa736cf7ee5" }, + { file = "crc32c-2.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:04a56e9f4995559fa86bcf5d0ed5c48505a36e2be1c41d70cae5c080d9a00b74" }, + { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88c5c9c21cd9fff593bb7dfe97d3287438c8aecbcc73d227f2366860a0663521" }, + { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:595146cb94ba0055301d273113add2af5859b467db41b50367f47870c2d0a81c" }, + { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9f3792872f1320961f33aaf0198edea371aee393bcc221fab66d10ecffd77d" }, + { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:999a40d75cd1696e779f6f99c29fa52be777197d1d9e3ae69cb919a05a369c1e" }, + { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:eff485526172cee7e6d1fa9c23913f92c7d38ab05674b0b578767c7b693faf5d" }, + { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:541dac90c64ed9ce05f85a71066567e854c1b40743a01d83fa2c66419a2e97b6" }, + { file = "crc32c-2.7.1-cp37-cp37m-win32.whl", hash = "sha256:7138ec26e79100c4cf4294ef40027a1cff26a1e23b7e5eb70efe5d7ff37cbc66" }, + { file = "crc32c-2.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:35a3ed12ac2e2551a07d246b7e6512ac39db021e006205a40c1cfd32ea73fcc3" }, + { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af062f11aea283b7e9c95f3a97fb6bb96ac08a9063f71621c2140237df141ada" }, + { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8f25ca521ecf7cccfff0ecae4d0538b5c0c7235d27bf098241f3e2bf86aed713" }, + { file = "crc32c-2.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1410bcd909be36ccbf8a52c45e4bddca77adfd4e80789ac3cd575c024086516d" }, + { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33fc8cb32f82685ebefd078e740925ea9da37a008ed5f43b68fc8324f8ca4a37" }, + { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad3dc6283ce53ad7d1dc5775003460110ab7eebf348efebe0486a531b28f8184" }, + { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:758ead20e122496764ae50db26bb90fb47fc4b6d242c8e99e87c3f1dae1f1dce" }, + { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e436d9044bbd51936f7aeb8b322543c516bf22371a17970a370a10af1661fa54" }, + { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:47e5be99057264b603e3cd88cf091985f33c16d3c8609f1c83ed6e72ec4179b4" }, + { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:280509210e622a236f16f031856847fd0d6704df662d7209da819ccfb40c6167" }, + { file = "crc32c-2.7.1-cp38-cp38-win32.whl", hash = "sha256:4ab48e048cfa123a9f9bdc5d4d687a3461723132c749c721a6d358605e6d470d" }, + { file = "crc32c-2.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:65471d1b1b6e10a404ca8200a4271d5bc0a552c3f5dcd943c1c7835f766ea02d" }, + { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:39ca842586084bca24f9c4ab43e2d99191b1186b2f89b2122b470d0730254d1b" }, + { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a911abc33d453b3f171a3200b1e18b3fc39c204670b5b0a353cca99e4c664332" }, + { file = "crc32c-2.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:22a72e81ec08a7ece6a35ac68d1ed32dd4a8be7949b164db88d4b4a4bade5c5a" }, + { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54d6f8c5be6815eabd6e3e90fa0bc13045183a6aa33a30dd684eb0f062b92213" }, + { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c855726d71dee7ae25f81c6b54293455fc66802f34d334d22bea1f6ce8bc21c" }, + { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98d5f7fc364bb9c4c4123d149406fbee063f2e8c2cff19a12f13e50faa146237" }, + { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:51ffba582c95a281e5a3f71eacdafc96b9a1835ddae245385639458fff197034" }, + { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3950d3c340c9d70889630ef81fba8666abfd0cf0aa19fd9c3a55634e0b383b0f" }, + { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:522fba1770aad8f7eb189f21fca591a51d96dcc749859088f462281324aec30b" }, + { file = "crc32c-2.7.1-cp39-cp39-win32.whl", hash = "sha256:812723e222b6a9fe0562554d72f4f072c3a95720c60ee500984e7d0e568caac3" }, + { file = "crc32c-2.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:6793fcfe9d4130230d196abbe4021c01ffe8e85c92633bf3c8559f9836c227f5" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:2e83fedebcdeb80c19e76b7a0e5103528bb062521c40702bf34516a429e81df3" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30004a7383538ef93bda9b22f7b3805bc0aa5625ab2675690e1b676b19417d4b" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a01b0983aa87f517c12418f9898ecf2083bf86f4ea04122e053357c3edb0d73f" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb2b963c42128b38872e9ed63f04a73ce1ff89a1dfad7ea38add6fe6296497b8" }, + { file = "crc32c-2.7.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cdd5e576fee5d255c1e68a4dae4420f21e57e6f05900b38d5ae47c713fc3330d" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:79f0ff50863aeb441fbfa87e9db6542ddfe3e941189dece832b0af2e454dbab0" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cd27a1e400d77e9872fa1303e8f9d30bd050df35ee4858354ce0b59f8227d32" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:274739b3e1591bd4b7ec98764f2f79c6fbcc0f7d7676d5f17369832fe14ee4f0" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:050f52045b4a033a245e0ee4357e1a793de5af6496c82250ef13d8cb90a21e20" }, + { file = "crc32c-2.7.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ceb4ca126f75694bda020a307221563d3c522719c0acedcc81ffb985b4867c94" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:eabefe7a6fb5dfc6318fb35f4d98893baef17ebda9b311498e870526d32168e7" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:217edd9ba8c5f0c3ad60c82a11fa78f01162fa106fd7f5d17175dac6bf1eedf9" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15d640d9d4aa213aec6c837f602081a17d1522f8cd78b52334b62ee27b083410" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:519878822bf9bdead63c25a5e4bdc26d2eae9da6056f92b9b5f3023c08f1d016" }, + { file = "crc32c-2.7.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:2bf69cfa4c3ea9f060fe06db00b7e34f771c83f73dd2c3568c2c9019479e34c2" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e89d51c90f6730b67b12c97d49099ba18d0fdce18541fab94d2be95d1c939adb" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:488a0feba1bb005d0dd2f702c1da4849d083e88d82cd27b83ac2d2d93af80755" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:919262b7a12ef63f222ec19c0e092f39268802652e11669315257ae6249ec79f" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4181240f6080c38eec9dd1539cd23a304a12100d3f4ffe43234f32064fae5ef0" }, + { file = "crc32c-2.7.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fedde1e53507d0ede1980e8109442edd108c04ab100abcd5145c274820dacd4f" }, + { file = "crc32c-2.7.1.tar.gz", hash = "sha256:f91b144a21eef834d64178e01982bb9179c354b3e9e5f4c803b0e5096384968c" }, +] + +[[package]] +name = "dask" +version = "2025.9.1" +description = "Parallel PyData with Task Scheduling" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + { file = "dask-2025.9.1-py3-none-any.whl", hash = "sha256:2a8a7dc933caaea2f47745a65a6ec93d9e616e12aab53b4f03ee161d31939110" }, + { file = "dask-2025.9.1.tar.gz", hash = "sha256:718df73e1fd3d7e2b8546e0f04ce08e1ed7f9aa3da1eecd0c1f44c8b6d52f7e0" }, +] + +[package.dependencies] +click = ">=8.1" +cloudpickle = ">=3.0.0" +fsspec = ">=2021.09.0" +packaging = ">=20.0" +partd = ">=1.4.0" +pyyaml = ">=5.3.1" +toolz = ">=0.10.0" + +[package.extras] +array = ["numpy (>=1.24)"] +complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=14.0.1)"] +dataframe = ["dask[array]", "pandas (>=2.0)", "pyarrow (>=14.0.1)"] +diagnostics = ["bokeh (>=3.1.0)", "jinja2 (>=2.10.3)"] +distributed = ["distributed (==2025.9.1)"] +test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] + +[[package]] +name = "debugpy" +version = "1.8.15" +description = "An implementation of the Debug Adapter Protocol for Python" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "debugpy-1.8.15-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e9a8125c85172e3ec30985012e7a81ea5e70bbb836637f8a4104f454f9b06c97" }, + { file = "debugpy-1.8.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fd0b6b5eccaa745c214fd240ea82f46049d99ef74b185a3517dad3ea1ec55d9" }, + { file = "debugpy-1.8.15-cp310-cp310-win32.whl", hash = "sha256:8181cce4d344010f6bfe94a531c351a46a96b0f7987750932b2908e7a1e14a55" }, + { file = "debugpy-1.8.15-cp310-cp310-win_amd64.whl", hash = "sha256:af2dcae4e4cd6e8b35f982ccab29fe65f7e8766e10720a717bc80c464584ee21" }, + { file = "debugpy-1.8.15-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:babc4fb1962dd6a37e94d611280e3d0d11a1f5e6c72ac9b3d87a08212c4b6dd3" }, + { file = "debugpy-1.8.15-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f778e68f2986a58479d0ac4f643e0b8c82fdd97c2e200d4d61e7c2d13838eb53" }, + { file = "debugpy-1.8.15-cp311-cp311-win32.whl", hash = "sha256:f9d1b5abd75cd965e2deabb1a06b0e93a1546f31f9f621d2705e78104377c702" }, + { file = "debugpy-1.8.15-cp311-cp311-win_amd64.whl", hash = "sha256:62954fb904bec463e2b5a415777f6d1926c97febb08ef1694da0e5d1463c5c3b" }, + { file = "debugpy-1.8.15-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:3dcc7225cb317469721ab5136cda9ff9c8b6e6fb43e87c9e15d5b108b99d01ba" }, + { file = "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" }, + { file = "debugpy-1.8.15-cp312-cp312-win32.whl", hash = "sha256:b08e9b0bc260cf324c890626961dad4ffd973f7568fbf57feb3c3a65ab6b6327" }, + { file = "debugpy-1.8.15-cp312-cp312-win_amd64.whl", hash = "sha256:e2a4fe357c92334272eb2845fcfcdbec3ef9f22c16cf613c388ac0887aed15fa" }, + { file = "debugpy-1.8.15-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:f5e01291ad7d6649aed5773256c5bba7a1a556196300232de1474c3c372592bf" }, + { file = "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" }, + { file = "debugpy-1.8.15-cp313-cp313-win32.whl", hash = "sha256:fcf0748d4f6e25f89dc5e013d1129ca6f26ad4da405e0723a4f704583896a709" }, + { file = "debugpy-1.8.15-cp313-cp313-win_amd64.whl", hash = "sha256:73c943776cb83e36baf95e8f7f8da765896fd94b05991e7bc162456d25500683" }, + { file = "debugpy-1.8.15-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:054cd4935bd2e4964dfe1aeee4d6bca89d0c833366776fc35387f8a2f517dd00" }, + { file = "debugpy-1.8.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21c4288e662997df3176c4b9d93ee1393913fbaf320732be332d538000c53208" }, + { file = "debugpy-1.8.15-cp38-cp38-win32.whl", hash = "sha256:aaa8ce6a37d764f93fe583d7c6ca58eb7550b36941387483db113125f122bb0d" }, + { file = "debugpy-1.8.15-cp38-cp38-win_amd64.whl", hash = "sha256:71cdf7f676af78e70f005c7fad2ef9da0edc2a24befbf3ab146a51f0d58048c2" }, + { file = "debugpy-1.8.15-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:085b6d0adb3eb457c2823ac497a0690b10a99eff8b01c01a041e84579f114b56" }, + { file = "debugpy-1.8.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd546a405381d17527814852642df0a74b7da8acc20ae5f3cfad0b7c86419511" }, + { file = "debugpy-1.8.15-cp39-cp39-win32.whl", hash = "sha256:ae0d445fe11ff4351428e6c2389e904e1cdcb4a47785da5a5ec4af6c5b95fce5" }, + { file = "debugpy-1.8.15-cp39-cp39-win_amd64.whl", hash = "sha256:de7db80189ca97ab4b10a87e4039cfe4dd7ddfccc8f33b5ae40fcd33792fc67a" }, + { file = "debugpy-1.8.15-py2.py3-none-any.whl", hash = "sha256:bce2e6c5ff4f2e00b98d45e7e01a49c7b489ff6df5f12d881c67d2f1ac635f3d" }, + { file = "debugpy-1.8.15.tar.gz", hash = "sha256:58d7a20b7773ab5ee6bdfb2e6cf622fdf1e40c9d5aef2857d85391526719ac00" }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +description = "Decorators for Humans" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a" }, + { file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360" }, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +description = "XML bomb protection for Python stdlib modules" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] +files = [ + {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, + {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, +] + [[package]] name = "distlib" version = "0.4.0" @@ -1120,6 +1389,65 @@ http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] zstd = ["zstandard (>=0.18.0)"] +[[package]] +name = "h11" +version = "0.16.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86" }, + { file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55" }, + { file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8" }, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.16" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<1.0)"] + +[[package]] +name = "httpx" +version = "0.28.1" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad" }, + { file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc" }, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" + +[package.extras] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] + [[package]] name = "identify" version = "2.6.1" @@ -1310,6 +1638,160 @@ docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alab qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] +[[package]] +name = "ipykernel" +version = "6.29.5" +description = "IPython Kernel for Jupyter" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, + {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, +] + +[package.dependencies] +appnope = {version = "*", markers = "platform_system == \"Darwin\""} +comm = ">=0.1.1" +debugpy = ">=1.6.5" +ipython = ">=7.23.1" +jupyter-client = ">=6.1.12" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +matplotlib-inline = ">=0.1" +nest-asyncio = "*" +packaging = "*" +psutil = "*" +pyzmq = ">=24" +tornado = ">=6.1" +traitlets = ">=5.4.0" + +[package.extras] +cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] +pyqt5 = ["pyqt5"] +pyside6 = ["pyside6"] +test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "ipython" +version = "9.4.0" +description = "IPython: Productive Interactive Computing" +optional = false +python-versions = ">=3.11" +groups = ["dev"] +files = [ + { file = "ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066" }, + { file = "ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270" }, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +decorator = "*" +ipython-pygments-lexers = "*" +jedi = ">=0.16" +matplotlib-inline = "*" +pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} +prompt_toolkit = ">=3.0.41,<3.1.0" +pygments = ">=2.4.0" +stack_data = "*" +traitlets = ">=5.13.0" + +[package.extras] +all = ["ipython[doc,matplotlib,test,test-extra]"] +black = ["black"] +doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinx_toml (==0.0.4)", "typing_extensions"] +matplotlib = ["matplotlib"] +test = ["packaging", "pytest", "pytest-asyncio (<0.22)", "testpath"] +test-extra = ["curio", "ipykernel", "ipython[test]", "jupyter_ai", "matplotlib (!=3.2.0)", "nbclient", "nbformat", "numpy (>=1.23)", "pandas", "trio"] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +description = "Defines a variety of Pygments lexers for highlighting IPython code." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c" }, + { file = "ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81" }, +] + +[package.dependencies] +pygments = "*" + +[[package]] +name = "ipywidgets" +version = "8.1.7" +description = "Jupyter interactive widgets" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + { file = "ipywidgets-8.1.7-py3-none-any.whl", hash = "sha256:764f2602d25471c213919b8a1997df04bef869251db4ca8efba1b76b1bd9f7bb" }, + { file = "ipywidgets-8.1.7.tar.gz", hash = "sha256:15f1ac050b9ccbefd45dccfbb2ef6bed0029d8278682d569d71b8dd96bee0376" }, +] + +[package.dependencies] +comm = ">=0.1.3" +ipython = ">=6.1.0" +jupyterlab_widgets = ">=3.0.15,<3.1.0" +traitlets = ">=4.3.1" +widgetsnbextension = ">=4.0.14,<4.1.0" + +[package.extras] +test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] + +[[package]] +name = "isoduration" +version = "20.11.0" +description = "Operations with ISO 8601 durations" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, + {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, +] + +[package.dependencies] +arrow = ">=0.15.0" + +[[package]] +name = "isort" +version = "7.0.0" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.10.0" +groups = ["dev"] +files = [ + { file = "isort-7.0.0-py3-none-any.whl", hash = "sha256:1bcabac8bc3c36c7fb7b98a76c8abb18e0f841a3ba81decac7691008592499c1" }, + { file = "isort-7.0.0.tar.gz", hash = "sha256:5513527951aadb3ac4292a41a16cbc50dd1642432f5e8c20057d414bdafb4187" }, +] + +[package.extras] +colors = ["colorama"] +plugins = ["setuptools"] + +[[package]] +name = "jedi" +version = "0.19.2" +description = "An autocompletion tool for Python that can be used for text editors." +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + { file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9" }, + { file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0" }, +] + +[package.dependencies] +parso = ">=0.8.4,<0.9.0" + +[package.extras] +docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] +qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] +testing = ["Django", "attrs", "colorama", "docopt", "pytest (<9.0.0)"] + [[package]] name = "jinja2" version = "3.1.6" @@ -1780,6 +2262,21 @@ files = [ {file = "markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698"}, ] +[[package]] +name = "matplotlib-inline" +version = "0.1.7" +description = "Inline Matplotlib backend for Jupyter" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, + {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, +] + +[package.dependencies] +traitlets = "*" + [[package]] name = "mergedeep" version = "1.3.4" @@ -1787,8 +2284,20 @@ description = "A deep merge function for 🐍." optional = false python-versions = ">=3.8" files = [ - {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, - {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, + { file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307" }, + { file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8" }, +] + +[[package]] +name = "mistune" +version = "3.1.3" +description = "A sane and fast Markdown parser with useful plugins and renderers" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9" }, + { file = "mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0" }, ] [[package]] @@ -2363,6 +2872,184 @@ files = [ {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, ] +[[package]] +name = "notebook" +version = "7.4.4" +description = "Jupyter Notebook - A web-based notebook environment for interactive computing" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "notebook-7.4.4-py3-none-any.whl", hash = "sha256:32840f7f777b6bff79bb101159336e9b332bdbfba1495b8739e34d1d65cbc1c0" }, + { file = "notebook-7.4.4.tar.gz", hash = "sha256:392fd501e266f2fb3466c6fcd3331163a2184968cb5c5accf90292e01dfe528c" }, +] + +[package.dependencies] +jupyter-server = ">=2.4.0,<3" +jupyterlab = ">=4.4.4,<4.5" +jupyterlab-server = ">=2.27.1,<3" +notebook-shim = ">=0.2,<0.3" +tornado = ">=6.2.0" + +[package.extras] +dev = ["hatch", "pre-commit"] +docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["importlib-resources (>=5.0) ; python_version < \"3.10\"", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] + +[[package]] +name = "notebook-shim" +version = "0.2.4" +description = "A shim layer for notebook traits and config" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, + {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, +] + +[package.dependencies] +jupyter-server = ">=1.8,<3" + +[package.extras] +test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"] + +[[package]] +name = "numcodecs" +version = "0.16.1" +description = "A Python package providing buffer compression and transformation codecs for use in data storage and communication applications." +optional = false +python-versions = ">=3.11" +groups = ["main"] +files = [ + { file = "numcodecs-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5348a25aefbce37ea7c00c3363d36176155233c95597e5905a932e9620df960d" }, + { file = "numcodecs-0.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2058b0a985470809c720d2457758b61e6c9495a49d5f20dfac9b5ebabd8848eb" }, + { file = "numcodecs-0.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b216b6d7bc207b85d41fddbc25b09fd00d76e265454db6e3fb09d5da0216397" }, + { file = "numcodecs-0.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2308d56c4f84a5b942f8668b4adedd3d9cdd6a22e6e6e20768ec356c77050f38" }, + { file = "numcodecs-0.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:acd8d68b4b815e62cb91e6064a53dac51ee99849350784ee16dd52cdbb4bc70f" }, + { file = "numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122" }, + { file = "numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458" }, + { file = "numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40" }, + { file = "numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609" }, + { file = "numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df" }, + { file = "numcodecs-0.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2ad8ee940315f59188accfc3f2d39726a4ca0d76b49bf8d0018e121f01c49028" }, + { file = "numcodecs-0.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:179ca7bf3525a0f7379df7767d87dd495253de44597cb7e511198b28b09da633" }, + { file = "numcodecs-0.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e2babbb50bf348ae982818d5560af330eab0dcd925fb0e49509785ad57d11db" }, + { file = "numcodecs-0.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4b29d8d3284b72bfad4fb83d672a17f497ae86ee1ef8087bac7222b620d3d91" }, + { file = "numcodecs-0.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:06489635f43e1a959aea73cb830d78cf3adb07ac5f34daccb92091e4d9ac6b07" }, + { file = "numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1" }, +] + +[package.dependencies] +crc32c = { version = ">=2.7", optional = true, markers = "extra == \"crc32c\"" } +numpy = ">=1.24" +typing_extensions = "*" + +[package.extras] +crc32c = ["crc32c (>=2.7)"] +docs = ["numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-issues"] +msgpack = ["msgpack"] +pcodec = ["pcodec (>=0.3,<0.4)"] +test = ["coverage", "pytest", "pytest-cov"] +test-extras = ["importlib_metadata"] +zfpy = ["zfpy (>=1.0.0)"] + +[[package]] +name = "numpy" +version = "2.3.3" +description = "Fundamental package for array computing in Python" +optional = false +python-versions = ">=3.11" +groups = ["main"] +files = [ + { file = "numpy-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ffc4f5caba7dfcbe944ed674b7eef683c7e94874046454bb79ed7ee0236f59d" }, + { file = "numpy-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7e946c7170858a0295f79a60214424caac2ffdb0063d4d79cb681f9aa0aa569" }, + { file = "numpy-2.3.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:cd4260f64bc794c3390a63bf0728220dd1a68170c169088a1e0dfa2fde1be12f" }, + { file = "numpy-2.3.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:f0ddb4b96a87b6728df9362135e764eac3cfa674499943ebc44ce96c478ab125" }, + { file = "numpy-2.3.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:afd07d377f478344ec6ca2b8d4ca08ae8bd44706763d1efb56397de606393f48" }, + { file = "numpy-2.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc92a5dedcc53857249ca51ef29f5e5f2f8c513e22cfb90faeb20343b8c6f7a6" }, + { file = "numpy-2.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7af05ed4dc19f308e1d9fc759f36f21921eb7bbfc82843eeec6b2a2863a0aefa" }, + { file = "numpy-2.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:433bf137e338677cebdd5beac0199ac84712ad9d630b74eceeb759eaa45ddf30" }, + { file = "numpy-2.3.3-cp311-cp311-win32.whl", hash = "sha256:eb63d443d7b4ffd1e873f8155260d7f58e7e4b095961b01c91062935c2491e57" }, + { file = "numpy-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:ec9d249840f6a565f58d8f913bccac2444235025bbb13e9a4681783572ee3caa" }, + { file = "numpy-2.3.3-cp311-cp311-win_arm64.whl", hash = "sha256:74c2a948d02f88c11a3c075d9733f1ae67d97c6bdb97f2bb542f980458b257e7" }, + { file = "numpy-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cfdd09f9c84a1a934cde1eec2267f0a43a7cd44b2cca4ff95b7c0d14d144b0bf" }, + { file = "numpy-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb32e3cf0f762aee47ad1ddc6672988f7f27045b0783c887190545baba73aa25" }, + { file = "numpy-2.3.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396b254daeb0a57b1fe0ecb5e3cff6fa79a380fa97c8f7781a6d08cd429418fe" }, + { file = "numpy-2.3.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:067e3d7159a5d8f8a0b46ee11148fc35ca9b21f61e3c49fbd0a027450e65a33b" }, + { file = "numpy-2.3.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c02d0629d25d426585fb2e45a66154081b9fa677bc92a881ff1d216bc9919a8" }, + { file = "numpy-2.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9192da52b9745f7f0766531dcfa978b7763916f158bb63bdb8a1eca0068ab20" }, + { file = "numpy-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cd7de500a5b66319db419dc3c345244404a164beae0d0937283b907d8152e6ea" }, + { file = "numpy-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:93d4962d8f82af58f0b2eb85daaf1b3ca23fe0a85d0be8f1f2b7bb46034e56d7" }, + { file = "numpy-2.3.3-cp312-cp312-win32.whl", hash = "sha256:5534ed6b92f9b7dca6c0a19d6df12d41c68b991cef051d108f6dbff3babc4ebf" }, + { file = "numpy-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:497d7cad08e7092dba36e3d296fe4c97708c93daf26643a1ae4b03f6294d30eb" }, + { file = "numpy-2.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:ca0309a18d4dfea6fc6262a66d06c26cfe4640c3926ceec90e57791a82b6eee5" }, + { file = "numpy-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f5415fb78995644253370985342cd03572ef8620b934da27d77377a2285955bf" }, + { file = "numpy-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d00de139a3324e26ed5b95870ce63be7ec7352171bc69a4cf1f157a48e3eb6b7" }, + { file = "numpy-2.3.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9dc13c6a5829610cc07422bc74d3ac083bd8323f14e2827d992f9e52e22cd6a6" }, + { file = "numpy-2.3.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:d79715d95f1894771eb4e60fb23f065663b2298f7d22945d66877aadf33d00c7" }, + { file = "numpy-2.3.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:952cfd0748514ea7c3afc729a0fc639e61655ce4c55ab9acfab14bda4f402b4c" }, + { file = "numpy-2.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5b83648633d46f77039c29078751f80da65aa64d5622a3cd62aaef9d835b6c93" }, + { file = "numpy-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b001bae8cea1c7dfdb2ae2b017ed0a6f2102d7a70059df1e338e307a4c78a8ae" }, + { file = "numpy-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8e9aced64054739037d42fb84c54dd38b81ee238816c948c8f3ed134665dcd86" }, + { file = "numpy-2.3.3-cp313-cp313-win32.whl", hash = "sha256:9591e1221db3f37751e6442850429b3aabf7026d3b05542d102944ca7f00c8a8" }, + { file = "numpy-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f0dadeb302887f07431910f67a14d57209ed91130be0adea2f9793f1a4f817cf" }, + { file = "numpy-2.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:3c7cf302ac6e0b76a64c4aecf1a09e51abd9b01fc7feee80f6c43e3ab1b1dbc5" }, + { file = "numpy-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:eda59e44957d272846bb407aad19f89dc6f58fecf3504bd144f4c5cf81a7eacc" }, + { file = "numpy-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:823d04112bc85ef5c4fda73ba24e6096c8f869931405a80aa8b0e604510a26bc" }, + { file = "numpy-2.3.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:40051003e03db4041aa325da2a0971ba41cf65714e65d296397cc0e32de6018b" }, + { file = "numpy-2.3.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ee9086235dd6ab7ae75aba5662f582a81ced49f0f1c6de4260a78d8f2d91a19" }, + { file = "numpy-2.3.3-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94fcaa68757c3e2e668ddadeaa86ab05499a70725811e582b6a9858dd472fb30" }, + { file = "numpy-2.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da1a74b90e7483d6ce5244053399a614b1d6b7bc30a60d2f570e5071f8959d3e" }, + { file = "numpy-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2990adf06d1ecee3b3dcbb4977dfab6e9f09807598d647f04d385d29e7a3c3d3" }, + { file = "numpy-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ed635ff692483b8e3f0fcaa8e7eb8a75ee71aa6d975388224f70821421800cea" }, + { file = "numpy-2.3.3-cp313-cp313t-win32.whl", hash = "sha256:a333b4ed33d8dc2b373cc955ca57babc00cd6f9009991d9edc5ddbc1bac36bcd" }, + { file = "numpy-2.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4384a169c4d8f97195980815d6fcad04933a7e1ab3b530921c3fef7a1c63426d" }, + { file = "numpy-2.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:75370986cc0bc66f4ce5110ad35aae6d182cc4ce6433c40ad151f53690130bf1" }, + { file = "numpy-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cd052f1fa6a78dee696b58a914b7229ecfa41f0a6d96dc663c1220a55e137593" }, + { file = "numpy-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:414a97499480067d305fcac9716c29cf4d0d76db6ebf0bf3cbce666677f12652" }, + { file = "numpy-2.3.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:50a5fe69f135f88a2be9b6ca0481a68a136f6febe1916e4920e12f1a34e708a7" }, + { file = "numpy-2.3.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:b912f2ed2b67a129e6a601e9d93d4fa37bef67e54cac442a2f588a54afe5c67a" }, + { file = "numpy-2.3.3-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9e318ee0596d76d4cb3d78535dc005fa60e5ea348cd131a51e99d0bdbe0b54fe" }, + { file = "numpy-2.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce020080e4a52426202bdb6f7691c65bb55e49f261f31a8f506c9f6bc7450421" }, + { file = "numpy-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e6687dc183aa55dae4a705b35f9c0f8cb178bcaa2f029b241ac5356221d5c021" }, + { file = "numpy-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d8f3b1080782469fdc1718c4ed1d22549b5fb12af0d57d35e992158a772a37cf" }, + { file = "numpy-2.3.3-cp314-cp314-win32.whl", hash = "sha256:cb248499b0bc3be66ebd6578b83e5acacf1d6cb2a77f2248ce0e40fbec5a76d0" }, + { file = "numpy-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:691808c2b26b0f002a032c73255d0bd89751425f379f7bcd22d140db593a96e8" }, + { file = "numpy-2.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:9ad12e976ca7b10f1774b03615a2a4bab8addce37ecc77394d8e986927dc0dfe" }, + { file = "numpy-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9cc48e09feb11e1db00b320e9d30a4151f7369afb96bd0e48d942d09da3a0d00" }, + { file = "numpy-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:901bf6123879b7f251d3631967fd574690734236075082078e0571977c6a8e6a" }, + { file = "numpy-2.3.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:7f025652034199c301049296b59fa7d52c7e625017cae4c75d8662e377bf487d" }, + { file = "numpy-2.3.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:533ca5f6d325c80b6007d4d7fb1984c303553534191024ec6a524a4c92a5935a" }, + { file = "numpy-2.3.3-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0edd58682a399824633b66885d699d7de982800053acf20be1eaa46d92009c54" }, + { file = "numpy-2.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:367ad5d8fbec5d9296d18478804a530f1191e24ab4d75ab408346ae88045d25e" }, + { file = "numpy-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8f6ac61a217437946a1fa48d24c47c91a0c4f725237871117dea264982128097" }, + { file = "numpy-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:179a42101b845a816d464b6fe9a845dfaf308fdfc7925387195570789bb2c970" }, + { file = "numpy-2.3.3-cp314-cp314t-win32.whl", hash = "sha256:1250c5d3d2562ec4174bce2e3a1523041595f9b651065e4a4473f5f48a6bc8a5" }, + { file = "numpy-2.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:b37a0b2e5935409daebe82c1e42274d30d9dd355852529eab91dab8dcca7419f" }, + { file = "numpy-2.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:78c9f6560dc7e6b3990e32df7ea1a50bbd0e2a111e05209963f5ddcab7073b0b" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1e02c7159791cd481e1e6d5ddd766b62a4d5acf8df4d4d1afe35ee9c5c33a41e" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:dca2d0fc80b3893ae72197b39f69d55a3cd8b17ea1b50aa4c62de82419936150" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:99683cbe0658f8271b333a1b1b4bb3173750ad59c0c61f5bbdc5b318918fffe3" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:d9d537a39cc9de668e5cd0e25affb17aec17b577c6b3ae8a3d866b479fbe88d0" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8596ba2f8af5f93b01d97563832686d20206d303024777f6dfc2e7c7c3f1850e" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1ec5615b05369925bd1125f27df33f3b6c8bc10d788d5999ecd8769a1fa04db" }, + { file = "numpy-2.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:2e267c7da5bf7309670523896df97f93f6e469fb931161f483cd6882b3b1a5dc" }, + { file = "numpy-2.3.3.tar.gz", hash = "sha256:ddc7c39727ba62b80dfdbedf400d1c10ddfa8eefbd7ec8dcb118be8b56d31029" }, +] + +[[package]] +name = "overrides" +version = "7.7.0" +description = "A decorator to automatically detect mismatch when overriding a method." +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, + {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, +] + [[package]] name = "packaging" version = "26.0" @@ -2382,8 +3069,8 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, - {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, + { file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591" }, + { file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945" }, ] [package.extras] @@ -2878,6 +3565,89 @@ pyyaml = "*" [package.extras] extra = ["pygments (>=2.19.1)"] +[[package]] +name = "pyparsing" +version = "3.2.5" +description = "pyparsing - Classes and methods to define and execute parsing grammars" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e" }, + { file = "pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6" }, +] + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + +[[package]] +name = "pyproj" +version = "3.7.2" +description = "Python interface to PROJ (cartographic projections and coordinate transformations library)" +optional = false +python-versions = ">=3.11" +groups = ["main"] +files = [ + { file = "pyproj-3.7.2-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:2514d61f24c4e0bb9913e2c51487ecdaeca5f8748d8313c933693416ca41d4d5" }, + { file = "pyproj-3.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:8693ca3892d82e70de077701ee76dd13d7bca4ae1c9d1e739d72004df015923a" }, + { file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5e26484d80fea56273ed1555abaea161e9661d81a6c07815d54b8e883d4ceb25" }, + { file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:281cb92847814e8018010c48b4069ff858a30236638631c1a91dd7bfa68f8a8a" }, + { file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9c8577f0b7bb09118ec2e57e3babdc977127dd66326d6c5d755c76b063e6d9dc" }, + { file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a23f59904fac3a5e7364b3aa44d288234af267ca041adb2c2b14a903cd5d3ac5" }, + { file = "pyproj-3.7.2-cp311-cp311-win32.whl", hash = "sha256:f2af4ed34b2cf3e031a2d85b067a3ecbd38df073c567e04b52fa7a0202afde8a" }, + { file = "pyproj-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:0b7cb633565129677b2a183c4d807c727d1c736fcb0568a12299383056e67433" }, + { file = "pyproj-3.7.2-cp311-cp311-win_arm64.whl", hash = "sha256:38b08d85e3a38e455625b80e9eb9f78027c8e2649a21dec4df1f9c3525460c71" }, + { file = "pyproj-3.7.2-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:0a9bb26a6356fb5b033433a6d1b4542158fb71e3c51de49b4c318a1dff3aeaab" }, + { file = "pyproj-3.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:567caa03021178861fad27fabde87500ec6d2ee173dd32f3e2d9871e40eebd68" }, + { file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:c203101d1dc3c038a56cff0447acc515dd29d6e14811406ac539c21eed422b2a" }, + { file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1edc34266c0c23ced85f95a1ee8b47c9035eae6aca5b6b340327250e8e281630" }, + { file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aa9f26c21bc0e2dc3d224cb1eb4020cf23e76af179a7c66fea49b828611e4260" }, + { file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9428b318530625cb389b9ddc9c51251e172808a4af79b82809376daaeabe5e9" }, + { file = "pyproj-3.7.2-cp312-cp312-win32.whl", hash = "sha256:b3d99ed57d319da042f175f4554fc7038aa4bcecc4ac89e217e350346b742c9d" }, + { file = "pyproj-3.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:11614a054cd86a2ed968a657d00987a86eeb91fdcbd9ad3310478685dc14a128" }, + { file = "pyproj-3.7.2-cp312-cp312-win_arm64.whl", hash = "sha256:509a146d1398bafe4f53273398c3bb0b4732535065fa995270e52a9d3676bca3" }, + { file = "pyproj-3.7.2-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:19466e529b1b15eeefdf8ff26b06fa745856c044f2f77bf0edbae94078c1dfa1" }, + { file = "pyproj-3.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:c79b9b84c4a626c5dc324c0d666be0bfcebd99f7538d66e8898c2444221b3da7" }, + { file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ceecf374cacca317bc09e165db38ac548ee3cad07c3609442bd70311c59c21aa" }, + { file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5141a538ffdbe4bfd157421828bb2e07123a90a7a2d6f30fa1462abcfb5ce681" }, + { file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f000841e98ea99acbb7b8ca168d67773b0191de95187228a16110245c5d954d5" }, + { file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8115faf2597f281a42ab608ceac346b4eb1383d3b45ab474fd37341c4bf82a67" }, + { file = "pyproj-3.7.2-cp313-cp313-win32.whl", hash = "sha256:f18c0579dd6be00b970cb1a6719197fceecc407515bab37da0066f0184aafdf3" }, + { file = "pyproj-3.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:bb41c29d5f60854b1075853fe80c58950b398d4ebb404eb532536ac8d2834ed7" }, + { file = "pyproj-3.7.2-cp313-cp313-win_arm64.whl", hash = "sha256:2b617d573be4118c11cd96b8891a0b7f65778fa7733ed8ecdb297a447d439100" }, + { file = "pyproj-3.7.2-cp313-cp313t-macosx_13_0_x86_64.whl", hash = "sha256:d27b48f0e81beeaa2b4d60c516c3a1cfbb0c7ff6ef71256d8e9c07792f735279" }, + { file = "pyproj-3.7.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:55a3610d75023c7b1c6e583e48ef8f62918e85a2ae81300569d9f104d6684bb6" }, + { file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8d7349182fa622696787cc9e195508d2a41a64765da9b8a6bee846702b9e6220" }, + { file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:d230b186eb876ed4f29a7c5ee310144c3a0e44e89e55f65fb3607e13f6db337c" }, + { file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:237499c7862c578d0369e2b8ac56eec550e391a025ff70e2af8417139dabb41c" }, + { file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8c225f5978abd506fd9a78eaaf794435e823c9156091cabaab5374efb29d7f69" }, + { file = "pyproj-3.7.2-cp313-cp313t-win32.whl", hash = "sha256:2da731876d27639ff9d2d81c151f6ab90a1546455fabd93368e753047be344a2" }, + { file = "pyproj-3.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f54d91ae18dd23b6c0ab48126d446820e725419da10617d86a1b69ada6d881d3" }, + { file = "pyproj-3.7.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fc52ba896cfc3214dc9f9ca3c0677a623e8fdd096b257c14a31e719d21ff3fdd" }, + { file = "pyproj-3.7.2-cp314-cp314-macosx_13_0_x86_64.whl", hash = "sha256:2aaa328605ace41db050d06bac1adc11f01b71fe95c18661497763116c3a0f02" }, + { file = "pyproj-3.7.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:35dccbce8201313c596a970fde90e33605248b66272595c061b511c8100ccc08" }, + { file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:25b0b7cb0042444c29a164b993c45c1b8013d6c48baa61dc1160d834a277e83b" }, + { file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:85def3a6388e9ba51f964619aa002a9d2098e77c6454ff47773bb68871024281" }, + { file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b1bccefec3875ab81eabf49059e2b2ea77362c178b66fd3528c3e4df242f1516" }, + { file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d5371ca114d6990b675247355a801925814eca53e6c4b2f1b5c0a956336ee36e" }, + { file = "pyproj-3.7.2-cp314-cp314-win32.whl", hash = "sha256:77f066626030f41be543274f5ac79f2a511fe89860ecd0914f22131b40a0ec25" }, + { file = "pyproj-3.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:5a964da1696b8522806f4276ab04ccfff8f9eb95133a92a25900697609d40112" }, + { file = "pyproj-3.7.2-cp314-cp314-win_arm64.whl", hash = "sha256:e258ab4dbd3cf627809067c0ba8f9884ea76c8e5999d039fb37a1619c6c3e1f6" }, + { file = "pyproj-3.7.2-cp314-cp314t-macosx_13_0_x86_64.whl", hash = "sha256:bbbac2f930c6d266f70ec75df35ef851d96fdb3701c674f42fd23a9314573b37" }, + { file = "pyproj-3.7.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:b7544e0a3d6339dc9151e9c8f3ea62a936ab7cc446a806ec448bbe86aebb979b" }, + { file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:f7f5133dca4c703e8acadf6f30bc567d39a42c6af321e7f81975c2518f3ed357" }, + { file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:5aff3343038d7426aa5076f07feb88065f50e0502d1b0d7c22ddfdd2c75a3f81" }, + { file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:b0552178c61f2ac1c820d087e8ba6e62b29442debddbb09d51c4bf8acc84d888" }, + { file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:47d87db2d2c436c5fd0409b34d70bb6cdb875cca2ebe7a9d1c442367b0ab8d59" }, + { file = "pyproj-3.7.2-cp314-cp314t-win32.whl", hash = "sha256:c9b6f1d8ad3e80a0ee0903a778b6ece7dca1d1d40f6d114ae01bc8ddbad971aa" }, + { file = "pyproj-3.7.2-cp314-cp314t-win_amd64.whl", hash = "sha256:1914e29e27933ba6f9822663ee0600f169014a2859f851c054c88cf5ea8a333c" }, + { file = "pyproj-3.7.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d9d25bae416a24397e0d85739f84d323b55f6511e45a522dd7d7eae70d10c7e4" }, + { file = "pyproj-3.7.2.tar.gz", hash = "sha256:39a0cf1ecc7e282d1d30f36594ebd55c9fae1fda8a2622cee5d100430628f88c" }, +] + +[package.dependencies] +certifi = "*" + [[package]] name = "pytest" version = "9.0.2" @@ -3106,8 +3876,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04"}, - {file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff"}, + { file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04" }, + { file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff" }, ] [package.dependencies] @@ -3892,6 +4662,33 @@ files = [ {file = "tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7"}, ] +[[package]] +name = "tzdata" +version = "2025.2" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +groups = ["main"] +files = [ + { file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8" }, + { file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9" }, +] + +[[package]] +name = "uri-template" +version = "1.3.0" +description = "RFC 6570 URI Template Processor" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, + {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, +] + +[package.extras] +dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"] + [[package]] name = "urllib3" version = "2.6.3" @@ -4116,6 +4913,145 @@ enabler = ["pytest-enabler (>=2.2)"] test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more_itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] type = ["pytest-mypy"] +[[package]] +name = "wcwidth" +version = "0.2.13" +description = "Measures the displayed width of unicode strings in a terminal" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, +] + +[[package]] +name = "webcolors" +version = "24.11.1" +description = "A library for working with the color formats defined by HTML and CSS." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9" }, + { file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6" }, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +optional = false +python-versions = "*" +groups = ["dev"] +files = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] + +[[package]] +name = "websocket-client" +version = "1.8.0" +description = "WebSocket client for Python with low level API options" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, + {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, +] + +[package.extras] +docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"] +optional = ["python-socks", "wsaccel"] +test = ["websockets"] + +[[package]] +name = "widgetsnbextension" +version = "4.0.14" +description = "Jupyter interactive widgets for Jupyter Notebook" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + { file = "widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575" }, + { file = "widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af" }, +] + +[[package]] +name = "xarray" +version = "2025.10.1" +description = "N-D labeled arrays and datasets in Python" +optional = false +python-versions = ">=3.11" +groups = ["main"] +files = [ + { file = "xarray-2025.10.1-py3-none-any.whl", hash = "sha256:a4e699433b87a7fac340951bc36648645eeef72bdd915ff055ac2fd99865a73d" }, + { file = "xarray-2025.10.1.tar.gz", hash = "sha256:3c2b5ad7389825bd624ada5ff26b01ac54b1aae72e2fe0d724d81d40a2bf5785" }, +] + +[package.dependencies] +numpy = ">=1.26" +packaging = ">=24.1" +pandas = ">=2.2" + +[package.extras] +accel = ["bottleneck", "flox (>=0.9)", "numba (>=0.62)", "numbagg (>=0.8)", "opt_einsum", "scipy (>=1.13)"] +complete = ["xarray[accel,etc,io,parallel,viz]"] +etc = ["sparse (>=0.15)"] +io = ["cftime", "fsspec", "h5netcdf", "netCDF4 (>=1.6.0)", "pooch", "pydap", "scipy (>=1.13)", "zarr (>=2.18)"] +parallel = ["dask[complete]"] +types = ["pandas-stubs", "scipy-stubs", "types-PyYAML", "types-Pygments", "types-colorama", "types-decorator", "types-defusedxml", "types-docutils", "types-networkx", "types-openpyxl", "types-pexpect", "types-psutil", "types-pycurl", "types-python-dateutil", "types-pytz", "types-requests", "types-setuptools"] +viz = ["cartopy (>=0.23)", "matplotlib", "nc-time-axis", "seaborn"] + +[[package]] +name = "zarr" +version = "3.1.3" +description = "An implementation of chunked, compressed, N-dimensional arrays for Python" +optional = false +python-versions = ">=3.11" +groups = ["main"] +files = [ + { file = "zarr-3.1.3-py3-none-any.whl", hash = "sha256:45f67f87f65f14fa453f99dd8110a5936b7ac69f3a21981d33e90407c80c302a" }, + { file = "zarr-3.1.3.tar.gz", hash = "sha256:01342f3e26a02ed5670db608a5576fbdb8d76acb5c280bd2d0082454b1ba6f79" }, +] + +[package.dependencies] +donfig = ">=0.8" +numcodecs = { version = ">=0.14", extras = ["crc32c"] } +numpy = ">=1.26" +packaging = ">=22.0" +typing-extensions = ">=4.9" + +[package.extras] +cli = ["typer"] +docs = ["astroid (<4)", "numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "pytest", "rich", "s3fs (>=2023.10.0)", "sphinx (==8.1.3)", "sphinx-autoapi (==3.4.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx-copybutton", "sphinx-design", "sphinx-issues", "sphinx-reredirects", "towncrier"] +gpu = ["cupy-cuda12x"] +optional = ["rich", "universal-pathlib"] +remote = ["fsspec (>=2023.10.0)", "obstore (>=0.5.1)"] +remote-tests = ["botocore", "fsspec (>=2023.10.0)", "moto[s3,server]", "obstore (>=0.5.1)", "requests", "s3fs (>=2023.10.0)"] +test = ["coverage (>=7.10)", "hypothesis", "mypy", "numpydoc", "packaging", "pytest (<8.4)", "pytest-accept", "pytest-asyncio", "pytest-cov", "pytest-xdist", "rich", "tomlkit", "uv"] + +[[package]] +name = "zipp" +version = "3.23.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e" }, + { file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166" }, +] + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more_itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] + [metadata] lock-version = "2.1" python-versions = ">=3.13" From b40ae3b40a1e44d80940437b50fbeee57ede87e3 Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sun, 12 Oct 2025 11:33:20 +0200 Subject: [PATCH 47/50] feature: In between commit Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Signed-off-by: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> --- poetry.lock | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/poetry.lock b/poetry.lock index 7d41b2f..7239f5d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3223,6 +3223,26 @@ files = [ [package.dependencies] ptyprocess = ">=0.5" +[[package]] +name = "pip-requirements-parser" +version = "32.0.1" +description = "pip requirements parser - a mostly correct pip requirements parsing library because it uses pip's own code." +optional = false +python-versions = ">=3.6.0" +groups = ["dev"] +files = [ + { file = "pip-requirements-parser-32.0.1.tar.gz", hash = "sha256:b4fa3a7a0be38243123cf9d1f3518da10c51bdb165a2b2985566247f9155a7d3" }, + { file = "pip_requirements_parser-32.0.1-py3-none-any.whl", hash = "sha256:4659bc2a667783e7a15d190f6fccf8b2486685b6dba4c19c3876314769c57526" }, +] + +[package.dependencies] +packaging = "*" +pyparsing = "*" + +[package.extras] +docs = ["Sphinx (>=3.3.1)", "doc8 (>=0.8.1)", "sphinx-rtd-theme (>=0.5.0)"] +testing = ["aboutcode-toolkit (>=6.0.0)", "black", "pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"] + [[package]] name = "platformdirs" version = "4.9.2" @@ -3524,6 +3544,21 @@ pyyaml = "*" [package.extras] extra = ["pygments (>=2.19.1)"] +[[package]] +name = "pyparsing" +version = "3.2.5" +description = "pyparsing - Classes and methods to define and execute parsing grammars" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + { file = "pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e" }, + { file = "pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6" }, +] + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + [[package]] name = "pyproj" version = "3.7.0" From 477af9090bab7ba23320b1e56232a95c3c868d87 Mon Sep 17 00:00:00 2001 From: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Mon, 23 Mar 2026 16:50:08 +0100 Subject: [PATCH 48/50] feature : First version Signed-off-by: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> --- poetry.lock | 958 +++++++++++++--------------------------------------- 1 file changed, 232 insertions(+), 726 deletions(-) diff --git a/poetry.lock b/poetry.lock index 7239f5d..71bff46 100644 --- a/poetry.lock +++ b/poetry.lock @@ -305,46 +305,22 @@ linting = ["black", "isort", "pycodestyle"] testing = ["pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"] [[package]] -name = "beautifulsoup4" -version = "4.13.4" -description = "Screen-scraping library" -optional = false -python-versions = ">=3.7.0" -groups = ["dev"] -files = [ - { file = "beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b" }, - { file = "beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195" }, -] - -[package.dependencies] -soupsieve = ">1.2" -typing-extensions = ">=4.0.0" - -[package.extras] -cchardet = ["cchardet"] -chardet = ["chardet"] -charset-normalizer = ["charset-normalizer"] -html5lib = ["html5lib"] -lxml = ["lxml"] - -[[package]] -name = "bleach" -version = "6.2.0" -description = "An easy safelist-based HTML-sanitizing tool." +name = "boolean-py" +version = "5.0" +description = "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL." optional = false -python-versions = ">=3.9" +python-versions = "*" groups = ["dev"] files = [ - { file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e" }, - { file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f" }, + {file = "boolean_py-5.0-py3-none-any.whl", hash = "sha256:ef28a70bd43115208441b53a045d1549e2f0ec6e3d08a9d142cbc41c1938e8d9"}, + {file = "boolean_py-5.0.tar.gz", hash = "sha256:60cbc4bad079753721d32649545505362c754e121570ada4658b852a3a318d95"}, ] -[package.dependencies] -tinycss2 = { version = ">=1.1.0,<1.5", optional = true, markers = "extra == \"css\"" } -webencodings = "*" - [package.extras] -css = ["tinycss2 (>=1.1.0,<1.5)"] +dev = ["build", "twine"] +docs = ["Sphinx (>=3.3.1)", "doc8 (>=0.8.1)", "sphinx-rtd-theme (>=0.5.0)", "sphinxcontrib-apidoc (>=0.3.0)"] +linting = ["black", "isort", "pycodestyle"] +testing = ["pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"] [[package]] name = "certifi" @@ -661,39 +637,21 @@ markers = { main = "platform_system == \"Windows\"" } [[package]] name = "colorlog" -version = "6.9.0" +version = "6.10.1" description = "Add colours to the output of Python's logging module." optional = false python-versions = ">=3.8" files = [ - { file = "colorlog-6.9.0-py3-none-any.whl", hash = "sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff" }, - { file = "colorlog-6.9.0.tar.gz", hash = "sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2" }, + {file = "colorlog-6.10.1-py3-none-any.whl", hash = "sha256:2d7e8348291948af66122cff006c9f8da6255d224e7cf8e37d8de2df3bad8c9c"}, + {file = "colorlog-6.10.1.tar.gz", hash = "sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321"}, ] [package.dependencies] -colorama = { version = "*", markers = "sys_platform == \"win32\"" } +colorama = {version = "*", markers = "sys_platform == \"win32\""} [package.extras] development = ["black", "flake8", "mypy", "pytest", "types-colorama"] -[[package]] -name = "comm" -version = "0.2.2" -description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, - {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, -] - -[package.dependencies] -traitlets = ">=4" - -[package.extras] -test = ["pytest"] - [[package]] name = "coverage" version = "7.6.4" @@ -883,133 +841,16 @@ diagnostics = ["bokeh (>=3.1.0)", "jinja2 (>=2.10.3)"] distributed = ["distributed (>=2026.1.2,<2026.1.3)"] test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] -[[package]] -name = "crc32c" -version = "2.7.1" -description = "A python package implementing the crc32c algorithm in hardware and software" -optional = false -python-versions = ">=3.7" -groups = ["main"] -files = [ - { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1fd1f9c6b50d7357736676278a1b8c8986737b8a1c76d7eab4baa71d0b6af67f" }, - { file = "crc32c-2.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:805c2be1bc0e251c48439a62b0422385899c15289483692bc70e78473c1039f1" }, - { file = "crc32c-2.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f4333e62b7844dfde112dbb8489fd2970358eddc3310db21e943a9f6994df749" }, - { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f0fadc741e79dc705e2d9ee967473e8a061d26b04310ed739f1ee292f33674f" }, - { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91ced31055d26d59385d708bbd36689e1a1d604d4b0ceb26767eb5a83156f85d" }, - { file = "crc32c-2.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36ffa999b72e3c17f6a066ae9e970b40f8c65f38716e436c39a33b809bc6ed9f" }, - { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e80114dd7f462297e54d5da1b9ff472e5249c5a2b406aa51c371bb0edcbf76bd" }, - { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:676f5b46da268b5190f9fb91b3f037a00d114b411313664438525db876adc71f" }, - { file = "crc32c-2.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8d0e660c9ed269e90692993a4457a932fc22c9cc96caf79dd1f1a84da85bb312" }, - { file = "crc32c-2.7.1-cp310-cp310-win32.whl", hash = "sha256:17a2c3f8c6d85b04b5511af827b5dbbda4e672d188c0b9f20a8156e93a1aa7b6" }, - { file = "crc32c-2.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3208764c29688f91a35392073229975dd7687b6cb9f76b919dae442cabcd5126" }, - { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:19e03a50545a3ef400bd41667d5525f71030488629c57d819e2dd45064f16192" }, - { file = "crc32c-2.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c03286b1e5ce9bed7090084f206aacd87c5146b4b10de56fe9e86cbbbf851cf" }, - { file = "crc32c-2.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:80ebbf144a1a56a532b353e81fa0f3edca4f4baa1bf92b1dde2c663a32bb6a15" }, - { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96b794fd11945298fdd5eb1290a812efb497c14bc42592c5c992ca077458eeba" }, - { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9df7194dd3c0efb5a21f5d70595b7a8b4fd9921fbbd597d6d8e7a11eca3e2d27" }, - { file = "crc32c-2.7.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d698eec444b18e296a104d0b9bb6c596c38bdcb79d24eba49604636e9d747305" }, - { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e07cf10ef852d219d179333fd706d1c415626f1f05e60bd75acf0143a4d8b225" }, - { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d2a051f296e6e92e13efee3b41db388931cdb4a2800656cd1ed1d9fe4f13a086" }, - { file = "crc32c-2.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1738259802978cdf428f74156175da6a5fdfb7256f647fdc0c9de1bc6cd7173" }, - { file = "crc32c-2.7.1-cp311-cp311-win32.whl", hash = "sha256:f7786d219a1a1bf27d0aa1869821d11a6f8e90415cfffc1e37791690d4a848a1" }, - { file = "crc32c-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:887f6844bb3ad35f0778cd10793ad217f7123a5422e40041231b8c4c7329649d" }, - { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f7d1c4e761fe42bf856130daf8b2658df33fe0ced3c43dadafdfeaa42b57b950" }, - { file = "crc32c-2.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:73361c79a6e4605204457f19fda18b042a94508a52e53d10a4239da5fb0f6a34" }, - { file = "crc32c-2.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:afd778fc8ac0ed2ffbfb122a9aa6a0e409a8019b894a1799cda12c01534493e0" }, - { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56ef661b34e9f25991fface7f9ad85e81bbc1b3fe3b916fd58c893eabe2fa0b8" }, - { file = "crc32c-2.7.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:571aa4429444b5d7f588e4377663592145d2d25eb1635abb530f1281794fc7c9" }, - { file = "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" }, - { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:99d17637c4867672cb8adeea007294e3c3df9d43964369516cfe2c1f47ce500a" }, - { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f4a400ac3c69a32e180d8753fd7ec7bccb80ade7ab0812855dce8a208e72495f" }, - { file = "crc32c-2.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:588587772e55624dd9c7a906ec9e8773ae0b6ac5e270fc0bc84ee2758eba90d5" }, - { file = "crc32c-2.7.1-cp312-cp312-win32.whl", hash = "sha256:9f14b60e5a14206e8173dd617fa0c4df35e098a305594082f930dae5488da428" }, - { file = "crc32c-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:7c810a246660a24dc818047dc5f89c7ce7b2814e1e08a8e99993f4103f7219e8" }, - { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:24949bffb06fc411cc18188d33357923cb935273642164d0bb37a5f375654169" }, - { file = "crc32c-2.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2d5d326e7e118d4fa60187770d86b66af2fdfc63ce9eeb265f0d3e7d49bebe0b" }, - { file = "crc32c-2.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba110df60c64c8e2d77a9425b982a520ccdb7abe42f06604f4d98a45bb1fff62" }, - { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c277f9d16a3283e064d54854af0976b72abaa89824955579b2b3f37444f89aae" }, - { file = "crc32c-2.7.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:881af0478a01331244e27197356929edbdeaef6a9f81b5c6bacfea18d2139289" }, - { file = "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" }, - { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2416c4d88696ac322632555c0f81ab35e15f154bc96055da6cf110d642dbc10" }, - { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:60254251b88ec9b9795215f0f9ec015a6b5eef8b2c5fba1267c672d83c78fc02" }, - { file = "crc32c-2.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:edefc0e46f3c37372183f70338e5bdee42f6789b62fcd36ec53aa933e9dfbeaf" }, - { file = "crc32c-2.7.1-cp313-cp313-win32.whl", hash = "sha256:813af8111218970fe2adb833c5e5239f091b9c9e76f03b4dd91aaba86e99b499" }, - { file = "crc32c-2.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:7d9ede7be8e4ec1c9e90aaf6884decbeef10e3473e6ddac032706d710cab5888" }, - { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:db9ac92294284b22521356715784b91cc9094eee42a5282ab281b872510d1831" }, - { file = "crc32c-2.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8fcd7f2f29a30dc92af64a9ee3d38bde0c82bd20ad939999427aac94bbd87373" }, - { file = "crc32c-2.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5c056ef043393085523e149276a7ce0cb534b872e04f3e20d74d9a94a75c0ad7" }, - { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03a92551a343702629af91f78d205801219692b6909f8fa126b830e332bfb0e0" }, - { file = "crc32c-2.7.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb9424ec1a8ca54763155a703e763bcede82e6569fe94762614bb2de1412d4e1" }, - { file = "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" }, - { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:57a20dfc27995f568f64775eea2bbb58ae269f1a1144561df5e4a4955f79db32" }, - { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:f7186d098bfd2cff25eac6880b7c7ad80431b90610036131c1c7dd0eab42a332" }, - { file = "crc32c-2.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:55a77e29a265418fa34bef15bd0f2c60afae5348988aaf35ed163b4bbf93cf37" }, - { file = "crc32c-2.7.1-cp313-cp313t-win32.whl", hash = "sha256:ae38a4b6aa361595d81cab441405fbee905c72273e80a1c010fb878ae77ac769" }, - { file = "crc32c-2.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:eee2a43b663feb6c79a6c1c6e5eae339c2b72cfac31ee54ec0209fa736cf7ee5" }, - { file = "crc32c-2.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:04a56e9f4995559fa86bcf5d0ed5c48505a36e2be1c41d70cae5c080d9a00b74" }, - { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88c5c9c21cd9fff593bb7dfe97d3287438c8aecbcc73d227f2366860a0663521" }, - { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:595146cb94ba0055301d273113add2af5859b467db41b50367f47870c2d0a81c" }, - { file = "crc32c-2.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9f3792872f1320961f33aaf0198edea371aee393bcc221fab66d10ecffd77d" }, - { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:999a40d75cd1696e779f6f99c29fa52be777197d1d9e3ae69cb919a05a369c1e" }, - { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:eff485526172cee7e6d1fa9c23913f92c7d38ab05674b0b578767c7b693faf5d" }, - { file = "crc32c-2.7.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:541dac90c64ed9ce05f85a71066567e854c1b40743a01d83fa2c66419a2e97b6" }, - { file = "crc32c-2.7.1-cp37-cp37m-win32.whl", hash = "sha256:7138ec26e79100c4cf4294ef40027a1cff26a1e23b7e5eb70efe5d7ff37cbc66" }, - { file = "crc32c-2.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:35a3ed12ac2e2551a07d246b7e6512ac39db021e006205a40c1cfd32ea73fcc3" }, - { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af062f11aea283b7e9c95f3a97fb6bb96ac08a9063f71621c2140237df141ada" }, - { file = "crc32c-2.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8f25ca521ecf7cccfff0ecae4d0538b5c0c7235d27bf098241f3e2bf86aed713" }, - { file = "crc32c-2.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1410bcd909be36ccbf8a52c45e4bddca77adfd4e80789ac3cd575c024086516d" }, - { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33fc8cb32f82685ebefd078e740925ea9da37a008ed5f43b68fc8324f8ca4a37" }, - { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad3dc6283ce53ad7d1dc5775003460110ab7eebf348efebe0486a531b28f8184" }, - { file = "crc32c-2.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:758ead20e122496764ae50db26bb90fb47fc4b6d242c8e99e87c3f1dae1f1dce" }, - { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e436d9044bbd51936f7aeb8b322543c516bf22371a17970a370a10af1661fa54" }, - { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:47e5be99057264b603e3cd88cf091985f33c16d3c8609f1c83ed6e72ec4179b4" }, - { file = "crc32c-2.7.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:280509210e622a236f16f031856847fd0d6704df662d7209da819ccfb40c6167" }, - { file = "crc32c-2.7.1-cp38-cp38-win32.whl", hash = "sha256:4ab48e048cfa123a9f9bdc5d4d687a3461723132c749c721a6d358605e6d470d" }, - { file = "crc32c-2.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:65471d1b1b6e10a404ca8200a4271d5bc0a552c3f5dcd943c1c7835f766ea02d" }, - { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:39ca842586084bca24f9c4ab43e2d99191b1186b2f89b2122b470d0730254d1b" }, - { file = "crc32c-2.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a911abc33d453b3f171a3200b1e18b3fc39c204670b5b0a353cca99e4c664332" }, - { file = "crc32c-2.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:22a72e81ec08a7ece6a35ac68d1ed32dd4a8be7949b164db88d4b4a4bade5c5a" }, - { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54d6f8c5be6815eabd6e3e90fa0bc13045183a6aa33a30dd684eb0f062b92213" }, - { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c855726d71dee7ae25f81c6b54293455fc66802f34d334d22bea1f6ce8bc21c" }, - { file = "crc32c-2.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98d5f7fc364bb9c4c4123d149406fbee063f2e8c2cff19a12f13e50faa146237" }, - { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:51ffba582c95a281e5a3f71eacdafc96b9a1835ddae245385639458fff197034" }, - { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3950d3c340c9d70889630ef81fba8666abfd0cf0aa19fd9c3a55634e0b383b0f" }, - { file = "crc32c-2.7.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:522fba1770aad8f7eb189f21fca591a51d96dcc749859088f462281324aec30b" }, - { file = "crc32c-2.7.1-cp39-cp39-win32.whl", hash = "sha256:812723e222b6a9fe0562554d72f4f072c3a95720c60ee500984e7d0e568caac3" }, - { file = "crc32c-2.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:6793fcfe9d4130230d196abbe4021c01ffe8e85c92633bf3c8559f9836c227f5" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:2e83fedebcdeb80c19e76b7a0e5103528bb062521c40702bf34516a429e81df3" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30004a7383538ef93bda9b22f7b3805bc0aa5625ab2675690e1b676b19417d4b" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a01b0983aa87f517c12418f9898ecf2083bf86f4ea04122e053357c3edb0d73f" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb2b963c42128b38872e9ed63f04a73ce1ff89a1dfad7ea38add6fe6296497b8" }, - { file = "crc32c-2.7.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cdd5e576fee5d255c1e68a4dae4420f21e57e6f05900b38d5ae47c713fc3330d" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:79f0ff50863aeb441fbfa87e9db6542ddfe3e941189dece832b0af2e454dbab0" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cd27a1e400d77e9872fa1303e8f9d30bd050df35ee4858354ce0b59f8227d32" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:274739b3e1591bd4b7ec98764f2f79c6fbcc0f7d7676d5f17369832fe14ee4f0" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:050f52045b4a033a245e0ee4357e1a793de5af6496c82250ef13d8cb90a21e20" }, - { file = "crc32c-2.7.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ceb4ca126f75694bda020a307221563d3c522719c0acedcc81ffb985b4867c94" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:eabefe7a6fb5dfc6318fb35f4d98893baef17ebda9b311498e870526d32168e7" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:217edd9ba8c5f0c3ad60c82a11fa78f01162fa106fd7f5d17175dac6bf1eedf9" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15d640d9d4aa213aec6c837f602081a17d1522f8cd78b52334b62ee27b083410" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:519878822bf9bdead63c25a5e4bdc26d2eae9da6056f92b9b5f3023c08f1d016" }, - { file = "crc32c-2.7.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:2bf69cfa4c3ea9f060fe06db00b7e34f771c83f73dd2c3568c2c9019479e34c2" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e89d51c90f6730b67b12c97d49099ba18d0fdce18541fab94d2be95d1c939adb" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:488a0feba1bb005d0dd2f702c1da4849d083e88d82cd27b83ac2d2d93af80755" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:919262b7a12ef63f222ec19c0e092f39268802652e11669315257ae6249ec79f" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4181240f6080c38eec9dd1539cd23a304a12100d3f4ffe43234f32064fae5ef0" }, - { file = "crc32c-2.7.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fedde1e53507d0ede1980e8109442edd108c04ab100abcd5145c274820dacd4f" }, - { file = "crc32c-2.7.1.tar.gz", hash = "sha256:f91b144a21eef834d64178e01982bb9179c354b3e9e5f4c803b0e5096384968c" }, -] - [[package]] name = "dask" -version = "2025.9.1" +version = "2026.1.2" description = "Parallel PyData with Task Scheduling" optional = false python-versions = ">=3.10" groups = ["main"] files = [ - { file = "dask-2025.9.1-py3-none-any.whl", hash = "sha256:2a8a7dc933caaea2f47745a65a6ec93d9e616e12aab53b4f03ee161d31939110" }, - { file = "dask-2025.9.1.tar.gz", hash = "sha256:718df73e1fd3d7e2b8546e0f04ce08e1ed7f9aa3da1eecd0c1f44c8b6d52f7e0" }, + {file = "dask-2026.1.2-py3-none-any.whl", hash = "sha256:46a0cf3b8d87f78a3d2e6b145aea4418a6d6d606fe6a16c79bd8ca2bb862bc91"}, + {file = "dask-2026.1.2.tar.gz", hash = "sha256:1136683de2750d98ea792670f7434e6c1cfce90cab2cc2f2495a9e60fd25a4fc"}, ] [package.dependencies] @@ -1019,76 +860,16 @@ fsspec = ">=2021.09.0" packaging = ">=20.0" partd = ">=1.4.0" pyyaml = ">=5.3.1" -toolz = ">=0.10.0" +toolz = ">=0.12.0" [package.extras] array = ["numpy (>=1.24)"] -complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=14.0.1)"] -dataframe = ["dask[array]", "pandas (>=2.0)", "pyarrow (>=14.0.1)"] +complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=16.0)"] +dataframe = ["dask[array]", "pandas (>=2.0)", "pyarrow (>=16.0)"] diagnostics = ["bokeh (>=3.1.0)", "jinja2 (>=2.10.3)"] -distributed = ["distributed (==2025.9.1)"] +distributed = ["distributed (>=2026.1.2,<2026.1.3)"] test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] -[[package]] -name = "debugpy" -version = "1.8.15" -description = "An implementation of the Debug Adapter Protocol for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "debugpy-1.8.15-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e9a8125c85172e3ec30985012e7a81ea5e70bbb836637f8a4104f454f9b06c97" }, - { file = "debugpy-1.8.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fd0b6b5eccaa745c214fd240ea82f46049d99ef74b185a3517dad3ea1ec55d9" }, - { file = "debugpy-1.8.15-cp310-cp310-win32.whl", hash = "sha256:8181cce4d344010f6bfe94a531c351a46a96b0f7987750932b2908e7a1e14a55" }, - { file = "debugpy-1.8.15-cp310-cp310-win_amd64.whl", hash = "sha256:af2dcae4e4cd6e8b35f982ccab29fe65f7e8766e10720a717bc80c464584ee21" }, - { file = "debugpy-1.8.15-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:babc4fb1962dd6a37e94d611280e3d0d11a1f5e6c72ac9b3d87a08212c4b6dd3" }, - { file = "debugpy-1.8.15-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f778e68f2986a58479d0ac4f643e0b8c82fdd97c2e200d4d61e7c2d13838eb53" }, - { file = "debugpy-1.8.15-cp311-cp311-win32.whl", hash = "sha256:f9d1b5abd75cd965e2deabb1a06b0e93a1546f31f9f621d2705e78104377c702" }, - { file = "debugpy-1.8.15-cp311-cp311-win_amd64.whl", hash = "sha256:62954fb904bec463e2b5a415777f6d1926c97febb08ef1694da0e5d1463c5c3b" }, - { file = "debugpy-1.8.15-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:3dcc7225cb317469721ab5136cda9ff9c8b6e6fb43e87c9e15d5b108b99d01ba" }, - { file = "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" }, - { file = "debugpy-1.8.15-cp312-cp312-win32.whl", hash = "sha256:b08e9b0bc260cf324c890626961dad4ffd973f7568fbf57feb3c3a65ab6b6327" }, - { file = "debugpy-1.8.15-cp312-cp312-win_amd64.whl", hash = "sha256:e2a4fe357c92334272eb2845fcfcdbec3ef9f22c16cf613c388ac0887aed15fa" }, - { file = "debugpy-1.8.15-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:f5e01291ad7d6649aed5773256c5bba7a1a556196300232de1474c3c372592bf" }, - { file = "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" }, - { file = "debugpy-1.8.15-cp313-cp313-win32.whl", hash = "sha256:fcf0748d4f6e25f89dc5e013d1129ca6f26ad4da405e0723a4f704583896a709" }, - { file = "debugpy-1.8.15-cp313-cp313-win_amd64.whl", hash = "sha256:73c943776cb83e36baf95e8f7f8da765896fd94b05991e7bc162456d25500683" }, - { file = "debugpy-1.8.15-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:054cd4935bd2e4964dfe1aeee4d6bca89d0c833366776fc35387f8a2f517dd00" }, - { file = "debugpy-1.8.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21c4288e662997df3176c4b9d93ee1393913fbaf320732be332d538000c53208" }, - { file = "debugpy-1.8.15-cp38-cp38-win32.whl", hash = "sha256:aaa8ce6a37d764f93fe583d7c6ca58eb7550b36941387483db113125f122bb0d" }, - { file = "debugpy-1.8.15-cp38-cp38-win_amd64.whl", hash = "sha256:71cdf7f676af78e70f005c7fad2ef9da0edc2a24befbf3ab146a51f0d58048c2" }, - { file = "debugpy-1.8.15-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:085b6d0adb3eb457c2823ac497a0690b10a99eff8b01c01a041e84579f114b56" }, - { file = "debugpy-1.8.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd546a405381d17527814852642df0a74b7da8acc20ae5f3cfad0b7c86419511" }, - { file = "debugpy-1.8.15-cp39-cp39-win32.whl", hash = "sha256:ae0d445fe11ff4351428e6c2389e904e1cdcb4a47785da5a5ec4af6c5b95fce5" }, - { file = "debugpy-1.8.15-cp39-cp39-win_amd64.whl", hash = "sha256:de7db80189ca97ab4b10a87e4039cfe4dd7ddfccc8f33b5ae40fcd33792fc67a" }, - { file = "debugpy-1.8.15-py2.py3-none-any.whl", hash = "sha256:bce2e6c5ff4f2e00b98d45e7e01a49c7b489ff6df5f12d881c67d2f1ac635f3d" }, - { file = "debugpy-1.8.15.tar.gz", hash = "sha256:58d7a20b7773ab5ee6bdfb2e6cf622fdf1e40c9d5aef2857d85391526719ac00" }, -] - -[[package]] -name = "decorator" -version = "5.2.1" -description = "Decorators for Humans" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a" }, - { file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360" }, -] - -[[package]] -name = "defusedxml" -version = "0.7.1" -description = "XML bomb protection for Python stdlib modules" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["dev"] -files = [ - {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, - {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, -] - [[package]] name = "distlib" version = "0.4.0" @@ -1244,8 +1025,8 @@ optional = false python-versions = ">=3.8" groups = ["main"] files = [ - { file = "fsspec-2025.7.0-py3-none-any.whl", hash = "sha256:8b012e39f63c7d5f10474de957f3ab793b47b45ae7d39f2fb735f8bbe25c0e21" }, - { file = "fsspec-2025.7.0.tar.gz", hash = "sha256:786120687ffa54b8283d942929540d8bc5ccfa820deb555a2b5d0ed2b737bf58" }, + {file = "fsspec-2026.2.0-py3-none-any.whl", hash = "sha256:98de475b5cb3bd66bedd5c4679e87b4fdfe1a3bf4d707b151b3c07e58c9a2437"}, + {file = "fsspec-2026.2.0.tar.gz", hash = "sha256:6544e34b16869f5aacd5b90bdf1a71acb37792ea3ddf6125ee69a22a53fb8bff"}, ] [package.extras] @@ -1256,9 +1037,9 @@ dask = ["dask", "distributed"] dev = ["pre-commit", "ruff (>=0.5)"] doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"] dropbox = ["dropbox", "dropboxdrivefs", "requests"] -full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] +full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs (>2024.2.0)", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs (>2024.2.0)", "smbprotocol", "tqdm"] fuse = ["fusepy"] -gcs = ["gcsfs"] +gcs = ["gcsfs (>2024.2.0)"] git = ["pygit2"] github = ["requests"] gs = ["gcsfs"] @@ -1267,13 +1048,13 @@ hdfs = ["pyarrow (>=1)"] http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] libarchive = ["libarchive-c"] oci = ["ocifs"] -s3 = ["s3fs"] +s3 = ["s3fs (>2024.2.0)"] sftp = ["paramiko"] smb = ["smbprotocol"] ssh = ["paramiko"] test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"] test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] -test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard ; python_version < \"3.14\""] +test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "backports-zstd ; python_version < \"3.14\"", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas (<3.0.0)", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard ; python_version < \"3.14\""] tqdm = ["tqdm"] [[package]] @@ -1638,159 +1419,20 @@ docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alab qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] -[[package]] -name = "ipykernel" -version = "6.29.5" -description = "IPython Kernel for Jupyter" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, - {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, -] - -[package.dependencies] -appnope = {version = "*", markers = "platform_system == \"Darwin\""} -comm = ">=0.1.1" -debugpy = ">=1.6.5" -ipython = ">=7.23.1" -jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -matplotlib-inline = ">=0.1" -nest-asyncio = "*" -packaging = "*" -psutil = "*" -pyzmq = ">=24" -tornado = ">=6.1" -traitlets = ">=5.4.0" - -[package.extras] -cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] -pyqt5 = ["pyqt5"] -pyside6 = ["pyside6"] -test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] - -[[package]] -name = "ipython" -version = "9.4.0" -description = "IPython: Productive Interactive Computing" -optional = false -python-versions = ">=3.11" -groups = ["dev"] -files = [ - { file = "ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066" }, - { file = "ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270" }, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -decorator = "*" -ipython-pygments-lexers = "*" -jedi = ">=0.16" -matplotlib-inline = "*" -pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} -prompt_toolkit = ">=3.0.41,<3.1.0" -pygments = ">=2.4.0" -stack_data = "*" -traitlets = ">=5.13.0" - -[package.extras] -all = ["ipython[doc,matplotlib,test,test-extra]"] -black = ["black"] -doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinx_toml (==0.0.4)", "typing_extensions"] -matplotlib = ["matplotlib"] -test = ["packaging", "pytest", "pytest-asyncio (<0.22)", "testpath"] -test-extra = ["curio", "ipykernel", "ipython[test]", "jupyter_ai", "matplotlib (!=3.2.0)", "nbclient", "nbformat", "numpy (>=1.23)", "pandas", "trio"] - -[[package]] -name = "ipython-pygments-lexers" -version = "1.1.1" -description = "Defines a variety of Pygments lexers for highlighting IPython code." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c" }, - { file = "ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81" }, -] - -[package.dependencies] -pygments = "*" - -[[package]] -name = "ipywidgets" -version = "8.1.7" -description = "Jupyter interactive widgets" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - { file = "ipywidgets-8.1.7-py3-none-any.whl", hash = "sha256:764f2602d25471c213919b8a1997df04bef869251db4ca8efba1b76b1bd9f7bb" }, - { file = "ipywidgets-8.1.7.tar.gz", hash = "sha256:15f1ac050b9ccbefd45dccfbb2ef6bed0029d8278682d569d71b8dd96bee0376" }, -] - -[package.dependencies] -comm = ">=0.1.3" -ipython = ">=6.1.0" -jupyterlab_widgets = ">=3.0.15,<3.1.0" -traitlets = ">=4.3.1" -widgetsnbextension = ">=4.0.14,<4.1.0" - -[package.extras] -test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] - -[[package]] -name = "isoduration" -version = "20.11.0" -description = "Operations with ISO 8601 durations" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, - {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, -] - -[package.dependencies] -arrow = ">=0.15.0" - [[package]] name = "isort" -version = "7.0.0" +version = "8.0.0" description = "A Python utility / library to sort Python imports." optional = false python-versions = ">=3.10.0" groups = ["dev"] files = [ - { file = "isort-7.0.0-py3-none-any.whl", hash = "sha256:1bcabac8bc3c36c7fb7b98a76c8abb18e0f841a3ba81decac7691008592499c1" }, - { file = "isort-7.0.0.tar.gz", hash = "sha256:5513527951aadb3ac4292a41a16cbc50dd1642432f5e8c20057d414bdafb4187" }, + {file = "isort-8.0.0-py3-none-any.whl", hash = "sha256:184916a933041c7cf718787f7e52064f3c06272aff69a5cb4dc46497bd8911d9"}, + {file = "isort-8.0.0.tar.gz", hash = "sha256:fddea59202f231e170e52e71e3510b99c373b6e571b55d9c7b31b679c0fed47c"}, ] [package.extras] colors = ["colorama"] -plugins = ["setuptools"] - -[[package]] -name = "jedi" -version = "0.19.2" -description = "An autocompletion tool for Python that can be used for text editors." -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - { file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9" }, - { file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0" }, -] - -[package.dependencies] -parso = ">=0.8.4,<0.9.0" - -[package.extras] -docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] -qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["Django", "attrs", "colorama", "docopt", "pytest (<9.0.0)"] [[package]] name = "jinja2" @@ -2262,21 +1904,6 @@ files = [ {file = "markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698"}, ] -[[package]] -name = "matplotlib-inline" -version = "0.1.7" -description = "Inline Matplotlib backend for Jupyter" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, - {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, -] - -[package.dependencies] -traitlets = "*" - [[package]] name = "mergedeep" version = "1.3.4" @@ -2284,20 +1911,8 @@ description = "A deep merge function for 🐍." optional = false python-versions = ">=3.8" files = [ - { file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307" }, - { file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8" }, -] - -[[package]] -name = "mistune" -version = "3.1.3" -description = "A sane and fast Markdown parser with useful plugins and renderers" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9" }, - { file = "mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0" }, + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, ] [[package]] @@ -2872,182 +2487,131 @@ files = [ {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, ] -[[package]] -name = "notebook" -version = "7.4.4" -description = "Jupyter Notebook - A web-based notebook environment for interactive computing" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - { file = "notebook-7.4.4-py3-none-any.whl", hash = "sha256:32840f7f777b6bff79bb101159336e9b332bdbfba1495b8739e34d1d65cbc1c0" }, - { file = "notebook-7.4.4.tar.gz", hash = "sha256:392fd501e266f2fb3466c6fcd3331163a2184968cb5c5accf90292e01dfe528c" }, -] - -[package.dependencies] -jupyter-server = ">=2.4.0,<3" -jupyterlab = ">=4.4.4,<4.5" -jupyterlab-server = ">=2.27.1,<3" -notebook-shim = ">=0.2,<0.3" -tornado = ">=6.2.0" - -[package.extras] -dev = ["hatch", "pre-commit"] -docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["importlib-resources (>=5.0) ; python_version < \"3.10\"", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] - -[[package]] -name = "notebook-shim" -version = "0.2.4" -description = "A shim layer for notebook traits and config" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, - {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, -] - -[package.dependencies] -jupyter-server = ">=1.8,<3" - -[package.extras] -test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"] - [[package]] name = "numcodecs" -version = "0.16.1" +version = "0.16.5" description = "A Python package providing buffer compression and transformation codecs for use in data storage and communication applications." optional = false python-versions = ">=3.11" groups = ["main"] files = [ - { file = "numcodecs-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5348a25aefbce37ea7c00c3363d36176155233c95597e5905a932e9620df960d" }, - { file = "numcodecs-0.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2058b0a985470809c720d2457758b61e6c9495a49d5f20dfac9b5ebabd8848eb" }, - { file = "numcodecs-0.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b216b6d7bc207b85d41fddbc25b09fd00d76e265454db6e3fb09d5da0216397" }, - { file = "numcodecs-0.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2308d56c4f84a5b942f8668b4adedd3d9cdd6a22e6e6e20768ec356c77050f38" }, - { file = "numcodecs-0.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:acd8d68b4b815e62cb91e6064a53dac51ee99849350784ee16dd52cdbb4bc70f" }, - { file = "numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122" }, - { file = "numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458" }, - { file = "numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40" }, - { file = "numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609" }, - { file = "numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df" }, - { file = "numcodecs-0.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2ad8ee940315f59188accfc3f2d39726a4ca0d76b49bf8d0018e121f01c49028" }, - { file = "numcodecs-0.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:179ca7bf3525a0f7379df7767d87dd495253de44597cb7e511198b28b09da633" }, - { file = "numcodecs-0.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e2babbb50bf348ae982818d5560af330eab0dcd925fb0e49509785ad57d11db" }, - { file = "numcodecs-0.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4b29d8d3284b72bfad4fb83d672a17f497ae86ee1ef8087bac7222b620d3d91" }, - { file = "numcodecs-0.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:06489635f43e1a959aea73cb830d78cf3adb07ac5f34daccb92091e4d9ac6b07" }, - { file = "numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1" }, + {file = "numcodecs-0.16.5-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:78382dcea50622f2ef1e6e7a71dbe7f861d8fe376b27b7c297c26907304fef1e"}, + {file = "numcodecs-0.16.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2d04a19cb57a3c519b4127ac377cca6471aee1990d7c18f5b1e3a4fe1306689"}, + {file = "numcodecs-0.16.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c043af648eb280cd61785c99c22ff5c3c3460f906eb51a8511327c4f5111b283"}, + {file = "numcodecs-0.16.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c398919ef2eb0e56b8e97456f622640bfd3deed06de3acc976989cbcb22628a3"}, + {file = "numcodecs-0.16.5-cp311-cp311-win_amd64.whl", hash = "sha256:3820860ed302d4d84a1c66e70981ff959d5eb712555be4e7d8ced49888594773"}, + {file = "numcodecs-0.16.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:24e675dc8d1550cd976a99479b87d872cb142632c75cc402fea04c08c4898523"}, + {file = "numcodecs-0.16.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:94ddfa4341d1a3ab99989d13b01b5134abb687d3dab2ead54b450aefe4ad5bd6"}, + {file = "numcodecs-0.16.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b554ab9ecf69de7ca2b6b5e8bc696bd9747559cb4dd5127bd08d7a28bec59c3a"}, + {file = "numcodecs-0.16.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ad1a379a45bd3491deab8ae6548313946744f868c21d5340116977ea3be5b1d6"}, + {file = "numcodecs-0.16.5-cp312-cp312-win_amd64.whl", hash = "sha256:845a9857886ffe4a3172ba1c537ae5bcc01e65068c31cf1fce1a844bd1da050f"}, + {file = "numcodecs-0.16.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25be3a516ab677dad890760d357cfe081a371d9c0a2e9a204562318ac5969de3"}, + {file = "numcodecs-0.16.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0107e839ef75b854e969cb577e140b1aadb9847893937636582d23a2a4c6ce50"}, + {file = "numcodecs-0.16.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:015a7c859ecc2a06e2a548f64008c0ec3aaecabc26456c2c62f4278d8fc20597"}, + {file = "numcodecs-0.16.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:84230b4b9dad2392f2a84242bd6e3e659ac137b5a1ce3571d6965fca673e0903"}, + {file = "numcodecs-0.16.5-cp313-cp313-win_amd64.whl", hash = "sha256:5088145502ad1ebf677ec47d00eb6f0fd600658217db3e0c070c321c85d6cf3d"}, + {file = "numcodecs-0.16.5-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b05647b8b769e6bc8016e9fd4843c823ce5c9f2337c089fb5c9c4da05e5275de"}, + {file = "numcodecs-0.16.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3832bd1b5af8bb3e413076b7d93318c8e7d7b68935006b9fa36ca057d1725a8f"}, + {file = "numcodecs-0.16.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49f7b7d24f103187f53135bed28bb9f0ed6b2e14c604664726487bb6d7c882e1"}, + {file = "numcodecs-0.16.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aec9736d81b70f337d89c4070ee3ffeff113f386fd789492fa152d26a15043e4"}, + {file = "numcodecs-0.16.5-cp314-cp314-win_amd64.whl", hash = "sha256:b16a14303800e9fb88abc39463ab4706c037647ac17e49e297faa5f7d7dbbf1d"}, + {file = "numcodecs-0.16.5.tar.gz", hash = "sha256:0d0fb60852f84c0bd9543cc4d2ab9eefd37fc8efcc410acd4777e62a1d300318"}, ] [package.dependencies] -crc32c = { version = ">=2.7", optional = true, markers = "extra == \"crc32c\"" } numpy = ">=1.24" typing_extensions = "*" [package.extras] crc32c = ["crc32c (>=2.7)"] docs = ["numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-issues"] +google-crc32c = ["google-crc32c (>=1.5)"] msgpack = ["msgpack"] pcodec = ["pcodec (>=0.3,<0.4)"] -test = ["coverage", "pytest", "pytest-cov"] -test-extras = ["importlib_metadata"] +test = ["coverage", "pytest", "pytest-cov", "pyzstd"] +test-extras = ["crc32c", "importlib_metadata"] zfpy = ["zfpy (>=1.0.0)"] [[package]] name = "numpy" -version = "2.3.3" +version = "2.4.2" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.11" -groups = ["main"] -files = [ - { file = "numpy-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ffc4f5caba7dfcbe944ed674b7eef683c7e94874046454bb79ed7ee0236f59d" }, - { file = "numpy-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7e946c7170858a0295f79a60214424caac2ffdb0063d4d79cb681f9aa0aa569" }, - { file = "numpy-2.3.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:cd4260f64bc794c3390a63bf0728220dd1a68170c169088a1e0dfa2fde1be12f" }, - { file = "numpy-2.3.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:f0ddb4b96a87b6728df9362135e764eac3cfa674499943ebc44ce96c478ab125" }, - { file = "numpy-2.3.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:afd07d377f478344ec6ca2b8d4ca08ae8bd44706763d1efb56397de606393f48" }, - { file = "numpy-2.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc92a5dedcc53857249ca51ef29f5e5f2f8c513e22cfb90faeb20343b8c6f7a6" }, - { file = "numpy-2.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7af05ed4dc19f308e1d9fc759f36f21921eb7bbfc82843eeec6b2a2863a0aefa" }, - { file = "numpy-2.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:433bf137e338677cebdd5beac0199ac84712ad9d630b74eceeb759eaa45ddf30" }, - { file = "numpy-2.3.3-cp311-cp311-win32.whl", hash = "sha256:eb63d443d7b4ffd1e873f8155260d7f58e7e4b095961b01c91062935c2491e57" }, - { file = "numpy-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:ec9d249840f6a565f58d8f913bccac2444235025bbb13e9a4681783572ee3caa" }, - { file = "numpy-2.3.3-cp311-cp311-win_arm64.whl", hash = "sha256:74c2a948d02f88c11a3c075d9733f1ae67d97c6bdb97f2bb542f980458b257e7" }, - { file = "numpy-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cfdd09f9c84a1a934cde1eec2267f0a43a7cd44b2cca4ff95b7c0d14d144b0bf" }, - { file = "numpy-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb32e3cf0f762aee47ad1ddc6672988f7f27045b0783c887190545baba73aa25" }, - { file = "numpy-2.3.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396b254daeb0a57b1fe0ecb5e3cff6fa79a380fa97c8f7781a6d08cd429418fe" }, - { file = "numpy-2.3.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:067e3d7159a5d8f8a0b46ee11148fc35ca9b21f61e3c49fbd0a027450e65a33b" }, - { file = "numpy-2.3.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c02d0629d25d426585fb2e45a66154081b9fa677bc92a881ff1d216bc9919a8" }, - { file = "numpy-2.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9192da52b9745f7f0766531dcfa978b7763916f158bb63bdb8a1eca0068ab20" }, - { file = "numpy-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cd7de500a5b66319db419dc3c345244404a164beae0d0937283b907d8152e6ea" }, - { file = "numpy-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:93d4962d8f82af58f0b2eb85daaf1b3ca23fe0a85d0be8f1f2b7bb46034e56d7" }, - { file = "numpy-2.3.3-cp312-cp312-win32.whl", hash = "sha256:5534ed6b92f9b7dca6c0a19d6df12d41c68b991cef051d108f6dbff3babc4ebf" }, - { file = "numpy-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:497d7cad08e7092dba36e3d296fe4c97708c93daf26643a1ae4b03f6294d30eb" }, - { file = "numpy-2.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:ca0309a18d4dfea6fc6262a66d06c26cfe4640c3926ceec90e57791a82b6eee5" }, - { file = "numpy-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f5415fb78995644253370985342cd03572ef8620b934da27d77377a2285955bf" }, - { file = "numpy-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d00de139a3324e26ed5b95870ce63be7ec7352171bc69a4cf1f157a48e3eb6b7" }, - { file = "numpy-2.3.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9dc13c6a5829610cc07422bc74d3ac083bd8323f14e2827d992f9e52e22cd6a6" }, - { file = "numpy-2.3.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:d79715d95f1894771eb4e60fb23f065663b2298f7d22945d66877aadf33d00c7" }, - { file = "numpy-2.3.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:952cfd0748514ea7c3afc729a0fc639e61655ce4c55ab9acfab14bda4f402b4c" }, - { file = "numpy-2.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5b83648633d46f77039c29078751f80da65aa64d5622a3cd62aaef9d835b6c93" }, - { file = "numpy-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b001bae8cea1c7dfdb2ae2b017ed0a6f2102d7a70059df1e338e307a4c78a8ae" }, - { file = "numpy-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8e9aced64054739037d42fb84c54dd38b81ee238816c948c8f3ed134665dcd86" }, - { file = "numpy-2.3.3-cp313-cp313-win32.whl", hash = "sha256:9591e1221db3f37751e6442850429b3aabf7026d3b05542d102944ca7f00c8a8" }, - { file = "numpy-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f0dadeb302887f07431910f67a14d57209ed91130be0adea2f9793f1a4f817cf" }, - { file = "numpy-2.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:3c7cf302ac6e0b76a64c4aecf1a09e51abd9b01fc7feee80f6c43e3ab1b1dbc5" }, - { file = "numpy-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:eda59e44957d272846bb407aad19f89dc6f58fecf3504bd144f4c5cf81a7eacc" }, - { file = "numpy-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:823d04112bc85ef5c4fda73ba24e6096c8f869931405a80aa8b0e604510a26bc" }, - { file = "numpy-2.3.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:40051003e03db4041aa325da2a0971ba41cf65714e65d296397cc0e32de6018b" }, - { file = "numpy-2.3.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ee9086235dd6ab7ae75aba5662f582a81ced49f0f1c6de4260a78d8f2d91a19" }, - { file = "numpy-2.3.3-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94fcaa68757c3e2e668ddadeaa86ab05499a70725811e582b6a9858dd472fb30" }, - { file = "numpy-2.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da1a74b90e7483d6ce5244053399a614b1d6b7bc30a60d2f570e5071f8959d3e" }, - { file = "numpy-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2990adf06d1ecee3b3dcbb4977dfab6e9f09807598d647f04d385d29e7a3c3d3" }, - { file = "numpy-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ed635ff692483b8e3f0fcaa8e7eb8a75ee71aa6d975388224f70821421800cea" }, - { file = "numpy-2.3.3-cp313-cp313t-win32.whl", hash = "sha256:a333b4ed33d8dc2b373cc955ca57babc00cd6f9009991d9edc5ddbc1bac36bcd" }, - { file = "numpy-2.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4384a169c4d8f97195980815d6fcad04933a7e1ab3b530921c3fef7a1c63426d" }, - { file = "numpy-2.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:75370986cc0bc66f4ce5110ad35aae6d182cc4ce6433c40ad151f53690130bf1" }, - { file = "numpy-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cd052f1fa6a78dee696b58a914b7229ecfa41f0a6d96dc663c1220a55e137593" }, - { file = "numpy-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:414a97499480067d305fcac9716c29cf4d0d76db6ebf0bf3cbce666677f12652" }, - { file = "numpy-2.3.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:50a5fe69f135f88a2be9b6ca0481a68a136f6febe1916e4920e12f1a34e708a7" }, - { file = "numpy-2.3.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:b912f2ed2b67a129e6a601e9d93d4fa37bef67e54cac442a2f588a54afe5c67a" }, - { file = "numpy-2.3.3-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9e318ee0596d76d4cb3d78535dc005fa60e5ea348cd131a51e99d0bdbe0b54fe" }, - { file = "numpy-2.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce020080e4a52426202bdb6f7691c65bb55e49f261f31a8f506c9f6bc7450421" }, - { file = "numpy-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e6687dc183aa55dae4a705b35f9c0f8cb178bcaa2f029b241ac5356221d5c021" }, - { file = "numpy-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d8f3b1080782469fdc1718c4ed1d22549b5fb12af0d57d35e992158a772a37cf" }, - { file = "numpy-2.3.3-cp314-cp314-win32.whl", hash = "sha256:cb248499b0bc3be66ebd6578b83e5acacf1d6cb2a77f2248ce0e40fbec5a76d0" }, - { file = "numpy-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:691808c2b26b0f002a032c73255d0bd89751425f379f7bcd22d140db593a96e8" }, - { file = "numpy-2.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:9ad12e976ca7b10f1774b03615a2a4bab8addce37ecc77394d8e986927dc0dfe" }, - { file = "numpy-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9cc48e09feb11e1db00b320e9d30a4151f7369afb96bd0e48d942d09da3a0d00" }, - { file = "numpy-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:901bf6123879b7f251d3631967fd574690734236075082078e0571977c6a8e6a" }, - { file = "numpy-2.3.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:7f025652034199c301049296b59fa7d52c7e625017cae4c75d8662e377bf487d" }, - { file = "numpy-2.3.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:533ca5f6d325c80b6007d4d7fb1984c303553534191024ec6a524a4c92a5935a" }, - { file = "numpy-2.3.3-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0edd58682a399824633b66885d699d7de982800053acf20be1eaa46d92009c54" }, - { file = "numpy-2.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:367ad5d8fbec5d9296d18478804a530f1191e24ab4d75ab408346ae88045d25e" }, - { file = "numpy-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8f6ac61a217437946a1fa48d24c47c91a0c4f725237871117dea264982128097" }, - { file = "numpy-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:179a42101b845a816d464b6fe9a845dfaf308fdfc7925387195570789bb2c970" }, - { file = "numpy-2.3.3-cp314-cp314t-win32.whl", hash = "sha256:1250c5d3d2562ec4174bce2e3a1523041595f9b651065e4a4473f5f48a6bc8a5" }, - { file = "numpy-2.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:b37a0b2e5935409daebe82c1e42274d30d9dd355852529eab91dab8dcca7419f" }, - { file = "numpy-2.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:78c9f6560dc7e6b3990e32df7ea1a50bbd0e2a111e05209963f5ddcab7073b0b" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1e02c7159791cd481e1e6d5ddd766b62a4d5acf8df4d4d1afe35ee9c5c33a41e" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:dca2d0fc80b3893ae72197b39f69d55a3cd8b17ea1b50aa4c62de82419936150" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:99683cbe0658f8271b333a1b1b4bb3173750ad59c0c61f5bbdc5b318918fffe3" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:d9d537a39cc9de668e5cd0e25affb17aec17b577c6b3ae8a3d866b479fbe88d0" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8596ba2f8af5f93b01d97563832686d20206d303024777f6dfc2e7c7c3f1850e" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1ec5615b05369925bd1125f27df33f3b6c8bc10d788d5999ecd8769a1fa04db" }, - { file = "numpy-2.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:2e267c7da5bf7309670523896df97f93f6e469fb931161f483cd6882b3b1a5dc" }, - { file = "numpy-2.3.3.tar.gz", hash = "sha256:ddc7c39727ba62b80dfdbedf400d1c10ddfa8eefbd7ec8dcb118be8b56d31029" }, -] - -[[package]] -name = "overrides" -version = "7.7.0" -description = "A decorator to automatically detect mismatch when overriding a method." -optional = false -python-versions = ">=3.6" -groups = ["dev"] +groups = ["main", "dev"] files = [ - {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, - {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, + {file = "numpy-2.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e7e88598032542bd49af7c4747541422884219056c268823ef6e5e89851c8825"}, + {file = "numpy-2.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7edc794af8b36ca37ef5fcb5e0d128c7e0595c7b96a2318d1badb6fcd8ee86b1"}, + {file = "numpy-2.4.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:6e9f61981ace1360e42737e2bae58b27bf28a1b27e781721047d84bd754d32e7"}, + {file = "numpy-2.4.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:cb7bbb88aa74908950d979eeaa24dbdf1a865e3c7e45ff0121d8f70387b55f73"}, + {file = "numpy-2.4.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4f069069931240b3fc703f1e23df63443dbd6390614c8c44a87d96cd0ec81eb1"}, + {file = "numpy-2.4.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c02ef4401a506fb60b411467ad501e1429a3487abca4664871d9ae0b46c8ba32"}, + {file = "numpy-2.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2653de5c24910e49c2b106499803124dde62a5a1fe0eedeaecf4309a5f639390"}, + {file = "numpy-2.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1ae241bbfc6ae276f94a170b14785e561cb5e7f626b6688cf076af4110887413"}, + {file = "numpy-2.4.2-cp311-cp311-win32.whl", hash = "sha256:df1b10187212b198dd45fa943d8985a3c8cf854aed4923796e0e019e113a1bda"}, + {file = "numpy-2.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:b9c618d56a29c9cb1c4da979e9899be7578d2e0b3c24d52079c166324c9e8695"}, + {file = "numpy-2.4.2-cp311-cp311-win_arm64.whl", hash = "sha256:47c5a6ed21d9452b10227e5e8a0e1c22979811cad7dcc19d8e3e2fb8fa03f1a3"}, + {file = "numpy-2.4.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:21982668592194c609de53ba4933a7471880ccbaadcc52352694a59ecc860b3a"}, + {file = "numpy-2.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40397bda92382fcec844066efb11f13e1c9a3e2a8e8f318fb72ed8b6db9f60f1"}, + {file = "numpy-2.4.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:b3a24467af63c67829bfaa61eecf18d5432d4f11992688537be59ecd6ad32f5e"}, + {file = "numpy-2.4.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:805cc8de9fd6e7a22da5aed858e0ab16be5a4db6c873dde1d7451c541553aa27"}, + {file = "numpy-2.4.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d82351358ffbcdcd7b686b90742a9b86632d6c1c051016484fa0b326a0a1548"}, + {file = "numpy-2.4.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e35d3e0144137d9fdae62912e869136164534d64a169f86438bc9561b6ad49f"}, + {file = "numpy-2.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adb6ed2ad29b9e15321d167d152ee909ec73395901b70936f029c3bc6d7f4460"}, + {file = "numpy-2.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8906e71fd8afcb76580404e2a950caef2685df3d2a57fe82a86ac8d33cc007ba"}, + {file = "numpy-2.4.2-cp312-cp312-win32.whl", hash = "sha256:ec055f6dae239a6299cace477b479cca2fc125c5675482daf1dd886933a1076f"}, + {file = "numpy-2.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:209fae046e62d0ce6435fcfe3b1a10537e858249b3d9b05829e2a05218296a85"}, + {file = "numpy-2.4.2-cp312-cp312-win_arm64.whl", hash = "sha256:fbde1b0c6e81d56f5dccd95dd4a711d9b95df1ae4009a60887e56b27e8d903fa"}, + {file = "numpy-2.4.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25f2059807faea4b077a2b6837391b5d830864b3543627f381821c646f31a63c"}, + {file = "numpy-2.4.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bd3a7a9f5847d2fb8c2c6d1c862fa109c31a9abeca1a3c2bd5a64572955b2979"}, + {file = "numpy-2.4.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8e4549f8a3c6d13d55041925e912bfd834285ef1dd64d6bc7d542583355e2e98"}, + {file = "numpy-2.4.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:aea4f66ff44dfddf8c2cffd66ba6538c5ec67d389285292fe428cb2c738c8aef"}, + {file = "numpy-2.4.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3cd545784805de05aafe1dde61752ea49a359ccba9760c1e5d1c88a93bbf2b7"}, + {file = "numpy-2.4.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0d9b7c93578baafcbc5f0b83eaf17b79d345c6f36917ba0c67f45226911d499"}, + {file = "numpy-2.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f74f0f7779cc7ae07d1810aab8ac6b1464c3eafb9e283a40da7309d5e6e48fbb"}, + {file = "numpy-2.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c7ac672d699bf36275c035e16b65539931347d68b70667d28984c9fb34e07fa7"}, + {file = "numpy-2.4.2-cp313-cp313-win32.whl", hash = "sha256:8e9afaeb0beff068b4d9cd20d322ba0ee1cecfb0b08db145e4ab4dd44a6b5110"}, + {file = "numpy-2.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:7df2de1e4fba69a51c06c28f5a3de36731eb9639feb8e1cf7e4a7b0daf4cf622"}, + {file = "numpy-2.4.2-cp313-cp313-win_arm64.whl", hash = "sha256:0fece1d1f0a89c16b03442eae5c56dc0be0c7883b5d388e0c03f53019a4bfd71"}, + {file = "numpy-2.4.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5633c0da313330fd20c484c78cdd3f9b175b55e1a766c4a174230c6b70ad8262"}, + {file = "numpy-2.4.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d9f64d786b3b1dd742c946c42d15b07497ed14af1a1f3ce840cce27daa0ce913"}, + {file = "numpy-2.4.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:b21041e8cb6a1eb5312dd1d2f80a94d91efffb7a06b70597d44f1bd2dfc315ab"}, + {file = "numpy-2.4.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:00ab83c56211a1d7c07c25e3217ea6695e50a3e2f255053686b081dc0b091a82"}, + {file = "numpy-2.4.2-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fb882da679409066b4603579619341c6d6898fc83a8995199d5249f986e8e8f"}, + {file = "numpy-2.4.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:66cb9422236317f9d44b67b4d18f44efe6e9c7f8794ac0462978513359461554"}, + {file = "numpy-2.4.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:0f01dcf33e73d80bd8dc0f20a71303abbafa26a19e23f6b68d1aa9990af90257"}, + {file = "numpy-2.4.2-cp313-cp313t-win32.whl", hash = "sha256:52b913ec40ff7ae845687b0b34d8d93b60cb66dcee06996dd5c99f2fc9328657"}, + {file = "numpy-2.4.2-cp313-cp313t-win_amd64.whl", hash = "sha256:5eea80d908b2c1f91486eb95b3fb6fab187e569ec9752ab7d9333d2e66bf2d6b"}, + {file = "numpy-2.4.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fd49860271d52127d61197bb50b64f58454e9f578cb4b2c001a6de8b1f50b0b1"}, + {file = "numpy-2.4.2-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:444be170853f1f9d528428eceb55f12918e4fda5d8805480f36a002f1415e09b"}, + {file = "numpy-2.4.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d1240d50adff70c2a88217698ca844723068533f3f5c5fa6ee2e3220e3bdb000"}, + {file = "numpy-2.4.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:7cdde6de52fb6664b00b056341265441192d1291c130e99183ec0d4b110ff8b1"}, + {file = "numpy-2.4.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:cda077c2e5b780200b6b3e09d0b42205a3d1c68f30c6dceb90401c13bff8fe74"}, + {file = "numpy-2.4.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d30291931c915b2ab5717c2974bb95ee891a1cf22ebc16a8006bd59cd210d40a"}, + {file = "numpy-2.4.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bba37bc29d4d85761deed3954a1bc62be7cf462b9510b51d367b769a8c8df325"}, + {file = "numpy-2.4.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b2f0073ed0868db1dcd86e052d37279eef185b9c8db5bf61f30f46adac63c909"}, + {file = "numpy-2.4.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7f54844851cdb630ceb623dcec4db3240d1ac13d4990532446761baede94996a"}, + {file = "numpy-2.4.2-cp314-cp314-win32.whl", hash = "sha256:12e26134a0331d8dbd9351620f037ec470b7c75929cb8a1537f6bfe411152a1a"}, + {file = "numpy-2.4.2-cp314-cp314-win_amd64.whl", hash = "sha256:068cdb2d0d644cdb45670810894f6a0600797a69c05f1ac478e8d31670b8ee75"}, + {file = "numpy-2.4.2-cp314-cp314-win_arm64.whl", hash = "sha256:6ed0be1ee58eef41231a5c943d7d1375f093142702d5723ca2eb07db9b934b05"}, + {file = "numpy-2.4.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:98f16a80e917003a12c0580f97b5f875853ebc33e2eaa4bccfc8201ac6869308"}, + {file = "numpy-2.4.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:20abd069b9cda45874498b245c8015b18ace6de8546bf50dfa8cea1696ed06ef"}, + {file = "numpy-2.4.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:e98c97502435b53741540a5717a6749ac2ada901056c7db951d33e11c885cc7d"}, + {file = "numpy-2.4.2-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:da6cad4e82cb893db4b69105c604d805e0c3ce11501a55b5e9f9083b47d2ffe8"}, + {file = "numpy-2.4.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e4424677ce4b47fe73c8b5556d876571f7c6945d264201180db2dc34f676ab5"}, + {file = "numpy-2.4.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2b8f157c8a6f20eb657e240f8985cc135598b2b46985c5bccbde7616dc9c6b1e"}, + {file = "numpy-2.4.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5daf6f3914a733336dab21a05cdec343144600e964d2fcdabaac0c0269874b2a"}, + {file = "numpy-2.4.2-cp314-cp314t-win32.whl", hash = "sha256:8c50dd1fc8826f5b26a5ee4d77ca55d88a895f4e4819c7ecc2a9f5905047a443"}, + {file = "numpy-2.4.2-cp314-cp314t-win_amd64.whl", hash = "sha256:fcf92bee92742edd401ba41135185866f7026c502617f422eb432cfeca4fe236"}, + {file = "numpy-2.4.2-cp314-cp314t-win_arm64.whl", hash = "sha256:1f92f53998a17265194018d1cc321b2e96e900ca52d54c7c77837b71b9465181"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:89f7268c009bc492f506abd6f5265defa7cb3f7487dc21d357c3d290add45082"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6dee3bb76aa4009d5a912180bf5b2de012532998d094acee25d9cb8dee3e44a"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:cd2bd2bbed13e213d6b55dc1d035a4f91748a7d3edc9480c13898b0353708920"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:cf28c0c1d4c4bf00f509fa7eb02c58d7caf221b50b467bcb0d9bbf1584d5c821"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e04ae107ac591763a47398bb45b568fc38f02dbc4aa44c063f67a131f99346cb"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:602f65afdef699cda27ec0b9224ae5dc43e328f4c24c689deaf77133dbee74d0"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:be71bf1edb48ebbbf7f6337b5bfd2f895d1902f6335a5830b20141fc126ffba0"}, + {file = "numpy-2.4.2.tar.gz", hash = "sha256:659a6107e31a83c4e33f763942275fd278b21d095094044eb35569e86a21ddae"}, ] [[package]] @@ -3069,8 +2633,8 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - { file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591" }, - { file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945" }, + {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, + {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, ] [package.extras] @@ -3231,8 +2795,8 @@ optional = false python-versions = ">=3.6.0" groups = ["dev"] files = [ - { file = "pip-requirements-parser-32.0.1.tar.gz", hash = "sha256:b4fa3a7a0be38243123cf9d1f3518da10c51bdb165a2b2985566247f9155a7d3" }, - { file = "pip_requirements_parser-32.0.1-py3-none-any.whl", hash = "sha256:4659bc2a667783e7a15d190f6fccf8b2486685b6dba4c19c3876314769c57526" }, + {file = "pip-requirements-parser-32.0.1.tar.gz", hash = "sha256:b4fa3a7a0be38243123cf9d1f3518da10c51bdb165a2b2985566247f9155a7d3"}, + {file = "pip_requirements_parser-32.0.1-py3-none-any.whl", hash = "sha256:4659bc2a667783e7a15d190f6fccf8b2486685b6dba4c19c3876314769c57526"}, ] [package.dependencies] @@ -3602,14 +3166,14 @@ extra = ["pygments (>=2.19.1)"] [[package]] name = "pyparsing" -version = "3.2.5" +version = "3.3.2" description = "pyparsing - Classes and methods to define and execute parsing grammars" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e" }, - { file = "pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6" }, + {file = "pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d"}, + {file = "pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc"}, ] [package.extras] @@ -3623,61 +3187,61 @@ optional = false python-versions = ">=3.11" groups = ["main"] files = [ - { file = "pyproj-3.7.2-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:2514d61f24c4e0bb9913e2c51487ecdaeca5f8748d8313c933693416ca41d4d5" }, - { file = "pyproj-3.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:8693ca3892d82e70de077701ee76dd13d7bca4ae1c9d1e739d72004df015923a" }, - { file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5e26484d80fea56273ed1555abaea161e9661d81a6c07815d54b8e883d4ceb25" }, - { file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:281cb92847814e8018010c48b4069ff858a30236638631c1a91dd7bfa68f8a8a" }, - { file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9c8577f0b7bb09118ec2e57e3babdc977127dd66326d6c5d755c76b063e6d9dc" }, - { file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a23f59904fac3a5e7364b3aa44d288234af267ca041adb2c2b14a903cd5d3ac5" }, - { file = "pyproj-3.7.2-cp311-cp311-win32.whl", hash = "sha256:f2af4ed34b2cf3e031a2d85b067a3ecbd38df073c567e04b52fa7a0202afde8a" }, - { file = "pyproj-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:0b7cb633565129677b2a183c4d807c727d1c736fcb0568a12299383056e67433" }, - { file = "pyproj-3.7.2-cp311-cp311-win_arm64.whl", hash = "sha256:38b08d85e3a38e455625b80e9eb9f78027c8e2649a21dec4df1f9c3525460c71" }, - { file = "pyproj-3.7.2-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:0a9bb26a6356fb5b033433a6d1b4542158fb71e3c51de49b4c318a1dff3aeaab" }, - { file = "pyproj-3.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:567caa03021178861fad27fabde87500ec6d2ee173dd32f3e2d9871e40eebd68" }, - { file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:c203101d1dc3c038a56cff0447acc515dd29d6e14811406ac539c21eed422b2a" }, - { file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1edc34266c0c23ced85f95a1ee8b47c9035eae6aca5b6b340327250e8e281630" }, - { file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aa9f26c21bc0e2dc3d224cb1eb4020cf23e76af179a7c66fea49b828611e4260" }, - { file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9428b318530625cb389b9ddc9c51251e172808a4af79b82809376daaeabe5e9" }, - { file = "pyproj-3.7.2-cp312-cp312-win32.whl", hash = "sha256:b3d99ed57d319da042f175f4554fc7038aa4bcecc4ac89e217e350346b742c9d" }, - { file = "pyproj-3.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:11614a054cd86a2ed968a657d00987a86eeb91fdcbd9ad3310478685dc14a128" }, - { file = "pyproj-3.7.2-cp312-cp312-win_arm64.whl", hash = "sha256:509a146d1398bafe4f53273398c3bb0b4732535065fa995270e52a9d3676bca3" }, - { file = "pyproj-3.7.2-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:19466e529b1b15eeefdf8ff26b06fa745856c044f2f77bf0edbae94078c1dfa1" }, - { file = "pyproj-3.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:c79b9b84c4a626c5dc324c0d666be0bfcebd99f7538d66e8898c2444221b3da7" }, - { file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ceecf374cacca317bc09e165db38ac548ee3cad07c3609442bd70311c59c21aa" }, - { file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5141a538ffdbe4bfd157421828bb2e07123a90a7a2d6f30fa1462abcfb5ce681" }, - { file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f000841e98ea99acbb7b8ca168d67773b0191de95187228a16110245c5d954d5" }, - { file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8115faf2597f281a42ab608ceac346b4eb1383d3b45ab474fd37341c4bf82a67" }, - { file = "pyproj-3.7.2-cp313-cp313-win32.whl", hash = "sha256:f18c0579dd6be00b970cb1a6719197fceecc407515bab37da0066f0184aafdf3" }, - { file = "pyproj-3.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:bb41c29d5f60854b1075853fe80c58950b398d4ebb404eb532536ac8d2834ed7" }, - { file = "pyproj-3.7.2-cp313-cp313-win_arm64.whl", hash = "sha256:2b617d573be4118c11cd96b8891a0b7f65778fa7733ed8ecdb297a447d439100" }, - { file = "pyproj-3.7.2-cp313-cp313t-macosx_13_0_x86_64.whl", hash = "sha256:d27b48f0e81beeaa2b4d60c516c3a1cfbb0c7ff6ef71256d8e9c07792f735279" }, - { file = "pyproj-3.7.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:55a3610d75023c7b1c6e583e48ef8f62918e85a2ae81300569d9f104d6684bb6" }, - { file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8d7349182fa622696787cc9e195508d2a41a64765da9b8a6bee846702b9e6220" }, - { file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:d230b186eb876ed4f29a7c5ee310144c3a0e44e89e55f65fb3607e13f6db337c" }, - { file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:237499c7862c578d0369e2b8ac56eec550e391a025ff70e2af8417139dabb41c" }, - { file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8c225f5978abd506fd9a78eaaf794435e823c9156091cabaab5374efb29d7f69" }, - { file = "pyproj-3.7.2-cp313-cp313t-win32.whl", hash = "sha256:2da731876d27639ff9d2d81c151f6ab90a1546455fabd93368e753047be344a2" }, - { file = "pyproj-3.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f54d91ae18dd23b6c0ab48126d446820e725419da10617d86a1b69ada6d881d3" }, - { file = "pyproj-3.7.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fc52ba896cfc3214dc9f9ca3c0677a623e8fdd096b257c14a31e719d21ff3fdd" }, - { file = "pyproj-3.7.2-cp314-cp314-macosx_13_0_x86_64.whl", hash = "sha256:2aaa328605ace41db050d06bac1adc11f01b71fe95c18661497763116c3a0f02" }, - { file = "pyproj-3.7.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:35dccbce8201313c596a970fde90e33605248b66272595c061b511c8100ccc08" }, - { file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:25b0b7cb0042444c29a164b993c45c1b8013d6c48baa61dc1160d834a277e83b" }, - { file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:85def3a6388e9ba51f964619aa002a9d2098e77c6454ff47773bb68871024281" }, - { file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b1bccefec3875ab81eabf49059e2b2ea77362c178b66fd3528c3e4df242f1516" }, - { file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d5371ca114d6990b675247355a801925814eca53e6c4b2f1b5c0a956336ee36e" }, - { file = "pyproj-3.7.2-cp314-cp314-win32.whl", hash = "sha256:77f066626030f41be543274f5ac79f2a511fe89860ecd0914f22131b40a0ec25" }, - { file = "pyproj-3.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:5a964da1696b8522806f4276ab04ccfff8f9eb95133a92a25900697609d40112" }, - { file = "pyproj-3.7.2-cp314-cp314-win_arm64.whl", hash = "sha256:e258ab4dbd3cf627809067c0ba8f9884ea76c8e5999d039fb37a1619c6c3e1f6" }, - { file = "pyproj-3.7.2-cp314-cp314t-macosx_13_0_x86_64.whl", hash = "sha256:bbbac2f930c6d266f70ec75df35ef851d96fdb3701c674f42fd23a9314573b37" }, - { file = "pyproj-3.7.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:b7544e0a3d6339dc9151e9c8f3ea62a936ab7cc446a806ec448bbe86aebb979b" }, - { file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:f7f5133dca4c703e8acadf6f30bc567d39a42c6af321e7f81975c2518f3ed357" }, - { file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:5aff3343038d7426aa5076f07feb88065f50e0502d1b0d7c22ddfdd2c75a3f81" }, - { file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:b0552178c61f2ac1c820d087e8ba6e62b29442debddbb09d51c4bf8acc84d888" }, - { file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:47d87db2d2c436c5fd0409b34d70bb6cdb875cca2ebe7a9d1c442367b0ab8d59" }, - { file = "pyproj-3.7.2-cp314-cp314t-win32.whl", hash = "sha256:c9b6f1d8ad3e80a0ee0903a778b6ece7dca1d1d40f6d114ae01bc8ddbad971aa" }, - { file = "pyproj-3.7.2-cp314-cp314t-win_amd64.whl", hash = "sha256:1914e29e27933ba6f9822663ee0600f169014a2859f851c054c88cf5ea8a333c" }, - { file = "pyproj-3.7.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d9d25bae416a24397e0d85739f84d323b55f6511e45a522dd7d7eae70d10c7e4" }, - { file = "pyproj-3.7.2.tar.gz", hash = "sha256:39a0cf1ecc7e282d1d30f36594ebd55c9fae1fda8a2622cee5d100430628f88c" }, + {file = "pyproj-3.7.2-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:2514d61f24c4e0bb9913e2c51487ecdaeca5f8748d8313c933693416ca41d4d5"}, + {file = "pyproj-3.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:8693ca3892d82e70de077701ee76dd13d7bca4ae1c9d1e739d72004df015923a"}, + {file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5e26484d80fea56273ed1555abaea161e9661d81a6c07815d54b8e883d4ceb25"}, + {file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:281cb92847814e8018010c48b4069ff858a30236638631c1a91dd7bfa68f8a8a"}, + {file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9c8577f0b7bb09118ec2e57e3babdc977127dd66326d6c5d755c76b063e6d9dc"}, + {file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a23f59904fac3a5e7364b3aa44d288234af267ca041adb2c2b14a903cd5d3ac5"}, + {file = "pyproj-3.7.2-cp311-cp311-win32.whl", hash = "sha256:f2af4ed34b2cf3e031a2d85b067a3ecbd38df073c567e04b52fa7a0202afde8a"}, + {file = "pyproj-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:0b7cb633565129677b2a183c4d807c727d1c736fcb0568a12299383056e67433"}, + {file = "pyproj-3.7.2-cp311-cp311-win_arm64.whl", hash = "sha256:38b08d85e3a38e455625b80e9eb9f78027c8e2649a21dec4df1f9c3525460c71"}, + {file = "pyproj-3.7.2-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:0a9bb26a6356fb5b033433a6d1b4542158fb71e3c51de49b4c318a1dff3aeaab"}, + {file = "pyproj-3.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:567caa03021178861fad27fabde87500ec6d2ee173dd32f3e2d9871e40eebd68"}, + {file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:c203101d1dc3c038a56cff0447acc515dd29d6e14811406ac539c21eed422b2a"}, + {file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1edc34266c0c23ced85f95a1ee8b47c9035eae6aca5b6b340327250e8e281630"}, + {file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aa9f26c21bc0e2dc3d224cb1eb4020cf23e76af179a7c66fea49b828611e4260"}, + {file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9428b318530625cb389b9ddc9c51251e172808a4af79b82809376daaeabe5e9"}, + {file = "pyproj-3.7.2-cp312-cp312-win32.whl", hash = "sha256:b3d99ed57d319da042f175f4554fc7038aa4bcecc4ac89e217e350346b742c9d"}, + {file = "pyproj-3.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:11614a054cd86a2ed968a657d00987a86eeb91fdcbd9ad3310478685dc14a128"}, + {file = "pyproj-3.7.2-cp312-cp312-win_arm64.whl", hash = "sha256:509a146d1398bafe4f53273398c3bb0b4732535065fa995270e52a9d3676bca3"}, + {file = "pyproj-3.7.2-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:19466e529b1b15eeefdf8ff26b06fa745856c044f2f77bf0edbae94078c1dfa1"}, + {file = "pyproj-3.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:c79b9b84c4a626c5dc324c0d666be0bfcebd99f7538d66e8898c2444221b3da7"}, + {file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ceecf374cacca317bc09e165db38ac548ee3cad07c3609442bd70311c59c21aa"}, + {file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5141a538ffdbe4bfd157421828bb2e07123a90a7a2d6f30fa1462abcfb5ce681"}, + {file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f000841e98ea99acbb7b8ca168d67773b0191de95187228a16110245c5d954d5"}, + {file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8115faf2597f281a42ab608ceac346b4eb1383d3b45ab474fd37341c4bf82a67"}, + {file = "pyproj-3.7.2-cp313-cp313-win32.whl", hash = "sha256:f18c0579dd6be00b970cb1a6719197fceecc407515bab37da0066f0184aafdf3"}, + {file = "pyproj-3.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:bb41c29d5f60854b1075853fe80c58950b398d4ebb404eb532536ac8d2834ed7"}, + {file = "pyproj-3.7.2-cp313-cp313-win_arm64.whl", hash = "sha256:2b617d573be4118c11cd96b8891a0b7f65778fa7733ed8ecdb297a447d439100"}, + {file = "pyproj-3.7.2-cp313-cp313t-macosx_13_0_x86_64.whl", hash = "sha256:d27b48f0e81beeaa2b4d60c516c3a1cfbb0c7ff6ef71256d8e9c07792f735279"}, + {file = "pyproj-3.7.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:55a3610d75023c7b1c6e583e48ef8f62918e85a2ae81300569d9f104d6684bb6"}, + {file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8d7349182fa622696787cc9e195508d2a41a64765da9b8a6bee846702b9e6220"}, + {file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:d230b186eb876ed4f29a7c5ee310144c3a0e44e89e55f65fb3607e13f6db337c"}, + {file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:237499c7862c578d0369e2b8ac56eec550e391a025ff70e2af8417139dabb41c"}, + {file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8c225f5978abd506fd9a78eaaf794435e823c9156091cabaab5374efb29d7f69"}, + {file = "pyproj-3.7.2-cp313-cp313t-win32.whl", hash = "sha256:2da731876d27639ff9d2d81c151f6ab90a1546455fabd93368e753047be344a2"}, + {file = "pyproj-3.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f54d91ae18dd23b6c0ab48126d446820e725419da10617d86a1b69ada6d881d3"}, + {file = "pyproj-3.7.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fc52ba896cfc3214dc9f9ca3c0677a623e8fdd096b257c14a31e719d21ff3fdd"}, + {file = "pyproj-3.7.2-cp314-cp314-macosx_13_0_x86_64.whl", hash = "sha256:2aaa328605ace41db050d06bac1adc11f01b71fe95c18661497763116c3a0f02"}, + {file = "pyproj-3.7.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:35dccbce8201313c596a970fde90e33605248b66272595c061b511c8100ccc08"}, + {file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:25b0b7cb0042444c29a164b993c45c1b8013d6c48baa61dc1160d834a277e83b"}, + {file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:85def3a6388e9ba51f964619aa002a9d2098e77c6454ff47773bb68871024281"}, + {file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b1bccefec3875ab81eabf49059e2b2ea77362c178b66fd3528c3e4df242f1516"}, + {file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d5371ca114d6990b675247355a801925814eca53e6c4b2f1b5c0a956336ee36e"}, + {file = "pyproj-3.7.2-cp314-cp314-win32.whl", hash = "sha256:77f066626030f41be543274f5ac79f2a511fe89860ecd0914f22131b40a0ec25"}, + {file = "pyproj-3.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:5a964da1696b8522806f4276ab04ccfff8f9eb95133a92a25900697609d40112"}, + {file = "pyproj-3.7.2-cp314-cp314-win_arm64.whl", hash = "sha256:e258ab4dbd3cf627809067c0ba8f9884ea76c8e5999d039fb37a1619c6c3e1f6"}, + {file = "pyproj-3.7.2-cp314-cp314t-macosx_13_0_x86_64.whl", hash = "sha256:bbbac2f930c6d266f70ec75df35ef851d96fdb3701c674f42fd23a9314573b37"}, + {file = "pyproj-3.7.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:b7544e0a3d6339dc9151e9c8f3ea62a936ab7cc446a806ec448bbe86aebb979b"}, + {file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:f7f5133dca4c703e8acadf6f30bc567d39a42c6af321e7f81975c2518f3ed357"}, + {file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:5aff3343038d7426aa5076f07feb88065f50e0502d1b0d7c22ddfdd2c75a3f81"}, + {file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:b0552178c61f2ac1c820d087e8ba6e62b29442debddbb09d51c4bf8acc84d888"}, + {file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:47d87db2d2c436c5fd0409b34d70bb6cdb875cca2ebe7a9d1c442367b0ab8d59"}, + {file = "pyproj-3.7.2-cp314-cp314t-win32.whl", hash = "sha256:c9b6f1d8ad3e80a0ee0903a778b6ece7dca1d1d40f6d114ae01bc8ddbad971aa"}, + {file = "pyproj-3.7.2-cp314-cp314t-win_amd64.whl", hash = "sha256:1914e29e27933ba6f9822663ee0600f169014a2859f851c054c88cf5ea8a333c"}, + {file = "pyproj-3.7.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d9d25bae416a24397e0d85739f84d323b55f6511e45a522dd7d7eae70d10c7e4"}, + {file = "pyproj-3.7.2.tar.gz", hash = "sha256:39a0cf1ecc7e282d1d30f36594ebd55c9fae1fda8a2622cee5d100430628f88c"}, ] [package.dependencies] @@ -3743,6 +3307,26 @@ pytest = ">=7" [package.extras] testing = ["process-tests", "pytest-xdist", "virtualenv"] +[[package]] +name = "pytest-cov" +version = "7.0.0" +description = "Pytest plugin for measuring coverage." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861"}, + {file = "pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1"}, +] + +[package.dependencies] +coverage = {version = ">=7.10.6", extras = ["toml"]} +pluggy = ">=1.2" +pytest = ">=7" + +[package.extras] +testing = ["process-tests", "pytest-xdist", "virtualenv"] + [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -3911,8 +3495,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04" }, - { file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff" }, + {file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04"}, + {file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff"}, ] [package.dependencies] @@ -4699,31 +4283,17 @@ files = [ [[package]] name = "tzdata" -version = "2025.2" +version = "2025.3" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" groups = ["main"] +markers = "sys_platform == \"win32\" or sys_platform == \"emscripten\"" files = [ - { file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8" }, - { file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9" }, -] - -[[package]] -name = "uri-template" -version = "1.3.0" -description = "RFC 6570 URI Template Processor" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, - {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, + {file = "tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1"}, + {file = "tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7"}, ] -[package.extras] -dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"] - [[package]] name = "urllib3" version = "2.6.3" @@ -4948,81 +4518,16 @@ enabler = ["pytest-enabler (>=2.2)"] test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more_itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] type = ["pytest-mypy"] -[[package]] -name = "wcwidth" -version = "0.2.13" -description = "Measures the displayed width of unicode strings in a terminal" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, - {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, -] - -[[package]] -name = "webcolors" -version = "24.11.1" -description = "A library for working with the color formats defined by HTML and CSS." -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - { file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9" }, - { file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6" }, -] - -[[package]] -name = "webencodings" -version = "0.5.1" -description = "Character encoding aliases for legacy web content" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, - {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, -] - -[[package]] -name = "websocket-client" -version = "1.8.0" -description = "WebSocket client for Python with low level API options" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, - {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, -] - -[package.extras] -docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"] -optional = ["python-socks", "wsaccel"] -test = ["websockets"] - -[[package]] -name = "widgetsnbextension" -version = "4.0.14" -description = "Jupyter interactive widgets for Jupyter Notebook" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - { file = "widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575" }, - { file = "widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af" }, -] - [[package]] name = "xarray" -version = "2025.10.1" +version = "2026.2.0" description = "N-D labeled arrays and datasets in Python" optional = false python-versions = ">=3.11" groups = ["main"] files = [ - { file = "xarray-2025.10.1-py3-none-any.whl", hash = "sha256:a4e699433b87a7fac340951bc36648645eeef72bdd915ff055ac2fd99865a73d" }, - { file = "xarray-2025.10.1.tar.gz", hash = "sha256:3c2b5ad7389825bd624ada5ff26b01ac54b1aae72e2fe0d724d81d40a2bf5785" }, + {file = "xarray-2026.2.0-py3-none-any.whl", hash = "sha256:e927d7d716ea71dea78a13417970850a640447d8dd2ceeb65c5687f6373837c9"}, + {file = "xarray-2026.2.0.tar.gz", hash = "sha256:978b6acb018770554f8fd964af4eb02f9bcc165d4085dbb7326190d92aa74bcf"}, ] [package.dependencies] @@ -5034,33 +4539,34 @@ pandas = ">=2.2" accel = ["bottleneck", "flox (>=0.9)", "numba (>=0.62)", "numbagg (>=0.8)", "opt_einsum", "scipy (>=1.13)"] complete = ["xarray[accel,etc,io,parallel,viz]"] etc = ["sparse (>=0.15)"] -io = ["cftime", "fsspec", "h5netcdf", "netCDF4 (>=1.6.0)", "pooch", "pydap", "scipy (>=1.13)", "zarr (>=2.18)"] +io = ["cftime", "fsspec", "h5netcdf (>=1.4.0)", "netCDF4 (>=1.6.0)", "pooch", "pydap", "scipy (>=1.13)", "zarr (>=2.18)"] parallel = ["dask[complete]"] types = ["pandas-stubs", "scipy-stubs", "types-PyYAML", "types-Pygments", "types-colorama", "types-decorator", "types-defusedxml", "types-docutils", "types-networkx", "types-openpyxl", "types-pexpect", "types-psutil", "types-pycurl", "types-python-dateutil", "types-pytz", "types-requests", "types-setuptools"] -viz = ["cartopy (>=0.23)", "matplotlib", "nc-time-axis", "seaborn"] +viz = ["cartopy (>=0.23)", "matplotlib (>=3.8)", "nc-time-axis", "seaborn"] [[package]] name = "zarr" -version = "3.1.3" +version = "3.1.5" description = "An implementation of chunked, compressed, N-dimensional arrays for Python" optional = false python-versions = ">=3.11" groups = ["main"] files = [ - { file = "zarr-3.1.3-py3-none-any.whl", hash = "sha256:45f67f87f65f14fa453f99dd8110a5936b7ac69f3a21981d33e90407c80c302a" }, - { file = "zarr-3.1.3.tar.gz", hash = "sha256:01342f3e26a02ed5670db608a5576fbdb8d76acb5c280bd2d0082454b1ba6f79" }, + {file = "zarr-3.1.5-py3-none-any.whl", hash = "sha256:29cd905afb6235b94c09decda4258c888fcb79bb6c862ef7c0b8fe009b5c8563"}, + {file = "zarr-3.1.5.tar.gz", hash = "sha256:fbe0c79675a40c996de7ca08e80a1c0a20537bd4a9f43418b6d101395c0bba2b"}, ] [package.dependencies] donfig = ">=0.8" -numcodecs = { version = ">=0.14", extras = ["crc32c"] } +google-crc32c = ">=1.5" +numcodecs = ">=0.14" numpy = ">=1.26" packaging = ">=22.0" typing-extensions = ">=4.9" [package.extras] cli = ["typer"] -docs = ["astroid (<4)", "numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "pytest", "rich", "s3fs (>=2023.10.0)", "sphinx (==8.1.3)", "sphinx-autoapi (==3.4.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx-copybutton", "sphinx-design", "sphinx-issues", "sphinx-reredirects", "towncrier"] +docs = ["astroid (<4)", "griffe-inherited-docstrings", "markdown-exec[ansi]", "mike (>=2.1.3)", "mkdocs (>=1.6.1)", "mkdocs-material[imaging] (>=9.6.14)", "mkdocs-redirects (>=1.2.0)", "mkdocstrings (>=0.29.1)", "mkdocstrings-python (>=1.16.10)", "numcodecs[msgpack]", "pytest", "rich", "ruff", "s3fs (>=2023.10.0)", "towncrier"] gpu = ["cupy-cuda12x"] optional = ["rich", "universal-pathlib"] remote = ["fsspec (>=2023.10.0)", "obstore (>=0.5.1)"] @@ -5075,8 +4581,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e" }, - { file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166" }, + {file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e"}, + {file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166"}, ] [package.extras] From 4c3c04f7fe181ddaabd3aaa1137489b8f8ede4d5 Mon Sep 17 00:00:00 2001 From: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 28 Mar 2026 08:20:00 +0100 Subject: [PATCH 49/50] Update allowed Python versions in pre-commit workflow Signed-off-by: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> --- .github/workflows/gh-pages-deployment.yaml | 36 ---------------------- .github/workflows/pre-commit/action.yaml | 2 +- 2 files changed, 1 insertion(+), 37 deletions(-) delete mode 100644 .github/workflows/gh-pages-deployment.yaml diff --git a/.github/workflows/gh-pages-deployment.yaml b/.github/workflows/gh-pages-deployment.yaml deleted file mode 100644 index e55fc5f..0000000 --- a/.github/workflows/gh-pages-deployment.yaml +++ /dev/null @@ -1,36 +0,0 @@ -name: GitHub Pages Deployment -on: - push: - branches: - - main - paths: - - 'docs/**' - - 'gh-pages-deployment.yaml' - - 'README.md' - workflow_dispatch: -permissions: - contents: write - pages: write -jobs: - deploy-gh-pages: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Configure Git user - run: | - git config user.name github-actions[bot] - git config user.email 41898282+github-actions[bot]@users.noreply.github.com - - uses: actions/setup-python@v5 - with: - python-version: ${{ env.MAIN_PYTHON_VERSION }} - - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV - - uses: actions/cache@v4 - with: - key: mkdocs-material-${{ env.cache_id }} - path: ~/.cache - restore-keys: | - mkdocs-material- - - run: pip install mkdocs-material - - run: mkdocs gh-deploy --force - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/pre-commit/action.yaml b/.github/workflows/pre-commit/action.yaml index 36b0aee..447e12b 100644 --- a/.github/workflows/pre-commit/action.yaml +++ b/.github/workflows/pre-commit/action.yaml @@ -22,7 +22,7 @@ runs: - name: Validate Python version if: ${{ hashFiles('.pre-commit-config.yaml') != '' }} run: | - ALLOWED_VERSIONS="3.9 3.10 3.11" + ALLOWED_VERSIONS="3.14 3.15" if ! echo "$ALLOWED_VERSIONS" | grep -wq "${{ inputs.python-version }}"; then echo "Error: python-version ${{ inputs.python-version }} is not allowed. Allowed: $ALLOWED_VERSIONS" exit 1 From bbfa35a2a70de1b91deeacd9b226c62a3a30e3db Mon Sep 17 00:00:00 2001 From: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Date: Sat, 19 Jul 2025 15:26:09 +0200 Subject: [PATCH 50/50] feature: Initial base documentation Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> feature: Added issue templates Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> feature: Finalized building frame and added basic logging and mock testing. Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Update src/meteoforge/logging/logging.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> Add Scorecard workflow for supply-chain security Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> feature: Initial commit with most of the groundwork (#52) * feature: Initial commit with most of the groundwork Co-authored-by: Nico Rikken Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> feature: In between commit Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> feature : First version Potential fix for code scanning alert no. 23: Workflow does not contain permissions Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> patch : Security fixes for existing actions Rebase commit for signage purposes Signed-off-by: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> feature: In between commit Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> feature: In between commit Signed-off-by: Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com> feature : First version patch : Security fixes for existing actions Rebase commit for signage purposes Signed-off-by: rflinnenbank <58594297+rflinnenbank@users.noreply.github.com> Update allowed Python versions in pre-commit workflow --- poetry.lock | 3617 ++++++++++++++++++++++++--------------------------- 1 file changed, 1728 insertions(+), 1889 deletions(-) diff --git a/poetry.lock b/poetry.lock index 71bff46..febf6c6 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,15 +1,4 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. - -[[package]] -name = "alabaster" -version = "1.0.0" -description = "A light, configurable Sphinx theme" -optional = false -python-versions = ">=3.10" -files = [ - {file = "alabaster-1.0.0-py3-none-any.whl", hash = "sha256:fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b"}, - {file = "alabaster-1.0.0.tar.gz", hash = "sha256:c00dca57bca26fa62a6d7d0a9fcce65f3e026e9bfe33e9c538fd3fbb2144fd9e"}, -] +# This file is automatically @generated by Poetry 2.1.4 and should not be changed by hand. [[package]] name = "annotated-types" @@ -23,171 +12,18 @@ files = [ {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] -[[package]] -name = "anyio" -version = "4.6.2.post1" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.9" -files = [ - {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, - {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, -] - -[package.dependencies] -idna = ">=2.8" -sniffio = ">=1.1" - -[package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] -trio = ["trio (>=0.26.1)"] - -[[package]] -name = "appnope" -version = "0.1.4" -description = "Disable App Nap on macOS >= 10.9" -optional = false -python-versions = ">=3.6" -files = [ - {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, - {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, -] - -[[package]] -name = "argon2-cffi" -version = "23.1.0" -description = "Argon2 for Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"}, - {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"}, -] - -[package.dependencies] -argon2-cffi-bindings = "*" - -[package.extras] -dev = ["argon2-cffi[tests,typing]", "tox (>4)"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-copybutton", "sphinx-notfound-page"] -tests = ["hypothesis", "pytest"] -typing = ["mypy"] - -[[package]] -name = "argon2-cffi-bindings" -version = "21.2.0" -description = "Low-level CFFI bindings for Argon2" -optional = false -python-versions = ">=3.6" -files = [ - {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"}, - {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, -] - -[package.dependencies] -cffi = ">=1.0.1" - -[package.extras] -dev = ["cogapp", "pre-commit", "pytest", "wheel"] -tests = ["pytest"] - -[[package]] -name = "arrow" -version = "1.3.0" -description = "Better dates & times for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, - {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, -] - -[package.dependencies] -python-dateutil = ">=2.7.0" -types-python-dateutil = ">=2.8.10" - -[package.extras] -doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] -test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"] - -[[package]] -name = "asciitree" -version = "0.3.3" -description = "Draws ASCII trees." -optional = false -python-versions = "*" -files = [ - {file = "asciitree-0.3.3.tar.gz", hash = "sha256:4aa4b9b649f85e3fcb343363d97564aa1fb62e249677f2e18a96765145cc0f6e"}, -] - -[[package]] -name = "asttokens" -version = "2.4.1" -description = "Annotate AST trees with source code positions" -optional = false -python-versions = "*" -files = [ - {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, - {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, -] - -[package.dependencies] -six = ">=1.12.0" - -[package.extras] -astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] -test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] - -[[package]] -name = "async-lru" -version = "2.0.4" -description = "Simple LRU cache for asyncio" -optional = false -python-versions = ">=3.8" -files = [ - {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"}, - {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"}, -] - [[package]] name = "attrs" -version = "24.2.0" +version = "26.1.0" description = "Classes Without Boilerplate" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, + {file = "attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309"}, + {file = "attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32"}, ] -[package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] - [[package]] name = "babel" version = "2.18.0" @@ -196,95 +32,50 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, - {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, -] - -[package.extras] -dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] - -[[package]] -name = "beautifulsoup4" -version = "4.12.3" -description = "Screen-scraping library" -optional = false -python-versions = ">=3.6.0" -files = [ - {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, - {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, + {file = "babel-2.18.0-py3-none-any.whl", hash = "sha256:e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35"}, + {file = "babel-2.18.0.tar.gz", hash = "sha256:b80b99a14bd085fcacfa15c9165f651fbb3406e66cc603abf11c5750937c992d"}, ] -[package.dependencies] -soupsieve = ">1.2" - [package.extras] -cchardet = ["cchardet"] -chardet = ["chardet"] -charset-normalizer = ["charset-normalizer"] -html5lib = ["html5lib"] -lxml = ["lxml"] +dev = ["backports.zoneinfo ; python_version < \"3.9\"", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata ; sys_platform == \"win32\""] [[package]] -name = "black" -version = "24.10.0" -description = "The uncompromising code formatter." +name = "backrefs" +version = "6.2" +description = "A wrapper around re and regex that adds additional back references." optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, - {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, - {file = "black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f"}, - {file = "black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e"}, - {file = "black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad"}, - {file = "black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50"}, - {file = "black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392"}, - {file = "black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175"}, - {file = "black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3"}, - {file = "black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65"}, - {file = "black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f"}, - {file = "black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8"}, - {file = "black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981"}, - {file = "black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b"}, - {file = "black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2"}, - {file = "black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b"}, - {file = "black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd"}, - {file = "black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f"}, - {file = "black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800"}, - {file = "black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7"}, - {file = "black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d"}, - {file = "black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875"}, + {file = "backrefs-6.2-py310-none-any.whl", hash = "sha256:0fdc7b012420b6b144410342caeb8adc54c6866cf12064abc9bb211302e496f8"}, + {file = "backrefs-6.2-py311-none-any.whl", hash = "sha256:08aa7fae530c6b2361d7bdcbda1a7c454e330cc9dbcd03f5c23205e430e5c3be"}, + {file = "backrefs-6.2-py312-none-any.whl", hash = "sha256:c3f4b9cb2af8cda0d87ab4f57800b57b95428488477be164dd2b47be54db0c90"}, + {file = "backrefs-6.2-py313-none-any.whl", hash = "sha256:12df81596ab511f783b7d87c043ce26bc5b0288cf3bb03610fe76b8189282b2b"}, + {file = "backrefs-6.2-py314-none-any.whl", hash = "sha256:e5f805ae09819caa1aa0623b4a83790e7028604aa2b8c73ba602c4454e665de7"}, + {file = "backrefs-6.2-py39-none-any.whl", hash = "sha256:664e33cd88c6840b7625b826ecf2555f32d491800900f5a541f772c485f7cda7"}, + {file = "backrefs-6.2.tar.gz", hash = "sha256:f44ff4d48808b243b6c0cdc6231e22195c32f77046018141556c66f8bab72a49"}, ] -[package.dependencies] -click = ">=8.0.0" -mypy-extensions = ">=0.4.3" -packaging = ">=22.0" -pathspec = ">=0.9.0" -platformdirs = ">=2" - [package.extras] -colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.10)"] -jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] -uvloop = ["uvloop (>=0.15.2)"] +extras = ["regex"] [[package]] -name = "bleach" -version = "6.1.0" -description = "An easy safelist-based HTML-sanitizing tool." +name = "boolean-py" +version = "5.0" +description = "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL." optional = false -python-versions = ">=3.8" +python-versions = "*" +groups = ["dev"] files = [ - {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"}, - {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"}, + {file = "boolean_py-5.0-py3-none-any.whl", hash = "sha256:ef28a70bd43115208441b53a045d1549e2f0ec6e3d08a9d142cbc41c1938e8d9"}, + {file = "boolean_py-5.0.tar.gz", hash = "sha256:60cbc4bad079753721d32649545505362c754e121570ada4658b852a3a318d95"}, ] -[package.dependencies] -six = ">=1.9.0" -webencodings = "*" - [package.extras] -css = ["tinycss2 (>=1.1.0,<1.3)"] +dev = ["build", "twine"] +docs = ["Sphinx (>=3.3.1)", "doc8 (>=0.8.1)", "sphinx-rtd-theme (>=0.5.0)", "sphinxcontrib-apidoc (>=0.3.0)"] +linting = ["black", "isort", "pycodestyle"] +testing = ["pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"] [[package]] name = "boolean-py" @@ -324,10 +115,10 @@ testing = ["pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"] [[package]] name = "certifi" -version = "2024.8.30" +version = "2026.1.4" description = "Python package for providing Mozilla's CA Bundle." optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" groups = ["main", "dev"] files = [ {file = "certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c"}, @@ -337,85 +128,6 @@ files = [ [package.dependencies] pycparser = "*" -[[package]] -name = "cffi" -version = "1.17.1" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, - {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, - {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, - {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, - {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, - {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, - {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, - {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, - {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, - {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, - {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, - {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, - {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, - {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, - {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, - {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, -] - -[package.dependencies] -pycparser = "*" - [[package]] name = "cfgv" version = "3.5.0" @@ -433,7 +145,8 @@ name = "cftime" version = "1.6.5" description = "Time-handling functionality from netcdf4-python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" +groups = ["main"] files = [ {file = "cftime-1.6.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8ad81e8cb0eb873b33c3d1e22c6168163fdc64daa8f7aeb4da8092f272575f4d"}, {file = "cftime-1.6.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:12d95c6af852114a13301c5a61e41afdbd1542e72939c1083796f8418b9b8b0e"}, @@ -483,117 +196,125 @@ numpy = ">=1.21.2" [[package]] name = "charset-normalizer" -version = "3.4.0" +version = "3.4.4" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, - {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, - {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-win32.whl", hash = "sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-win_arm64.whl", hash = "sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-win32.whl", hash = "sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ce8a0633f41a967713a59c4139d29110c07e826d131a316b50ce11b1d79b4f84"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaabd426fe94daf8fd157c32e571c85cb12e66692f15516a83a03264b08d06c3"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c4ef880e27901b6cc782f1b95f82da9313c0eb95c3af699103088fa0ac3ce9ac"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2aaba3b0819274cc41757a1da876f810a3e4d7b6eb25699253a4effef9e8e4af"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:778d2e08eda00f4256d7f672ca9fef386071c9202f5e4607920b86d7803387f2"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f155a433c2ec037d4e8df17d18922c3a0d9b3232a396690f17175d2946f0218d"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a8bf8d0f749c5757af2142fe7903a9df1d2e8aa3841559b2bad34b08d0e2bcf3"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:194f08cbb32dc406d6e1aea671a68be0823673db2832b38405deba2fb0d88f63"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:6aee717dcfead04c6eb1ce3bd29ac1e22663cdea57f943c87d1eab9a025438d7"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:cd4b7ca9984e5e7985c12bc60a6f173f3c958eae74f3ef6624bb6b26e2abbae4"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_riscv64.whl", hash = "sha256:b7cf1017d601aa35e6bb650b6ad28652c9cd78ee6caff19f3c28d03e1c80acbf"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e912091979546adf63357d7e2ccff9b44f026c075aeaf25a52d0e95ad2281074"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5cb4d72eea50c8868f5288b7f7f33ed276118325c1dfd3957089f6b519e1382a"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-win32.whl", hash = "sha256:837c2ce8c5a65a2035be9b3569c684358dfbf109fd3b6969630a87535495ceaa"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:44c2a8734b333e0578090c4cd6b16f275e07aa6614ca8715e6c038e865e70576"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a9768c477b9d7bd54bc0c86dbaebdec6f03306675526c9927c0e8a04e8f94af9"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1bee1e43c28aa63cb16e5c14e582580546b08e535299b8b6158a7c9c768a1f3d"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fd44c878ea55ba351104cb93cc85e74916eb8fa440ca7903e57575e97394f608"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f04b14ffe5fdc8c4933862d8306109a2c51e0704acfa35d51598eb45a1e89fc"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:cd09d08005f958f370f539f186d10aec3377d55b9eeb0d796025d4886119d76e"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4fe7859a4e3e8457458e2ff592f15ccb02f3da787fcd31e0183879c3ad4692a1"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fa09f53c465e532f4d3db095e0c55b615f010ad81803d383195b6b5ca6cbf5f3"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7fa17817dc5625de8a027cb8b26d9fefa3ea28c8253929b8d6649e705d2835b6"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:5947809c8a2417be3267efc979c47d76a079758166f7d43ef5ae8e9f92751f88"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:4902828217069c3c5c71094537a8e623f5d097858ac6ca8252f7b4d10b7560f1"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:7c308f7e26e4363d79df40ca5b2be1c6ba9f02bdbccfed5abddb7859a6ce72cf"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2c9d3c380143a1fedbff95a312aa798578371eb29da42106a29019368a475318"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cb01158d8b88ee68f15949894ccc6712278243d95f344770fa7593fa2d94410c"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-win32.whl", hash = "sha256:2677acec1a2f8ef614c6888b5b4ae4060cc184174a938ed4e8ef690e15d3e505"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:f8e160feb2aed042cd657a72acc0b481212ed28b1b9a95c0cee1621b524e1966"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-win_arm64.whl", hash = "sha256:b5d84d37db046c5ca74ee7bb47dd6cbc13f80665fdde3e8040bdd3fb015ecb50"}, + {file = "charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f"}, + {file = "charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a"}, ] [[package]] @@ -601,11 +322,11 @@ name = "click" version = "8.3.1" description = "Composable command line interface toolkit" optional = false -python-versions = ">=3.7" +python-versions = ">=3.10" groups = ["main", "dev"] files = [ - {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, - {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, + {file = "click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6"}, + {file = "click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a"}, ] [package.dependencies] @@ -617,6 +338,7 @@ version = "3.1.2" description = "Pickler class to extend the standard pickle.Pickler functionality" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "cloudpickle-3.1.2-py3-none-any.whl", hash = "sha256:9acb47f6afd73f60dc1df93bb801b472f05ff42fa6c84167d25cb206be1fbf4a"}, {file = "cloudpickle-3.1.2.tar.gz", hash = "sha256:7fda9eb655c9c230dab534f1983763de5835249750e85fbcef43aaa30a9a2414"}, @@ -633,7 +355,25 @@ files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -markers = { main = "platform_system == \"Windows\"" } +markers = {main = "platform_system == \"Windows\" or sys_platform == \"win32\""} + +[[package]] +name = "colorlog" +version = "6.10.1" +description = "Add colours to the output of Python's logging module." +optional = false +python-versions = ">=3.6" +groups = ["main"] +files = [ + {file = "colorlog-6.10.1-py3-none-any.whl", hash = "sha256:2d7e8348291948af66122cff006c9f8da6255d224e7cf8e37d8de2df3bad8c9c"}, + {file = "colorlog-6.10.1.tar.gz", hash = "sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} + +[package.extras] +development = ["black", "flake8", "mypy", "pytest", "types-colorama"] [[package]] name = "colorlog" @@ -641,6 +381,7 @@ version = "6.10.1" description = "Add colours to the output of Python's logging module." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "colorlog-6.10.1-py3-none-any.whl", hash = "sha256:2d7e8348291948af66122cff006c9f8da6255d224e7cf8e37d8de2df3bad8c9c"}, {file = "colorlog-6.10.1.tar.gz", hash = "sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321"}, @@ -654,88 +395,133 @@ development = ["black", "flake8", "mypy", "pytest", "types-colorama"] [[package]] name = "coverage" -version = "7.6.4" +version = "7.13.4" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "coverage-7.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f8ae553cba74085db385d489c7a792ad66f7f9ba2ee85bfa508aeb84cf0ba07"}, - {file = "coverage-7.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8165b796df0bd42e10527a3f493c592ba494f16ef3c8b531288e3d0d72c1f6f0"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c8b95bf47db6d19096a5e052ffca0a05f335bc63cef281a6e8fe864d450a72"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ed9281d1b52628e81393f5eaee24a45cbd64965f41857559c2b7ff19385df51"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0809082ee480bb8f7416507538243c8863ac74fd8a5d2485c46f0f7499f2b491"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d541423cdd416b78626b55f123412fcf979d22a2c39fce251b350de38c15c15b"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:58809e238a8a12a625c70450b48e8767cff9eb67c62e6154a642b21ddf79baea"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9b8e184898ed014884ca84c70562b4a82cbc63b044d366fedc68bc2b2f3394a"}, - {file = "coverage-7.6.4-cp310-cp310-win32.whl", hash = "sha256:6bd818b7ea14bc6e1f06e241e8234508b21edf1b242d49831831a9450e2f35fa"}, - {file = "coverage-7.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:06babbb8f4e74b063dbaeb74ad68dfce9186c595a15f11f5d5683f748fa1d172"}, - {file = "coverage-7.6.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:73d2b73584446e66ee633eaad1a56aad577c077f46c35ca3283cd687b7715b0b"}, - {file = "coverage-7.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51b44306032045b383a7a8a2c13878de375117946d68dcb54308111f39775a25"}, - {file = "coverage-7.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3fb02fe73bed561fa12d279a417b432e5b50fe03e8d663d61b3d5990f29546"}, - {file = "coverage-7.6.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed8fe9189d2beb6edc14d3ad19800626e1d9f2d975e436f84e19efb7fa19469b"}, - {file = "coverage-7.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b369ead6527d025a0fe7bd3864e46dbee3aa8f652d48df6174f8d0bac9e26e0e"}, - {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ade3ca1e5f0ff46b678b66201f7ff477e8fa11fb537f3b55c3f0568fbfe6e718"}, - {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:27fb4a050aaf18772db513091c9c13f6cb94ed40eacdef8dad8411d92d9992db"}, - {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4f704f0998911abf728a7783799444fcbbe8261c4a6c166f667937ae6a8aa522"}, - {file = "coverage-7.6.4-cp311-cp311-win32.whl", hash = "sha256:29155cd511ee058e260db648b6182c419422a0d2e9a4fa44501898cf918866cf"}, - {file = "coverage-7.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:8902dd6a30173d4ef09954bfcb24b5d7b5190cf14a43170e386979651e09ba19"}, - {file = "coverage-7.6.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12394842a3a8affa3ba62b0d4ab7e9e210c5e366fbac3e8b2a68636fb19892c2"}, - {file = "coverage-7.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2b6b4c83d8e8ea79f27ab80778c19bc037759aea298da4b56621f4474ffeb117"}, - {file = "coverage-7.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d5b8007f81b88696d06f7df0cb9af0d3b835fe0c8dbf489bad70b45f0e45613"}, - {file = "coverage-7.6.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b57b768feb866f44eeed9f46975f3d6406380275c5ddfe22f531a2bf187eda27"}, - {file = "coverage-7.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5915fcdec0e54ee229926868e9b08586376cae1f5faa9bbaf8faf3561b393d52"}, - {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0b58c672d14f16ed92a48db984612f5ce3836ae7d72cdd161001cc54512571f2"}, - {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2fdef0d83a2d08d69b1f2210a93c416d54e14d9eb398f6ab2f0a209433db19e1"}, - {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8cf717ee42012be8c0cb205dbbf18ffa9003c4cbf4ad078db47b95e10748eec5"}, - {file = "coverage-7.6.4-cp312-cp312-win32.whl", hash = "sha256:7bb92c539a624cf86296dd0c68cd5cc286c9eef2d0c3b8b192b604ce9de20a17"}, - {file = "coverage-7.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:1032e178b76a4e2b5b32e19d0fd0abbce4b58e77a1ca695820d10e491fa32b08"}, - {file = "coverage-7.6.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:023bf8ee3ec6d35af9c1c6ccc1d18fa69afa1cb29eaac57cb064dbb262a517f9"}, - {file = "coverage-7.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0ac3d42cb51c4b12df9c5f0dd2f13a4f24f01943627120ec4d293c9181219ba"}, - {file = "coverage-7.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8fe4984b431f8621ca53d9380901f62bfb54ff759a1348cd140490ada7b693c"}, - {file = "coverage-7.6.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5fbd612f8a091954a0c8dd4c0b571b973487277d26476f8480bfa4b2a65b5d06"}, - {file = "coverage-7.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dacbc52de979f2823a819571f2e3a350a7e36b8cb7484cdb1e289bceaf35305f"}, - {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dab4d16dfef34b185032580e2f2f89253d302facba093d5fa9dbe04f569c4f4b"}, - {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:862264b12ebb65ad8d863d51f17758b1684560b66ab02770d4f0baf2ff75da21"}, - {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5beb1ee382ad32afe424097de57134175fea3faf847b9af002cc7895be4e2a5a"}, - {file = "coverage-7.6.4-cp313-cp313-win32.whl", hash = "sha256:bf20494da9653f6410213424f5f8ad0ed885e01f7e8e59811f572bdb20b8972e"}, - {file = "coverage-7.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:182e6cd5c040cec0a1c8d415a87b67ed01193ed9ad458ee427741c7d8513d963"}, - {file = "coverage-7.6.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a181e99301a0ae128493a24cfe5cfb5b488c4e0bf2f8702091473d033494d04f"}, - {file = "coverage-7.6.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:df57bdbeffe694e7842092c5e2e0bc80fff7f43379d465f932ef36f027179806"}, - {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bcd1069e710600e8e4cf27f65c90c7843fa8edfb4520fb0ccb88894cad08b11"}, - {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99b41d18e6b2a48ba949418db48159d7a2e81c5cc290fc934b7d2380515bd0e3"}, - {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1e54712ba3474f34b7ef7a41e65bd9037ad47916ccb1cc78769bae324c01a"}, - {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53d202fd109416ce011578f321460795abfe10bb901b883cafd9b3ef851bacfc"}, - {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:c48167910a8f644671de9f2083a23630fbf7a1cb70ce939440cd3328e0919f70"}, - {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cc8ff50b50ce532de2fa7a7daae9dd12f0a699bfcd47f20945364e5c31799fef"}, - {file = "coverage-7.6.4-cp313-cp313t-win32.whl", hash = "sha256:b8d3a03d9bfcaf5b0141d07a88456bb6a4c3ce55c080712fec8418ef3610230e"}, - {file = "coverage-7.6.4-cp313-cp313t-win_amd64.whl", hash = "sha256:f3ddf056d3ebcf6ce47bdaf56142af51bb7fad09e4af310241e9db7a3a8022e1"}, - {file = "coverage-7.6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9cb7fa111d21a6b55cbf633039f7bc2749e74932e3aa7cb7333f675a58a58bf3"}, - {file = "coverage-7.6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:11a223a14e91a4693d2d0755c7a043db43d96a7450b4f356d506c2562c48642c"}, - {file = "coverage-7.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a413a096c4cbac202433c850ee43fa326d2e871b24554da8327b01632673a076"}, - {file = "coverage-7.6.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00a1d69c112ff5149cabe60d2e2ee948752c975d95f1e1096742e6077affd376"}, - {file = "coverage-7.6.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f76846299ba5c54d12c91d776d9605ae33f8ae2b9d1d3c3703cf2db1a67f2c0"}, - {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fe439416eb6380de434886b00c859304338f8b19f6f54811984f3420a2e03858"}, - {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0294ca37f1ba500667b1aef631e48d875ced93ad5e06fa665a3295bdd1d95111"}, - {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6f01ba56b1c0e9d149f9ac85a2f999724895229eb36bd997b61e62999e9b0901"}, - {file = "coverage-7.6.4-cp39-cp39-win32.whl", hash = "sha256:bc66f0bf1d7730a17430a50163bb264ba9ded56739112368ba985ddaa9c3bd09"}, - {file = "coverage-7.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:c481b47f6b5845064c65a7bc78bc0860e635a9b055af0df46fdf1c58cebf8e8f"}, - {file = "coverage-7.6.4-pp39.pp310-none-any.whl", hash = "sha256:3c65d37f3a9ebb703e710befdc489a38683a5b152242664b973a7b7b22348a4e"}, - {file = "coverage-7.6.4.tar.gz", hash = "sha256:29fc0f17b1d3fea332f8001d4558f8214af7f1d87a345f3a133c901d60347c73"}, + {file = "coverage-7.13.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0fc31c787a84f8cd6027eba44010517020e0d18487064cd3d8968941856d1415"}, + {file = "coverage-7.13.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a32ebc02a1805adf637fc8dec324b5cdacd2e493515424f70ee33799573d661b"}, + {file = "coverage-7.13.4-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e24f9156097ff9dc286f2f913df3a7f63c0e333dcafa3c196f2c18b4175ca09a"}, + {file = "coverage-7.13.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8041b6c5bfdc03257666e9881d33b1abc88daccaf73f7b6340fb7946655cd10f"}, + {file = "coverage-7.13.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2a09cfa6a5862bc2fc6ca7c3def5b2926194a56b8ab78ffcf617d28911123012"}, + {file = "coverage-7.13.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:296f8b0af861d3970c2a4d8c91d48eb4dd4771bcef9baedec6a9b515d7de3def"}, + {file = "coverage-7.13.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e101609bcbbfb04605ea1027b10dc3735c094d12d40826a60f897b98b1c30256"}, + {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:aa3feb8db2e87ff5e6d00d7e1480ae241876286691265657b500886c98f38bda"}, + {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4fc7fa81bbaf5a02801b65346c8b3e657f1d93763e58c0abdf7c992addd81a92"}, + {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:33901f604424145c6e9c2398684b92e176c0b12df77d52db81c20abd48c3794c"}, + {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:bb28c0f2cf2782508a40cec377935829d5fcc3ad9a3681375af4e84eb34b6b58"}, + {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9d107aff57a83222ddbd8d9ee705ede2af2cc926608b57abed8ef96b50b7e8f9"}, + {file = "coverage-7.13.4-cp310-cp310-win32.whl", hash = "sha256:a6f94a7d00eb18f1b6d403c91a88fd58cfc92d4b16080dfdb774afc8294469bf"}, + {file = "coverage-7.13.4-cp310-cp310-win_amd64.whl", hash = "sha256:2cb0f1e000ebc419632bbe04366a8990b6e32c4e0b51543a6484ffe15eaeda95"}, + {file = "coverage-7.13.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d490ba50c3f35dd7c17953c68f3270e7ccd1c6642e2d2afe2d8e720b98f5a053"}, + {file = "coverage-7.13.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:19bc3c88078789f8ef36acb014d7241961dbf883fd2533d18cb1e7a5b4e28b11"}, + {file = "coverage-7.13.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3998e5a32e62fdf410c0dbd3115df86297995d6e3429af80b8798aad894ca7aa"}, + {file = "coverage-7.13.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8e264226ec98e01a8e1054314af91ee6cde0eacac4f465cc93b03dbe0bce2fd7"}, + {file = "coverage-7.13.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a3aa4e7b9e416774b21797365b358a6e827ffadaaca81b69ee02946852449f00"}, + {file = "coverage-7.13.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:71ca20079dd8f27fcf808817e281e90220475cd75115162218d0e27549f95fef"}, + {file = "coverage-7.13.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e2f25215f1a359ab17320b47bcdaca3e6e6356652e8256f2441e4ef972052903"}, + {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d65b2d373032411e86960604dc4edac91fdfb5dca539461cf2cbe78327d1e64f"}, + {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94eb63f9b363180aff17de3e7c8760c3ba94664ea2695c52f10111244d16a299"}, + {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e856bf6616714c3a9fbc270ab54103f4e685ba236fa98c054e8f87f266c93505"}, + {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:65dfcbe305c3dfe658492df2d85259e0d79ead4177f9ae724b6fb245198f55d6"}, + {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b507778ae8a4c915436ed5c2e05b4a6cecfa70f734e19c22a005152a11c7b6a9"}, + {file = "coverage-7.13.4-cp311-cp311-win32.whl", hash = "sha256:784fc3cf8be001197b652d51d3fd259b1e2262888693a4636e18879f613a62a9"}, + {file = "coverage-7.13.4-cp311-cp311-win_amd64.whl", hash = "sha256:2421d591f8ca05b308cf0092807308b2facbefe54af7c02ac22548b88b95c98f"}, + {file = "coverage-7.13.4-cp311-cp311-win_arm64.whl", hash = "sha256:79e73a76b854d9c6088fe5d8b2ebe745f8681c55f7397c3c0a016192d681045f"}, + {file = "coverage-7.13.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:02231499b08dabbe2b96612993e5fc34217cdae907a51b906ac7fca8027a4459"}, + {file = "coverage-7.13.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40aa8808140e55dc022b15d8aa7f651b6b3d68b365ea0398f1441e0b04d859c3"}, + {file = "coverage-7.13.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5b856a8ccf749480024ff3bd7310adaef57bf31fd17e1bfc404b7940b6986634"}, + {file = "coverage-7.13.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2c048ea43875fbf8b45d476ad79f179809c590ec7b79e2035c662e7afa3192e3"}, + {file = "coverage-7.13.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b7b38448866e83176e28086674fe7368ab8590e4610fb662b44e345b86d63ffa"}, + {file = "coverage-7.13.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:de6defc1c9badbf8b9e67ae90fd00519186d6ab64e5cc5f3d21359c2a9b2c1d3"}, + {file = "coverage-7.13.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7eda778067ad7ffccd23ecffce537dface96212576a07924cbf0d8799d2ded5a"}, + {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e87f6c587c3f34356c3759f0420693e35e7eb0e2e41e4c011cb6ec6ecbbf1db7"}, + {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8248977c2e33aecb2ced42fef99f2d319e9904a36e55a8a68b69207fb7e43edc"}, + {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:25381386e80ae727608e662474db537d4df1ecd42379b5ba33c84633a2b36d47"}, + {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:ee756f00726693e5ba94d6df2bdfd64d4852d23b09bb0bc700e3b30e6f333985"}, + {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fdfc1e28e7c7cdce44985b3043bc13bbd9c747520f94a4d7164af8260b3d91f0"}, + {file = "coverage-7.13.4-cp312-cp312-win32.whl", hash = "sha256:01d4cbc3c283a17fc1e42d614a119f7f438eabb593391283adca8dc86eff1246"}, + {file = "coverage-7.13.4-cp312-cp312-win_amd64.whl", hash = "sha256:9401ebc7ef522f01d01d45532c68c5ac40fb27113019b6b7d8b208f6e9baa126"}, + {file = "coverage-7.13.4-cp312-cp312-win_arm64.whl", hash = "sha256:b1ec7b6b6e93255f952e27ab58fbc68dcc468844b16ecbee881aeb29b6ab4d8d"}, + {file = "coverage-7.13.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b66a2da594b6068b48b2692f043f35d4d3693fb639d5ea8b39533c2ad9ac3ab9"}, + {file = "coverage-7.13.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3599eb3992d814d23b35c536c28df1a882caa950f8f507cef23d1cbf334995ac"}, + {file = "coverage-7.13.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:93550784d9281e374fb5a12bf1324cc8a963fd63b2d2f223503ef0fd4aa339ea"}, + {file = "coverage-7.13.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b720ce6a88a2755f7c697c23268ddc47a571b88052e6b155224347389fdf6a3b"}, + {file = "coverage-7.13.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7b322db1284a2ed3aa28ffd8ebe3db91c929b7a333c0820abec3d838ef5b3525"}, + {file = "coverage-7.13.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f4594c67d8a7c89cf922d9df0438c7c7bb022ad506eddb0fdb2863359ff78242"}, + {file = "coverage-7.13.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:53d133df809c743eb8bce33b24bcababb371f4441340578cd406e084d94a6148"}, + {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:76451d1978b95ba6507a039090ba076105c87cc76fc3efd5d35d72093964d49a"}, + {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7f57b33491e281e962021de110b451ab8a24182589be17e12a22c79047935e23"}, + {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1731dc33dc276dafc410a885cbf5992f1ff171393e48a21453b78727d090de80"}, + {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:bd60d4fe2f6fa7dff9223ca1bbc9f05d2b6697bc5961072e5d3b952d46e1b1ea"}, + {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9181a3ccead280b828fae232df12b16652702b49d41e99d657f46cc7b1f6ec7a"}, + {file = "coverage-7.13.4-cp313-cp313-win32.whl", hash = "sha256:f53d492307962561ac7de4cd1de3e363589b000ab69617c6156a16ba7237998d"}, + {file = "coverage-7.13.4-cp313-cp313-win_amd64.whl", hash = "sha256:e6f70dec1cc557e52df5306d051ef56003f74d56e9c4dd7ddb07e07ef32a84dd"}, + {file = "coverage-7.13.4-cp313-cp313-win_arm64.whl", hash = "sha256:fb07dc5da7e849e2ad31a5d74e9bece81f30ecf5a42909d0a695f8bd1874d6af"}, + {file = "coverage-7.13.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:40d74da8e6c4b9ac18b15331c4b5ebc35a17069410cad462ad4f40dcd2d50c0d"}, + {file = "coverage-7.13.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4223b4230a376138939a9173f1bdd6521994f2aff8047fae100d6d94d50c5a12"}, + {file = "coverage-7.13.4-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1d4be36a5114c499f9f1f9195e95ebf979460dbe2d88e6816ea202010ba1c34b"}, + {file = "coverage-7.13.4-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:200dea7d1e8095cc6e98cdabe3fd1d21ab17d3cee6dab00cadbb2fe35d9c15b9"}, + {file = "coverage-7.13.4-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8eb931ee8e6d8243e253e5ed7336deea6904369d2fd8ae6e43f68abbf167092"}, + {file = "coverage-7.13.4-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:75eab1ebe4f2f64d9509b984f9314d4aa788540368218b858dad56dc8f3e5eb9"}, + {file = "coverage-7.13.4-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c35eb28c1d085eb7d8c9b3296567a1bebe03ce72962e932431b9a61f28facf26"}, + {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:eb88b316ec33760714a4720feb2816a3a59180fd58c1985012054fa7aebee4c2"}, + {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7d41eead3cc673cbd38a4417deb7fd0b4ca26954ff7dc6078e33f6ff97bed940"}, + {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:fb26a934946a6afe0e326aebe0730cdff393a8bc0bbb65a2f41e30feddca399c"}, + {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:dae88bc0fc77edaa65c14be099bd57ee140cf507e6bfdeea7938457ab387efb0"}, + {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:845f352911777a8e722bfce168958214951e07e47e5d5d9744109fa5fe77f79b"}, + {file = "coverage-7.13.4-cp313-cp313t-win32.whl", hash = "sha256:2fa8d5f8de70688a28240de9e139fa16b153cc3cbb01c5f16d88d6505ebdadf9"}, + {file = "coverage-7.13.4-cp313-cp313t-win_amd64.whl", hash = "sha256:9351229c8c8407645840edcc277f4a2d44814d1bc34a2128c11c2a031d45a5dd"}, + {file = "coverage-7.13.4-cp313-cp313t-win_arm64.whl", hash = "sha256:30b8d0512f2dc8c8747557e8fb459d6176a2c9e5731e2b74d311c03b78451997"}, + {file = "coverage-7.13.4-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:300deaee342f90696ed186e3a00c71b5b3d27bffe9e827677954f4ee56969601"}, + {file = "coverage-7.13.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:29e3220258d682b6226a9b0925bc563ed9a1ebcff3cad30f043eceea7eaf2689"}, + {file = "coverage-7.13.4-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:391ee8f19bef69210978363ca930f7328081c6a0152f1166c91f0b5fdd2a773c"}, + {file = "coverage-7.13.4-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0dd7ab8278f0d58a0128ba2fca25824321f05d059c1441800e934ff2efa52129"}, + {file = "coverage-7.13.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:78cdf0d578b15148b009ccf18c686aa4f719d887e76e6b40c38ffb61d264a552"}, + {file = "coverage-7.13.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:48685fee12c2eb3b27c62f2658e7ea21e9c3239cba5a8a242801a0a3f6a8c62a"}, + {file = "coverage-7.13.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4e83efc079eb39480e6346a15a1bcb3e9b04759c5202d157e1dd4303cd619356"}, + {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ecae9737b72408d6a950f7e525f30aca12d4bd8dd95e37342e5beb3a2a8c4f71"}, + {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ae4578f8528569d3cf303fef2ea569c7f4c4059a38c8667ccef15c6e1f118aa5"}, + {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:6fdef321fdfbb30a197efa02d48fcd9981f0d8ad2ae8903ac318adc653f5df98"}, + {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b0f6ccf3dbe577170bebfce1318707d0e8c3650003cb4b3a9dd744575daa8b5"}, + {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:75fcd519f2a5765db3f0e391eb3b7d150cce1a771bf4c9f861aeab86c767a3c0"}, + {file = "coverage-7.13.4-cp314-cp314-win32.whl", hash = "sha256:8e798c266c378da2bd819b0677df41ab46d78065fb2a399558f3f6cae78b2fbb"}, + {file = "coverage-7.13.4-cp314-cp314-win_amd64.whl", hash = "sha256:245e37f664d89861cf2329c9afa2c1fe9e6d4e1a09d872c947e70718aeeac505"}, + {file = "coverage-7.13.4-cp314-cp314-win_arm64.whl", hash = "sha256:ad27098a189e5838900ce4c2a99f2fe42a0bf0c2093c17c69b45a71579e8d4a2"}, + {file = "coverage-7.13.4-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:85480adfb35ffc32d40918aad81b89c69c9cc5661a9b8a81476d3e645321a056"}, + {file = "coverage-7.13.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:79be69cf7f3bf9b0deeeb062eab7ac7f36cd4cc4c4dd694bd28921ba4d8596cc"}, + {file = "coverage-7.13.4-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:caa421e2684e382c5d8973ac55e4f36bed6821a9bad5c953494de960c74595c9"}, + {file = "coverage-7.13.4-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:14375934243ee05f56c45393fe2ce81fe5cc503c07cee2bdf1725fb8bef3ffaf"}, + {file = "coverage-7.13.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:25a41c3104d08edb094d9db0d905ca54d0cd41c928bb6be3c4c799a54753af55"}, + {file = "coverage-7.13.4-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6f01afcff62bf9a08fb32b2c1d6e924236c0383c02c790732b6537269e466a72"}, + {file = "coverage-7.13.4-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:eb9078108fbf0bcdde37c3f4779303673c2fa1fe8f7956e68d447d0dd426d38a"}, + {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0e086334e8537ddd17e5f16a344777c1ab8194986ec533711cbe6c41cde841b6"}, + {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:725d985c5ab621268b2edb8e50dfe57633dc69bda071abc470fed55a14935fd3"}, + {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:3c06f0f1337c667b971ca2f975523347e63ec5e500b9aa5882d91931cd3ef750"}, + {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:590c0ed4bf8e85f745e6b805b2e1c457b2e33d5255dd9729743165253bc9ad39"}, + {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:eb30bf180de3f632cd043322dad5751390e5385108b2807368997d1a92a509d0"}, + {file = "coverage-7.13.4-cp314-cp314t-win32.whl", hash = "sha256:c4240e7eded42d131a2d2c4dec70374b781b043ddc79a9de4d55ca71f8e98aea"}, + {file = "coverage-7.13.4-cp314-cp314t-win_amd64.whl", hash = "sha256:4c7d3cc01e7350f2f0f6f7036caaf5673fb56b6998889ccfe9e1c1fe75a9c932"}, + {file = "coverage-7.13.4-cp314-cp314t-win_arm64.whl", hash = "sha256:23e3f687cf945070d1c90f85db66d11e3025665d8dafa831301a0e0038f3db9b"}, + {file = "coverage-7.13.4-py3-none-any.whl", hash = "sha256:1af1641e57cf7ba1bd67d677c9abdbcd6cc2ab7da3bca7fa1e2b7e50e65f2ad0"}, + {file = "coverage-7.13.4.tar.gz", hash = "sha256:e5c8f6ed1e61a8b2dcdf31eb0b9bbf0130750ca79c1c49eb898e2ad86f5ccc91"}, ] [package.extras] -toml = ["tomli"] +toml = ["tomli ; python_full_version <= \"3.11.0a6\""] [[package]] name = "dask" -version = "2024.10.0" +version = "2026.1.2" description = "Parallel PyData with Task Scheduling" optional = false python-versions = ">=3.10" +groups = ["main"] files = [ - {file = "dask-2024.10.0-py3-none-any.whl", hash = "sha256:1ddc27c7967e134b4f8296a488521485a5ac4927cc63e2abfa0b24227b93217f"}, - {file = "dask-2024.10.0.tar.gz", hash = "sha256:dfd3efec5d8d8340fb647d0347637133030cad261b714623cc27de286e9db037"}, + {file = "dask-2026.1.2-py3-none-any.whl", hash = "sha256:46a0cf3b8d87f78a3d2e6b145aea4418a6d6d606fe6a16c79bd8ca2bb862bc91"}, + {file = "dask-2026.1.2.tar.gz", hash = "sha256:1136683de2750d98ea792670f7434e6c1cfce90cab2cc2f2495a9e60fd25a4fc"}, ] [package.dependencies] @@ -745,60 +531,62 @@ fsspec = ">=2021.09.0" packaging = ">=20.0" partd = ">=1.4.0" pyyaml = ">=5.3.1" -toolz = ">=0.10.0" +toolz = ">=0.12.0" [package.extras] array = ["numpy (>=1.24)"] -complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=14.0.1)"] -dataframe = ["dask-expr (>=1.1,<1.2)", "dask[array]", "pandas (>=2.0)"] +complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=16.0)"] +dataframe = ["dask[array]", "pandas (>=2.0)", "pyarrow (>=16.0)"] diagnostics = ["bokeh (>=3.1.0)", "jinja2 (>=2.10.3)"] -distributed = ["distributed (==2024.10.0)"] -test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] +distributed = ["distributed (>=2026.1.2,<2026.1.3)"] +test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] [[package]] name = "debugpy" -version = "1.8.7" +version = "1.8.15" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "debugpy-1.8.7-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:95fe04a573b8b22896c404365e03f4eda0ce0ba135b7667a1e57bd079793b96b"}, - {file = "debugpy-1.8.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:628a11f4b295ffb4141d8242a9bb52b77ad4a63a2ad19217a93be0f77f2c28c9"}, - {file = "debugpy-1.8.7-cp310-cp310-win32.whl", hash = "sha256:85ce9c1d0eebf622f86cc68618ad64bf66c4fc3197d88f74bb695a416837dd55"}, - {file = "debugpy-1.8.7-cp310-cp310-win_amd64.whl", hash = "sha256:29e1571c276d643757ea126d014abda081eb5ea4c851628b33de0c2b6245b037"}, - {file = "debugpy-1.8.7-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:caf528ff9e7308b74a1749c183d6808ffbedbb9fb6af78b033c28974d9b8831f"}, - {file = "debugpy-1.8.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cba1d078cf2e1e0b8402e6bda528bf8fda7ccd158c3dba6c012b7897747c41a0"}, - {file = "debugpy-1.8.7-cp311-cp311-win32.whl", hash = "sha256:171899588bcd412151e593bd40d9907133a7622cd6ecdbdb75f89d1551df13c2"}, - {file = "debugpy-1.8.7-cp311-cp311-win_amd64.whl", hash = "sha256:6e1c4ffb0c79f66e89dfd97944f335880f0d50ad29525dc792785384923e2211"}, - {file = "debugpy-1.8.7-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:4d27d842311353ede0ad572600c62e4bcd74f458ee01ab0dd3a1a4457e7e3706"}, - {file = "debugpy-1.8.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:703c1fd62ae0356e194f3e7b7a92acd931f71fe81c4b3be2c17a7b8a4b546ec2"}, - {file = "debugpy-1.8.7-cp312-cp312-win32.whl", hash = "sha256:2f729228430ef191c1e4df72a75ac94e9bf77413ce5f3f900018712c9da0aaca"}, - {file = "debugpy-1.8.7-cp312-cp312-win_amd64.whl", hash = "sha256:45c30aaefb3e1975e8a0258f5bbd26cd40cde9bfe71e9e5a7ac82e79bad64e39"}, - {file = "debugpy-1.8.7-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:d050a1ec7e925f514f0f6594a1e522580317da31fbda1af71d1530d6ea1f2b40"}, - {file = "debugpy-1.8.7-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2f4349a28e3228a42958f8ddaa6333d6f8282d5edaea456070e48609c5983b7"}, - {file = "debugpy-1.8.7-cp313-cp313-win32.whl", hash = "sha256:11ad72eb9ddb436afb8337891a986302e14944f0f755fd94e90d0d71e9100bba"}, - {file = "debugpy-1.8.7-cp313-cp313-win_amd64.whl", hash = "sha256:2efb84d6789352d7950b03d7f866e6d180284bc02c7e12cb37b489b7083d81aa"}, - {file = "debugpy-1.8.7-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:4b908291a1d051ef3331484de8e959ef3e66f12b5e610c203b5b75d2725613a7"}, - {file = "debugpy-1.8.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da8df5b89a41f1fd31503b179d0a84a5fdb752dddd5b5388dbd1ae23cda31ce9"}, - {file = "debugpy-1.8.7-cp38-cp38-win32.whl", hash = "sha256:b12515e04720e9e5c2216cc7086d0edadf25d7ab7e3564ec8b4521cf111b4f8c"}, - {file = "debugpy-1.8.7-cp38-cp38-win_amd64.whl", hash = "sha256:93176e7672551cb5281577cdb62c63aadc87ec036f0c6a486f0ded337c504596"}, - {file = "debugpy-1.8.7-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:90d93e4f2db442f8222dec5ec55ccfc8005821028982f1968ebf551d32b28907"}, - {file = "debugpy-1.8.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6db2a370e2700557a976eaadb16243ec9c91bd46f1b3bb15376d7aaa7632c81"}, - {file = "debugpy-1.8.7-cp39-cp39-win32.whl", hash = "sha256:a6cf2510740e0c0b4a40330640e4b454f928c7b99b0c9dbf48b11efba08a8cda"}, - {file = "debugpy-1.8.7-cp39-cp39-win_amd64.whl", hash = "sha256:6a9d9d6d31846d8e34f52987ee0f1a904c7baa4912bf4843ab39dadf9b8f3e0d"}, - {file = "debugpy-1.8.7-py2.py3-none-any.whl", hash = "sha256:57b00de1c8d2c84a61b90880f7e5b6deaf4c312ecbde3a0e8912f2a56c4ac9ae"}, - {file = "debugpy-1.8.7.zip", hash = "sha256:18b8f731ed3e2e1df8e9cdaa23fb1fc9c24e570cd0081625308ec51c82efe42e"}, + { file = "debugpy-1.8.15-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e9a8125c85172e3ec30985012e7a81ea5e70bbb836637f8a4104f454f9b06c97" }, + { file = "debugpy-1.8.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fd0b6b5eccaa745c214fd240ea82f46049d99ef74b185a3517dad3ea1ec55d9" }, + { file = "debugpy-1.8.15-cp310-cp310-win32.whl", hash = "sha256:8181cce4d344010f6bfe94a531c351a46a96b0f7987750932b2908e7a1e14a55" }, + { file = "debugpy-1.8.15-cp310-cp310-win_amd64.whl", hash = "sha256:af2dcae4e4cd6e8b35f982ccab29fe65f7e8766e10720a717bc80c464584ee21" }, + { file = "debugpy-1.8.15-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:babc4fb1962dd6a37e94d611280e3d0d11a1f5e6c72ac9b3d87a08212c4b6dd3" }, + { file = "debugpy-1.8.15-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f778e68f2986a58479d0ac4f643e0b8c82fdd97c2e200d4d61e7c2d13838eb53" }, + { file = "debugpy-1.8.15-cp311-cp311-win32.whl", hash = "sha256:f9d1b5abd75cd965e2deabb1a06b0e93a1546f31f9f621d2705e78104377c702" }, + { file = "debugpy-1.8.15-cp311-cp311-win_amd64.whl", hash = "sha256:62954fb904bec463e2b5a415777f6d1926c97febb08ef1694da0e5d1463c5c3b" }, + { file = "debugpy-1.8.15-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:3dcc7225cb317469721ab5136cda9ff9c8b6e6fb43e87c9e15d5b108b99d01ba" }, + { file = "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" }, + { file = "debugpy-1.8.15-cp312-cp312-win32.whl", hash = "sha256:b08e9b0bc260cf324c890626961dad4ffd973f7568fbf57feb3c3a65ab6b6327" }, + { file = "debugpy-1.8.15-cp312-cp312-win_amd64.whl", hash = "sha256:e2a4fe357c92334272eb2845fcfcdbec3ef9f22c16cf613c388ac0887aed15fa" }, + { file = "debugpy-1.8.15-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:f5e01291ad7d6649aed5773256c5bba7a1a556196300232de1474c3c372592bf" }, + { file = "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" }, + { file = "debugpy-1.8.15-cp313-cp313-win32.whl", hash = "sha256:fcf0748d4f6e25f89dc5e013d1129ca6f26ad4da405e0723a4f704583896a709" }, + { file = "debugpy-1.8.15-cp313-cp313-win_amd64.whl", hash = "sha256:73c943776cb83e36baf95e8f7f8da765896fd94b05991e7bc162456d25500683" }, + { file = "debugpy-1.8.15-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:054cd4935bd2e4964dfe1aeee4d6bca89d0c833366776fc35387f8a2f517dd00" }, + { file = "debugpy-1.8.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21c4288e662997df3176c4b9d93ee1393913fbaf320732be332d538000c53208" }, + { file = "debugpy-1.8.15-cp38-cp38-win32.whl", hash = "sha256:aaa8ce6a37d764f93fe583d7c6ca58eb7550b36941387483db113125f122bb0d" }, + { file = "debugpy-1.8.15-cp38-cp38-win_amd64.whl", hash = "sha256:71cdf7f676af78e70f005c7fad2ef9da0edc2a24befbf3ab146a51f0d58048c2" }, + { file = "debugpy-1.8.15-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:085b6d0adb3eb457c2823ac497a0690b10a99eff8b01c01a041e84579f114b56" }, + { file = "debugpy-1.8.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd546a405381d17527814852642df0a74b7da8acc20ae5f3cfad0b7c86419511" }, + { file = "debugpy-1.8.15-cp39-cp39-win32.whl", hash = "sha256:ae0d445fe11ff4351428e6c2389e904e1cdcb4a47785da5a5ec4af6c5b95fce5" }, + { file = "debugpy-1.8.15-cp39-cp39-win_amd64.whl", hash = "sha256:de7db80189ca97ab4b10a87e4039cfe4dd7ddfccc8f33b5ae40fcd33792fc67a" }, + { file = "debugpy-1.8.15-py2.py3-none-any.whl", hash = "sha256:bce2e6c5ff4f2e00b98d45e7e01a49c7b489ff6df5f12d881c67d2f1ac635f3d" }, + { file = "debugpy-1.8.15.tar.gz", hash = "sha256:58d7a20b7773ab5ee6bdfb2e6cf622fdf1e40c9d5aef2857d85391526719ac00" }, ] [[package]] name = "decorator" -version = "5.1.1" +version = "5.2.1" description = "Decorators for Humans" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, - {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, + { file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a" }, + { file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360" }, ] [[package]] @@ -807,6 +595,7 @@ version = "0.7.1" description = "XML bomb protection for Python stdlib modules" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] files = [ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, @@ -878,19 +667,37 @@ optional = false python-versions = "*" groups = ["dev"] files = [ - {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, - {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, + {file = "distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16"}, + {file = "distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d"}, ] [[package]] -name = "docutils" -version = "0.21.2" -description = "Docutils -- Python Documentation Utilities" +name = "donfig" +version = "0.8.1.post1" +description = "Python package for configuring a python package" optional = false -python-versions = ">=3.9" +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d"}, + {file = "donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] +typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] + +[[package]] +name = "fqdn" +version = "1.4.0" +description = "Validate fully-qualified domain names compliant to RFC 1035 and the preferred form in RFC 3686 s. 2." +optional = false +python-versions = "*" +groups = ["dev"] files = [ - {file = "docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2"}, - {file = "docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f"}, + { file = "fqdn-1.4.0-py3-none-any.whl", hash = "sha256:e935616ae81c9c60a22267593fe8e6af68cecc68549cc71bb9bfbcbbcb383386" }, + { file = "fqdn-1.4.0.tar.gz", hash = "sha256:30e8f2e685ce87cdace4712fd97c5d09f5e6fa519bbb66e8f188f6a7cb3a5c4e" }, ] [package.extras] @@ -951,40 +758,70 @@ test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "backports-zstd ; python_ tqdm = ["tqdm"] [[package]] -name = "executing" -version = "2.1.0" -description = "Get the currently executing AST node of a frame, and other information" +name = "fsspec" +version = "2026.2.0" +description = "File-system specification" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" +groups = ["main"] files = [ - {file = "executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf"}, - {file = "executing-2.1.0.tar.gz", hash = "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab"}, + {file = "fsspec-2026.2.0-py3-none-any.whl", hash = "sha256:98de475b5cb3bd66bedd5c4679e87b4fdfe1a3bf4d707b151b3c07e58c9a2437"}, + {file = "fsspec-2026.2.0.tar.gz", hash = "sha256:6544e34b16869f5aacd5b90bdf1a71acb37792ea3ddf6125ee69a22a53fb8bff"}, ] [package.extras] -tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] +abfs = ["adlfs"] +adl = ["adlfs"] +arrow = ["pyarrow (>=1)"] +dask = ["dask", "distributed"] +dev = ["pre-commit", "ruff (>=0.5)"] +doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"] +dropbox = ["dropbox", "dropboxdrivefs", "requests"] +full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs (>2024.2.0)", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs (>2024.2.0)", "smbprotocol", "tqdm"] +fuse = ["fusepy"] +gcs = ["gcsfs (>2024.2.0)"] +git = ["pygit2"] +github = ["requests"] +gs = ["gcsfs"] +gui = ["panel"] +hdfs = ["pyarrow (>=1)"] +http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] +libarchive = ["libarchive-c"] +oci = ["ocifs"] +s3 = ["s3fs (>2024.2.0)"] +sftp = ["paramiko"] +smb = ["smbprotocol"] +ssh = ["paramiko"] +test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"] +test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] +test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "backports-zstd ; python_version < \"3.14\"", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas (<3.0.0)", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard ; python_version < \"3.14\""] +tqdm = ["tqdm"] [[package]] -name = "fasteners" -version = "0.19" -description = "A python package that provides useful locks" +name = "executing" +version = "2.2.0" +description = "Get the currently executing AST node of a frame, and other information" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "fasteners-0.19-py3-none-any.whl", hash = "sha256:758819cb5d94cdedf4e836988b74de396ceacb8e2794d21f82d131fd9ee77237"}, - {file = "fasteners-0.19.tar.gz", hash = "sha256:b4f37c3ac52d8a445af3a66bce57b33b5e90b97c696b7b984f530cf8f0ded09c"}, + { file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa" }, + { file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755" }, ] +[package.extras] +tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich ; python_version >= \"3.11\""] + [[package]] name = "fastjsonschema" -version = "2.20.0" +version = "2.21.1" description = "Fastest Python implementation of JSON schema" optional = false python-versions = "*" groups = ["dev"] files = [ - {file = "fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a"}, - {file = "fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23"}, + { file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667" }, + { file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4" }, ] [package.extras] @@ -992,37 +829,22 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc [[package]] name = "filelock" -version = "3.16.1" +version = "3.24.3" description = "A platform independent file lock." optional = false -python-versions = ">=3.8" -files = [ - {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, - {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] -typing = ["typing-extensions (>=4.12.2)"] - -[[package]] -name = "fqdn" -version = "1.5.1" -description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers" -optional = false -python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" +python-versions = ">=3.10" +groups = ["dev"] files = [ - {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"}, - {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"}, + {file = "filelock-3.24.3-py3-none-any.whl", hash = "sha256:426e9a4660391f7f8a810d71b0555bce9008b0a1cc342ab1f6947d37639e002d"}, + {file = "filelock-3.24.3.tar.gz", hash = "sha256:011a5644dc937c22699943ebbfc46e969cdde3e171470a6e40b9533e5a72affa"}, ] [[package]] name = "fsspec" -version = "2025.7.0" +version = "2026.2.0" description = "File-system specification" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" groups = ["main"] files = [ {file = "fsspec-2026.2.0-py3-none-any.whl", hash = "sha256:98de475b5cb3bd66bedd5c4679e87b4fdfe1a3bf4d707b151b3c07e58c9a2437"}, @@ -1058,43 +880,110 @@ test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "backports-zstd ; python_ tqdm = ["tqdm"] [[package]] -name = "h11" -version = "0.14.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = false -python-versions = ">=3.7" -files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, -] - -[[package]] -name = "httpcore" -version = "1.0.6" -description = "A minimal low-level HTTP client." +name = "ghp-import" +version = "2.1.0" +description = "Copy your docs directly to the gh-pages branch." optional = false -python-versions = ">=3.8" +python-versions = "*" +groups = ["dev"] files = [ - {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, - {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, + {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, + {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, ] [package.dependencies] -certifi = "*" -h11 = ">=0.13,<0.15" +python-dateutil = ">=2.8.1" [package.extras] dev = ["flake8", "markdown", "twine", "wheel"] [[package]] -name = "httpx" -version = "0.27.2" +name = "google-crc32c" +version = "1.8.0" +description = "A python wrapper of the C library 'Google CRC32C'" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "google_crc32c-1.8.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0470b8c3d73b5f4e3300165498e4cf25221c7eb37f1159e221d1825b6df8a7ff"}, + {file = "google_crc32c-1.8.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:119fcd90c57c89f30040b47c211acee231b25a45d225e3225294386f5d258288"}, + {file = "google_crc32c-1.8.0-cp310-cp310-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6f35aaffc8ccd81ba3162443fabb920e65b1f20ab1952a31b13173a67811467d"}, + {file = "google_crc32c-1.8.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:864abafe7d6e2c4c66395c1eb0fe12dc891879769b52a3d56499612ca93b6092"}, + {file = "google_crc32c-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:db3fe8eaf0612fc8b20fa21a5f25bd785bc3cd5be69f8f3412b0ac2ffd49e733"}, + {file = "google_crc32c-1.8.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:014a7e68d623e9a4222d663931febc3033c5c7c9730785727de2a81f87d5bab8"}, + {file = "google_crc32c-1.8.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:86cfc00fe45a0ac7359e5214a1704e51a99e757d0272554874f419f79838c5f7"}, + {file = "google_crc32c-1.8.0-cp311-cp311-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:19b40d637a54cb71e0829179f6cb41835f0fbd9e8eb60552152a8b52c36cbe15"}, + {file = "google_crc32c-1.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:17446feb05abddc187e5441a45971b8394ea4c1b6efd88ab0af393fd9e0a156a"}, + {file = "google_crc32c-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:71734788a88f551fbd6a97be9668a0020698e07b2bf5b3aa26a36c10cdfb27b2"}, + {file = "google_crc32c-1.8.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:4b8286b659c1335172e39563ab0a768b8015e88e08329fa5321f774275fc3113"}, + {file = "google_crc32c-1.8.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:2a3dc3318507de089c5384cc74d54318401410f82aa65b2d9cdde9d297aca7cb"}, + {file = "google_crc32c-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:14f87e04d613dfa218d6135e81b78272c3b904e2a7053b841481b38a7d901411"}, + {file = "google_crc32c-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cb5c869c2923d56cb0c8e6bcdd73c009c36ae39b652dbe46a05eb4ef0ad01454"}, + {file = "google_crc32c-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:3cc0c8912038065eafa603b238abf252e204accab2a704c63b9e14837a854962"}, + {file = "google_crc32c-1.8.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:3ebb04528e83b2634857f43f9bb8ef5b2bbe7f10f140daeb01b58f972d04736b"}, + {file = "google_crc32c-1.8.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:450dc98429d3e33ed2926fc99ee81001928d63460f8538f21a5d6060912a8e27"}, + {file = "google_crc32c-1.8.0-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3b9776774b24ba76831609ffbabce8cdf6fa2bd5e9df37b594221c7e333a81fa"}, + {file = "google_crc32c-1.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:89c17d53d75562edfff86679244830599ee0a48efc216200691de8b02ab6b2b8"}, + {file = "google_crc32c-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:57a50a9035b75643996fbf224d6661e386c7162d1dfdab9bc4ca790947d1007f"}, + {file = "google_crc32c-1.8.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:e6584b12cb06796d285d09e33f63309a09368b9d806a551d8036a4207ea43697"}, + {file = "google_crc32c-1.8.0-cp314-cp314-macosx_12_0_x86_64.whl", hash = "sha256:f4b51844ef67d6cf2e9425983274da75f18b1597bb2c998e1c0a0e8d46f8f651"}, + {file = "google_crc32c-1.8.0-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b0d1a7afc6e8e4635564ba8aa5c0548e3173e41b6384d7711a9123165f582de2"}, + {file = "google_crc32c-1.8.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8b3f68782f3cbd1bce027e48768293072813469af6a61a86f6bb4977a4380f21"}, + {file = "google_crc32c-1.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:d511b3153e7011a27ab6ee6bb3a5404a55b994dc1a7322c0b87b29606d9790e2"}, + {file = "google_crc32c-1.8.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:ba6aba18daf4d36ad4412feede6221414692f44d17e5428bdd81ad3fc1eee5dc"}, + {file = "google_crc32c-1.8.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:87b0072c4ecc9505cfa16ee734b00cd7721d20a0f595be4d40d3d21b41f65ae2"}, + {file = "google_crc32c-1.8.0-cp39-cp39-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3d488e98b18809f5e322978d4506373599c0c13e6c5ad13e53bb44758e18d215"}, + {file = "google_crc32c-1.8.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:01f126a5cfddc378290de52095e2c7052be2ba7656a9f0caf4bcd1bfb1833f8a"}, + {file = "google_crc32c-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:61f58b28e0b21fcb249a8247ad0db2e64114e201e2e9b4200af020f3b6242c9f"}, + {file = "google_crc32c-1.8.0-pp311-pypy311_pp73-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:87fa445064e7db928226b2e6f0d5304ab4cd0339e664a4e9a25029f384d9bb93"}, + {file = "google_crc32c-1.8.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f639065ea2042d5c034bf258a9f085eaa7af0cd250667c0635a3118e8f92c69c"}, + {file = "google_crc32c-1.8.0.tar.gz", hash = "sha256:a428e25fb7691024de47fecfbff7ff957214da51eddded0da0ae0e0f03a2cf79"}, +] + +[package.dependencies] +colorama = ">=0.4" + +[[package]] +name = "h11" +version = "0.16.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86" }, + { file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55" }, + { file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8" }, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.16" + +[package.extras] +dev = ["flake8", "markdown", "twine", "wheel"] + +[[package]] +name = "httpx" +version = "0.28.1" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, - {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, + { file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad" }, + { file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc" }, ] [package.dependencies] @@ -1102,10 +991,9 @@ anyio = "*" certifi = "*" httpcore = "==1.*" idna = "*" -sniffio = "*" [package.extras] -brotli = ["brotli", "brotlicffi"] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] @@ -1231,14 +1119,14 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "identify" -version = "2.6.1" +version = "2.6.16" description = "File identification library for Python" optional = false python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "identify-2.6.1-py2.py3-none-any.whl", hash = "sha256:53863bcac7caf8d2ed85bd20312ea5dcfc22226800f6d6881f232d861db5a8f0"}, - {file = "identify-2.6.1.tar.gz", hash = "sha256:91478c5fb7c3aac5ff7bf9b4344f803843dc586832d5f110d672b19aa1984c98"}, + {file = "identify-2.6.16-py2.py3-none-any.whl", hash = "sha256:391ee4d77741d994189522896270b787aed8670389bfd60f326d677d64a6dfb0"}, + {file = "identify-2.6.16.tar.gz", hash = "sha256:846857203b5511bbe94d5a352a48ef2359532bc8f6727b5544077a0dcfb24980"}, ] [package.extras] @@ -1288,7 +1176,7 @@ name = "iniconfig" version = "2.3.0" description = "brain-dead simple config-ini parsing" optional = false -python-versions = ">=3.7" +python-versions = ">=3.10" groups = ["dev"] files = [ {file = "iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12"}, @@ -1331,57 +1219,69 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio [[package]] name = "ipython" -version = "8.29.0" +version = "9.4.0" description = "IPython: Productive Interactive Computing" optional = false -python-versions = ">=3.10" +python-versions = ">=3.11" +groups = ["dev"] files = [ - {file = "ipython-8.29.0-py3-none-any.whl", hash = "sha256:0188a1bd83267192123ccea7f4a8ed0a78910535dbaa3f37671dca76ebd429c8"}, - {file = "ipython-8.29.0.tar.gz", hash = "sha256:40b60e15b22591450eef73e40a027cf77bd652e757523eebc5bd7c7c498290eb"}, + { file = "ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066" }, + { file = "ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270" }, ] [package.dependencies] colorama = {version = "*", markers = "sys_platform == \"win32\""} decorator = "*" +ipython-pygments-lexers = "*" jedi = ">=0.16" matplotlib-inline = "*" pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} -prompt-toolkit = ">=3.0.41,<3.1.0" +prompt_toolkit = ">=3.0.41,<3.1.0" pygments = ">=2.4.0" -stack-data = "*" +stack_data = "*" traitlets = ">=5.13.0" [package.extras] -all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"] +all = ["ipython[doc,matplotlib,test,test-extra]"] black = ["black"] -doc = ["docrepr", "exceptiongroup", "intersphinx-registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli", "typing-extensions"] -kernel = ["ipykernel"] +doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinx_toml (==0.0.4)", "typing_extensions"] matplotlib = ["matplotlib"] -nbconvert = ["nbconvert"] -nbformat = ["nbformat"] -notebook = ["ipywidgets", "notebook"] -parallel = ["ipyparallel"] -qtconsole = ["qtconsole"] -test = ["packaging", "pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"] -test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"] +test = ["packaging", "pytest", "pytest-asyncio (<0.22)", "testpath"] +test-extra = ["curio", "ipykernel", "ipython[test]", "jupyter_ai", "matplotlib (!=3.2.0)", "nbclient", "nbformat", "numpy (>=1.23)", "pandas", "trio"] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +description = "Defines a variety of Pygments lexers for highlighting IPython code." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + { file = "ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c" }, + { file = "ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81" }, +] + +[package.dependencies] +pygments = "*" [[package]] name = "ipywidgets" -version = "8.1.5" +version = "8.1.7" description = "Jupyter interactive widgets" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ - {file = "ipywidgets-8.1.5-py3-none-any.whl", hash = "sha256:3290f526f87ae6e77655555baba4f36681c555b8bdbbff430b70e52c34c86245"}, - {file = "ipywidgets-8.1.5.tar.gz", hash = "sha256:870e43b1a35656a80c18c9503bbf2d16802db1cb487eec6fab27d683381dde17"}, + { file = "ipywidgets-8.1.7-py3-none-any.whl", hash = "sha256:764f2602d25471c213919b8a1997df04bef869251db4ca8efba1b76b1bd9f7bb" }, + { file = "ipywidgets-8.1.7.tar.gz", hash = "sha256:15f1ac050b9ccbefd45dccfbb2ef6bed0029d8278682d569d71b8dd96bee0376" }, ] [package.dependencies] comm = ">=0.1.3" ipython = ">=6.1.0" -jupyterlab-widgets = ">=3.0.12,<3.1.0" +jupyterlab_widgets = ">=3.0.15,<3.1.0" traitlets = ">=4.3.1" -widgetsnbextension = ">=4.0.12,<4.1.0" +widgetsnbextension = ">=4.0.14,<4.1.0" [package.extras] test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] @@ -1392,6 +1292,7 @@ version = "20.11.0" description = "Operations with ISO 8601 durations" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, @@ -1400,24 +1301,56 @@ files = [ [package.dependencies] arrow = ">=0.15.0" +[[package]] +name = "isort" +version = "7.0.0" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.10.0" +groups = ["dev"] +files = [ + { file = "isort-7.0.0-py3-none-any.whl", hash = "sha256:1bcabac8bc3c36c7fb7b98a76c8abb18e0f841a3ba81decac7691008592499c1" }, + { file = "isort-7.0.0.tar.gz", hash = "sha256:5513527951aadb3ac4292a41a16cbc50dd1642432f5e8c20057d414bdafb4187" }, +] + +[package.extras] +colors = ["colorama"] +plugins = ["setuptools"] + [[package]] name = "jedi" -version = "0.19.1" +version = "0.19.2" description = "An autocompletion tool for Python that can be used for text editors." optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ - {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"}, - {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, + { file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9" }, + { file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0" }, ] [package.dependencies] -parso = ">=0.8.3,<0.9.0" +parso = ">=0.8.4,<0.9.0" [package.extras] docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] +testing = ["Django", "attrs", "colorama", "docopt", "pytest (<9.0.0)"] + +[[package]] +name = "isort" +version = "8.0.0" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.10.0" +groups = ["dev"] +files = [ + {file = "isort-8.0.0-py3-none-any.whl", hash = "sha256:184916a933041c7cf718787f7e52064f3c06272aff69a5cb4dc46497bd8911d9"}, + {file = "isort-8.0.0.tar.gz", hash = "sha256:fddea59202f231e170e52e71e3510b99c373b6e571b55d9c7b31b679c0fed47c"}, +] + +[package.extras] +colors = ["colorama"] [[package]] name = "isort" @@ -1442,8 +1375,8 @@ optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, + {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, + {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, ] [package.dependencies] @@ -1453,66 +1386,135 @@ MarkupSafe = ">=2.0" i18n = ["Babel (>=2.7)"] [[package]] -name = "json5" -version = "0.9.25" -description = "A Python implementation of the JSON5 data format." -optional = false -python-versions = ">=3.8" -files = [ - {file = "json5-0.9.25-py3-none-any.whl", hash = "sha256:34ed7d834b1341a86987ed52f3f76cd8ee184394906b6e22a1e0deb9ab294e8f"}, - {file = "json5-0.9.25.tar.gz", hash = "sha256:548e41b9be043f9426776f05df8635a00fe06104ea51ed24b67f908856e151ae"}, -] - -[[package]] -name = "jsonpointer" -version = "3.0.0" -description = "Identify specific nodes in a JSON document (RFC 6901)" +name = "librt" +version = "0.8.1" +description = "Mypyc runtime library" optional = false -python-versions = ">=3.7" -files = [ - {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, - {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, -] - -[[package]] -name = "jsonschema" -version = "4.23.0" -description = "An implementation of JSON Schema validation for Python" +python-versions = ">=3.9" +groups = ["dev"] +markers = "platform_python_implementation != \"PyPy\"" +files = [ + {file = "librt-0.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:81fd938344fecb9373ba1b155968c8a329491d2ce38e7ddb76f30ffb938f12dc"}, + {file = "librt-0.8.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5db05697c82b3a2ec53f6e72b2ed373132b0c2e05135f0696784e97d7f5d48e7"}, + {file = "librt-0.8.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d56bc4011975f7460bea7b33e1ff425d2f1adf419935ff6707273c77f8a4ada6"}, + {file = "librt-0.8.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5cdc0f588ff4b663ea96c26d2a230c525c6fc62b28314edaaaca8ed5af931ad0"}, + {file = "librt-0.8.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:97c2b54ff6717a7a563b72627990bec60d8029df17df423f0ed37d56a17a176b"}, + {file = "librt-0.8.1-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8f1125e6bbf2f1657d9a2f3ccc4a2c9b0c8b176965bb565dd4d86be67eddb4b6"}, + {file = "librt-0.8.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8f4bb453f408137d7581be309b2fbc6868a80e7ef60c88e689078ee3a296ae71"}, + {file = "librt-0.8.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c336d61d2fe74a3195edc1646d53ff1cddd3a9600b09fa6ab75e5514ba4862a7"}, + {file = "librt-0.8.1-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:eb5656019db7c4deacf0c1a55a898c5bb8f989be904597fcb5232a2f4828fa05"}, + {file = "librt-0.8.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c25d9e338d5bed46c1632f851babf3d13c78f49a225462017cf5e11e845c5891"}, + {file = "librt-0.8.1-cp310-cp310-win32.whl", hash = "sha256:aaab0e307e344cb28d800957ef3ec16605146ef0e59e059a60a176d19543d1b7"}, + {file = "librt-0.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:56e04c14b696300d47b3bc5f1d10a00e86ae978886d0cee14e5714fafb5df5d2"}, + {file = "librt-0.8.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:681dc2451d6d846794a828c16c22dc452d924e9f700a485b7ecb887a30aad1fd"}, + {file = "librt-0.8.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3b4350b13cc0e6f5bec8fa7caf29a8fb8cdc051a3bae45cfbfd7ce64f009965"}, + {file = "librt-0.8.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ac1e7817fd0ed3d14fd7c5df91daed84c48e4c2a11ee99c0547f9f62fdae13da"}, + {file = "librt-0.8.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:747328be0c5b7075cde86a0e09d7a9196029800ba75a1689332348e998fb85c0"}, + {file = "librt-0.8.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0af2bd2bc204fa27f3d6711d0f360e6b8c684a035206257a81673ab924aa11e"}, + {file = "librt-0.8.1-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d480de377f5b687b6b1bc0c0407426da556e2a757633cc7e4d2e1a057aa688f3"}, + {file = "librt-0.8.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d0ee06b5b5291f609ddb37b9750985b27bc567791bc87c76a569b3feed8481ac"}, + {file = "librt-0.8.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e2c6f77b9ad48ce5603b83b7da9ee3e36b3ab425353f695cba13200c5d96596"}, + {file = "librt-0.8.1-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:439352ba9373f11cb8e1933da194dcc6206daf779ff8df0ed69c5e39113e6a99"}, + {file = "librt-0.8.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:82210adabbc331dbb65d7868b105185464ef13f56f7f76688565ad79f648b0fe"}, + {file = "librt-0.8.1-cp311-cp311-win32.whl", hash = "sha256:52c224e14614b750c0a6d97368e16804a98c684657c7518752c356834fff83bb"}, + {file = "librt-0.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:c00e5c884f528c9932d278d5c9cbbea38a6b81eb62c02e06ae53751a83a4d52b"}, + {file = "librt-0.8.1-cp311-cp311-win_arm64.whl", hash = "sha256:f7cdf7f26c2286ffb02e46d7bac56c94655540b26347673bea15fa52a6af17e9"}, + {file = "librt-0.8.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a28f2612ab566b17f3698b0da021ff9960610301607c9a5e8eaca62f5e1c350a"}, + {file = "librt-0.8.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:60a78b694c9aee2a0f1aaeaa7d101cf713e92e8423a941d2897f4fa37908dab9"}, + {file = "librt-0.8.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:758509ea3f1eba2a57558e7e98f4659d0ea7670bff49673b0dde18a3c7e6c0eb"}, + {file = "librt-0.8.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:039b9f2c506bd0ab0f8725aa5ba339c6f0cd19d3b514b50d134789809c24285d"}, + {file = "librt-0.8.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bb54f1205a3a6ab41a6fd71dfcdcbd278670d3a90ca502a30d9da583105b6f7"}, + {file = "librt-0.8.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:05bd41cdee35b0c59c259f870f6da532a2c5ca57db95b5f23689fcb5c9e42440"}, + {file = "librt-0.8.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adfab487facf03f0d0857b8710cf82d0704a309d8ffc33b03d9302b4c64e91a9"}, + {file = "librt-0.8.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:153188fe98a72f206042be10a2c6026139852805215ed9539186312d50a8e972"}, + {file = "librt-0.8.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:dd3c41254ee98604b08bd5b3af5bf0a89740d4ee0711de95b65166bf44091921"}, + {file = "librt-0.8.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e0d138c7ae532908cbb342162b2611dbd4d90c941cd25ab82084aaf71d2c0bd0"}, + {file = "librt-0.8.1-cp312-cp312-win32.whl", hash = "sha256:43353b943613c5d9c49a25aaffdba46f888ec354e71e3529a00cca3f04d66a7a"}, + {file = "librt-0.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:ff8baf1f8d3f4b6b7257fcb75a501f2a5499d0dda57645baa09d4d0d34b19444"}, + {file = "librt-0.8.1-cp312-cp312-win_arm64.whl", hash = "sha256:0f2ae3725904f7377e11cc37722d5d401e8b3d5851fb9273d7f4fe04f6b3d37d"}, + {file = "librt-0.8.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7e6bad1cd94f6764e1e21950542f818a09316645337fd5ab9a7acc45d99a8f35"}, + {file = "librt-0.8.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cf450f498c30af55551ba4f66b9123b7185362ec8b625a773b3d39aa1a717583"}, + {file = "librt-0.8.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:eca45e982fa074090057132e30585a7e8674e9e885d402eae85633e9f449ce6c"}, + {file = "librt-0.8.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c3811485fccfda840861905b8c70bba5ec094e02825598bb9d4ca3936857a04"}, + {file = "librt-0.8.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e4af413908f77294605e28cfd98063f54b2c790561383971d2f52d113d9c363"}, + {file = "librt-0.8.1-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:5212a5bd7fae98dae95710032902edcd2ec4dc994e883294f75c857b83f9aba0"}, + {file = "librt-0.8.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e692aa2d1d604e6ca12d35e51fdc36f4cda6345e28e36374579f7ef3611b3012"}, + {file = "librt-0.8.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4be2a5c926b9770c9e08e717f05737a269b9d0ebc5d2f0060f0fe3fe9ce47acb"}, + {file = "librt-0.8.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:fd1a720332ea335ceb544cf0a03f81df92abd4bb887679fd1e460976b0e6214b"}, + {file = "librt-0.8.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:93c2af9e01e0ef80d95ae3c720be101227edae5f2fe7e3dc63d8857fadfc5a1d"}, + {file = "librt-0.8.1-cp313-cp313-win32.whl", hash = "sha256:086a32dbb71336627e78cc1d6ee305a68d038ef7d4c39aaff41ae8c9aa46e91a"}, + {file = "librt-0.8.1-cp313-cp313-win_amd64.whl", hash = "sha256:e11769a1dbda4da7b00a76cfffa67aa47cfa66921d2724539eee4b9ede780b79"}, + {file = "librt-0.8.1-cp313-cp313-win_arm64.whl", hash = "sha256:924817ab3141aca17893386ee13261f1d100d1ef410d70afe4389f2359fea4f0"}, + {file = "librt-0.8.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:6cfa7fe54fd4d1f47130017351a959fe5804bda7a0bc7e07a2cdbc3fdd28d34f"}, + {file = "librt-0.8.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:228c2409c079f8c11fb2e5d7b277077f694cb93443eb760e00b3b83cb8b3176c"}, + {file = "librt-0.8.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:7aae78ab5e3206181780e56912d1b9bb9f90a7249ce12f0e8bf531d0462dd0fc"}, + {file = "librt-0.8.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:172d57ec04346b047ca6af181e1ea4858086c80bdf455f61994c4aa6fc3f866c"}, + {file = "librt-0.8.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6b1977c4ea97ce5eb7755a78fae68d87e4102e4aaf54985e8b56806849cc06a3"}, + {file = "librt-0.8.1-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:10c42e1f6fd06733ef65ae7bebce2872bcafd8d6e6b0a08fe0a05a23b044fb14"}, + {file = "librt-0.8.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4c8dfa264b9193c4ee19113c985c95f876fae5e51f731494fc4e0cf594990ba7"}, + {file = "librt-0.8.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:01170b6729a438f0dedc4a26ed342e3dc4f02d1000b4b19f980e1877f0c297e6"}, + {file = "librt-0.8.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:7b02679a0d783bdae30d443025b94465d8c3dc512f32f5b5031f93f57ac32071"}, + {file = "librt-0.8.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:190b109bb69592a3401fe1ffdea41a2e73370ace2ffdc4a0e8e2b39cdea81b78"}, + {file = "librt-0.8.1-cp314-cp314-win32.whl", hash = "sha256:e70a57ecf89a0f64c24e37f38d3fe217a58169d2fe6ed6d70554964042474023"}, + {file = "librt-0.8.1-cp314-cp314-win_amd64.whl", hash = "sha256:7e2f3edca35664499fbb36e4770650c4bd4a08abc1f4458eab9df4ec56389730"}, + {file = "librt-0.8.1-cp314-cp314-win_arm64.whl", hash = "sha256:0d2f82168e55ddefd27c01c654ce52379c0750ddc31ee86b4b266bcf4d65f2a3"}, + {file = "librt-0.8.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2c74a2da57a094bd48d03fa5d196da83d2815678385d2978657499063709abe1"}, + {file = "librt-0.8.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a355d99c4c0d8e5b770313b8b247411ed40949ca44e33e46a4789b9293a907ee"}, + {file = "librt-0.8.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:2eb345e8b33fb748227409c9f1233d4df354d6e54091f0e8fc53acdb2ffedeb7"}, + {file = "librt-0.8.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9be2f15e53ce4e83cc08adc29b26fb5978db62ef2a366fbdf716c8a6c8901040"}, + {file = "librt-0.8.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:785ae29c1f5c6e7c2cde2c7c0e148147f4503da3abc5d44d482068da5322fd9e"}, + {file = "librt-0.8.1-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1d3a7da44baf692f0c6aeb5b2a09c5e6fc7a703bca9ffa337ddd2e2da53f7732"}, + {file = "librt-0.8.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5fc48998000cbc39ec0d5311312dda93ecf92b39aaf184c5e817d5d440b29624"}, + {file = "librt-0.8.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e96baa6820280077a78244b2e06e416480ed859bbd8e5d641cf5742919d8beb4"}, + {file = "librt-0.8.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:31362dbfe297b23590530007062c32c6f6176f6099646bb2c95ab1b00a57c382"}, + {file = "librt-0.8.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cc3656283d11540ab0ea01978378e73e10002145117055e03722417aeab30994"}, + {file = "librt-0.8.1-cp314-cp314t-win32.whl", hash = "sha256:738f08021b3142c2918c03692608baed43bc51144c29e35807682f8070ee2a3a"}, + {file = "librt-0.8.1-cp314-cp314t-win_amd64.whl", hash = "sha256:89815a22daf9c51884fb5dbe4f1ef65ee6a146e0b6a8df05f753e2e4a9359bf4"}, + {file = "librt-0.8.1-cp314-cp314t-win_arm64.whl", hash = "sha256:bf512a71a23504ed08103a13c941f763db13fb11177beb3d9244c98c29fb4a61"}, + {file = "librt-0.8.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3dff3d3ca8db20e783b1bc7de49c0a2ab0b8387f31236d6a026597d07fcd68ac"}, + {file = "librt-0.8.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:08eec3a1fc435f0d09c87b6bf1ec798986a3544f446b864e4099633a56fcd9ed"}, + {file = "librt-0.8.1-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e3f0a41487fd5fad7e760b9e8a90e251e27c2816fbc2cff36a22a0e6bcbbd9dd"}, + {file = "librt-0.8.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bacdb58d9939d95cc557b4dbaa86527c9db2ac1ed76a18bc8d26f6dc8647d851"}, + {file = "librt-0.8.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b6d7ab1f01aa753188605b09a51faa44a3327400b00b8cce424c71910fc0a128"}, + {file = "librt-0.8.1-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4998009e7cb9e896569f4be7004f09d0ed70d386fa99d42b6d363f6d200501ac"}, + {file = "librt-0.8.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2cc68eeeef5e906839c7bb0815748b5b0a974ec27125beefc0f942715785b551"}, + {file = "librt-0.8.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0bf69d79a23f4f40b8673a947a234baeeb133b5078b483b7297c5916539cf5d5"}, + {file = "librt-0.8.1-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:22b46eabd76c1986ee7d231b0765ad387d7673bbd996aa0d0d054b38ac65d8f6"}, + {file = "librt-0.8.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:237796479f4d0637d6b9cbcb926ff424a97735e68ade6facf402df4ec93375ed"}, + {file = "librt-0.8.1-cp39-cp39-win32.whl", hash = "sha256:4beb04b8c66c6ae62f8c1e0b2f097c1ebad9295c929a8d5286c05eae7c2fc7dc"}, + {file = "librt-0.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:64548cde61b692dc0dc379f4b5f59a2f582c2ebe7890d09c1ae3b9e66fa015b7"}, + {file = "librt-0.8.1.tar.gz", hash = "sha256:be46a14693955b3bd96014ccbdb8339ee8c9346fbe11c1b78901b55125f14c73"}, +] + +[[package]] +name = "license-expression" +version = "30.4.4" +description = "license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, - {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, + {file = "license_expression-30.4.4-py3-none-any.whl", hash = "sha256:421788fdcadb41f049d2dc934ce666626265aeccefddd25e162a26f23bcbf8a4"}, + {file = "license_expression-30.4.4.tar.gz", hash = "sha256:73448f0aacd8d0808895bdc4b2c8e01a8d67646e4188f887375398c761f340fd"}, ] [package.dependencies] -attrs = ">=22.2.0" -fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""} -jsonschema-specifications = ">=2023.03.6" -referencing = ">=0.28.4" -rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} -rpds-py = ">=0.7.1" -uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -webcolors = {version = ">=24.6.0", optional = true, markers = "extra == \"format-nongpl\""} +"boolean.py" = ">=4.0" [package.extras] format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] -format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=24.6.0)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "rfc3987-syntax (>=1.1.0)", "uri-template", "webcolors (>=24.6.0)"] [[package]] name = "jsonschema-specifications" -version = "2024.10.1" +version = "2025.4.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf"}, - {file = "jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272"}, + { file = "jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af" }, + { file = "jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608" }, ] [package.dependencies] @@ -1524,6 +1526,7 @@ version = "1.1.1" description = "Jupyter metapackage. Install all the Jupyter components in one go." optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83"}, {file = "jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a"}, @@ -1543,6 +1546,7 @@ version = "8.6.3" description = "Jupyter protocol implementation and client libraries" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, @@ -1550,7 +1554,7 @@ files = [ [package.extras] docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] +test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko ; sys_platform == \"win32\"", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] [[package]] name = "jupyter-console" @@ -1558,6 +1562,7 @@ version = "6.6.3" description = "Jupyter terminal console" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"}, {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"}, @@ -1578,13 +1583,14 @@ test = ["flaky", "pexpect", "pytest"] [[package]] name = "jupyter-core" -version = "5.7.2" +version = "5.8.1" description = "Jupyter core package. A base package on which Jupyter projects rely." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, - {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, + { file = "jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0" }, + { file = "jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941" }, ] [package.dependencies] @@ -1593,22 +1599,24 @@ pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_ traitlets = ">=5.3" [package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] -test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout"] +docs = ["intersphinx-registry", "myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-spelling", "traitlets"] +test = ["ipykernel", "pre-commit", "pytest (<9)", "pytest-cov", "pytest-timeout"] [[package]] name = "jupyter-events" -version = "0.10.0" +version = "0.12.0" description = "Jupyter Event System library" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "jupyter_events-0.10.0-py3-none-any.whl", hash = "sha256:4b72130875e59d57716d327ea70d3ebc3af1944d3717e5a498b8a06c6c159960"}, - {file = "jupyter_events-0.10.0.tar.gz", hash = "sha256:670b8229d3cc882ec782144ed22e0d29e1c2d639263f92ca8383e66682845e22"}, + { file = "jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb" }, + { file = "jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b" }, ] [package.dependencies] jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]} +packaging = "*" python-json-logger = ">=2.0.4" pyyaml = ">=5.3" referencing = "*" @@ -1618,32 +1626,34 @@ traitlets = ">=5.3" [package.extras] cli = ["click", "rich"] -docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"] +docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme (>=0.16)", "sphinx (>=8)", "sphinxcontrib-spelling"] test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"] [[package]] name = "jupyter-lsp" -version = "2.2.5" +version = "2.2.6" description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001"}, - {file = "jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da"}, + { file = "jupyter_lsp-2.2.6-py3-none-any.whl", hash = "sha256:283783752bf0b459ee7fa88effa72104d87dd343b82d5c06cf113ef755b15b6d" }, + { file = "jupyter_lsp-2.2.6.tar.gz", hash = "sha256:0566bd9bb04fd9e6774a937ed01522b555ba78be37bebef787c8ab22de4c0361" }, ] [package.dependencies] -jupyter-server = ">=1.1.2" +jupyter_server = ">=1.1.2" [[package]] name = "jupyter-server" -version = "2.14.2" +version = "2.16.0" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "jupyter_server-2.14.2-py3-none-any.whl", hash = "sha256:47ff506127c2f7851a17bf4713434208fc490955d0e8632e95014a9a9afbeefd"}, - {file = "jupyter_server-2.14.2.tar.gz", hash = "sha256:66095021aa9638ced276c248b1d81862e4c50f292d575920bbe960de1c56b12b"}, + { file = "jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e" }, + { file = "jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6" }, ] [package.dependencies] @@ -1652,7 +1662,7 @@ argon2-cffi = ">=21.1" jinja2 = ">=3.0.3" jupyter-client = ">=7.4.4" jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -jupyter-events = ">=0.9.0" +jupyter-events = ">=0.11.0" jupyter-server-terminals = ">=0.4.4" nbconvert = ">=6.4.4" nbformat = ">=5.3.0" @@ -1677,6 +1687,7 @@ version = "0.5.3" description = "A Jupyter Server Extension Providing Terminals." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, @@ -1692,13 +1703,14 @@ test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (> [[package]] name = "jupyterlab" -version = "4.2.5" +version = "4.4.4" description = "JupyterLab computational environment" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "jupyterlab-4.2.5-py3-none-any.whl", hash = "sha256:73b6e0775d41a9fee7ee756c80f58a6bed4040869ccc21411dc559818874d321"}, - {file = "jupyterlab-4.2.5.tar.gz", hash = "sha256:ae7f3a1b8cb88b4f55009ce79fa7c06f99d70cd63601ee4aa91815d054f46f75"}, + { file = "jupyterlab-4.4.4-py3-none-any.whl", hash = "sha256:711611e4f59851152eb93316c3547c3ec6291f16bb455f1f4fa380d25637e0dd" }, + { file = "jupyterlab-4.4.4.tar.gz", hash = "sha256:163fee1ef702e0a057f75d2eed3ed1da8a986d59eb002cbeb6f0c2779e6cd153" }, ] [package.dependencies] @@ -1712,14 +1724,14 @@ jupyter-server = ">=2.4.0,<3" jupyterlab-server = ">=2.27.1,<3" notebook-shim = ">=0.2" packaging = "*" -setuptools = ">=40.1.0" +setuptools = ">=41.1.0" tornado = ">=6.2.0" traitlets = "*" [package.extras] -dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.3.5)"] -docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<7.3.0)", "sphinx-copybutton"] -docs-screenshots = ["altair (==5.3.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.2)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.1.post2)", "matplotlib (==3.8.3)", "nbconvert (>=7.0.0)", "pandas (==2.2.1)", "scipy (==1.12.0)", "vega-datasets (==0.9.0)"] +dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.11.4)"] +docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<8.2.0)", "sphinx-copybutton"] +docs-screenshots = ["altair (==5.5.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.5)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.3.post1)", "matplotlib (==3.10.0)", "nbconvert (>=7.0.0)", "pandas (==2.2.3)", "scipy (==1.15.1)", "vega-datasets (==0.9.0)"] test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)", "pyyaml-include (<3.0)", "tomli-w (<2.0)"] @@ -1729,6 +1741,7 @@ version = "0.3.0" description = "Pygments theme using JupyterLab CSS variables" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, @@ -1740,6 +1753,7 @@ version = "2.27.3" description = "A set of server components for JupyterLab and JupyterLab like applications." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4"}, {file = "jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4"}, @@ -1761,49 +1775,61 @@ test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-v [[package]] name = "jupyterlab-widgets" -version = "3.0.13" +version = "3.0.15" description = "Jupyter interactive widgets for JupyterLab" optional = false python-versions = ">=3.7" +groups = ["dev"] +files = [ + { file = "jupyterlab_widgets-3.0.15-py3-none-any.whl", hash = "sha256:d59023d7d7ef71400d51e6fee9a88867f6e65e10a4201605d2d7f3e8f012a31c" }, + { file = "jupyterlab_widgets-3.0.15.tar.gz", hash = "sha256:2920888a0c2922351a9202817957a68c07d99673504d6cd37345299e971bb08b" }, +] + +[[package]] +name = "lark" +version = "1.2.2" +description = "a modern parsing library" +optional = false +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "jupyterlab_widgets-3.0.13-py3-none-any.whl", hash = "sha256:e3cda2c233ce144192f1e29914ad522b2f4c40e77214b0cc97377ca3d323db54"}, - {file = "jupyterlab_widgets-3.0.13.tar.gz", hash = "sha256:a2966d385328c1942b683a8cd96b89b8dd82c8b8f81dda902bb2bc06d46f5bed"}, + { file = "lark-1.2.2-py3-none-any.whl", hash = "sha256:c2276486b02f0f1b90be155f2c8ba4a8e194d42775786db622faccd652d8e80c" }, + { file = "lark-1.2.2.tar.gz", hash = "sha256:ca807d0162cd16cef15a8feecb862d7319e7a09bdb13aef927968e45040fed80" }, ] +[package.extras] +atomic-cache = ["atomicwrites"] +interegular = ["interegular (>=0.3.1,<0.4.0)"] +nearley = ["js2py"] +regex = ["regex"] + [[package]] name = "locket" version = "1.0.0" description = "File-based locks for Python on Linux and Windows" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["main"] files = [ {file = "locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3"}, {file = "locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632"}, ] [[package]] -name = "markdown-it-py" -version = "3.0.0" -description = "Python port of markdown-it. Markdown parsing, done right!" +name = "markdown" +version = "3.10.2" +description = "Python implementation of John Gruber's Markdown." optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" +groups = ["dev"] files = [ - {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, - {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, + {file = "markdown-3.10.2-py3-none-any.whl", hash = "sha256:e91464b71ae3ee7afd3017d9f358ef0baf158fd9a298db92f1d4761133824c36"}, + {file = "markdown-3.10.2.tar.gz", hash = "sha256:994d51325d25ad8aa7ce4ebaec003febcce822c3f8c911e3b17c52f7f589f950"}, ] -[package.dependencies] -mdurl = ">=0.1,<1.0" - [package.extras] -benchmarking = ["psutil", "pytest", "pytest-benchmark"] -code-style = ["pre-commit (>=3.0,<4.0)"] -compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] -linkify = ["linkify-it-py (>=1,<3)"] -plugins = ["mdit-py-plugins"] -profiling = ["gprof2dot"] -rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] -testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] +docs = ["mdx_gh_links (>=0.2)", "mkdocs (>=1.6)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python] (>=0.28.3)"] +testing = ["coverage", "pyyaml"] [[package]] name = "markupsafe" @@ -1910,15 +1936,16 @@ version = "1.3.4" description = "A deep merge function for 🐍." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, ] [[package]] -name = "mdit-py-plugins" -version = "0.4.2" -description = "Collection of plugins for markdown-it-py" +name = "mergedeep" +version = "1.3.4" +description = "A deep merge function for 🐍." optional = false python-versions = ">=3.8" groups = ["dev"] @@ -1959,8 +1986,73 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"}, - {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"}, + { file = "mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9" }, + { file = "mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0" }, +] + +[package.dependencies] +mergedeep = ">=1.3.4" +platformdirs = ">=2.2.0" +pyyaml = ">=5.1" + +[[package]] +name = "mkdocs" +version = "1.6.1" +description = "Project documentation with Markdown." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e"}, + {file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2"}, +] + +[package.dependencies] +click = ">=7.0" +colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} +ghp-import = ">=1.0" +jinja2 = ">=2.11.1" +markdown = ">=3.3.6" +markupsafe = ">=2.0.1" +mergedeep = ">=1.3.4" +mkdocs-get-deps = ">=0.2.0" +packaging = ">=20.5" +pathspec = ">=0.11.1" +pyyaml = ">=5.1" +pyyaml-env-tag = ">=0.1" +watchdog = ">=2.0" + +[package.extras] +i18n = ["babel (>=2.9.0)"] +min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4) ; platform_system == \"Windows\"", "ghp-import (==1.0)", "importlib-metadata (==4.4) ; python_version < \"3.10\"", "jinja2 (==2.11.1)", "markdown (==3.3.6)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "mkdocs-get-deps (==0.2.0)", "packaging (==20.5)", "pathspec (==0.11.1)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "watchdog (==2.0)"] + +[[package]] +name = "mkdocs-autorefs" +version = "1.4.4" +description = "Automatically link across pages in MkDocs." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "mkdocs_autorefs-1.4.4-py3-none-any.whl", hash = "sha256:834ef5408d827071ad1bc69e0f39704fa34c7fc05bc8e1c72b227dfdc5c76089"}, + {file = "mkdocs_autorefs-1.4.4.tar.gz", hash = "sha256:d54a284f27a7346b9c38f1f852177940c222da508e66edc816a0fa55fc6da197"}, +] + +[package.dependencies] +Markdown = ">=3.3" +markupsafe = ">=2.0.1" +mkdocs = ">=1.1" + +[[package]] +name = "mkdocs-get-deps" +version = "0.2.0" +description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, + {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, ] [package.dependencies] @@ -1968,51 +2060,126 @@ mergedeep = ">=1.3.4" platformdirs = ">=2.2.0" pyyaml = ">=5.1" +[[package]] +name = "mkdocs-material" +version = "9.7.2" +description = "Documentation that simply works" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "mkdocs_material-9.7.2-py3-none-any.whl", hash = "sha256:9bf6f53452d4a4d527eac3cef3f92b7b6fc4931c55d57766a7d87890d47e1b92"}, + {file = "mkdocs_material-9.7.2.tar.gz", hash = "sha256:6776256552290b9b7a7aa002780e25b1e04bc9c3a8516b6b153e82e16b8384bd"}, +] + +[package.dependencies] +babel = ">=2.10" +backrefs = ">=5.7.post1" +colorama = ">=0.4" +jinja2 = ">=3.1" +markdown = ">=3.2" +mkdocs = ">=1.6" +mkdocs-material-extensions = ">=1.3" +paginate = ">=0.5" +pygments = ">=2.16" +pymdown-extensions = ">=10.2" +requests = ">=2.30" + +[package.extras] +git = ["mkdocs-git-committers-plugin-2 (>=1.1)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4)"] +imaging = ["cairosvg (>=2.6)", "pillow (>=10.2)"] +recommended = ["mkdocs-minify-plugin (>=0.7)", "mkdocs-redirects (>=1.2)", "mkdocs-rss-plugin (>=1.6)"] + +[[package]] +name = "mkdocs-material-extensions" +version = "1.3.1" +description = "Extension pack for Python Markdown and MkDocs Material." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, + {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, +] + +[[package]] +name = "mkdocstrings" +version = "1.0.3" +description = "Automatic documentation from sources, for MkDocs." +optional = false +python-versions = ">=3.10" +groups = ["dev"] +files = [ + {file = "mkdocstrings-1.0.3-py3-none-any.whl", hash = "sha256:0d66d18430c2201dc7fe85134277382baaa15e6b30979f3f3bdbabd6dbdb6046"}, + {file = "mkdocstrings-1.0.3.tar.gz", hash = "sha256:ab670f55040722b49bb45865b2e93b824450fb4aef638b00d7acb493a9020434"}, +] + +[package.dependencies] +Jinja2 = ">=3.1" +Markdown = ">=3.6" +MarkupSafe = ">=1.1" +mkdocs = ">=1.6" +mkdocs-autorefs = ">=1.4" +pymdown-extensions = ">=6.3" + +[package.extras] +crystal = ["mkdocstrings-crystal (>=0.3.4)"] +python = ["mkdocstrings-python (>=1.16.2)"] +python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] + [[package]] name = "mypy" -version = "1.13.0" +version = "1.19.1" description = "Optional static typing for Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"}, - {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"}, - {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"}, - {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"}, - {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"}, - {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"}, - {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"}, - {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"}, - {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"}, - {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"}, - {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"}, - {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"}, - {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"}, - {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"}, - {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"}, - {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"}, - {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"}, - {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"}, - {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"}, - {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"}, - {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"}, - {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"}, - {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"}, - {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"}, - {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"}, - {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"}, - {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"}, - {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"}, - {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"}, - {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"}, - {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"}, - {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"}, + {file = "mypy-1.19.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f05aa3d375b385734388e844bc01733bd33c644ab48e9684faa54e5389775ec"}, + {file = "mypy-1.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:022ea7279374af1a5d78dfcab853fe6a536eebfda4b59deab53cd21f6cd9f00b"}, + {file = "mypy-1.19.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee4c11e460685c3e0c64a4c5de82ae143622410950d6be863303a1c4ba0e36d6"}, + {file = "mypy-1.19.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de759aafbae8763283b2ee5869c7255391fbc4de3ff171f8f030b5ec48381b74"}, + {file = "mypy-1.19.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ab43590f9cd5108f41aacf9fca31841142c786827a74ab7cc8a2eacb634e09a1"}, + {file = "mypy-1.19.1-cp310-cp310-win_amd64.whl", hash = "sha256:2899753e2f61e571b3971747e302d5f420c3fd09650e1951e99f823bc3089dac"}, + {file = "mypy-1.19.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d8dfc6ab58ca7dda47d9237349157500468e404b17213d44fc1cb77bce532288"}, + {file = "mypy-1.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e3f276d8493c3c97930e354b2595a44a21348b320d859fb4a2b9f66da9ed27ab"}, + {file = "mypy-1.19.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2abb24cf3f17864770d18d673c85235ba52456b36a06b6afc1e07c1fdcd3d0e6"}, + {file = "mypy-1.19.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a009ffa5a621762d0c926a078c2d639104becab69e79538a494bcccb62cc0331"}, + {file = "mypy-1.19.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f7cee03c9a2e2ee26ec07479f38ea9c884e301d42c6d43a19d20fb014e3ba925"}, + {file = "mypy-1.19.1-cp311-cp311-win_amd64.whl", hash = "sha256:4b84a7a18f41e167f7995200a1d07a4a6810e89d29859df936f1c3923d263042"}, + {file = "mypy-1.19.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a8174a03289288c1f6c46d55cef02379b478bfbc8e358e02047487cad44c6ca1"}, + {file = "mypy-1.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffcebe56eb09ff0c0885e750036a095e23793ba6c2e894e7e63f6d89ad51f22e"}, + {file = "mypy-1.19.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b64d987153888790bcdb03a6473d321820597ab8dd9243b27a92153c4fa50fd2"}, + {file = "mypy-1.19.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c35d298c2c4bba75feb2195655dfea8124d855dfd7343bf8b8c055421eaf0cf8"}, + {file = "mypy-1.19.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:34c81968774648ab5ac09c29a375fdede03ba253f8f8287847bd480782f73a6a"}, + {file = "mypy-1.19.1-cp312-cp312-win_amd64.whl", hash = "sha256:b10e7c2cd7870ba4ad9b2d8a6102eb5ffc1f16ca35e3de6bfa390c1113029d13"}, + {file = "mypy-1.19.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e3157c7594ff2ef1634ee058aafc56a82db665c9438fd41b390f3bde1ab12250"}, + {file = "mypy-1.19.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdb12f69bcc02700c2b47e070238f42cb87f18c0bc1fc4cdb4fb2bc5fd7a3b8b"}, + {file = "mypy-1.19.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f859fb09d9583a985be9a493d5cfc5515b56b08f7447759a0c5deaf68d80506e"}, + {file = "mypy-1.19.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c9a6538e0415310aad77cb94004ca6482330fece18036b5f360b62c45814c4ef"}, + {file = "mypy-1.19.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:da4869fc5e7f62a88f3fe0b5c919d1d9f7ea3cef92d3689de2823fd27e40aa75"}, + {file = "mypy-1.19.1-cp313-cp313-win_amd64.whl", hash = "sha256:016f2246209095e8eda7538944daa1d60e1e8134d98983b9fc1e92c1fc0cb8dd"}, + {file = "mypy-1.19.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:06e6170bd5836770e8104c8fdd58e5e725cfeb309f0a6c681a811f557e97eac1"}, + {file = "mypy-1.19.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:804bd67b8054a85447c8954215a906d6eff9cabeabe493fb6334b24f4bfff718"}, + {file = "mypy-1.19.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:21761006a7f497cb0d4de3d8ef4ca70532256688b0523eee02baf9eec895e27b"}, + {file = "mypy-1.19.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:28902ee51f12e0f19e1e16fbe2f8f06b6637f482c459dd393efddd0ec7f82045"}, + {file = "mypy-1.19.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:481daf36a4c443332e2ae9c137dfee878fcea781a2e3f895d54bd3002a900957"}, + {file = "mypy-1.19.1-cp314-cp314-win_amd64.whl", hash = "sha256:8bb5c6f6d043655e055be9b542aa5f3bdd30e4f3589163e85f93f3640060509f"}, + {file = "mypy-1.19.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7bcfc336a03a1aaa26dfce9fff3e287a3ba99872a157561cbfcebe67c13308e3"}, + {file = "mypy-1.19.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b7951a701c07ea584c4fe327834b92a30825514c868b1f69c30445093fdd9d5a"}, + {file = "mypy-1.19.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b13cfdd6c87fc3efb69ea4ec18ef79c74c3f98b4e5498ca9b85ab3b2c2329a67"}, + {file = "mypy-1.19.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f28f99c824ecebcdaa2e55d82953e38ff60ee5ec938476796636b86afa3956e"}, + {file = "mypy-1.19.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c608937067d2fc5a4dd1a5ce92fd9e1398691b8c5d012d66e1ddd430e9244376"}, + {file = "mypy-1.19.1-cp39-cp39-win_amd64.whl", hash = "sha256:409088884802d511ee52ca067707b90c883426bd95514e8cfda8281dc2effe24"}, + {file = "mypy-1.19.1-py3-none-any.whl", hash = "sha256:f1235f5ea01b7db5468d53ece6aaddf1ad0b88d9e7462b86ef96fe04995d7247"}, + {file = "mypy-1.19.1.tar.gz", hash = "sha256:19d88bb05303fe63f71dd2c6270daca27cb9401c4ca8255fe50d1d920e0eb9ba"}, ] [package.dependencies] -mypy-extensions = ">=1.0.0" -typing-extensions = ">=4.6.0" +librt = {version = ">=0.6.2", markers = "platform_python_implementation != \"PyPy\""} +mypy_extensions = ">=1.0.0" +pathspec = ">=0.9.0" +typing_extensions = ">=4.6.0" [package.extras] git = ["mkdocs-git-committers-plugin-2 (>=1.1)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4)"] @@ -2027,8 +2194,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, + { file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505" }, + { file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558" }, ] [[package]] @@ -2060,13 +2227,14 @@ testing-docutils = ["pygments", "pytest (>=8,<9)", "pytest-param-files (>=0.6.0, [[package]] name = "nbclient" -version = "0.10.0" +version = "0.10.2" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." optional = false -python-versions = ">=3.8.0" +python-versions = ">=3.9.0" +groups = ["dev"] files = [ - {file = "nbclient-0.10.0-py3-none-any.whl", hash = "sha256:f13e3529332a1f1f81d82a53210322476a168bb7090a0289c795fe9cc11c9d3f"}, - {file = "nbclient-0.10.0.tar.gz", hash = "sha256:4b3f1b7dba531e498449c4db4f53da339c91d449dc11e9af3a43b4eb5c5abb09"}, + { file = "nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d" }, + { file = "nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193" }, ] [package.dependencies] @@ -2077,23 +2245,24 @@ traitlets = ">=5.4" [package.extras] dev = ["pre-commit"] -docs = ["autodoc-traits", "mock", "moto", "myst-parser", "nbclient[test]", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling"] -test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] +docs = ["autodoc-traits", "flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "mock", "moto", "myst-parser", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling", "testpath", "xmltodict"] +test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] [[package]] name = "nbconvert" -version = "7.16.4" +version = "7.16.6" description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "nbconvert-7.16.4-py3-none-any.whl", hash = "sha256:05873c620fe520b6322bf8a5ad562692343fe3452abda5765c7a34b7d1aa3eb3"}, - {file = "nbconvert-7.16.4.tar.gz", hash = "sha256:86ca91ba266b0a448dc96fa6c5b9d98affabde2867b363258703536807f9f7f4"}, + { file = "nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b" }, + { file = "nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582" }, ] [package.dependencies] beautifulsoup4 = "*" -bleach = "!=5.0.0" +bleach = { version = "!=5.0.0", extras = ["css"] } defusedxml = "*" jinja2 = ">=3.0" jupyter-core = ">=4.7" @@ -2105,7 +2274,6 @@ nbformat = ">=5.7" packaging = "*" pandocfilters = ">=1.4.1" pygments = ">=2.4.1" -tinycss2 = "*" traitlets = ">=5.1" [package.extras] @@ -2143,6 +2311,7 @@ version = "1.6.0" description = "Patch asyncio to allow nested event loops" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, @@ -2154,6 +2323,7 @@ version = "1.7.2" description = "Provides an object-oriented python interface to the netCDF version 4 library" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "netCDF4-1.7.2-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:5e9b485e3bd9294d25ff7dc9addefce42b3d23c1ee7e3627605277d159819392"}, {file = "netCDF4-1.7.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:118b476fd00d7e3ab9aa7771186d547da645ae3b49c0c7bdab866793ebf22f07"}, @@ -2339,18 +2509,19 @@ files = [ [[package]] name = "notebook" -version = "7.2.2" +version = "7.4.4" description = "Jupyter Notebook - A web-based notebook environment for interactive computing" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ - {file = "notebook-7.2.2-py3-none-any.whl", hash = "sha256:c89264081f671bc02eec0ed470a627ed791b9156cad9285226b31611d3e9fe1c"}, - {file = "notebook-7.2.2.tar.gz", hash = "sha256:2ef07d4220421623ad3fe88118d687bc0450055570cdd160814a59cf3a1c516e"}, + { file = "notebook-7.4.4-py3-none-any.whl", hash = "sha256:32840f7f777b6bff79bb101159336e9b332bdbfba1495b8739e34d1d65cbc1c0" }, + { file = "notebook-7.4.4.tar.gz", hash = "sha256:392fd501e266f2fb3466c6fcd3331163a2184968cb5c5accf90292e01dfe528c" }, ] [package.dependencies] jupyter-server = ">=2.4.0,<3" -jupyterlab = ">=4.2.0,<4.3" +jupyterlab = ">=4.4.4,<4.5" jupyterlab-server = ">=2.27.1,<3" notebook-shim = ">=0.2,<0.3" tornado = ">=6.2.0" @@ -2358,7 +2529,7 @@ tornado = ">=6.2.0" [package.extras] dev = ["hatch", "pre-commit"] docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] +test = ["importlib-resources (>=5.0) ; python_version < \"3.10\"", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] [[package]] name = "notebook-shim" @@ -2366,6 +2537,7 @@ version = "0.2.4" description = "A shim layer for notebook traits and config" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, @@ -2379,112 +2551,256 @@ test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync" [[package]] name = "numcodecs" -version = "0.13.1" +version = "0.16.5" description = "A Python package providing buffer compression and transformation codecs for use in data storage and communication applications." optional = false -python-versions = ">=3.10" +python-versions = ">=3.11" +groups = ["main"] files = [ - {file = "numcodecs-0.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:96add4f783c5ce57cc7e650b6cac79dd101daf887c479a00a29bc1487ced180b"}, - {file = "numcodecs-0.13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:237b7171609e868a20fd313748494444458ccd696062f67e198f7f8f52000c15"}, - {file = "numcodecs-0.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96e42f73c31b8c24259c5fac6adba0c3ebf95536e37749dc6c62ade2989dca28"}, - {file = "numcodecs-0.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:eda7d7823c9282e65234731fd6bd3986b1f9e035755f7fed248d7d366bb291ab"}, - {file = "numcodecs-0.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2eda97dd2f90add98df6d295f2c6ae846043396e3d51a739ca5db6c03b5eb666"}, - {file = "numcodecs-0.13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2a86f5367af9168e30f99727ff03b27d849c31ad4522060dde0bce2923b3a8bc"}, - {file = "numcodecs-0.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233bc7f26abce24d57e44ea8ebeb5cd17084690b4e7409dd470fdb75528d615f"}, - {file = "numcodecs-0.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:796b3e6740107e4fa624cc636248a1580138b3f1c579160f260f76ff13a4261b"}, - {file = "numcodecs-0.13.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5195bea384a6428f8afcece793860b1ab0ae28143c853f0b2b20d55a8947c917"}, - {file = "numcodecs-0.13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3501a848adaddce98a71a262fee15cd3618312692aa419da77acd18af4a6a3f6"}, - {file = "numcodecs-0.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2230484e6102e5fa3cc1a5dd37ca1f92dfbd183d91662074d6f7574e3e8f53"}, - {file = "numcodecs-0.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:e5db4824ebd5389ea30e54bc8aeccb82d514d28b6b68da6c536b8fa4596f4bca"}, - {file = "numcodecs-0.13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7a60d75179fd6692e301ddfb3b266d51eb598606dcae7b9fc57f986e8d65cb43"}, - {file = "numcodecs-0.13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f593c7506b0ab248961a3b13cb148cc6e8355662ff124ac591822310bc55ecf"}, - {file = "numcodecs-0.13.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80d3071465f03522e776a31045ddf2cfee7f52df468b977ed3afdd7fe5869701"}, - {file = "numcodecs-0.13.1-cp313-cp313-win_amd64.whl", hash = "sha256:90d3065ae74c9342048ae0046006f99dcb1388b7288da5a19b3bddf9c30c3176"}, - {file = "numcodecs-0.13.1.tar.gz", hash = "sha256:a3cf37881df0898f3a9c0d4477df88133fe85185bffe57ba31bcc2fa207709bc"}, + {file = "numcodecs-0.16.5-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:78382dcea50622f2ef1e6e7a71dbe7f861d8fe376b27b7c297c26907304fef1e"}, + {file = "numcodecs-0.16.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2d04a19cb57a3c519b4127ac377cca6471aee1990d7c18f5b1e3a4fe1306689"}, + {file = "numcodecs-0.16.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c043af648eb280cd61785c99c22ff5c3c3460f906eb51a8511327c4f5111b283"}, + {file = "numcodecs-0.16.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c398919ef2eb0e56b8e97456f622640bfd3deed06de3acc976989cbcb22628a3"}, + {file = "numcodecs-0.16.5-cp311-cp311-win_amd64.whl", hash = "sha256:3820860ed302d4d84a1c66e70981ff959d5eb712555be4e7d8ced49888594773"}, + {file = "numcodecs-0.16.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:24e675dc8d1550cd976a99479b87d872cb142632c75cc402fea04c08c4898523"}, + {file = "numcodecs-0.16.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:94ddfa4341d1a3ab99989d13b01b5134abb687d3dab2ead54b450aefe4ad5bd6"}, + {file = "numcodecs-0.16.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b554ab9ecf69de7ca2b6b5e8bc696bd9747559cb4dd5127bd08d7a28bec59c3a"}, + {file = "numcodecs-0.16.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ad1a379a45bd3491deab8ae6548313946744f868c21d5340116977ea3be5b1d6"}, + {file = "numcodecs-0.16.5-cp312-cp312-win_amd64.whl", hash = "sha256:845a9857886ffe4a3172ba1c537ae5bcc01e65068c31cf1fce1a844bd1da050f"}, + {file = "numcodecs-0.16.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25be3a516ab677dad890760d357cfe081a371d9c0a2e9a204562318ac5969de3"}, + {file = "numcodecs-0.16.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0107e839ef75b854e969cb577e140b1aadb9847893937636582d23a2a4c6ce50"}, + {file = "numcodecs-0.16.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:015a7c859ecc2a06e2a548f64008c0ec3aaecabc26456c2c62f4278d8fc20597"}, + {file = "numcodecs-0.16.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:84230b4b9dad2392f2a84242bd6e3e659ac137b5a1ce3571d6965fca673e0903"}, + {file = "numcodecs-0.16.5-cp313-cp313-win_amd64.whl", hash = "sha256:5088145502ad1ebf677ec47d00eb6f0fd600658217db3e0c070c321c85d6cf3d"}, + {file = "numcodecs-0.16.5-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b05647b8b769e6bc8016e9fd4843c823ce5c9f2337c089fb5c9c4da05e5275de"}, + {file = "numcodecs-0.16.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3832bd1b5af8bb3e413076b7d93318c8e7d7b68935006b9fa36ca057d1725a8f"}, + {file = "numcodecs-0.16.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49f7b7d24f103187f53135bed28bb9f0ed6b2e14c604664726487bb6d7c882e1"}, + {file = "numcodecs-0.16.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aec9736d81b70f337d89c4070ee3ffeff113f386fd789492fa152d26a15043e4"}, + {file = "numcodecs-0.16.5-cp314-cp314-win_amd64.whl", hash = "sha256:b16a14303800e9fb88abc39463ab4706c037647ac17e49e297faa5f7d7dbbf1d"}, + {file = "numcodecs-0.16.5.tar.gz", hash = "sha256:0d0fb60852f84c0bd9543cc4d2ab9eefd37fc8efcc410acd4777e62a1d300318"}, ] [package.dependencies] -numpy = ">=1.7" +numpy = ">=1.24" +typing_extensions = "*" [package.extras] -docs = ["mock", "numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-issues"] +crc32c = ["crc32c (>=2.7)"] +docs = ["numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-issues"] +google-crc32c = ["google-crc32c (>=1.5)"] msgpack = ["msgpack"] -pcodec = ["pcodec (>=0.2.0)"] -test = ["coverage", "pytest", "pytest-cov"] -test-extras = ["importlib-metadata"] -zfpy = ["numpy (<2.0.0)", "zfpy (>=1.0.0)"] +pcodec = ["pcodec (>=0.3,<0.4)"] +test = ["coverage", "pytest", "pytest-cov", "pyzstd"] +test-extras = ["crc32c", "importlib_metadata"] +zfpy = ["zfpy (>=1.0.0)"] [[package]] name = "numpy" -version = "2.1.2" +version = "2.4.2" description = "Fundamental package for array computing in Python" optional = false -python-versions = ">=3.10" +python-versions = ">=3.11" +groups = ["main", "dev"] +files = [ + {file = "numpy-2.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e7e88598032542bd49af7c4747541422884219056c268823ef6e5e89851c8825"}, + {file = "numpy-2.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7edc794af8b36ca37ef5fcb5e0d128c7e0595c7b96a2318d1badb6fcd8ee86b1"}, + {file = "numpy-2.4.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:6e9f61981ace1360e42737e2bae58b27bf28a1b27e781721047d84bd754d32e7"}, + {file = "numpy-2.4.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:cb7bbb88aa74908950d979eeaa24dbdf1a865e3c7e45ff0121d8f70387b55f73"}, + {file = "numpy-2.4.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4f069069931240b3fc703f1e23df63443dbd6390614c8c44a87d96cd0ec81eb1"}, + {file = "numpy-2.4.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c02ef4401a506fb60b411467ad501e1429a3487abca4664871d9ae0b46c8ba32"}, + {file = "numpy-2.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2653de5c24910e49c2b106499803124dde62a5a1fe0eedeaecf4309a5f639390"}, + {file = "numpy-2.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1ae241bbfc6ae276f94a170b14785e561cb5e7f626b6688cf076af4110887413"}, + {file = "numpy-2.4.2-cp311-cp311-win32.whl", hash = "sha256:df1b10187212b198dd45fa943d8985a3c8cf854aed4923796e0e019e113a1bda"}, + {file = "numpy-2.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:b9c618d56a29c9cb1c4da979e9899be7578d2e0b3c24d52079c166324c9e8695"}, + {file = "numpy-2.4.2-cp311-cp311-win_arm64.whl", hash = "sha256:47c5a6ed21d9452b10227e5e8a0e1c22979811cad7dcc19d8e3e2fb8fa03f1a3"}, + {file = "numpy-2.4.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:21982668592194c609de53ba4933a7471880ccbaadcc52352694a59ecc860b3a"}, + {file = "numpy-2.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40397bda92382fcec844066efb11f13e1c9a3e2a8e8f318fb72ed8b6db9f60f1"}, + {file = "numpy-2.4.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:b3a24467af63c67829bfaa61eecf18d5432d4f11992688537be59ecd6ad32f5e"}, + {file = "numpy-2.4.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:805cc8de9fd6e7a22da5aed858e0ab16be5a4db6c873dde1d7451c541553aa27"}, + {file = "numpy-2.4.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d82351358ffbcdcd7b686b90742a9b86632d6c1c051016484fa0b326a0a1548"}, + {file = "numpy-2.4.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e35d3e0144137d9fdae62912e869136164534d64a169f86438bc9561b6ad49f"}, + {file = "numpy-2.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adb6ed2ad29b9e15321d167d152ee909ec73395901b70936f029c3bc6d7f4460"}, + {file = "numpy-2.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8906e71fd8afcb76580404e2a950caef2685df3d2a57fe82a86ac8d33cc007ba"}, + {file = "numpy-2.4.2-cp312-cp312-win32.whl", hash = "sha256:ec055f6dae239a6299cace477b479cca2fc125c5675482daf1dd886933a1076f"}, + {file = "numpy-2.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:209fae046e62d0ce6435fcfe3b1a10537e858249b3d9b05829e2a05218296a85"}, + {file = "numpy-2.4.2-cp312-cp312-win_arm64.whl", hash = "sha256:fbde1b0c6e81d56f5dccd95dd4a711d9b95df1ae4009a60887e56b27e8d903fa"}, + {file = "numpy-2.4.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25f2059807faea4b077a2b6837391b5d830864b3543627f381821c646f31a63c"}, + {file = "numpy-2.4.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bd3a7a9f5847d2fb8c2c6d1c862fa109c31a9abeca1a3c2bd5a64572955b2979"}, + {file = "numpy-2.4.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8e4549f8a3c6d13d55041925e912bfd834285ef1dd64d6bc7d542583355e2e98"}, + {file = "numpy-2.4.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:aea4f66ff44dfddf8c2cffd66ba6538c5ec67d389285292fe428cb2c738c8aef"}, + {file = "numpy-2.4.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3cd545784805de05aafe1dde61752ea49a359ccba9760c1e5d1c88a93bbf2b7"}, + {file = "numpy-2.4.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0d9b7c93578baafcbc5f0b83eaf17b79d345c6f36917ba0c67f45226911d499"}, + {file = "numpy-2.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f74f0f7779cc7ae07d1810aab8ac6b1464c3eafb9e283a40da7309d5e6e48fbb"}, + {file = "numpy-2.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c7ac672d699bf36275c035e16b65539931347d68b70667d28984c9fb34e07fa7"}, + {file = "numpy-2.4.2-cp313-cp313-win32.whl", hash = "sha256:8e9afaeb0beff068b4d9cd20d322ba0ee1cecfb0b08db145e4ab4dd44a6b5110"}, + {file = "numpy-2.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:7df2de1e4fba69a51c06c28f5a3de36731eb9639feb8e1cf7e4a7b0daf4cf622"}, + {file = "numpy-2.4.2-cp313-cp313-win_arm64.whl", hash = "sha256:0fece1d1f0a89c16b03442eae5c56dc0be0c7883b5d388e0c03f53019a4bfd71"}, + {file = "numpy-2.4.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5633c0da313330fd20c484c78cdd3f9b175b55e1a766c4a174230c6b70ad8262"}, + {file = "numpy-2.4.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d9f64d786b3b1dd742c946c42d15b07497ed14af1a1f3ce840cce27daa0ce913"}, + {file = "numpy-2.4.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:b21041e8cb6a1eb5312dd1d2f80a94d91efffb7a06b70597d44f1bd2dfc315ab"}, + {file = "numpy-2.4.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:00ab83c56211a1d7c07c25e3217ea6695e50a3e2f255053686b081dc0b091a82"}, + {file = "numpy-2.4.2-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fb882da679409066b4603579619341c6d6898fc83a8995199d5249f986e8e8f"}, + {file = "numpy-2.4.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:66cb9422236317f9d44b67b4d18f44efe6e9c7f8794ac0462978513359461554"}, + {file = "numpy-2.4.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:0f01dcf33e73d80bd8dc0f20a71303abbafa26a19e23f6b68d1aa9990af90257"}, + {file = "numpy-2.4.2-cp313-cp313t-win32.whl", hash = "sha256:52b913ec40ff7ae845687b0b34d8d93b60cb66dcee06996dd5c99f2fc9328657"}, + {file = "numpy-2.4.2-cp313-cp313t-win_amd64.whl", hash = "sha256:5eea80d908b2c1f91486eb95b3fb6fab187e569ec9752ab7d9333d2e66bf2d6b"}, + {file = "numpy-2.4.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fd49860271d52127d61197bb50b64f58454e9f578cb4b2c001a6de8b1f50b0b1"}, + {file = "numpy-2.4.2-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:444be170853f1f9d528428eceb55f12918e4fda5d8805480f36a002f1415e09b"}, + {file = "numpy-2.4.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d1240d50adff70c2a88217698ca844723068533f3f5c5fa6ee2e3220e3bdb000"}, + {file = "numpy-2.4.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:7cdde6de52fb6664b00b056341265441192d1291c130e99183ec0d4b110ff8b1"}, + {file = "numpy-2.4.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:cda077c2e5b780200b6b3e09d0b42205a3d1c68f30c6dceb90401c13bff8fe74"}, + {file = "numpy-2.4.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d30291931c915b2ab5717c2974bb95ee891a1cf22ebc16a8006bd59cd210d40a"}, + {file = "numpy-2.4.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bba37bc29d4d85761deed3954a1bc62be7cf462b9510b51d367b769a8c8df325"}, + {file = "numpy-2.4.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b2f0073ed0868db1dcd86e052d37279eef185b9c8db5bf61f30f46adac63c909"}, + {file = "numpy-2.4.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7f54844851cdb630ceb623dcec4db3240d1ac13d4990532446761baede94996a"}, + {file = "numpy-2.4.2-cp314-cp314-win32.whl", hash = "sha256:12e26134a0331d8dbd9351620f037ec470b7c75929cb8a1537f6bfe411152a1a"}, + {file = "numpy-2.4.2-cp314-cp314-win_amd64.whl", hash = "sha256:068cdb2d0d644cdb45670810894f6a0600797a69c05f1ac478e8d31670b8ee75"}, + {file = "numpy-2.4.2-cp314-cp314-win_arm64.whl", hash = "sha256:6ed0be1ee58eef41231a5c943d7d1375f093142702d5723ca2eb07db9b934b05"}, + {file = "numpy-2.4.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:98f16a80e917003a12c0580f97b5f875853ebc33e2eaa4bccfc8201ac6869308"}, + {file = "numpy-2.4.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:20abd069b9cda45874498b245c8015b18ace6de8546bf50dfa8cea1696ed06ef"}, + {file = "numpy-2.4.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:e98c97502435b53741540a5717a6749ac2ada901056c7db951d33e11c885cc7d"}, + {file = "numpy-2.4.2-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:da6cad4e82cb893db4b69105c604d805e0c3ce11501a55b5e9f9083b47d2ffe8"}, + {file = "numpy-2.4.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e4424677ce4b47fe73c8b5556d876571f7c6945d264201180db2dc34f676ab5"}, + {file = "numpy-2.4.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2b8f157c8a6f20eb657e240f8985cc135598b2b46985c5bccbde7616dc9c6b1e"}, + {file = "numpy-2.4.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5daf6f3914a733336dab21a05cdec343144600e964d2fcdabaac0c0269874b2a"}, + {file = "numpy-2.4.2-cp314-cp314t-win32.whl", hash = "sha256:8c50dd1fc8826f5b26a5ee4d77ca55d88a895f4e4819c7ecc2a9f5905047a443"}, + {file = "numpy-2.4.2-cp314-cp314t-win_amd64.whl", hash = "sha256:fcf92bee92742edd401ba41135185866f7026c502617f422eb432cfeca4fe236"}, + {file = "numpy-2.4.2-cp314-cp314t-win_arm64.whl", hash = "sha256:1f92f53998a17265194018d1cc321b2e96e900ca52d54c7c77837b71b9465181"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:89f7268c009bc492f506abd6f5265defa7cb3f7487dc21d357c3d290add45082"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6dee3bb76aa4009d5a912180bf5b2de012532998d094acee25d9cb8dee3e44a"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:cd2bd2bbed13e213d6b55dc1d035a4f91748a7d3edc9480c13898b0353708920"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:cf28c0c1d4c4bf00f509fa7eb02c58d7caf221b50b467bcb0d9bbf1584d5c821"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e04ae107ac591763a47398bb45b568fc38f02dbc4aa44c063f67a131f99346cb"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:602f65afdef699cda27ec0b9224ae5dc43e328f4c24c689deaf77133dbee74d0"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:be71bf1edb48ebbbf7f6337b5bfd2f895d1902f6335a5830b20141fc126ffba0"}, + {file = "numpy-2.4.2.tar.gz", hash = "sha256:659a6107e31a83c4e33f763942275fd278b21d095094044eb35569e86a21ddae"}, +] + +[[package]] +name = "numcodecs" +version = "0.16.5" +description = "A Python package providing buffer compression and transformation codecs for use in data storage and communication applications." +optional = false +python-versions = ">=3.11" +groups = ["main"] files = [ - {file = "numpy-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:30d53720b726ec36a7f88dc873f0eec8447fbc93d93a8f079dfac2629598d6ee"}, - {file = "numpy-2.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8d3ca0a72dd8846eb6f7dfe8f19088060fcb76931ed592d29128e0219652884"}, - {file = "numpy-2.1.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:fc44e3c68ff00fd991b59092a54350e6e4911152682b4782f68070985aa9e648"}, - {file = "numpy-2.1.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:7c1c60328bd964b53f8b835df69ae8198659e2b9302ff9ebb7de4e5a5994db3d"}, - {file = "numpy-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cdb606a7478f9ad91c6283e238544451e3a95f30fb5467fbf715964341a8a86"}, - {file = "numpy-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d666cb72687559689e9906197e3bec7b736764df6a2e58ee265e360663e9baf7"}, - {file = "numpy-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c6eef7a2dbd0abfb0d9eaf78b73017dbfd0b54051102ff4e6a7b2980d5ac1a03"}, - {file = "numpy-2.1.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:12edb90831ff481f7ef5f6bc6431a9d74dc0e5ff401559a71e5e4611d4f2d466"}, - {file = "numpy-2.1.2-cp310-cp310-win32.whl", hash = "sha256:a65acfdb9c6ebb8368490dbafe83c03c7e277b37e6857f0caeadbbc56e12f4fb"}, - {file = "numpy-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:860ec6e63e2c5c2ee5e9121808145c7bf86c96cca9ad396c0bd3e0f2798ccbe2"}, - {file = "numpy-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b42a1a511c81cc78cbc4539675713bbcf9d9c3913386243ceff0e9429ca892fe"}, - {file = "numpy-2.1.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:faa88bc527d0f097abdc2c663cddf37c05a1c2f113716601555249805cf573f1"}, - {file = "numpy-2.1.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:c82af4b2ddd2ee72d1fc0c6695048d457e00b3582ccde72d8a1c991b808bb20f"}, - {file = "numpy-2.1.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:13602b3174432a35b16c4cfb5de9a12d229727c3dd47a6ce35111f2ebdf66ff4"}, - {file = "numpy-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ebec5fd716c5a5b3d8dfcc439be82a8407b7b24b230d0ad28a81b61c2f4659a"}, - {file = "numpy-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2b49c3c0804e8ecb05d59af8386ec2f74877f7ca8fd9c1e00be2672e4d399b1"}, - {file = "numpy-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2cbba4b30bf31ddbe97f1c7205ef976909a93a66bb1583e983adbd155ba72ac2"}, - {file = "numpy-2.1.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8e00ea6fc82e8a804433d3e9cedaa1051a1422cb6e443011590c14d2dea59146"}, - {file = "numpy-2.1.2-cp311-cp311-win32.whl", hash = "sha256:5006b13a06e0b38d561fab5ccc37581f23c9511879be7693bd33c7cd15ca227c"}, - {file = "numpy-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:f1eb068ead09f4994dec71c24b2844f1e4e4e013b9629f812f292f04bd1510d9"}, - {file = "numpy-2.1.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d7bf0a4f9f15b32b5ba53147369e94296f5fffb783db5aacc1be15b4bf72f43b"}, - {file = "numpy-2.1.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b1d0fcae4f0949f215d4632be684a539859b295e2d0cb14f78ec231915d644db"}, - {file = "numpy-2.1.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f751ed0a2f250541e19dfca9f1eafa31a392c71c832b6bb9e113b10d050cb0f1"}, - {file = "numpy-2.1.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:bd33f82e95ba7ad632bc57837ee99dba3d7e006536200c4e9124089e1bf42426"}, - {file = "numpy-2.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b8cde4f11f0a975d1fd59373b32e2f5a562ade7cde4f85b7137f3de8fbb29a0"}, - {file = "numpy-2.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d95f286b8244b3649b477ac066c6906fbb2905f8ac19b170e2175d3d799f4df"}, - {file = "numpy-2.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ab4754d432e3ac42d33a269c8567413bdb541689b02d93788af4131018cbf366"}, - {file = "numpy-2.1.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e585c8ae871fd38ac50598f4763d73ec5497b0de9a0ab4ef5b69f01c6a046142"}, - {file = "numpy-2.1.2-cp312-cp312-win32.whl", hash = "sha256:9c6c754df29ce6a89ed23afb25550d1c2d5fdb9901d9c67a16e0b16eaf7e2550"}, - {file = "numpy-2.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:456e3b11cb79ac9946c822a56346ec80275eaf2950314b249b512896c0d2505e"}, - {file = "numpy-2.1.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a84498e0d0a1174f2b3ed769b67b656aa5460c92c9554039e11f20a05650f00d"}, - {file = "numpy-2.1.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4d6ec0d4222e8ffdab1744da2560f07856421b367928026fb540e1945f2eeeaf"}, - {file = "numpy-2.1.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:259ec80d54999cc34cd1eb8ded513cb053c3bf4829152a2e00de2371bd406f5e"}, - {file = "numpy-2.1.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:675c741d4739af2dc20cd6c6a5c4b7355c728167845e3c6b0e824e4e5d36a6c3"}, - {file = "numpy-2.1.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05b2d4e667895cc55e3ff2b56077e4c8a5604361fc21a042845ea3ad67465aa8"}, - {file = "numpy-2.1.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43cca367bf94a14aca50b89e9bc2061683116cfe864e56740e083392f533ce7a"}, - {file = "numpy-2.1.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:76322dcdb16fccf2ac56f99048af32259dcc488d9b7e25b51e5eca5147a3fb98"}, - {file = "numpy-2.1.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:32e16a03138cabe0cb28e1007ee82264296ac0983714094380b408097a418cfe"}, - {file = "numpy-2.1.2-cp313-cp313-win32.whl", hash = "sha256:242b39d00e4944431a3cd2db2f5377e15b5785920421993770cddb89992c3f3a"}, - {file = "numpy-2.1.2-cp313-cp313-win_amd64.whl", hash = "sha256:f2ded8d9b6f68cc26f8425eda5d3877b47343e68ca23d0d0846f4d312ecaa445"}, - {file = "numpy-2.1.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2ffef621c14ebb0188a8633348504a35c13680d6da93ab5cb86f4e54b7e922b5"}, - {file = "numpy-2.1.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ad369ed238b1959dfbade9018a740fb9392c5ac4f9b5173f420bd4f37ba1f7a0"}, - {file = "numpy-2.1.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d82075752f40c0ddf57e6e02673a17f6cb0f8eb3f587f63ca1eaab5594da5b17"}, - {file = "numpy-2.1.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:1600068c262af1ca9580a527d43dc9d959b0b1d8e56f8a05d830eea39b7c8af6"}, - {file = "numpy-2.1.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a26ae94658d3ba3781d5e103ac07a876b3e9b29db53f68ed7df432fd033358a8"}, - {file = "numpy-2.1.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13311c2db4c5f7609b462bc0f43d3c465424d25c626d95040f073e30f7570e35"}, - {file = "numpy-2.1.2-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:2abbf905a0b568706391ec6fa15161fad0fb5d8b68d73c461b3c1bab6064dd62"}, - {file = "numpy-2.1.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:ef444c57d664d35cac4e18c298c47d7b504c66b17c2ea91312e979fcfbdfb08a"}, - {file = "numpy-2.1.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:bdd407c40483463898b84490770199d5714dcc9dd9b792f6c6caccc523c00952"}, - {file = "numpy-2.1.2-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:da65fb46d4cbb75cb417cddf6ba5e7582eb7bb0b47db4b99c9fe5787ce5d91f5"}, - {file = "numpy-2.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c193d0b0238638e6fc5f10f1b074a6993cb13b0b431f64079a509d63d3aa8b7"}, - {file = "numpy-2.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a7d80b2e904faa63068ead63107189164ca443b42dd1930299e0d1cb041cec2e"}, - {file = "numpy-2.1.2.tar.gz", hash = "sha256:13532a088217fa624c99b843eeb54640de23b3414b14aa66d023805eb731066c"}, -] - -[[package]] -name = "overrides" -version = "7.7.0" -description = "A decorator to automatically detect mismatch when overriding a method." + {file = "numcodecs-0.16.5-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:78382dcea50622f2ef1e6e7a71dbe7f861d8fe376b27b7c297c26907304fef1e"}, + {file = "numcodecs-0.16.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2d04a19cb57a3c519b4127ac377cca6471aee1990d7c18f5b1e3a4fe1306689"}, + {file = "numcodecs-0.16.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c043af648eb280cd61785c99c22ff5c3c3460f906eb51a8511327c4f5111b283"}, + {file = "numcodecs-0.16.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c398919ef2eb0e56b8e97456f622640bfd3deed06de3acc976989cbcb22628a3"}, + {file = "numcodecs-0.16.5-cp311-cp311-win_amd64.whl", hash = "sha256:3820860ed302d4d84a1c66e70981ff959d5eb712555be4e7d8ced49888594773"}, + {file = "numcodecs-0.16.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:24e675dc8d1550cd976a99479b87d872cb142632c75cc402fea04c08c4898523"}, + {file = "numcodecs-0.16.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:94ddfa4341d1a3ab99989d13b01b5134abb687d3dab2ead54b450aefe4ad5bd6"}, + {file = "numcodecs-0.16.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b554ab9ecf69de7ca2b6b5e8bc696bd9747559cb4dd5127bd08d7a28bec59c3a"}, + {file = "numcodecs-0.16.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ad1a379a45bd3491deab8ae6548313946744f868c21d5340116977ea3be5b1d6"}, + {file = "numcodecs-0.16.5-cp312-cp312-win_amd64.whl", hash = "sha256:845a9857886ffe4a3172ba1c537ae5bcc01e65068c31cf1fce1a844bd1da050f"}, + {file = "numcodecs-0.16.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25be3a516ab677dad890760d357cfe081a371d9c0a2e9a204562318ac5969de3"}, + {file = "numcodecs-0.16.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0107e839ef75b854e969cb577e140b1aadb9847893937636582d23a2a4c6ce50"}, + {file = "numcodecs-0.16.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:015a7c859ecc2a06e2a548f64008c0ec3aaecabc26456c2c62f4278d8fc20597"}, + {file = "numcodecs-0.16.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:84230b4b9dad2392f2a84242bd6e3e659ac137b5a1ce3571d6965fca673e0903"}, + {file = "numcodecs-0.16.5-cp313-cp313-win_amd64.whl", hash = "sha256:5088145502ad1ebf677ec47d00eb6f0fd600658217db3e0c070c321c85d6cf3d"}, + {file = "numcodecs-0.16.5-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b05647b8b769e6bc8016e9fd4843c823ce5c9f2337c089fb5c9c4da05e5275de"}, + {file = "numcodecs-0.16.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3832bd1b5af8bb3e413076b7d93318c8e7d7b68935006b9fa36ca057d1725a8f"}, + {file = "numcodecs-0.16.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49f7b7d24f103187f53135bed28bb9f0ed6b2e14c604664726487bb6d7c882e1"}, + {file = "numcodecs-0.16.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aec9736d81b70f337d89c4070ee3ffeff113f386fd789492fa152d26a15043e4"}, + {file = "numcodecs-0.16.5-cp314-cp314-win_amd64.whl", hash = "sha256:b16a14303800e9fb88abc39463ab4706c037647ac17e49e297faa5f7d7dbbf1d"}, + {file = "numcodecs-0.16.5.tar.gz", hash = "sha256:0d0fb60852f84c0bd9543cc4d2ab9eefd37fc8efcc410acd4777e62a1d300318"}, +] + +[package.dependencies] +numpy = ">=1.24" +typing_extensions = "*" + +[package.extras] +crc32c = ["crc32c (>=2.7)"] +docs = ["numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-issues"] +google-crc32c = ["google-crc32c (>=1.5)"] +msgpack = ["msgpack"] +pcodec = ["pcodec (>=0.3,<0.4)"] +test = ["coverage", "pytest", "pytest-cov", "pyzstd"] +test-extras = ["crc32c", "importlib_metadata"] +zfpy = ["zfpy (>=1.0.0)"] + +[[package]] +name = "numpy" +version = "2.4.2" +description = "Fundamental package for array computing in Python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.11" +groups = ["main", "dev"] files = [ - {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, - {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, + {file = "numpy-2.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e7e88598032542bd49af7c4747541422884219056c268823ef6e5e89851c8825"}, + {file = "numpy-2.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7edc794af8b36ca37ef5fcb5e0d128c7e0595c7b96a2318d1badb6fcd8ee86b1"}, + {file = "numpy-2.4.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:6e9f61981ace1360e42737e2bae58b27bf28a1b27e781721047d84bd754d32e7"}, + {file = "numpy-2.4.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:cb7bbb88aa74908950d979eeaa24dbdf1a865e3c7e45ff0121d8f70387b55f73"}, + {file = "numpy-2.4.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4f069069931240b3fc703f1e23df63443dbd6390614c8c44a87d96cd0ec81eb1"}, + {file = "numpy-2.4.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c02ef4401a506fb60b411467ad501e1429a3487abca4664871d9ae0b46c8ba32"}, + {file = "numpy-2.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2653de5c24910e49c2b106499803124dde62a5a1fe0eedeaecf4309a5f639390"}, + {file = "numpy-2.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1ae241bbfc6ae276f94a170b14785e561cb5e7f626b6688cf076af4110887413"}, + {file = "numpy-2.4.2-cp311-cp311-win32.whl", hash = "sha256:df1b10187212b198dd45fa943d8985a3c8cf854aed4923796e0e019e113a1bda"}, + {file = "numpy-2.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:b9c618d56a29c9cb1c4da979e9899be7578d2e0b3c24d52079c166324c9e8695"}, + {file = "numpy-2.4.2-cp311-cp311-win_arm64.whl", hash = "sha256:47c5a6ed21d9452b10227e5e8a0e1c22979811cad7dcc19d8e3e2fb8fa03f1a3"}, + {file = "numpy-2.4.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:21982668592194c609de53ba4933a7471880ccbaadcc52352694a59ecc860b3a"}, + {file = "numpy-2.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40397bda92382fcec844066efb11f13e1c9a3e2a8e8f318fb72ed8b6db9f60f1"}, + {file = "numpy-2.4.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:b3a24467af63c67829bfaa61eecf18d5432d4f11992688537be59ecd6ad32f5e"}, + {file = "numpy-2.4.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:805cc8de9fd6e7a22da5aed858e0ab16be5a4db6c873dde1d7451c541553aa27"}, + {file = "numpy-2.4.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d82351358ffbcdcd7b686b90742a9b86632d6c1c051016484fa0b326a0a1548"}, + {file = "numpy-2.4.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e35d3e0144137d9fdae62912e869136164534d64a169f86438bc9561b6ad49f"}, + {file = "numpy-2.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adb6ed2ad29b9e15321d167d152ee909ec73395901b70936f029c3bc6d7f4460"}, + {file = "numpy-2.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8906e71fd8afcb76580404e2a950caef2685df3d2a57fe82a86ac8d33cc007ba"}, + {file = "numpy-2.4.2-cp312-cp312-win32.whl", hash = "sha256:ec055f6dae239a6299cace477b479cca2fc125c5675482daf1dd886933a1076f"}, + {file = "numpy-2.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:209fae046e62d0ce6435fcfe3b1a10537e858249b3d9b05829e2a05218296a85"}, + {file = "numpy-2.4.2-cp312-cp312-win_arm64.whl", hash = "sha256:fbde1b0c6e81d56f5dccd95dd4a711d9b95df1ae4009a60887e56b27e8d903fa"}, + {file = "numpy-2.4.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25f2059807faea4b077a2b6837391b5d830864b3543627f381821c646f31a63c"}, + {file = "numpy-2.4.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bd3a7a9f5847d2fb8c2c6d1c862fa109c31a9abeca1a3c2bd5a64572955b2979"}, + {file = "numpy-2.4.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8e4549f8a3c6d13d55041925e912bfd834285ef1dd64d6bc7d542583355e2e98"}, + {file = "numpy-2.4.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:aea4f66ff44dfddf8c2cffd66ba6538c5ec67d389285292fe428cb2c738c8aef"}, + {file = "numpy-2.4.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3cd545784805de05aafe1dde61752ea49a359ccba9760c1e5d1c88a93bbf2b7"}, + {file = "numpy-2.4.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0d9b7c93578baafcbc5f0b83eaf17b79d345c6f36917ba0c67f45226911d499"}, + {file = "numpy-2.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f74f0f7779cc7ae07d1810aab8ac6b1464c3eafb9e283a40da7309d5e6e48fbb"}, + {file = "numpy-2.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c7ac672d699bf36275c035e16b65539931347d68b70667d28984c9fb34e07fa7"}, + {file = "numpy-2.4.2-cp313-cp313-win32.whl", hash = "sha256:8e9afaeb0beff068b4d9cd20d322ba0ee1cecfb0b08db145e4ab4dd44a6b5110"}, + {file = "numpy-2.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:7df2de1e4fba69a51c06c28f5a3de36731eb9639feb8e1cf7e4a7b0daf4cf622"}, + {file = "numpy-2.4.2-cp313-cp313-win_arm64.whl", hash = "sha256:0fece1d1f0a89c16b03442eae5c56dc0be0c7883b5d388e0c03f53019a4bfd71"}, + {file = "numpy-2.4.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5633c0da313330fd20c484c78cdd3f9b175b55e1a766c4a174230c6b70ad8262"}, + {file = "numpy-2.4.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d9f64d786b3b1dd742c946c42d15b07497ed14af1a1f3ce840cce27daa0ce913"}, + {file = "numpy-2.4.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:b21041e8cb6a1eb5312dd1d2f80a94d91efffb7a06b70597d44f1bd2dfc315ab"}, + {file = "numpy-2.4.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:00ab83c56211a1d7c07c25e3217ea6695e50a3e2f255053686b081dc0b091a82"}, + {file = "numpy-2.4.2-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fb882da679409066b4603579619341c6d6898fc83a8995199d5249f986e8e8f"}, + {file = "numpy-2.4.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:66cb9422236317f9d44b67b4d18f44efe6e9c7f8794ac0462978513359461554"}, + {file = "numpy-2.4.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:0f01dcf33e73d80bd8dc0f20a71303abbafa26a19e23f6b68d1aa9990af90257"}, + {file = "numpy-2.4.2-cp313-cp313t-win32.whl", hash = "sha256:52b913ec40ff7ae845687b0b34d8d93b60cb66dcee06996dd5c99f2fc9328657"}, + {file = "numpy-2.4.2-cp313-cp313t-win_amd64.whl", hash = "sha256:5eea80d908b2c1f91486eb95b3fb6fab187e569ec9752ab7d9333d2e66bf2d6b"}, + {file = "numpy-2.4.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fd49860271d52127d61197bb50b64f58454e9f578cb4b2c001a6de8b1f50b0b1"}, + {file = "numpy-2.4.2-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:444be170853f1f9d528428eceb55f12918e4fda5d8805480f36a002f1415e09b"}, + {file = "numpy-2.4.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d1240d50adff70c2a88217698ca844723068533f3f5c5fa6ee2e3220e3bdb000"}, + {file = "numpy-2.4.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:7cdde6de52fb6664b00b056341265441192d1291c130e99183ec0d4b110ff8b1"}, + {file = "numpy-2.4.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:cda077c2e5b780200b6b3e09d0b42205a3d1c68f30c6dceb90401c13bff8fe74"}, + {file = "numpy-2.4.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d30291931c915b2ab5717c2974bb95ee891a1cf22ebc16a8006bd59cd210d40a"}, + {file = "numpy-2.4.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bba37bc29d4d85761deed3954a1bc62be7cf462b9510b51d367b769a8c8df325"}, + {file = "numpy-2.4.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b2f0073ed0868db1dcd86e052d37279eef185b9c8db5bf61f30f46adac63c909"}, + {file = "numpy-2.4.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7f54844851cdb630ceb623dcec4db3240d1ac13d4990532446761baede94996a"}, + {file = "numpy-2.4.2-cp314-cp314-win32.whl", hash = "sha256:12e26134a0331d8dbd9351620f037ec470b7c75929cb8a1537f6bfe411152a1a"}, + {file = "numpy-2.4.2-cp314-cp314-win_amd64.whl", hash = "sha256:068cdb2d0d644cdb45670810894f6a0600797a69c05f1ac478e8d31670b8ee75"}, + {file = "numpy-2.4.2-cp314-cp314-win_arm64.whl", hash = "sha256:6ed0be1ee58eef41231a5c943d7d1375f093142702d5723ca2eb07db9b934b05"}, + {file = "numpy-2.4.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:98f16a80e917003a12c0580f97b5f875853ebc33e2eaa4bccfc8201ac6869308"}, + {file = "numpy-2.4.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:20abd069b9cda45874498b245c8015b18ace6de8546bf50dfa8cea1696ed06ef"}, + {file = "numpy-2.4.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:e98c97502435b53741540a5717a6749ac2ada901056c7db951d33e11c885cc7d"}, + {file = "numpy-2.4.2-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:da6cad4e82cb893db4b69105c604d805e0c3ce11501a55b5e9f9083b47d2ffe8"}, + {file = "numpy-2.4.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e4424677ce4b47fe73c8b5556d876571f7c6945d264201180db2dc34f676ab5"}, + {file = "numpy-2.4.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2b8f157c8a6f20eb657e240f8985cc135598b2b46985c5bccbde7616dc9c6b1e"}, + {file = "numpy-2.4.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5daf6f3914a733336dab21a05cdec343144600e964d2fcdabaac0c0269874b2a"}, + {file = "numpy-2.4.2-cp314-cp314t-win32.whl", hash = "sha256:8c50dd1fc8826f5b26a5ee4d77ca55d88a895f4e4819c7ecc2a9f5905047a443"}, + {file = "numpy-2.4.2-cp314-cp314t-win_amd64.whl", hash = "sha256:fcf92bee92742edd401ba41135185866f7026c502617f422eb432cfeca4fe236"}, + {file = "numpy-2.4.2-cp314-cp314t-win_arm64.whl", hash = "sha256:1f92f53998a17265194018d1cc321b2e96e900ca52d54c7c77837b71b9465181"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:89f7268c009bc492f506abd6f5265defa7cb3f7487dc21d357c3d290add45082"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6dee3bb76aa4009d5a912180bf5b2de012532998d094acee25d9cb8dee3e44a"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:cd2bd2bbed13e213d6b55dc1d035a4f91748a7d3edc9480c13898b0353708920"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:cf28c0c1d4c4bf00f509fa7eb02c58d7caf221b50b467bcb0d9bbf1584d5c821"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e04ae107ac591763a47398bb45b568fc38f02dbc4aa44c063f67a131f99346cb"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:602f65afdef699cda27ec0b9224ae5dc43e328f4c24c689deaf77133dbee74d0"}, + {file = "numpy-2.4.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:be71bf1edb48ebbbf7f6337b5bfd2f895d1902f6335a5830b20141fc126ffba0"}, + {file = "numpy-2.4.2.tar.gz", hash = "sha256:659a6107e31a83c4e33f763942275fd278b21d095094044eb35569e86a21ddae"}, ] [[package]] @@ -2620,9 +2936,10 @@ version = "26.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, + {file = "packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529"}, + {file = "packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4"}, ] [[package]] @@ -2643,105 +2960,87 @@ lint = ["black"] [[package]] name = "pandas" -version = "2.2.3" +version = "3.0.1" description = "Powerful data structures for data analysis, time series, and statistics" optional = false -python-versions = ">=3.9" -files = [ - {file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"}, - {file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"}, - {file = "pandas-2.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d9c45366def9a3dd85a6454c0e7908f2b3b8e9c138f5dc38fed7ce720d8453ed"}, - {file = "pandas-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86976a1c5b25ae3f8ccae3a5306e443569ee3c3faf444dfd0f41cda24667ad57"}, - {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b8661b0238a69d7aafe156b7fa86c44b881387509653fdf857bebc5e4008ad42"}, - {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37e0aced3e8f539eccf2e099f65cdb9c8aa85109b0be6e93e2baff94264bdc6f"}, - {file = "pandas-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:56534ce0746a58afaf7942ba4863e0ef81c9c50d3f0ae93e9497d6a41a057645"}, - {file = "pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039"}, - {file = "pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd"}, - {file = "pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698"}, - {file = "pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc"}, - {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3"}, - {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32"}, - {file = "pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5"}, - {file = "pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9"}, - {file = "pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4"}, - {file = "pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3"}, - {file = "pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319"}, - {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8"}, - {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a"}, - {file = "pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13"}, - {file = "pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015"}, - {file = "pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28"}, - {file = "pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0"}, - {file = "pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24"}, - {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659"}, - {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb"}, - {file = "pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d"}, - {file = "pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468"}, - {file = "pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18"}, - {file = "pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2"}, - {file = "pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4"}, - {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d"}, - {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a"}, - {file = "pandas-2.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc6b93f9b966093cb0fd62ff1a7e4c09e6d546ad7c1de191767baffc57628f39"}, - {file = "pandas-2.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5dbca4c1acd72e8eeef4753eeca07de9b1db4f398669d5994086f788a5d7cc30"}, - {file = "pandas-2.2.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8cd6d7cc958a3910f934ea8dbdf17b2364827bb4dafc38ce6eef6bb3d65ff09c"}, - {file = "pandas-2.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99df71520d25fade9db7c1076ac94eb994f4d2673ef2aa2e86ee039b6746d20c"}, - {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31d0ced62d4ea3e231a9f228366919a5ea0b07440d9d4dac345376fd8e1477ea"}, - {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7eee9e7cea6adf3e3d24e304ac6b8300646e2a5d1cd3a3c2abed9101b0846761"}, - {file = "pandas-2.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:4850ba03528b6dd51d6c5d273c46f183f39a9baf3f0143e566b89450965b105e"}, - {file = "pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667"}, -] - -[package.extras] -all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] -aws = ["s3fs (>=2022.11.0)"] -clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] -compression = ["zstandard (>=0.19.0)"] -computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] -consortium-standard = ["dataframe-api-compat (>=0.1.7)"] -excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] -feather = ["pyarrow (>=10.0.1)"] -fss = ["fsspec (>=2022.11.0)"] -gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] -hdf5 = ["tables (>=3.8.0)"] -html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] -mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] -output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] -parquet = ["pyarrow (>=10.0.1)"] -performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] -plot = ["matplotlib (>=3.6.3)"] -postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] -pyarrow = ["pyarrow (>=10.0.1)"] -spss = ["pyreadstat (>=1.2.0)"] -sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] -test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] -xml = ["lxml (>=4.9.2)"] - -[[package]] -name = "pandocfilters" -version = "1.5.1" -description = "Utilities for writing pandoc filters in python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, - {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, -] - -[[package]] -name = "parso" -version = "0.8.4" -description = "A Python Parser" -optional = false -python-versions = ">=3.6" +python-versions = ">=3.11" +groups = ["main"] files = [ - {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, - {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, + {file = "pandas-3.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:de09668c1bf3b925c07e5762291602f0d789eca1b3a781f99c1c78f6cac0e7ea"}, + {file = "pandas-3.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:24ba315ba3d6e5806063ac6eb717504e499ce30bd8c236d8693a5fd3f084c796"}, + {file = "pandas-3.0.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:406ce835c55bac912f2a0dcfaf27c06d73c6b04a5dde45f1fd3169ce31337389"}, + {file = "pandas-3.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:830994d7e1f31dd7e790045235605ab61cff6c94defc774547e8b7fdfbff3dc7"}, + {file = "pandas-3.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a64ce8b0f2de1d2efd2ae40b0abe7f8ae6b29fbfb3812098ed5a6f8e235ad9bf"}, + {file = "pandas-3.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9832c2c69da24b602c32e0c7b1b508a03949c18ba08d4d9f1c1033426685b447"}, + {file = "pandas-3.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:84f0904a69e7365f79a0c77d3cdfccbfb05bf87847e3a51a41e1426b0edb9c79"}, + {file = "pandas-3.0.1-cp311-cp311-win_arm64.whl", hash = "sha256:4a68773d5a778afb31d12e34f7dd4612ab90de8c6fb1d8ffe5d4a03b955082a1"}, + {file = "pandas-3.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:476f84f8c20c9f5bc47252b66b4bb25e1a9fc2fa98cead96744d8116cb85771d"}, + {file = "pandas-3.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0ab749dfba921edf641d4036c4c21c0b3ea70fea478165cb98a998fb2a261955"}, + {file = "pandas-3.0.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8e36891080b87823aff3640c78649b91b8ff6eea3c0d70aeabd72ea43ab069b"}, + {file = "pandas-3.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:532527a701281b9dd371e2f582ed9094f4c12dd9ffb82c0c54ee28d8ac9520c4"}, + {file = "pandas-3.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:356e5c055ed9b0da1580d465657bc7d00635af4fd47f30afb23025352ba764d1"}, + {file = "pandas-3.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9d810036895f9ad6345b8f2a338dd6998a74e8483847403582cab67745bff821"}, + {file = "pandas-3.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:536232a5fe26dd989bd633e7a0c450705fdc86a207fec7254a55e9a22950fe43"}, + {file = "pandas-3.0.1-cp312-cp312-win_arm64.whl", hash = "sha256:0f463ebfd8de7f326d38037c7363c6dacb857c5881ab8961fb387804d6daf2f7"}, + {file = "pandas-3.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5272627187b5d9c20e55d27caf5f2cd23e286aba25cadf73c8590e432e2b7262"}, + {file = "pandas-3.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:661e0f665932af88c7877f31da0dc743fe9c8f2524bdffe23d24fdcb67ef9d56"}, + {file = "pandas-3.0.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:75e6e292ff898679e47a2199172593d9f6107fd2dd3617c22c2946e97d5df46e"}, + {file = "pandas-3.0.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1ff8cf1d2896e34343197685f432450ec99a85ba8d90cce2030c5eee2ef98791"}, + {file = "pandas-3.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eca8b4510f6763f3d37359c2105df03a7a221a508f30e396a51d0713d462e68a"}, + {file = "pandas-3.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:06aff2ad6f0b94a17822cf8b83bbb563b090ed82ff4fe7712db2ce57cd50d9b8"}, + {file = "pandas-3.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:9fea306c783e28884c29057a1d9baa11a349bbf99538ec1da44c8476563d1b25"}, + {file = "pandas-3.0.1-cp313-cp313-win_arm64.whl", hash = "sha256:a8d37a43c52917427e897cb2e429f67a449327394396a81034a4449b99afda59"}, + {file = "pandas-3.0.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:d54855f04f8246ed7b6fc96b05d4871591143c46c0b6f4af874764ed0d2d6f06"}, + {file = "pandas-3.0.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4e1b677accee34a09e0dc2ce5624e4a58a1870ffe56fc021e9caf7f23cd7668f"}, + {file = "pandas-3.0.1-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a9cabbdcd03f1b6cd254d6dda8ae09b0252524be1592594c00b7895916cb1324"}, + {file = "pandas-3.0.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ae2ab1f166668b41e770650101e7090824fd34d17915dd9cd479f5c5e0065e9"}, + {file = "pandas-3.0.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6bf0603c2e30e2cafac32807b06435f28741135cb8697eae8b28c7d492fc7d76"}, + {file = "pandas-3.0.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6c426422973973cae1f4a23e51d4ae85974f44871b24844e4f7de752dd877098"}, + {file = "pandas-3.0.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b03f91ae8c10a85c1613102c7bef5229b5379f343030a3ccefeca8a33414cf35"}, + {file = "pandas-3.0.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:99d0f92ed92d3083d140bf6b97774f9f13863924cf3f52a70711f4e7588f9d0a"}, + {file = "pandas-3.0.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3b66857e983208654294bb6477b8a63dee26b37bdd0eb34d010556e91261784f"}, + {file = "pandas-3.0.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56cf59638bf24dc9bdf2154c81e248b3289f9a09a6d04e63608c159022352749"}, + {file = "pandas-3.0.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c1a9f55e0f46951874b863d1f3906dcb57df2d9be5c5847ba4dfb55b2c815249"}, + {file = "pandas-3.0.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1849f0bba9c8a2fb0f691d492b834cc8dadf617e29015c66e989448d58d011ee"}, + {file = "pandas-3.0.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c3d288439e11b5325b02ae6e9cc83e6805a62c40c5a6220bea9beb899c073b1c"}, + {file = "pandas-3.0.1-cp314-cp314-win_amd64.whl", hash = "sha256:93325b0fe372d192965f4cca88d97667f49557398bbf94abdda3bf1b591dbe66"}, + {file = "pandas-3.0.1-cp314-cp314-win_arm64.whl", hash = "sha256:97ca08674e3287c7148f4858b01136f8bdfe7202ad25ad04fec602dd1d29d132"}, + {file = "pandas-3.0.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:58eeb1b2e0fb322befcf2bbc9ba0af41e616abadb3d3414a6bc7167f6cbfce32"}, + {file = "pandas-3.0.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:cd9af1276b5ca9e298bd79a26bda32fa9cc87ed095b2a9a60978d2ca058eaf87"}, + {file = "pandas-3.0.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94f87a04984d6b63788327cd9f79dda62b7f9043909d2440ceccf709249ca988"}, + {file = "pandas-3.0.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85fe4c4df62e1e20f9db6ebfb88c844b092c22cd5324bdcf94bfa2fc1b391221"}, + {file = "pandas-3.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:331ca75a2f8672c365ae25c0b29e46f5ac0c6551fdace8eec4cd65e4fac271ff"}, + {file = "pandas-3.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:15860b1fdb1973fffade772fdb931ccf9b2f400a3f5665aef94a00445d7d8dd5"}, + {file = "pandas-3.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:44f1364411d5670efa692b146c748f4ed013df91ee91e9bec5677fb1fd58b937"}, + {file = "pandas-3.0.1-cp314-cp314t-win_arm64.whl", hash = "sha256:108dd1790337a494aa80e38def654ca3f0968cf4f362c85f44c15e471667102d"}, + {file = "pandas-3.0.1.tar.gz", hash = "sha256:4186a699674af418f655dbd420ed87f50d56b4cd6603784279d9eef6627823c8"}, ] [package.extras] -qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["docopt", "pytest"] +all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.36)", "adbc-driver-postgresql (>=1.2.0)", "adbc-driver-sqlite (>=1.2.0)", "beautifulsoup4 (>=4.12.3)", "bottleneck (>=1.4.2)", "fastparquet (>=2024.11.0)", "fsspec (>=2024.10.0)", "gcsfs (>=2024.10.0)", "html5lib (>=1.1)", "hypothesis (>=6.116.0)", "jinja2 (>=3.1.5)", "lxml (>=5.3.0)", "matplotlib (>=3.9.3)", "numba (>=0.60.0)", "numexpr (>=2.10.2)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.5)", "psycopg2 (>=2.9.10)", "pyarrow (>=13.0.0)", "pyiceberg (>=0.8.1)", "pymysql (>=1.1.1)", "pyreadstat (>=1.2.8)", "pytest (>=8.3.4)", "pytest-xdist (>=3.6.1)", "python-calamine (>=0.3.0)", "pytz (>=2024.2)", "pyxlsb (>=1.0.10)", "qtpy (>=2.4.2)", "s3fs (>=2024.10.0)", "scipy (>=1.14.1)", "tables (>=3.10.1)", "tabulate (>=0.9.0)", "xarray (>=2024.10.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.2.0)", "zstandard (>=0.23.0)"] +aws = ["s3fs (>=2024.10.0)"] +clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.4.2)"] +compression = ["zstandard (>=0.23.0)"] +computation = ["scipy (>=1.14.1)", "xarray (>=2024.10.0)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.5)", "python-calamine (>=0.3.0)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.2.0)"] +feather = ["pyarrow (>=13.0.0)"] +fss = ["fsspec (>=2024.10.0)"] +gcp = ["gcsfs (>=2024.10.0)"] +hdf5 = ["tables (>=3.10.1)"] +html = ["beautifulsoup4 (>=4.12.3)", "html5lib (>=1.1)", "lxml (>=5.3.0)"] +iceberg = ["pyiceberg (>=0.8.1)"] +mysql = ["SQLAlchemy (>=2.0.36)", "pymysql (>=1.1.1)"] +output-formatting = ["jinja2 (>=3.1.5)", "tabulate (>=0.9.0)"] +parquet = ["pyarrow (>=13.0.0)"] +performance = ["bottleneck (>=1.4.2)", "numba (>=0.60.0)", "numexpr (>=2.10.2)"] +plot = ["matplotlib (>=3.9.3)"] +postgresql = ["SQLAlchemy (>=2.0.36)", "adbc-driver-postgresql (>=1.2.0)", "psycopg2 (>=2.9.10)"] +pyarrow = ["pyarrow (>=13.0.0)"] +spss = ["pyreadstat (>=1.2.8)"] +sql-other = ["SQLAlchemy (>=2.0.36)", "adbc-driver-postgresql (>=1.2.0)", "adbc-driver-sqlite (>=1.2.0)"] +test = ["hypothesis (>=6.116.0)", "pytest (>=8.3.4)", "pytest-xdist (>=3.6.1)"] +timezone = ["pytz (>=2024.2)"] +xml = ["lxml (>=5.3.0)"] [[package]] name = "partd" @@ -2749,6 +3048,7 @@ version = "1.4.2" description = "Appendable key-value storage" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f"}, {file = "partd-1.4.2.tar.gz", hash = "sha256:d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c"}, @@ -2773,19 +3073,11 @@ files = [ {file = "pathspec-1.0.4.tar.gz", hash = "sha256:0210e2ae8a21a9137c0d470578cb0e595af87edaa6ebf12ff176f14a02e0e645"}, ] -[[package]] -name = "pexpect" -version = "4.9.0" -description = "Pexpect allows easy control of interactive console applications." -optional = false -python-versions = "*" -files = [ - {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, - {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, -] - -[package.dependencies] -ptyprocess = ">=0.5" +[package.extras] +hyperscan = ["hyperscan (>=0.7)"] +optional = ["typing-extensions (>=4)"] +re2 = ["google-re2 (>=1.1)"] +tests = ["pytest (>=9)", "typing-extensions (>=4.15)"] [[package]] name = "pip-requirements-parser" @@ -2815,8 +3107,8 @@ optional = false python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, + {file = "platformdirs-4.9.2-py3-none-any.whl", hash = "sha256:9170634f126f8efdae22fb58ae8a0eaa86f38365bc57897a6c4f781d1f5875bd"}, + {file = "platformdirs-4.9.2.tar.gz", hash = "sha256:9a33809944b9db043ad67ca0db94b14bf452cc6aeaac46a88ea55b26e2e9d291"}, ] [[package]] @@ -2824,27 +3116,27 @@ name = "pluggy" version = "1.6.0" description = "plugin and hook calling mechanisms for python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, + {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, + {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, ] [package.extras] dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] +testing = ["coverage", "pytest", "pytest-benchmark"] [[package]] name = "pre-commit" -version = "3.8.0" +version = "4.5.1" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "pre_commit-3.8.0-py2.py3-none-any.whl", hash = "sha256:9a90a53bf82fdd8778d58085faf8d83df56e40dfe18f45b19446e26bf1b3a63f"}, - {file = "pre_commit-3.8.0.tar.gz", hash = "sha256:8bb6494d4a20423842e198980c9ecf9f96607a07ea29549e180eef9ae80fe7af"}, + {file = "pre_commit-4.5.1-py2.py3-none-any.whl", hash = "sha256:3b3afd891e97337708c1674210f8eba659b52a38ea5f822ff142d10786221f77"}, + {file = "pre_commit-4.5.1.tar.gz", hash = "sha256:eb545fcff725875197837263e977ea257a402056661f09dae08e4b149b030a61"}, ] [package.dependencies] @@ -2854,119 +3146,23 @@ nodeenv = ">=0.11.1" pyyaml = ">=5.1" virtualenv = ">=20.10.0" -[[package]] -name = "prometheus-client" -version = "0.21.0" -description = "Python client for the Prometheus monitoring system." -optional = false -python-versions = ">=3.8" -files = [ - {file = "prometheus_client-0.21.0-py3-none-any.whl", hash = "sha256:4fa6b4dd0ac16d58bb587c04b1caae65b8c5043e85f778f42f5f632f6af2e166"}, - {file = "prometheus_client-0.21.0.tar.gz", hash = "sha256:96c83c606b71ff2b0a433c98889d275f51ffec6c5e267de37c7a2b5c9aa9233e"}, -] - -[package.extras] -twisted = ["twisted"] - -[[package]] -name = "prompt-toolkit" -version = "3.0.48" -description = "Library for building powerful interactive command lines in Python" -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e"}, - {file = "prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90"}, -] - -[package.dependencies] -wcwidth = "*" - -[[package]] -name = "psutil" -version = "6.1.0" -description = "Cross-platform lib for process and system monitoring in Python." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -files = [ - {file = "psutil-6.1.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ff34df86226c0227c52f38b919213157588a678d049688eded74c76c8ba4a5d0"}, - {file = "psutil-6.1.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:c0e0c00aa18ca2d3b2b991643b799a15fc8f0563d2ebb6040f64ce8dc027b942"}, - {file = "psutil-6.1.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:000d1d1ebd634b4efb383f4034437384e44a6d455260aaee2eca1e9c1b55f047"}, - {file = "psutil-6.1.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:5cd2bcdc75b452ba2e10f0e8ecc0b57b827dd5d7aaffbc6821b2a9a242823a76"}, - {file = "psutil-6.1.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:045f00a43c737f960d273a83973b2511430d61f283a44c96bf13a6e829ba8fdc"}, - {file = "psutil-6.1.0-cp27-none-win32.whl", hash = "sha256:9118f27452b70bb1d9ab3198c1f626c2499384935aaf55388211ad982611407e"}, - {file = "psutil-6.1.0-cp27-none-win_amd64.whl", hash = "sha256:a8506f6119cff7015678e2bce904a4da21025cc70ad283a53b099e7620061d85"}, - {file = "psutil-6.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6e2dcd475ce8b80522e51d923d10c7871e45f20918e027ab682f94f1c6351688"}, - {file = "psutil-6.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0895b8414afafc526712c498bd9de2b063deaac4021a3b3c34566283464aff8e"}, - {file = "psutil-6.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9dcbfce5d89f1d1f2546a2090f4fcf87c7f669d1d90aacb7d7582addece9fb38"}, - {file = "psutil-6.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:498c6979f9c6637ebc3a73b3f87f9eb1ec24e1ce53a7c5173b8508981614a90b"}, - {file = "psutil-6.1.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d905186d647b16755a800e7263d43df08b790d709d575105d419f8b6ef65423a"}, - {file = "psutil-6.1.0-cp36-cp36m-win32.whl", hash = "sha256:6d3fbbc8d23fcdcb500d2c9f94e07b1342df8ed71b948a2649b5cb060a7c94ca"}, - {file = "psutil-6.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1209036fbd0421afde505a4879dee3b2fd7b1e14fee81c0069807adcbbcca747"}, - {file = "psutil-6.1.0-cp37-abi3-win32.whl", hash = "sha256:1ad45a1f5d0b608253b11508f80940985d1d0c8f6111b5cb637533a0e6ddc13e"}, - {file = "psutil-6.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:a8fb3752b491d246034fa4d279ff076501588ce8cbcdbb62c32fd7a377d996be"}, - {file = "psutil-6.1.0.tar.gz", hash = "sha256:353815f59a7f64cdaca1c0307ee13558a0512f6db064e92fe833784f08539c7a"}, -] - -[package.extras] -dev = ["black", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest-cov", "requests", "rstcheck", "ruff", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "wheel"] -test = ["pytest", "pytest-xdist", "setuptools"] - -[[package]] -name = "ptyprocess" -version = "0.7.0" -description = "Run a subprocess in a pseudo terminal" -optional = false -python-versions = "*" -files = [ - {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, - {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, -] - -[[package]] -name = "pure-eval" -version = "0.2.3" -description = "Safely evaluate AST nodes without side effects" -optional = false -python-versions = "*" -files = [ - {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, - {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, -] - -[package.extras] -tests = ["pytest"] - -[[package]] -name = "pycparser" -version = "2.22" -description = "C parser in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, - {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, -] - [[package]] name = "pydantic" -version = "2.9.2" +version = "2.12.5" description = "Data validation using Python type hints" optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, - {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, + {file = "pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d"}, + {file = "pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.23.4" -typing-extensions = [ - {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, - {version = ">=4.6.1", markers = "python_version < \"3.13\""}, -] +pydantic-core = "2.41.5" +typing-extensions = ">=4.14.1" +typing-inspection = ">=0.4.2" [package.extras] email = ["email-validator (>=2.0.0)"] @@ -2974,101 +3170,133 @@ timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows [[package]] name = "pydantic-core" -version = "2.23.4" +version = "2.41.5" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, - {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, - {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, - {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, - {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, - {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, - {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, - {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, - {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, - {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, - {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, - {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, - {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, - {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, - {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, - {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, - {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, - {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, - {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, - {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, - {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, - {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, - {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, - {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, - {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, - {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, - {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, - {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, - {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, - {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, + {file = "pydantic_core-2.41.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:77b63866ca88d804225eaa4af3e664c5faf3568cea95360d21f4725ab6e07146"}, + {file = "pydantic_core-2.41.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dfa8a0c812ac681395907e71e1274819dec685fec28273a28905df579ef137e2"}, + {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5921a4d3ca3aee735d9fd163808f5e8dd6c6972101e4adbda9a4667908849b97"}, + {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e25c479382d26a2a41b7ebea1043564a937db462816ea07afa8a44c0866d52f9"}, + {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f547144f2966e1e16ae626d8ce72b4cfa0caedc7fa28052001c94fb2fcaa1c52"}, + {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f52298fbd394f9ed112d56f3d11aabd0d5bd27beb3084cc3d8ad069483b8941"}, + {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:100baa204bb412b74fe285fb0f3a385256dad1d1879f0a5cb1499ed2e83d132a"}, + {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:05a2c8852530ad2812cb7914dc61a1125dc4e06252ee98e5638a12da6cc6fb6c"}, + {file = "pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:29452c56df2ed968d18d7e21f4ab0ac55e71dc59524872f6fc57dcf4a3249ed2"}, + {file = "pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:d5160812ea7a8a2ffbe233d8da666880cad0cbaf5d4de74ae15c313213d62556"}, + {file = "pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:df3959765b553b9440adfd3c795617c352154e497a4eaf3752555cfb5da8fc49"}, + {file = "pydantic_core-2.41.5-cp310-cp310-win32.whl", hash = "sha256:1f8d33a7f4d5a7889e60dc39856d76d09333d8a6ed0f5f1190635cbec70ec4ba"}, + {file = "pydantic_core-2.41.5-cp310-cp310-win_amd64.whl", hash = "sha256:62de39db01b8d593e45871af2af9e497295db8d73b085f6bfd0b18c83c70a8f9"}, + {file = "pydantic_core-2.41.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a3a52f6156e73e7ccb0f8cced536adccb7042be67cb45f9562e12b319c119da6"}, + {file = "pydantic_core-2.41.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7f3bf998340c6d4b0c9a2f02d6a400e51f123b59565d74dc60d252ce888c260b"}, + {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:378bec5c66998815d224c9ca994f1e14c0c21cb95d2f52b6021cc0b2a58f2a5a"}, + {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7b576130c69225432866fe2f4a469a85a54ade141d96fd396dffcf607b558f8"}, + {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6cb58b9c66f7e4179a2d5e0f849c48eff5c1fca560994d6eb6543abf955a149e"}, + {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:88942d3a3dff3afc8288c21e565e476fc278902ae4d6d134f1eeda118cc830b1"}, + {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f31d95a179f8d64d90f6831d71fa93290893a33148d890ba15de25642c5d075b"}, + {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c1df3d34aced70add6f867a8cf413e299177e0c22660cc767218373d0779487b"}, + {file = "pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4009935984bd36bd2c774e13f9a09563ce8de4abaa7226f5108262fa3e637284"}, + {file = "pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:34a64bc3441dc1213096a20fe27e8e128bd3ff89921706e83c0b1ac971276594"}, + {file = "pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c9e19dd6e28fdcaa5a1de679aec4141f691023916427ef9bae8584f9c2fb3b0e"}, + {file = "pydantic_core-2.41.5-cp311-cp311-win32.whl", hash = "sha256:2c010c6ded393148374c0f6f0bf89d206bf3217f201faa0635dcd56bd1520f6b"}, + {file = "pydantic_core-2.41.5-cp311-cp311-win_amd64.whl", hash = "sha256:76ee27c6e9c7f16f47db7a94157112a2f3a00e958bc626e2f4ee8bec5c328fbe"}, + {file = "pydantic_core-2.41.5-cp311-cp311-win_arm64.whl", hash = "sha256:4bc36bbc0b7584de96561184ad7f012478987882ebf9f9c389b23f432ea3d90f"}, + {file = "pydantic_core-2.41.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7"}, + {file = "pydantic_core-2.41.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0"}, + {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69"}, + {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75"}, + {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05"}, + {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc"}, + {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c"}, + {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5"}, + {file = "pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c"}, + {file = "pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294"}, + {file = "pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1"}, + {file = "pydantic_core-2.41.5-cp312-cp312-win32.whl", hash = "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d"}, + {file = "pydantic_core-2.41.5-cp312-cp312-win_amd64.whl", hash = "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815"}, + {file = "pydantic_core-2.41.5-cp312-cp312-win_arm64.whl", hash = "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3"}, + {file = "pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9"}, + {file = "pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34"}, + {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0"}, + {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33"}, + {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e"}, + {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2"}, + {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586"}, + {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d"}, + {file = "pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740"}, + {file = "pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e"}, + {file = "pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858"}, + {file = "pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36"}, + {file = "pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11"}, + {file = "pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd"}, + {file = "pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a"}, + {file = "pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14"}, + {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1"}, + {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66"}, + {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869"}, + {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2"}, + {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375"}, + {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553"}, + {file = "pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90"}, + {file = "pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07"}, + {file = "pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb"}, + {file = "pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23"}, + {file = "pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf"}, + {file = "pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c"}, + {file = "pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008"}, + {file = "pydantic_core-2.41.5-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:8bfeaf8735be79f225f3fefab7f941c712aaca36f1128c9d7e2352ee1aa87bdf"}, + {file = "pydantic_core-2.41.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:346285d28e4c8017da95144c7f3acd42740d637ff41946af5ce6e5e420502dd5"}, + {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a75dafbf87d6276ddc5b2bf6fae5254e3d0876b626eb24969a574fff9149ee5d"}, + {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7b93a4d08587e2b7e7882de461e82b6ed76d9026ce91ca7915e740ecc7855f60"}, + {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e8465ab91a4bd96d36dde3263f06caa6a8a6019e4113f24dc753d79a8b3a3f82"}, + {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:299e0a22e7ae2b85c1a57f104538b2656e8ab1873511fd718a1c1c6f149b77b5"}, + {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:707625ef0983fcfb461acfaf14de2067c5942c6bb0f3b4c99158bed6fedd3cf3"}, + {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f41eb9797986d6ebac5e8edff36d5cef9de40def462311b3eb3eeded1431e425"}, + {file = "pydantic_core-2.41.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0384e2e1021894b1ff5a786dbf94771e2986ebe2869533874d7e43bc79c6f504"}, + {file = "pydantic_core-2.41.5-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:f0cd744688278965817fd0839c4a4116add48d23890d468bc436f78beb28abf5"}, + {file = "pydantic_core-2.41.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:753e230374206729bf0a807954bcc6c150d3743928a73faffee51ac6557a03c3"}, + {file = "pydantic_core-2.41.5-cp39-cp39-win32.whl", hash = "sha256:873e0d5b4fb9b89ef7c2d2a963ea7d02879d9da0da8d9d4933dee8ee86a8b460"}, + {file = "pydantic_core-2.41.5-cp39-cp39-win_amd64.whl", hash = "sha256:e4f4a984405e91527a0d62649ee21138f8e3d0ef103be488c1dc11a80d7f184b"}, + {file = "pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:b96d5f26b05d03cc60f11a7761a5ded1741da411e7fe0909e27a5e6a0cb7b034"}, + {file = "pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:634e8609e89ceecea15e2d61bc9ac3718caaaa71963717bf3c8f38bfde64242c"}, + {file = "pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93e8740d7503eb008aa2df04d3b9735f845d43ae845e6dcd2be0b55a2da43cd2"}, + {file = "pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f15489ba13d61f670dcc96772e733aad1a6f9c429cc27574c6cdaed82d0146ad"}, + {file = "pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:7da7087d756b19037bc2c06edc6c170eeef3c3bafcb8f532ff17d64dc427adfd"}, + {file = "pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:aabf5777b5c8ca26f7824cb4a120a740c9588ed58df9b2d196ce92fba42ff8dc"}, + {file = "pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c007fe8a43d43b3969e8469004e9845944f1a80e6acd47c150856bb87f230c56"}, + {file = "pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76d0819de158cd855d1cbb8fcafdf6f5cf1eb8e470abe056d5d161106e38062b"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b5819cd790dbf0c5eb9f82c73c16b39a65dd6dd4d1439dcdea7816ec9adddab8"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5a4e67afbc95fa5c34cf27d9089bca7fcab4e51e57278d710320a70b956d1b9a"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ece5c59f0ce7d001e017643d8d24da587ea1f74f6993467d85ae8a5ef9d4f42b"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:16f80f7abe3351f8ea6858914ddc8c77e02578544a0ebc15b4c2e1a0e813b0b2"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:33cb885e759a705b426baada1fe68cbb0a2e68e34c5d0d0289a364cf01709093"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:c8d8b4eb992936023be7dee581270af5c6e0697a8559895f527f5b7105ecd36a"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:242a206cd0318f95cd21bdacff3fcc3aab23e79bba5cac3db5a841c9ef9c6963"}, + {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d3a978c4f57a597908b7e697229d996d77a6d3c94901e9edee593adada95ce1a"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2379fa7ed44ddecb5bfe4e48577d752db9fc10be00a6b7446e9663ba143de26"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:266fb4cbf5e3cbd0b53669a6d1b039c45e3ce651fd5442eff4d07c2cc8d66808"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58133647260ea01e4d0500089a8c4f07bd7aa6ce109682b1426394988d8aaacc"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:287dad91cfb551c363dc62899a80e9e14da1f0e2b6ebde82c806612ca2a13ef1"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:03b77d184b9eb40240ae9fd676ca364ce1085f203e1b1256f8ab9984dca80a84"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:a668ce24de96165bb239160b3d854943128f4334822900534f2fe947930e5770"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f14f8f046c14563f8eb3f45f499cc658ab8d10072961e07225e507adb700e93f"}, + {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:56121965f7a4dc965bff783d70b907ddf3d57f6eba29b6d2e5dabfaf07799c51"}, + {file = "pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e"}, ] [package.dependencies] @@ -3082,8 +3310,8 @@ optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, - {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, + {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"}, + {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, ] [package.extras] @@ -3110,14 +3338,14 @@ extra = ["pygments (>=2.19.1)"] [[package]] name = "pyparsing" -version = "3.2.5" +version = "3.3.2" description = "pyparsing - Classes and methods to define and execute parsing grammars" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - { file = "pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e" }, - { file = "pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6" }, + {file = "pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d"}, + {file = "pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc"}, ] [package.extras] @@ -3125,36 +3353,67 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pyproj" -version = "3.7.0" +version = "3.7.2" description = "Python interface to PROJ (cartographic projections and coordinate transformations library)" optional = false -python-versions = ">=3.10" +python-versions = ">=3.11" +groups = ["main"] files = [ - {file = "pyproj-3.7.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d5c7e7d24b967e328a5efd013f466804a1f226d1106ac7efc47dcc99360dbc8f"}, - {file = "pyproj-3.7.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:448958c46bd3fe2da91c89ba551ac5835e63073ca861422c6eb1af89979dfab1"}, - {file = "pyproj-3.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f673ca345bb92afc93d4235938ca0c9a76237aa7addf42a95965c8dc8cad9b49"}, - {file = "pyproj-3.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee60895f60cbd1a9c903ab2bc22adea63004296a1c28b8775a11cf50905cf085"}, - {file = "pyproj-3.7.0-cp310-cp310-win32.whl", hash = "sha256:0dd31b0740ee010934234f848d2d092c66146cb8d0ba009a64e41d192caa7686"}, - {file = "pyproj-3.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:7943d85ba39e89c51b920339ff63162d63bf89da161f0acb6206b0d39b11661e"}, - {file = "pyproj-3.7.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:e66d8d42dbdf232e121546c5a1dec097caf0454e4885c09a8e03cdcee0753c03"}, - {file = "pyproj-3.7.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:7764b64a0aefe40134a2828b3a40be88f6c8b7832c45d8a9f2bd592ace4b2a3b"}, - {file = "pyproj-3.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53c442c5081dc95346996f5c4323fde2caafc69c6e60b4707aa46e88244f1e04"}, - {file = "pyproj-3.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc5b305d4d5d7697885681d9b660623e328227612823d5c660e0a9566cb48838"}, - {file = "pyproj-3.7.0-cp311-cp311-win32.whl", hash = "sha256:de2b47d748dc41cccb6b3b713d4d7dc9aa1046a82141c8665026908726426abc"}, - {file = "pyproj-3.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:38cba7c4c5679e40242dd959133e95b908d3b912dd66291094fd13510e8517ff"}, - {file = "pyproj-3.7.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:8cbec92bdd6e9933ca08795c12717d1384e9b51cf4b1acf0d753db255a75c51e"}, - {file = "pyproj-3.7.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:8c4a8e4d3ba76c3adac3c087544cf92f7f9a19ea34946904a13fca48cc1c0106"}, - {file = "pyproj-3.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82624fb42aa31f6b1a860fbc0316babd07fd712642bc31022df4e9b4056bf463"}, - {file = "pyproj-3.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34e1bbb3f89c68d4a6835c40b2da8b27680eec60e8cc7cdb08c09bcc725b2b62"}, - {file = "pyproj-3.7.0-cp312-cp312-win32.whl", hash = "sha256:952515d5592167ad4436b355485f82acebed2a49b46722159e4584b75a763dd3"}, - {file = "pyproj-3.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:0692f806224e8ed82fe4acfa57268ff444fdaf9f330689f24c0d96e59480cce1"}, - {file = "pyproj-3.7.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:94e8b903a9e83448fd2379c49dec3e8cd83c9ed36f54354e68b601cef56d5426"}, - {file = "pyproj-3.7.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:64cb5c17d6f6305a8b978a40f95560c87c5b363fcac40632337955664437875a"}, - {file = "pyproj-3.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c54e9bdda7ab9c4a5af50f9d6e6ee7704e05fafd504896b96ed1208c7aea098"}, - {file = "pyproj-3.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24fa4e9e0abba875f9524808410cc520067eaf38fd5549ed0ef7c43ac39923c9"}, - {file = "pyproj-3.7.0-cp313-cp313-win32.whl", hash = "sha256:b9e8353fc3c79dc14d1f5ac758a1a6e4eee04102c3c0b138670f121f5ac52eb4"}, - {file = "pyproj-3.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:10a8dc6ec61af97c89ff032647d743f8dc023645773da42ef43f7ae1125b3509"}, - {file = "pyproj-3.7.0.tar.gz", hash = "sha256:bf658f4aaf815d9d03c8121650b6f0b8067265c36e31bc6660b98ef144d81813"}, + {file = "pyproj-3.7.2-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:2514d61f24c4e0bb9913e2c51487ecdaeca5f8748d8313c933693416ca41d4d5"}, + {file = "pyproj-3.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:8693ca3892d82e70de077701ee76dd13d7bca4ae1c9d1e739d72004df015923a"}, + {file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5e26484d80fea56273ed1555abaea161e9661d81a6c07815d54b8e883d4ceb25"}, + {file = "pyproj-3.7.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:281cb92847814e8018010c48b4069ff858a30236638631c1a91dd7bfa68f8a8a"}, + {file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9c8577f0b7bb09118ec2e57e3babdc977127dd66326d6c5d755c76b063e6d9dc"}, + {file = "pyproj-3.7.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a23f59904fac3a5e7364b3aa44d288234af267ca041adb2c2b14a903cd5d3ac5"}, + {file = "pyproj-3.7.2-cp311-cp311-win32.whl", hash = "sha256:f2af4ed34b2cf3e031a2d85b067a3ecbd38df073c567e04b52fa7a0202afde8a"}, + {file = "pyproj-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:0b7cb633565129677b2a183c4d807c727d1c736fcb0568a12299383056e67433"}, + {file = "pyproj-3.7.2-cp311-cp311-win_arm64.whl", hash = "sha256:38b08d85e3a38e455625b80e9eb9f78027c8e2649a21dec4df1f9c3525460c71"}, + {file = "pyproj-3.7.2-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:0a9bb26a6356fb5b033433a6d1b4542158fb71e3c51de49b4c318a1dff3aeaab"}, + {file = "pyproj-3.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:567caa03021178861fad27fabde87500ec6d2ee173dd32f3e2d9871e40eebd68"}, + {file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:c203101d1dc3c038a56cff0447acc515dd29d6e14811406ac539c21eed422b2a"}, + {file = "pyproj-3.7.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1edc34266c0c23ced85f95a1ee8b47c9035eae6aca5b6b340327250e8e281630"}, + {file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aa9f26c21bc0e2dc3d224cb1eb4020cf23e76af179a7c66fea49b828611e4260"}, + {file = "pyproj-3.7.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9428b318530625cb389b9ddc9c51251e172808a4af79b82809376daaeabe5e9"}, + {file = "pyproj-3.7.2-cp312-cp312-win32.whl", hash = "sha256:b3d99ed57d319da042f175f4554fc7038aa4bcecc4ac89e217e350346b742c9d"}, + {file = "pyproj-3.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:11614a054cd86a2ed968a657d00987a86eeb91fdcbd9ad3310478685dc14a128"}, + {file = "pyproj-3.7.2-cp312-cp312-win_arm64.whl", hash = "sha256:509a146d1398bafe4f53273398c3bb0b4732535065fa995270e52a9d3676bca3"}, + {file = "pyproj-3.7.2-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:19466e529b1b15eeefdf8ff26b06fa745856c044f2f77bf0edbae94078c1dfa1"}, + {file = "pyproj-3.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:c79b9b84c4a626c5dc324c0d666be0bfcebd99f7538d66e8898c2444221b3da7"}, + {file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ceecf374cacca317bc09e165db38ac548ee3cad07c3609442bd70311c59c21aa"}, + {file = "pyproj-3.7.2-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5141a538ffdbe4bfd157421828bb2e07123a90a7a2d6f30fa1462abcfb5ce681"}, + {file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f000841e98ea99acbb7b8ca168d67773b0191de95187228a16110245c5d954d5"}, + {file = "pyproj-3.7.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8115faf2597f281a42ab608ceac346b4eb1383d3b45ab474fd37341c4bf82a67"}, + {file = "pyproj-3.7.2-cp313-cp313-win32.whl", hash = "sha256:f18c0579dd6be00b970cb1a6719197fceecc407515bab37da0066f0184aafdf3"}, + {file = "pyproj-3.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:bb41c29d5f60854b1075853fe80c58950b398d4ebb404eb532536ac8d2834ed7"}, + {file = "pyproj-3.7.2-cp313-cp313-win_arm64.whl", hash = "sha256:2b617d573be4118c11cd96b8891a0b7f65778fa7733ed8ecdb297a447d439100"}, + {file = "pyproj-3.7.2-cp313-cp313t-macosx_13_0_x86_64.whl", hash = "sha256:d27b48f0e81beeaa2b4d60c516c3a1cfbb0c7ff6ef71256d8e9c07792f735279"}, + {file = "pyproj-3.7.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:55a3610d75023c7b1c6e583e48ef8f62918e85a2ae81300569d9f104d6684bb6"}, + {file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8d7349182fa622696787cc9e195508d2a41a64765da9b8a6bee846702b9e6220"}, + {file = "pyproj-3.7.2-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:d230b186eb876ed4f29a7c5ee310144c3a0e44e89e55f65fb3607e13f6db337c"}, + {file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:237499c7862c578d0369e2b8ac56eec550e391a025ff70e2af8417139dabb41c"}, + {file = "pyproj-3.7.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8c225f5978abd506fd9a78eaaf794435e823c9156091cabaab5374efb29d7f69"}, + {file = "pyproj-3.7.2-cp313-cp313t-win32.whl", hash = "sha256:2da731876d27639ff9d2d81c151f6ab90a1546455fabd93368e753047be344a2"}, + {file = "pyproj-3.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f54d91ae18dd23b6c0ab48126d446820e725419da10617d86a1b69ada6d881d3"}, + {file = "pyproj-3.7.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fc52ba896cfc3214dc9f9ca3c0677a623e8fdd096b257c14a31e719d21ff3fdd"}, + {file = "pyproj-3.7.2-cp314-cp314-macosx_13_0_x86_64.whl", hash = "sha256:2aaa328605ace41db050d06bac1adc11f01b71fe95c18661497763116c3a0f02"}, + {file = "pyproj-3.7.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:35dccbce8201313c596a970fde90e33605248b66272595c061b511c8100ccc08"}, + {file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:25b0b7cb0042444c29a164b993c45c1b8013d6c48baa61dc1160d834a277e83b"}, + {file = "pyproj-3.7.2-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:85def3a6388e9ba51f964619aa002a9d2098e77c6454ff47773bb68871024281"}, + {file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b1bccefec3875ab81eabf49059e2b2ea77362c178b66fd3528c3e4df242f1516"}, + {file = "pyproj-3.7.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d5371ca114d6990b675247355a801925814eca53e6c4b2f1b5c0a956336ee36e"}, + {file = "pyproj-3.7.2-cp314-cp314-win32.whl", hash = "sha256:77f066626030f41be543274f5ac79f2a511fe89860ecd0914f22131b40a0ec25"}, + {file = "pyproj-3.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:5a964da1696b8522806f4276ab04ccfff8f9eb95133a92a25900697609d40112"}, + {file = "pyproj-3.7.2-cp314-cp314-win_arm64.whl", hash = "sha256:e258ab4dbd3cf627809067c0ba8f9884ea76c8e5999d039fb37a1619c6c3e1f6"}, + {file = "pyproj-3.7.2-cp314-cp314t-macosx_13_0_x86_64.whl", hash = "sha256:bbbac2f930c6d266f70ec75df35ef851d96fdb3701c674f42fd23a9314573b37"}, + {file = "pyproj-3.7.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:b7544e0a3d6339dc9151e9c8f3ea62a936ab7cc446a806ec448bbe86aebb979b"}, + {file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:f7f5133dca4c703e8acadf6f30bc567d39a42c6af321e7f81975c2518f3ed357"}, + {file = "pyproj-3.7.2-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:5aff3343038d7426aa5076f07feb88065f50e0502d1b0d7c22ddfdd2c75a3f81"}, + {file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:b0552178c61f2ac1c820d087e8ba6e62b29442debddbb09d51c4bf8acc84d888"}, + {file = "pyproj-3.7.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:47d87db2d2c436c5fd0409b34d70bb6cdb875cca2ebe7a9d1c442367b0ab8d59"}, + {file = "pyproj-3.7.2-cp314-cp314t-win32.whl", hash = "sha256:c9b6f1d8ad3e80a0ee0903a778b6ece7dca1d1d40f6d114ae01bc8ddbad971aa"}, + {file = "pyproj-3.7.2-cp314-cp314t-win_amd64.whl", hash = "sha256:1914e29e27933ba6f9822663ee0600f169014a2859f851c054c88cf5ea8a333c"}, + {file = "pyproj-3.7.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d9d25bae416a24397e0d85739f84d323b55f6511e45a522dd7d7eae70d10c7e4"}, + {file = "pyproj-3.7.2.tar.gz", hash = "sha256:39a0cf1ecc7e282d1d30f36594ebd55c9fae1fda8a2622cee5d100430628f88c"}, ] [package.dependencies] @@ -3169,7 +3428,7 @@ name = "pyparsing" version = "3.3.2" description = "pyparsing - Classes and methods to define and execute parsing grammars" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ {file = "pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d"}, @@ -3255,37 +3514,19 @@ optional = false python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, - {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, + {file = "pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7"}, + {file = "pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c"}, ] [package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -iniconfig = "*" -packaging = "*" +colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} +iniconfig = ">=1.0.1" +packaging = ">=22" pluggy = ">=1.5,<2" pygments = ">=2.7.2" [package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] - -[[package]] -name = "pytest-cov" -version = "5.0.0" -description = "Pytest plugin for measuring coverage." -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"}, - {file = "pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652"}, -] - -[package.dependencies] -coverage = {version = ">=5.2.1", extras = ["toml"]} -pytest = ">=4.6" - -[package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-cov" @@ -3333,6 +3574,7 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main", "dev"] files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -3342,67 +3584,33 @@ files = [ six = ">=1.5" [[package]] -name = "python-json-logger" -version = "2.0.7" -description = "A python library adding a json log formatter" +name = "python-debian" +version = "1.1.0" +description = "Modules to read and manipulate many file formats related to Debian packages and repositories" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +groups = ["dev"] files = [ - {file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"}, - {file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"}, + {file = "python_debian-1.1.0-py3-none-any.whl", hash = "sha256:3e553b6d0b886272a26649e13106e33c382bcd21c80b09f5c0c81fc7c8c8c743"}, + {file = "python_debian-1.1.0.tar.gz", hash = "sha256:afe3c7267d81c29c79ab44d803a0756d0796b0e41bb0a05c5cafcdd2b980d4e6"}, ] +[package.dependencies] +charset-normalizer = "*" + +[package.extras] +test = ["pytest", "pytest-cov"] + [[package]] name = "python-magic" version = "0.4.27" description = "File type identification using libmagic" optional = false -python-versions = "*" -files = [ - { file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00" }, - { file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3" }, -] - -[[package]] -name = "pywin32" -version = "308" -description = "Python for Window Extensions" -optional = false -python-versions = "*" -files = [ - {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, - {file = "pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e"}, - {file = "pywin32-308-cp310-cp310-win_arm64.whl", hash = "sha256:a5ab5381813b40f264fa3495b98af850098f814a25a63589a8e9eb12560f450c"}, - {file = "pywin32-308-cp311-cp311-win32.whl", hash = "sha256:5d8c8015b24a7d6855b1550d8e660d8daa09983c80e5daf89a273e5c6fb5095a"}, - {file = "pywin32-308-cp311-cp311-win_amd64.whl", hash = "sha256:575621b90f0dc2695fec346b2d6302faebd4f0f45c05ea29404cefe35d89442b"}, - {file = "pywin32-308-cp311-cp311-win_arm64.whl", hash = "sha256:100a5442b7332070983c4cd03f2e906a5648a5104b8a7f50175f7906efd16bb6"}, - {file = "pywin32-308-cp312-cp312-win32.whl", hash = "sha256:587f3e19696f4bf96fde9d8a57cec74a57021ad5f204c9e627e15c33ff568897"}, - {file = "pywin32-308-cp312-cp312-win_amd64.whl", hash = "sha256:00b3e11ef09ede56c6a43c71f2d31857cf7c54b0ab6e78ac659497abd2834f47"}, - {file = "pywin32-308-cp312-cp312-win_arm64.whl", hash = "sha256:9b4de86c8d909aed15b7011182c8cab38c8850de36e6afb1f0db22b8959e3091"}, - {file = "pywin32-308-cp313-cp313-win32.whl", hash = "sha256:1c44539a37a5b7b21d02ab34e6a4d314e0788f1690d65b48e9b0b89f31abbbed"}, - {file = "pywin32-308-cp313-cp313-win_amd64.whl", hash = "sha256:fd380990e792eaf6827fcb7e187b2b4b1cede0585e3d0c9e84201ec27b9905e4"}, - {file = "pywin32-308-cp313-cp313-win_arm64.whl", hash = "sha256:ef313c46d4c18dfb82a2431e3051ac8f112ccee1a34f29c263c583c568db63cd"}, - {file = "pywin32-308-cp37-cp37m-win32.whl", hash = "sha256:1f696ab352a2ddd63bd07430080dd598e6369152ea13a25ebcdd2f503a38f1ff"}, - {file = "pywin32-308-cp37-cp37m-win_amd64.whl", hash = "sha256:13dcb914ed4347019fbec6697a01a0aec61019c1046c2b905410d197856326a6"}, - {file = "pywin32-308-cp38-cp38-win32.whl", hash = "sha256:5794e764ebcabf4ff08c555b31bd348c9025929371763b2183172ff4708152f0"}, - {file = "pywin32-308-cp38-cp38-win_amd64.whl", hash = "sha256:3b92622e29d651c6b783e368ba7d6722b1634b8e70bd376fd7610fe1992e19de"}, - {file = "pywin32-308-cp39-cp39-win32.whl", hash = "sha256:7873ca4dc60ab3287919881a7d4f88baee4a6e639aa6962de25a98ba6b193341"}, - {file = "pywin32-308-cp39-cp39-win_amd64.whl", hash = "sha256:71b3322d949b4cc20776436a9c9ba0eeedcbc9c650daa536df63f0ff111bb920"}, -] - -[[package]] -name = "pywinpty" -version = "2.0.14" -description = "Pseudo terminal support for Windows from Python." -optional = false -python-versions = ">=3.8" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] files = [ - {file = "pywinpty-2.0.14-cp310-none-win_amd64.whl", hash = "sha256:0b149c2918c7974f575ba79f5a4aad58bd859a52fa9eb1296cc22aa412aa411f"}, - {file = "pywinpty-2.0.14-cp311-none-win_amd64.whl", hash = "sha256:cf2a43ac7065b3e0dc8510f8c1f13a75fb8fde805efa3b8cff7599a1ef497bc7"}, - {file = "pywinpty-2.0.14-cp312-none-win_amd64.whl", hash = "sha256:55dad362ef3e9408ade68fd173e4f9032b3ce08f68cfe7eacb2c263ea1179737"}, - {file = "pywinpty-2.0.14-cp313-none-win_amd64.whl", hash = "sha256:074fb988a56ec79ca90ed03a896d40707131897cefb8f76f926e3834227f2819"}, - {file = "pywinpty-2.0.14-cp39-none-win_amd64.whl", hash = "sha256:5725fd56f73c0531ec218663bd8c8ff5acc43c78962fab28564871b5fce053fd"}, - {file = "pywinpty-2.0.14.tar.gz", hash = "sha256:18bd9529e4a5daf2d9719aa17788ba6013e594ae94c5a0c27e83df3278b0660e"}, + {file = "python-magic-0.4.27.tar.gz", hash = "sha256:c1ba14b08e4a5f5c31a302b7721239695b2f0f058d125bd5ce1ee36b9d9d3c3b"}, + {file = "python_magic-0.4.27-py2.py3-none-any.whl", hash = "sha256:c212960ad306f700aa0d01e5d7a325d20548ff97eb9920dcd29513174f0294d3"}, ] [[package]] @@ -3411,6 +3619,7 @@ version = "6.0.3" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "PyYAML-6.0.3-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:c2514fceb77bc5e7a2f7adfaa1feb2fb311607c9cb518dbc378688ec73d8292f"}, {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c57bb8c96f6d1808c030b1687b9b5fb476abaa47f0db9c0101f5e9f394e97f4"}, @@ -3503,135 +3712,15 @@ files = [ pyyaml = "*" [[package]] -name = "pyzmq" -version = "26.2.0" -description = "Python bindings for 0MQ" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:ddf33d97d2f52d89f6e6e7ae66ee35a4d9ca6f36eda89c24591b0c40205a3629"}, - {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dacd995031a01d16eec825bf30802fceb2c3791ef24bcce48fa98ce40918c27b"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89289a5ee32ef6c439086184529ae060c741334b8970a6855ec0b6ad3ff28764"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5506f06d7dc6ecf1efacb4a013b1f05071bb24b76350832c96449f4a2d95091c"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ea039387c10202ce304af74def5021e9adc6297067f3441d348d2b633e8166a"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a2224fa4a4c2ee872886ed00a571f5e967c85e078e8e8c2530a2fb01b3309b88"}, - {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:28ad5233e9c3b52d76196c696e362508959741e1a005fb8fa03b51aea156088f"}, - {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1c17211bc037c7d88e85ed8b7d8f7e52db6dc8eca5590d162717c654550f7282"}, - {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b8f86dd868d41bea9a5f873ee13bf5551c94cf6bc51baebc6f85075971fe6eea"}, - {file = "pyzmq-26.2.0-cp310-cp310-win32.whl", hash = "sha256:46a446c212e58456b23af260f3d9fb785054f3e3653dbf7279d8f2b5546b21c2"}, - {file = "pyzmq-26.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:49d34ab71db5a9c292a7644ce74190b1dd5a3475612eefb1f8be1d6961441971"}, - {file = "pyzmq-26.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:bfa832bfa540e5b5c27dcf5de5d82ebc431b82c453a43d141afb1e5d2de025fa"}, - {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:8f7e66c7113c684c2b3f1c83cdd3376103ee0ce4c49ff80a648643e57fb22218"}, - {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3a495b30fc91db2db25120df5847d9833af237546fd59170701acd816ccc01c4"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77eb0968da535cba0470a5165468b2cac7772cfb569977cff92e240f57e31bef"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ace4f71f1900a548f48407fc9be59c6ba9d9aaf658c2eea6cf2779e72f9f317"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92a78853d7280bffb93df0a4a6a2498cba10ee793cc8076ef797ef2f74d107cf"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:689c5d781014956a4a6de61d74ba97b23547e431e9e7d64f27d4922ba96e9d6e"}, - {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0aca98bc423eb7d153214b2df397c6421ba6373d3397b26c057af3c904452e37"}, - {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f3496d76b89d9429a656293744ceca4d2ac2a10ae59b84c1da9b5165f429ad3"}, - {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5c2b3bfd4b9689919db068ac6c9911f3fcb231c39f7dd30e3138be94896d18e6"}, - {file = "pyzmq-26.2.0-cp311-cp311-win32.whl", hash = "sha256:eac5174677da084abf378739dbf4ad245661635f1600edd1221f150b165343f4"}, - {file = "pyzmq-26.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:5a509df7d0a83a4b178d0f937ef14286659225ef4e8812e05580776c70e155d5"}, - {file = "pyzmq-26.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0e6091b157d48cbe37bd67233318dbb53e1e6327d6fc3bb284afd585d141003"}, - {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:ded0fc7d90fe93ae0b18059930086c51e640cdd3baebdc783a695c77f123dcd9"}, - {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17bf5a931c7f6618023cdacc7081f3f266aecb68ca692adac015c383a134ca52"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55cf66647e49d4621a7e20c8d13511ef1fe1efbbccf670811864452487007e08"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4661c88db4a9e0f958c8abc2b97472e23061f0bc737f6f6179d7a27024e1faa5"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea7f69de383cb47522c9c208aec6dd17697db7875a4674c4af3f8cfdac0bdeae"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:7f98f6dfa8b8ccaf39163ce872bddacca38f6a67289116c8937a02e30bbe9711"}, - {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e3e0210287329272539eea617830a6a28161fbbd8a3271bf4150ae3e58c5d0e6"}, - {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6b274e0762c33c7471f1a7471d1a2085b1a35eba5cdc48d2ae319f28b6fc4de3"}, - {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:29c6a4635eef69d68a00321e12a7d2559fe2dfccfa8efae3ffb8e91cd0b36a8b"}, - {file = "pyzmq-26.2.0-cp312-cp312-win32.whl", hash = "sha256:989d842dc06dc59feea09e58c74ca3e1678c812a4a8a2a419046d711031f69c7"}, - {file = "pyzmq-26.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a50625acdc7801bc6f74698c5c583a491c61d73c6b7ea4dee3901bb99adb27a"}, - {file = "pyzmq-26.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d29ab8592b6ad12ebbf92ac2ed2bedcfd1cec192d8e559e2e099f648570e19b"}, - {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9dd8cd1aeb00775f527ec60022004d030ddc51d783d056e3e23e74e623e33726"}, - {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:28c812d9757fe8acecc910c9ac9dafd2ce968c00f9e619db09e9f8f54c3a68a3"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d80b1dd99c1942f74ed608ddb38b181b87476c6a966a88a950c7dee118fdf50"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c997098cc65e3208eca09303630e84d42718620e83b733d0fd69543a9cab9cb"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ad1bc8d1b7a18497dda9600b12dc193c577beb391beae5cd2349184db40f187"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bea2acdd8ea4275e1278350ced63da0b166421928276c7c8e3f9729d7402a57b"}, - {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:23f4aad749d13698f3f7b64aad34f5fc02d6f20f05999eebc96b89b01262fb18"}, - {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a4f96f0d88accc3dbe4a9025f785ba830f968e21e3e2c6321ccdfc9aef755115"}, - {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ced65e5a985398827cc9276b93ef6dfabe0273c23de8c7931339d7e141c2818e"}, - {file = "pyzmq-26.2.0-cp313-cp313-win32.whl", hash = "sha256:31507f7b47cc1ead1f6e86927f8ebb196a0bab043f6345ce070f412a59bf87b5"}, - {file = "pyzmq-26.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:70fc7fcf0410d16ebdda9b26cbd8bf8d803d220a7f3522e060a69a9c87bf7bad"}, - {file = "pyzmq-26.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:c3789bd5768ab5618ebf09cef6ec2b35fed88709b104351748a63045f0ff9797"}, - {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:034da5fc55d9f8da09015d368f519478a52675e558c989bfcb5cf6d4e16a7d2a"}, - {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c92d73464b886931308ccc45b2744e5968cbaade0b1d6aeb40d8ab537765f5bc"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:794a4562dcb374f7dbbfb3f51d28fb40123b5a2abadee7b4091f93054909add5"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aee22939bb6075e7afededabad1a56a905da0b3c4e3e0c45e75810ebe3a52672"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ae90ff9dad33a1cfe947d2c40cb9cb5e600d759ac4f0fd22616ce6540f72797"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:43a47408ac52647dfabbc66a25b05b6a61700b5165807e3fbd40063fcaf46386"}, - {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:25bf2374a2a8433633c65ccb9553350d5e17e60c8eb4de4d92cc6bd60f01d306"}, - {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:007137c9ac9ad5ea21e6ad97d3489af654381324d5d3ba614c323f60dab8fae6"}, - {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:470d4a4f6d48fb34e92d768b4e8a5cc3780db0d69107abf1cd7ff734b9766eb0"}, - {file = "pyzmq-26.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3b55a4229ce5da9497dd0452b914556ae58e96a4381bb6f59f1305dfd7e53fc8"}, - {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9cb3a6460cdea8fe8194a76de8895707e61ded10ad0be97188cc8463ffa7e3a8"}, - {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8ab5cad923cc95c87bffee098a27856c859bd5d0af31bd346035aa816b081fe1"}, - {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ed69074a610fad1c2fda66180e7b2edd4d31c53f2d1872bc2d1211563904cd9"}, - {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cccba051221b916a4f5e538997c45d7d136a5646442b1231b916d0164067ea27"}, - {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:0eaa83fc4c1e271c24eaf8fb083cbccef8fde77ec8cd45f3c35a9a123e6da097"}, - {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9edda2df81daa129b25a39b86cb57dfdfe16f7ec15b42b19bfac503360d27a93"}, - {file = "pyzmq-26.2.0-cp37-cp37m-win32.whl", hash = "sha256:ea0eb6af8a17fa272f7b98d7bebfab7836a0d62738e16ba380f440fceca2d951"}, - {file = "pyzmq-26.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4ff9dc6bc1664bb9eec25cd17506ef6672d506115095411e237d571e92a58231"}, - {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2eb7735ee73ca1b0d71e0e67c3739c689067f055c764f73aac4cc8ecf958ee3f"}, - {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a534f43bc738181aa7cbbaf48e3eca62c76453a40a746ab95d4b27b1111a7d2"}, - {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:aedd5dd8692635813368e558a05266b995d3d020b23e49581ddd5bbe197a8ab6"}, - {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8be4700cd8bb02cc454f630dcdf7cfa99de96788b80c51b60fe2fe1dac480289"}, - {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fcc03fa4997c447dce58264e93b5aa2d57714fbe0f06c07b7785ae131512732"}, - {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:402b190912935d3db15b03e8f7485812db350d271b284ded2b80d2e5704be780"}, - {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8685fa9c25ff00f550c1fec650430c4b71e4e48e8d852f7ddcf2e48308038640"}, - {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:76589c020680778f06b7e0b193f4b6dd66d470234a16e1df90329f5e14a171cd"}, - {file = "pyzmq-26.2.0-cp38-cp38-win32.whl", hash = "sha256:8423c1877d72c041f2c263b1ec6e34360448decfb323fa8b94e85883043ef988"}, - {file = "pyzmq-26.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:76589f2cd6b77b5bdea4fca5992dc1c23389d68b18ccc26a53680ba2dc80ff2f"}, - {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:b1d464cb8d72bfc1a3adc53305a63a8e0cac6bc8c5a07e8ca190ab8d3faa43c2"}, - {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4da04c48873a6abdd71811c5e163bd656ee1b957971db7f35140a2d573f6949c"}, - {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d049df610ac811dcffdc147153b414147428567fbbc8be43bb8885f04db39d98"}, - {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05590cdbc6b902101d0e65d6a4780af14dc22914cc6ab995d99b85af45362cc9"}, - {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c811cfcd6a9bf680236c40c6f617187515269ab2912f3d7e8c0174898e2519db"}, - {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6835dd60355593de10350394242b5757fbbd88b25287314316f266e24c61d073"}, - {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc6bee759a6bddea5db78d7dcd609397449cb2d2d6587f48f3ca613b19410cfc"}, - {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c530e1eecd036ecc83c3407f77bb86feb79916d4a33d11394b8234f3bd35b940"}, - {file = "pyzmq-26.2.0-cp39-cp39-win32.whl", hash = "sha256:367b4f689786fca726ef7a6c5ba606958b145b9340a5e4808132cc65759abd44"}, - {file = "pyzmq-26.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:e6fa2e3e683f34aea77de8112f6483803c96a44fd726d7358b9888ae5bb394ec"}, - {file = "pyzmq-26.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:7445be39143a8aa4faec43b076e06944b8f9d0701b669df4af200531b21e40bb"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:706e794564bec25819d21a41c31d4df2d48e1cc4b061e8d345d7fb4dd3e94072"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b435f2753621cd36e7c1762156815e21c985c72b19135dac43a7f4f31d28dd1"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:160c7e0a5eb178011e72892f99f918c04a131f36056d10d9c1afb223fc952c2d"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c4a71d5d6e7b28a47a394c0471b7e77a0661e2d651e7ae91e0cab0a587859ca"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:90412f2db8c02a3864cbfc67db0e3dcdbda336acf1c469526d3e869394fe001c"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2ea4ad4e6a12e454de05f2949d4beddb52460f3de7c8b9d5c46fbb7d7222e02c"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fc4f7a173a5609631bb0c42c23d12c49df3966f89f496a51d3eb0ec81f4519d6"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:878206a45202247781472a2d99df12a176fef806ca175799e1c6ad263510d57c"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17c412bad2eb9468e876f556eb4ee910e62d721d2c7a53c7fa31e643d35352e6"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:0d987a3ae5a71c6226b203cfd298720e0086c7fe7c74f35fa8edddfbd6597eed"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:39887ac397ff35b7b775db7201095fc6310a35fdbae85bac4523f7eb3b840e20"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fdb5b3e311d4d4b0eb8b3e8b4d1b0a512713ad7e6a68791d0923d1aec433d919"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:226af7dcb51fdb0109f0016449b357e182ea0ceb6b47dfb5999d569e5db161d5"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bed0e799e6120b9c32756203fb9dfe8ca2fb8467fed830c34c877e25638c3fc"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:29c7947c594e105cb9e6c466bace8532dc1ca02d498684128b339799f5248277"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cdeabcff45d1c219636ee2e54d852262e5c2e085d6cb476d938aee8d921356b3"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35cffef589bcdc587d06f9149f8d5e9e8859920a071df5a2671de2213bef592a"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18c8dc3b7468d8b4bdf60ce9d7141897da103c7a4690157b32b60acb45e333e6"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7133d0a1677aec369d67dd78520d3fa96dd7f3dcec99d66c1762870e5ea1a50a"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6a96179a24b14fa6428cbfc08641c779a53f8fcec43644030328f44034c7f1f4"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4f78c88905461a9203eac9faac157a2a0dbba84a0fd09fd29315db27be40af9f"}, - {file = "pyzmq-26.2.0.tar.gz", hash = "sha256:070672c258581c8e4f640b5159297580a9974b026043bd4ab0470be9ed324f1f"}, -] - -[package.dependencies] -cffi = {version = "*", markers = "implementation_name == \"pypy\""} - -[[package]] -name = "referencing" -version = "0.35.1" -description = "JSON Referencing + Python" +name = "requests" +version = "2.32.5" +description = "Python HTTP for Humans." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, - {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, + { file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0" }, + { file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa" }, ] [package.dependencies] @@ -3640,14 +3729,14 @@ rpds-py = ">=0.7.0" [[package]] name = "requests" -version = "2.32.4" +version = "2.32.5" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, + {file = "requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6"}, + {file = "requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"}, ] [package.dependencies] @@ -3665,164 +3754,53 @@ name = "reuse" version = "6.2.0" description = "reuse is a tool for compliance with the REUSE recommendations." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.10" +groups = ["dev"] files = [ {file = "reuse-6.2.0-cp310-cp310-manylinux_2_41_x86_64.whl", hash = "sha256:12b68549bb9d5f4957f06d726a83a9780628810008fb732bb0d0f21607f8c6d6"}, {file = "reuse-6.2.0.tar.gz", hash = "sha256:4feae057a2334c9a513e6933cdb9be819d8b822f3b5b435a36138bd218897d23"}, ] [package.dependencies] -six = "*" - -[[package]] -name = "rfc3986-validator" -version = "0.1.1" -description = "Pure python rfc3986 validator" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, - {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, -] +attrs = ">=23.2" +click = ">=8.1" +Jinja2 = ">=3.0.0" +license-expression = ">=21.6.14" +python-debian = ">=0.1.48" +python-magic = ">=0.4.12" +tomlkit = ">=0.8" -[[package]] -name = "rpds-py" -version = "0.20.0" -description = "Python bindings to Rust's persistent data structures (rpds)" -optional = false -python-versions = ">=3.8" -files = [ - {file = "rpds_py-0.20.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2"}, - {file = "rpds_py-0.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94"}, - {file = "rpds_py-0.20.0-cp310-none-win32.whl", hash = "sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee"}, - {file = "rpds_py-0.20.0-cp310-none-win_amd64.whl", hash = "sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399"}, - {file = "rpds_py-0.20.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489"}, - {file = "rpds_py-0.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58"}, - {file = "rpds_py-0.20.0-cp311-none-win32.whl", hash = "sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0"}, - {file = "rpds_py-0.20.0-cp311-none-win_amd64.whl", hash = "sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c"}, - {file = "rpds_py-0.20.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6"}, - {file = "rpds_py-0.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174"}, - {file = "rpds_py-0.20.0-cp312-none-win32.whl", hash = "sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139"}, - {file = "rpds_py-0.20.0-cp312-none-win_amd64.whl", hash = "sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585"}, - {file = "rpds_py-0.20.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29"}, - {file = "rpds_py-0.20.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57"}, - {file = "rpds_py-0.20.0-cp313-none-win32.whl", hash = "sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a"}, - {file = "rpds_py-0.20.0-cp313-none-win_amd64.whl", hash = "sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2"}, - {file = "rpds_py-0.20.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24"}, - {file = "rpds_py-0.20.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a"}, - {file = "rpds_py-0.20.0-cp38-none-win32.whl", hash = "sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5"}, - {file = "rpds_py-0.20.0-cp38-none-win_amd64.whl", hash = "sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232"}, - {file = "rpds_py-0.20.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22"}, - {file = "rpds_py-0.20.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b"}, - {file = "rpds_py-0.20.0-cp39-none-win32.whl", hash = "sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7"}, - {file = "rpds_py-0.20.0-cp39-none-win_amd64.whl", hash = "sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8"}, - {file = "rpds_py-0.20.0.tar.gz", hash = "sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121"}, -] +[package.extras] +chardet = ["chardet (>=3.0.2)"] +charset-normalizer = ["charset-normalizer (>=2.0.5)"] +file-magic = ["file-magic (>=0.4.1)"] [[package]] name = "ruff" -version = "0.5.7" +version = "0.15.2" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "ruff-0.5.7-py3-none-linux_armv6l.whl", hash = "sha256:548992d342fc404ee2e15a242cdbea4f8e39a52f2e7752d0e4cbe88d2d2f416a"}, - {file = "ruff-0.5.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:00cc8872331055ee017c4f1071a8a31ca0809ccc0657da1d154a1d2abac5c0be"}, - {file = "ruff-0.5.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:eaf3d86a1fdac1aec8a3417a63587d93f906c678bb9ed0b796da7b59c1114a1e"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a01c34400097b06cf8a6e61b35d6d456d5bd1ae6961542de18ec81eaf33b4cb8"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcc8054f1a717e2213500edaddcf1dbb0abad40d98e1bd9d0ad364f75c763eea"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f70284e73f36558ef51602254451e50dd6cc479f8b6f8413a95fcb5db4a55fc"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a78ad870ae3c460394fc95437d43deb5c04b5c29297815a2a1de028903f19692"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ccd078c66a8e419475174bfe60a69adb36ce04f8d4e91b006f1329d5cd44bcf"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e31c9bad4ebf8fdb77b59cae75814440731060a09a0e0077d559a556453acbb"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d796327eed8e168164346b769dd9a27a70e0298d667b4ecee6877ce8095ec8e"}, - {file = "ruff-0.5.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4a09ea2c3f7778cc635e7f6edf57d566a8ee8f485f3c4454db7771efb692c499"}, - {file = "ruff-0.5.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a36d8dcf55b3a3bc353270d544fb170d75d2dff41eba5df57b4e0b67a95bb64e"}, - {file = "ruff-0.5.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9369c218f789eefbd1b8d82a8cf25017b523ac47d96b2f531eba73770971c9e5"}, - {file = "ruff-0.5.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b88ca3db7eb377eb24fb7c82840546fb7acef75af4a74bd36e9ceb37a890257e"}, - {file = "ruff-0.5.7-py3-none-win32.whl", hash = "sha256:33d61fc0e902198a3e55719f4be6b375b28f860b09c281e4bdbf783c0566576a"}, - {file = "ruff-0.5.7-py3-none-win_amd64.whl", hash = "sha256:083bbcbe6fadb93cd86709037acc510f86eed5a314203079df174c40bbbca6b3"}, - {file = "ruff-0.5.7-py3-none-win_arm64.whl", hash = "sha256:2dca26154ff9571995107221d0aeaad0e75a77b5a682d6236cf89a58c70b76f4"}, - {file = "ruff-0.5.7.tar.gz", hash = "sha256:8dfc0a458797f5d9fb622dd0efc52d796f23f0a1493a9527f4e49a550ae9a7e5"}, + {file = "ruff-0.15.2-py3-none-linux_armv6l.whl", hash = "sha256:120691a6fdae2f16d65435648160f5b81a9625288f75544dc40637436b5d3c0d"}, + {file = "ruff-0.15.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:a89056d831256099658b6bba4037ac6dd06f49d194199215befe2bb10457ea5e"}, + {file = "ruff-0.15.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e36dee3a64be0ebd23c86ffa3aa3fd3ac9a712ff295e192243f814a830b6bd87"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9fb47b6d9764677f8c0a193c0943ce9a05d6763523f132325af8a858eadc2b9"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f376990f9d0d6442ea9014b19621d8f2aaf2b8e39fdbfc79220b7f0c596c9b80"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2dcc987551952d73cbf5c88d9fdee815618d497e4df86cd4c4824cc59d5dd75f"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:42a47fd785cbe8c01b9ff45031af875d101b040ad8f4de7bbb716487c74c9a77"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cbe9f49354866e575b4c6943856989f966421870e85cd2ac94dccb0a9dcb2fea"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7a672c82b5f9887576087d97be5ce439f04bbaf548ee987b92d3a7dede41d3a"}, + {file = "ruff-0.15.2-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:72ecc64f46f7019e2bcc3cdc05d4a7da958b629a5ab7033195e11a438403d956"}, + {file = "ruff-0.15.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:8dcf243b15b561c655c1ef2f2b0050e5d50db37fe90115507f6ff37d865dc8b4"}, + {file = "ruff-0.15.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:dab6941c862c05739774677c6273166d2510d254dac0695c0e3f5efa1b5585de"}, + {file = "ruff-0.15.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:1b9164f57fc36058e9a6806eb92af185b0697c9fe4c7c52caa431c6554521e5c"}, + {file = "ruff-0.15.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:80d24fcae24d42659db7e335b9e1531697a7102c19185b8dc4a028b952865fd8"}, + {file = "ruff-0.15.2-py3-none-win32.whl", hash = "sha256:fd5ff9e5f519a7e1bd99cbe8daa324010a74f5e2ebc97c6242c08f26f3714f6f"}, + {file = "ruff-0.15.2-py3-none-win_amd64.whl", hash = "sha256:d20014e3dfa400f3ff84830dfb5755ece2de45ab62ecea4af6b7262d0fb4f7c5"}, + {file = "ruff-0.15.2-py3-none-win_arm64.whl", hash = "sha256:cabddc5822acdc8f7b5527b36ceac55cc51eec7b1946e60181de8fe83ca8876e"}, + {file = "ruff-0.15.2.tar.gz", hash = "sha256:14b965afee0969e68bb871eba625343b8673375f457af4abe98553e8bbb98342"}, ] [[package]] @@ -3830,7 +3808,8 @@ name = "shapely" version = "2.1.2" description = "Manipulation and analysis of geometric objects" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +python-versions = ">=3.10" +groups = ["main"] files = [ {file = "shapely-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7ae48c236c0324b4e139bea88a306a04ca630f49be66741b340729d380d8f52f"}, {file = "shapely-2.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eba6710407f1daa8e7602c347dfc94adc02205ec27ed956346190d66579eb9ea"}, @@ -3891,329 +3870,98 @@ files = [ {file = "shapely-2.1.2.tar.gz", hash = "sha256:2ed4ecb28320a433db18a5bf029986aa8afcfd740745e78847e330d5d94922a9"}, ] -[package.extras] -nativelib = ["pyobjc-framework-Cocoa", "pywin32"] -objc = ["pyobjc-framework-Cocoa"] -win32 = ["pywin32"] - -[[package]] -name = "setuptools" -version = "75.2.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-75.2.0-py3-none-any.whl", hash = "sha256:a7fcb66f68b4d9e8e66b42f9876150a3371558f98fa32222ffaa5bced76406f8"}, - {file = "setuptools-75.2.0.tar.gz", hash = "sha256:753bb6ebf1f465a1912e19ed1d41f403a79173a9acf66a42e7e6aec45c3c16ec"}, -] +[package.dependencies] +numpy = ">=1.21" [package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] +docs = ["matplotlib", "numpydoc (==1.1.*)", "sphinx", "sphinx-book-theme", "sphinx-remove-toctrees"] +test = ["pytest", "pytest-cov", "scipy-doctest"] [[package]] name = "six" version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" groups = ["main", "dev"] files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "tomlkit" -version = "0.14.0" -description = "Style preserving TOML library" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tomlkit-0.14.0-py3-none-any.whl", hash = "sha256:592064ed85b40fa213469f81ac584f67a4f2992509a7c3ea2d632208623a3680"}, - {file = "tomlkit-0.14.0.tar.gz", hash = "sha256:cf00efca415dbd57575befb1f6634c4f42d2d87dbba376128adb42c121b87064"}, -] - -[[package]] -name = "snowballstemmer" -version = "2.2.0" -description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." -optional = false -python-versions = "*" -files = [ - {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, - {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, -] - -[[package]] -name = "soupsieve" -version = "2.6" -description = "A modern CSS selector implementation for Beautiful Soup." -optional = false -python-versions = ">=3.8" -files = [ - {file = "soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"}, - {file = "soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb"}, -] - -[[package]] -name = "sphinx" -version = "8.1.3" -description = "Python documentation generator" -optional = false -python-versions = ">=3.10" -files = [ - {file = "sphinx-8.1.3-py3-none-any.whl", hash = "sha256:09719015511837b76bf6e03e42eb7595ac8c2e41eeb9c29c5b755c6b677992a2"}, - {file = "sphinx-8.1.3.tar.gz", hash = "sha256:43c1911eecb0d3e161ad78611bc905d1ad0e523e4ddc202a58a821773dc4c927"}, + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, ] -[package.dependencies] -alabaster = ">=0.7.14" -babel = ">=2.13" -colorama = {version = ">=0.4.6", markers = "sys_platform == \"win32\""} -docutils = ">=0.20,<0.22" -imagesize = ">=1.3" -Jinja2 = ">=3.1" -packaging = ">=23.0" -Pygments = ">=2.17" -requests = ">=2.30.0" -snowballstemmer = ">=2.2" -sphinxcontrib-applehelp = ">=1.0.7" -sphinxcontrib-devhelp = ">=1.0.6" -sphinxcontrib-htmlhelp = ">=2.0.6" -sphinxcontrib-jsmath = ">=1.0.1" -sphinxcontrib-qthelp = ">=1.0.6" -sphinxcontrib-serializinghtml = ">=1.1.9" - -[package.extras] -docs = ["sphinxcontrib-websupport"] -lint = ["flake8 (>=6.0)", "mypy (==1.11.1)", "pyright (==1.1.384)", "pytest (>=6.0)", "ruff (==0.6.9)", "sphinx-lint (>=0.9)", "tomli (>=2)", "types-Pillow (==10.2.0.20240822)", "types-Pygments (==2.18.0.20240506)", "types-colorama (==0.4.15.20240311)", "types-defusedxml (==0.7.0.20240218)", "types-docutils (==0.21.0.20241005)", "types-requests (==2.32.0.20240914)", "types-urllib3 (==1.26.25.14)"] -test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=8.0)", "setuptools (>=70.0)", "typing_extensions (>=4.9)"] - [[package]] -name = "sphinxcontrib-applehelp" -version = "2.0.0" -description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" +name = "toolz" +version = "1.1.0" +description = "List processing tools and functional utilities" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5"}, - {file = "sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1"}, + {file = "toolz-1.1.0-py3-none-any.whl", hash = "sha256:15ccc861ac51c53696de0a5d6d4607f99c210739caf987b5d2054f3efed429d8"}, + {file = "toolz-1.1.0.tar.gz", hash = "sha256:27a5c770d068c110d9ed9323f24f1543e83b2f300a687b7891c1a6d56b697b5b"}, ] -[package.extras] -lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] -standalone = ["Sphinx (>=5)"] -test = ["pytest"] - [[package]] -name = "sphinxcontrib-devhelp" -version = "2.0.0" -description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" +name = "tomlkit" +version = "0.14.0" +description = "Style preserving TOML library" optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2"}, - {file = "sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad"}, + {file = "tomlkit-0.14.0-py3-none-any.whl", hash = "sha256:592064ed85b40fa213469f81ac584f67a4f2992509a7c3ea2d632208623a3680"}, + {file = "tomlkit-0.14.0.tar.gz", hash = "sha256:cf00efca415dbd57575befb1f6634c4f42d2d87dbba376128adb42c121b87064"}, ] -[package.extras] -lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] -standalone = ["Sphinx (>=5)"] -test = ["pytest"] - [[package]] -name = "sphinxcontrib-htmlhelp" -version = "2.1.0" -description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" +name = "toolz" +version = "1.1.0" +description = "List processing tools and functional utilities" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8"}, - {file = "sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9"}, -] - -[package.extras] -lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] -standalone = ["Sphinx (>=5)"] -test = ["html5lib", "pytest"] - -[[package]] -name = "sphinxcontrib-jsmath" -version = "1.0.1" -description = "A sphinx extension which renders display math in HTML via JavaScript" -optional = false -python-versions = ">=3.5" -files = [ - {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, - {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, + {file = "toolz-1.1.0-py3-none-any.whl", hash = "sha256:15ccc861ac51c53696de0a5d6d4607f99c210739caf987b5d2054f3efed429d8"}, + {file = "toolz-1.1.0.tar.gz", hash = "sha256:27a5c770d068c110d9ed9323f24f1543e83b2f300a687b7891c1a6d56b697b5b"}, ] -[package.extras] -test = ["flake8", "mypy", "pytest"] - [[package]] -name = "sphinxcontrib-qthelp" -version = "2.0.0" -description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" +name = "types-pyyaml" +version = "6.0.12.20250915" +description = "Typing stubs for PyYAML" optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb"}, - {file = "sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab"}, + {file = "types_pyyaml-6.0.12.20250915-py3-none-any.whl", hash = "sha256:e7d4d9e064e89a3b3cae120b4990cd370874d2bf12fa5f46c97018dd5d3c9ab6"}, + {file = "types_pyyaml-6.0.12.20250915.tar.gz", hash = "sha256:0f8b54a528c303f0e6f7165687dd33fafa81c807fcac23f632b63aa624ced1d3"}, ] -[package.extras] -lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] -standalone = ["Sphinx (>=5)"] -test = ["defusedxml (>=0.7.1)", "pytest"] - [[package]] -name = "sphinxcontrib-serializinghtml" -version = "2.0.0" -description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" +name = "types-shapely" +version = "2.1.0.20250917" +description = "Typing stubs for shapely" optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331"}, - {file = "sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d"}, -] - -[package.extras] -lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] -standalone = ["Sphinx (>=5)"] -test = ["pytest"] - -[[package]] -name = "stack-data" -version = "0.6.3" -description = "Extract data from python stack frames and tracebacks for informative displays" -optional = false -python-versions = "*" -files = [ - {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, - {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, -] - -[package.dependencies] -asttokens = ">=2.1.0" -executing = ">=1.2.0" -pure-eval = "*" - -[package.extras] -tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] - -[[package]] -name = "terminado" -version = "0.18.1" -description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." -optional = false -python-versions = ">=3.8" -files = [ - {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, - {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, -] - -[package.dependencies] -ptyprocess = {version = "*", markers = "os_name != \"nt\""} -pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""} -tornado = ">=6.1.0" - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"] -typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"] - -[[package]] -name = "tinycss2" -version = "1.4.0" -description = "A tiny CSS parser" -optional = false -python-versions = ">=3.8" -files = [ - {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, - {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, + {file = "types_shapely-2.1.0.20250917-py3-none-any.whl", hash = "sha256:9334a79339504d39b040426be4938d422cec419168414dc74972aa746a8bf3a1"}, + {file = "types_shapely-2.1.0.20250917.tar.gz", hash = "sha256:5c56670742105aebe40c16414390d35fcaa55d6f774d328c1a18273ab0e2134a"}, ] [package.dependencies] -webencodings = ">=0.4" - -[package.extras] -doc = ["sphinx", "sphinx_rtd_theme"] -test = ["pytest", "ruff"] - -[[package]] -name = "toolz" -version = "1.1.0" -description = "List processing tools and functional utilities" -optional = false -python-versions = ">=3.8" -files = [ - {file = "toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236"}, - {file = "toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02"}, -] - -[[package]] -name = "tornado" -version = "6.4.1" -description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." -optional = false -python-versions = ">=3.8" -files = [ - {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, - {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"}, - {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"}, - {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"}, - {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"}, -] - -[[package]] -name = "traitlets" -version = "5.14.3" -description = "Traitlets Python configuration system" -optional = false -python-versions = ">=3.8" -files = [ - {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, - {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, -] - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] - -[[package]] -name = "types-python-dateutil" -version = "2.9.0.20241003" -description = "Typing stubs for python-dateutil" -optional = false -python-versions = ">=3.8" -files = [ - {file = "types-python-dateutil-2.9.0.20241003.tar.gz", hash = "sha256:58cb85449b2a56d6684e41aeefb4c4280631246a0da1a719bdbe6f3fb0317446"}, - {file = "types_python_dateutil-2.9.0.20241003-py3-none-any.whl", hash = "sha256:250e1d8e80e7bbc3a6c99b907762711d1a1cdd00e978ad39cb5940f6f0a87f3d"}, -] +numpy = ">=1.20" [[package]] -name = "types-pyyaml" -version = "6.0.12.20250915" -description = "Typing stubs for PyYAML" +name = "typing-extensions" +version = "4.15.0" +description = "Backported and Experimental Type Hints for Python 3.9+" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "types_pyyaml-6.0.12.20250915-py3-none-any.whl", hash = "sha256:e7d4d9e064e89a3b3cae120b4990cd370874d2bf12fa5f46c97018dd5d3c9ab6"}, - {file = "types_pyyaml-6.0.12.20250915.tar.gz", hash = "sha256:0f8b54a528c303f0e6f7165687dd33fafa81c807fcac23f632b63aa624ced1d3"}, + { file = "types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530" }, + { file = "types_pyyaml-6.0.12.20250516.tar.gz", hash = "sha256:9f21a70216fc0fa1b216a8176db5f9e0af6eb35d2f2932acb87689d03a5bf6ba" }, ] [[package]] @@ -4236,22 +3984,39 @@ name = "typing-extensions" version = "4.15.0" description = "Backported and Experimental Type Hints for Python 3.9+" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["main", "dev"] files = [ {file = "typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"}, {file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"}, ] +[[package]] +name = "typing-inspection" +version = "0.4.2" +description = "Runtime typing introspection tools" +optional = false +python-versions = ">=3.9" +groups = ["main", "dev"] +files = [ + {file = "typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7"}, + {file = "typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464"}, +] + +[package.dependencies] +typing-extensions = ">=4.12.0" + [[package]] name = "tzdata" -version = "2025.2" +version = "2025.3" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" +groups = ["main"] +markers = "sys_platform == \"win32\" or sys_platform == \"emscripten\"" files = [ - { file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8" }, - { file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9" }, + {file = "tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1"}, + {file = "tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7"}, ] [[package]] @@ -4260,6 +4025,7 @@ version = "1.3.0" description = "RFC 6570 URI Template Processor" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, @@ -4302,8 +4068,8 @@ optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, + {file = "urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4"}, + {file = "urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed"}, ] [package.extras] @@ -4314,14 +4080,14 @@ zstd = ["backports-zstd (>=1.0.0) ; python_version < \"3.14\""] [[package]] name = "virtualenv" -version = "20.27.0" +version = "20.38.0" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "virtualenv-20.27.0-py3-none-any.whl", hash = "sha256:44a72c29cceb0ee08f300b314848c86e57bf8d1f13107a5e671fb9274138d655"}, - {file = "virtualenv-20.27.0.tar.gz", hash = "sha256:2ca56a68ed615b8fe4326d11a0dca5dfbe8fd68510fb6c6349163bed3c15f2b2"}, + {file = "virtualenv-20.38.0-py3-none-any.whl", hash = "sha256:d6e78e5889de3a4742df2d3d44e779366325a90cf356f15621fddace82431794"}, + {file = "virtualenv-20.38.0.tar.gz", hash = "sha256:94f39b1abaea5185bf7ea5a46702b56f1d0c9aa2f41a6c2b8b0af4ddc74c10a7"}, ] [package.dependencies] @@ -4330,8 +4096,51 @@ filelock = {version = ">=3.24.2,<4", markers = "python_version >= \"3.10\""} platformdirs = ">=3.9.1,<5" [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] +docs = ["furo (>=2023.7.26)", "pre-commit-uv (>=4.1.4)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinx-autodoc-typehints (>=3.6.2)", "sphinx-copybutton (>=0.5.2)", "sphinx-inline-tabs (>=2025.12.21.14)", "sphinxcontrib-mermaid (>=2)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"GraalVM\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "pytest-xdist (>=3.5)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""] + +[[package]] +name = "watchdog" +version = "6.0.0" +description = "Filesystem events monitoring" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26"}, + {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112"}, + {file = "watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c"}, + {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881"}, + {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11"}, + {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa"}, + {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2"}, + {file = "watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a"}, + {file = "watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680"}, + {file = "watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f"}, + {file = "watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282"}, +] + +[package.extras] +watchmedo = ["PyYAML (>=3.10)"] [[package]] name = "watchdog" @@ -4339,6 +4148,7 @@ version = "6.0.0" description = "Filesystem events monitoring" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, @@ -4346,25 +4156,23 @@ files = [ [[package]] name = "webcolors" -version = "24.8.0" +version = "24.11.1" description = "A library for working with the color formats defined by HTML and CSS." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "webcolors-24.8.0-py3-none-any.whl", hash = "sha256:fc4c3b59358ada164552084a8ebee637c221e4059267d0f8325b3b560f6c7f0a"}, - {file = "webcolors-24.8.0.tar.gz", hash = "sha256:08b07af286a01bcd30d583a7acadf629583d1f79bfef27dd2c2c5c263817277d"}, + { file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9" }, + { file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6" }, ] -[package.extras] -docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"] -tests = ["coverage[toml]"] - [[package]] name = "webencodings" version = "0.5.1" description = "Character encoding aliases for legacy web content" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, @@ -4376,6 +4184,7 @@ version = "1.8.0" description = "WebSocket client for Python with low level API options" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, @@ -4388,60 +4197,90 @@ test = ["websockets"] [[package]] name = "widgetsnbextension" -version = "4.0.13" +version = "4.0.14" description = "Jupyter interactive widgets for Jupyter Notebook" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ - {file = "widgetsnbextension-4.0.13-py3-none-any.whl", hash = "sha256:74b2692e8500525cc38c2b877236ba51d34541e6385eeed5aec15a70f88a6c71"}, - {file = "widgetsnbextension-4.0.13.tar.gz", hash = "sha256:ffcb67bc9febd10234a362795f643927f4e0c05d9342c727b65d2384f8feacb6"}, + { file = "widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575" }, + { file = "widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af" }, ] [[package]] name = "xarray" -version = "2024.10.0" +version = "2026.2.0" description = "N-D labeled arrays and datasets in Python" optional = false -python-versions = ">=3.10" +python-versions = ">=3.11" +groups = ["main"] files = [ - {file = "xarray-2024.10.0-py3-none-any.whl", hash = "sha256:ae1d38cb44a0324dfb61e492394158ae22389bf7de9f3c174309c17376df63a0"}, - {file = "xarray-2024.10.0.tar.gz", hash = "sha256:e369e2bac430e418c2448e5b96f07da4635f98c1319aa23cfeb3fbcb9a01d2e0"}, + {file = "xarray-2026.2.0-py3-none-any.whl", hash = "sha256:e927d7d716ea71dea78a13417970850a640447d8dd2ceeb65c5687f6373837c9"}, + {file = "xarray-2026.2.0.tar.gz", hash = "sha256:978b6acb018770554f8fd964af4eb02f9bcc165d4085dbb7326190d92aa74bcf"}, ] [package.dependencies] -numpy = ">=1.24" -packaging = ">=23.1" -pandas = ">=2.1" +numpy = ">=1.26" +packaging = ">=24.1" +pandas = ">=2.2" [package.extras] -accel = ["bottleneck", "flox", "numba (>=0.54)", "numbagg", "opt-einsum", "scipy"] +accel = ["bottleneck", "flox (>=0.9)", "numba (>=0.62)", "numbagg (>=0.8)", "opt_einsum", "scipy (>=1.13)"] complete = ["xarray[accel,etc,io,parallel,viz]"] -dev = ["hypothesis", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-env", "pytest-timeout", "pytest-xdist", "ruff", "sphinx", "sphinx-autosummary-accessors", "xarray[complete]"] -etc = ["sparse"] -io = ["cftime", "fsspec", "h5netcdf", "netCDF4", "pooch", "pydap", "scipy", "zarr"] +etc = ["sparse (>=0.15)"] +io = ["cftime", "fsspec", "h5netcdf (>=1.4.0)", "netCDF4 (>=1.6.0)", "pooch", "pydap", "scipy (>=1.13)", "zarr (>=2.18)"] parallel = ["dask[complete]"] -viz = ["cartopy", "matplotlib", "nc-time-axis", "seaborn"] +types = ["pandas-stubs", "scipy-stubs", "types-PyYAML", "types-Pygments", "types-colorama", "types-decorator", "types-defusedxml", "types-docutils", "types-networkx", "types-openpyxl", "types-pexpect", "types-psutil", "types-pycurl", "types-python-dateutil", "types-pytz", "types-requests", "types-setuptools"] +viz = ["cartopy (>=0.23)", "matplotlib (>=3.8)", "nc-time-axis", "seaborn"] [[package]] name = "zarr" -version = "2.18.3" +version = "3.1.5" description = "An implementation of chunked, compressed, N-dimensional arrays for Python" optional = false -python-versions = ">=3.10" +python-versions = ">=3.11" +groups = ["main"] files = [ - {file = "zarr-2.18.3-py3-none-any.whl", hash = "sha256:b1f7dfd2496f436745cdd4c7bcf8d3b4bc1dceef5fdd0d589c87130d842496dd"}, - {file = "zarr-2.18.3.tar.gz", hash = "sha256:2580d8cb6dd84621771a10d31c4d777dca8a27706a1a89b29f42d2d37e2df5ce"}, + {file = "zarr-3.1.5-py3-none-any.whl", hash = "sha256:29cd905afb6235b94c09decda4258c888fcb79bb6c862ef7c0b8fe009b5c8563"}, + {file = "zarr-3.1.5.tar.gz", hash = "sha256:fbe0c79675a40c996de7ca08e80a1c0a20537bd4a9f43418b6d101395c0bba2b"}, ] [package.dependencies] -asciitree = "*" -fasteners = {version = "*", markers = "sys_platform != \"emscripten\""} -numcodecs = ">=0.10.0" -numpy = ">=1.24" +donfig = ">=0.8" +google-crc32c = ">=1.5" +numcodecs = ">=0.14" +numpy = ">=1.26" +packaging = ">=22.0" +typing-extensions = ">=4.9" + +[package.extras] +cli = ["typer"] +docs = ["astroid (<4)", "griffe-inherited-docstrings", "markdown-exec[ansi]", "mike (>=2.1.3)", "mkdocs (>=1.6.1)", "mkdocs-material[imaging] (>=9.6.14)", "mkdocs-redirects (>=1.2.0)", "mkdocstrings (>=0.29.1)", "mkdocstrings-python (>=1.16.10)", "numcodecs[msgpack]", "pytest", "rich", "ruff", "s3fs (>=2023.10.0)", "towncrier"] +gpu = ["cupy-cuda12x"] +optional = ["rich", "universal-pathlib"] +remote = ["fsspec (>=2023.10.0)", "obstore (>=0.5.1)"] +remote-tests = ["botocore", "fsspec (>=2023.10.0)", "moto[s3,server]", "obstore (>=0.5.1)", "requests", "s3fs (>=2023.10.0)"] +test = ["coverage (>=7.10)", "hypothesis", "mypy", "numpydoc", "packaging", "pytest (<8.4)", "pytest-accept", "pytest-asyncio", "pytest-cov", "pytest-xdist", "rich", "tomlkit", "uv"] + +[[package]] +name = "zipp" +version = "3.23.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e"}, + {file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166"}, +] [package.extras] -docs = ["numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-automodapi", "sphinx-copybutton", "sphinx-design", "sphinx-issues"] -jupyter = ["ipytree (>=0.2.2)", "ipywidgets (>=8.0.0)", "notebook"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more_itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] [[package]] name = "xarray" @@ -4596,4 +4435,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = ">=3.13" -content-hash = "8bae2583ae033a597f7a25d41850932002e2a0fdd9baa8e5edd7856f5c19bd12" +content-hash = "6a90954e075ce18de2389aa5ff131fb2de945f466483cdd9c459ad039fee48b5"

5hODgEFMf#L*w`HzY2(hV}inY}Q#Fz12& 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"Ws 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�Pz&#})Oo+R6X0Bu~I=jOspsgJxb4(ZkTFE!Y!23)GQ z82Pn2Elp{y%hK+vc3-~;2w6z4s}ui==-zlPy>s{QCEP!IDw^(EjoqLzk(%n=t=-pp z@N&KLnNK{pTkCZy2h1K(+bwqVEw*C#&#A|%{k>ECXnWL;!zP{**R@IQsSS7_i) zqvWpb>NF>mTwu&-u?#R`%ZaVdUufWx@0?qi{CJ&xtOSUB@0L&LvE$Hq)c6`*BV=?H zGy0a__jr#9%fweH>n87ICFkytUYHYG&b4`CPmO~H=4i@c6b8w9VWg0>VUf;4oBl&( zLjyI@9Xk3Xa$iUOp9>b#pfzYBi&Hz1duBe$ z-=_qb-kEpiZ8NHg@*(cP67KhNT)G#;y@D4i5nFYousMq3t60!pFWvFU^LxD;*(&m7 z>4Omq-S2zf8~C>G_|Eq=H}4)kq`KNOmbXq{jLp(4-#C2@6XV_-+qZiwoFhiHSwcqi zvZ?d5h6!g4nWm(&)toU8!|Jg1@`$oG34K51 znZ)U61&=2ndegdKAbPoQ>t@DEcXCK(xKkwcRXOKgnLO}9n!SATVehyt0BSTX-8yd|+s6Ai z=N$L-jQbE9)7$OlM6z^J%yOK>bvP9q>jjLBv)>7Ir8J_U-2~a{~PBrL~ z$14N%n~tkn*UZ*t#(76R4}cW68<#{pDGW}1jOV*guXyE^SMaHC{Ih!fgI|Jw|JVLf zNW%S&%k(W)y4C8WO`i|!jXemRVLDyJc2Y^PYQf||>9_vA{~EvUm;F4{`@TQk_eDPt zeg7`%!37tfhS>G7a%J;J2eOk30OH8&T?2*5K|0dj;OaGm&~1DpdxxfOfjAX)Sc)s71JP5AZnzn4K-hnT!b> zs(m;!hB?@>40^JSk3PNS&Ql&Dz(zxoMLhuq@lQI9x)0v(M<>v*>JArhd8}r`fM=A? zNXOS`vjOawrX|10bI{Yr=n5E8cK`XghIT`|VyjTX>5eMJm-Pxe70vccHi(&W2jr@9 z)&(q2wR+7;nlA6_0a522g=jjU37zr{(K$@*(DAdeY!|z%V3Cual;lf3pXAVTu>!Bf4#+&kk^KCcJ9|IU=##%PKR>a~VVPybOZ1c4=$c`v^m@1*5=F#5>GH3FEONZup=^ z*${tMNPBsV%-|%WPy%3&Uu>P28W5f5H1B*KP-njyUnvAk0XBIZ)+I!0x7A5(`I)EE zsu6B88b86gx|HKrlXckk&_*hY5b-7`b4_f|QfK|EZsVfLKJ`gZk;uzNiShVDR;EeP zn%XVCBUw|W&X`~D4pY<>*|I$*aQOH9yK7bmpK7Q%rt&QjZ z@YAS=4?GsrZBtg`Q`X%buFs!<4<6y^J5T!YgUkD_SQt3m2e%JtJoD_S$FiT@=)K*K zYhB;#th*|+gPHtxR z>4LSL^v7eM6t-65hX739!{)F~da6QiV&$43KsD~2getPdf=zA^MZs=7y?^56P?dDm z053vU4}+%SNlZlD7j?}?doizJ6=7p=0r$_JJVYj7%8UzUUxujBBsXNenWs^dsom=Y z$+-~Rk^!Z3duA?1Ra=Su z)lo35DX_^kwj#FM+uD53`(EoG`_q0lt{?eJh`CPkRw=>B&fo!cCR3zRjg7y%wn|^a z#g~qm7j7WQThp>()(gWTkpcqF2-^jzU&k#q*3xbG`)|7rZr-}Ae{hI-%kIS*NL#Y^m* z%)KTb09foOB0aJmf-5{z*Nw!-fAstRFn`I<{+ZI7U&i-;@ejhYci$B+-UBHGak|sX z#L5iYRNgl#;4!Z7S6hc??@Tfj#H$IYB}f(kNd`cuVd8;tR|hBfB)jFS=yimeMNk=m zKLuo@>&fE0u@&gue$Jk7KE(J=p##WgMW&w9^EHA&5Kt{KM1xEp4_hdg1r9FD8;s1Y(RO;oz$fS|$p z+rONV8eE5~MyQwwy6aJV-bATcN02budF&U{_eEyyT+#tvFy z=RUpmRqfhm$i<6+xycu#IP&#-J$ru}uk>`uye3Ausq8HU*I`<0qnxd?f4#4y$>tk* z(aLO){HrxZ$Z1XiR}U&#NpX8W-aCCOZjx1SP8(^j(e4W7ItmtPS-DoXy{!t?26lJ? zV(?m69Ov_q-2^x95G^&P2-&kXQ_I@9`dW-@ISK6)Kj}sxl#=5zfRoU9bVfjhM~#%T zHz1Tnml^FiPy!Wx%C$rdvxnO|^vNDeV2iY;nZLu>&ZEY_Q7`81yl|BM-pTg)YDVIb zud4t_4g1+sgW(z=Jwpl;$=4y4I{V$b|C~amk+~;7q_GGX-|FfZv|AE0*ghB<;@!ne zcklfL9KR}tRA>O1xvwI)?%ulN1$zF3Vr?S8QSk6gZI#$n#O8y3^5mUbcaPpcU-LW^ zxNPtcQ;%%86s4&pRfCBOs5<*(qTkSA(W+sNvocP1{WbL*vjzuuj`F*Yti*N5#66FA zC*UO9jETAb-OsyTcwb(a2fN>h&TuVrN`zwk8agct)Yn}QYNuu*+!UESle(E9=BCbI zB$;Q(mdT0qRu!X$NfiYGy^<&$S;Yq|&1#nQ>htPXlo5--EhOh+e0 zjvqBDM&3fdf>9m5s9VX1E5xB*68;cyZML@UkJH6_j=B7%*Tt zvCK8NFa;WEC(t=sa5lWSZXL`d(P4^b9AWYRv+(Cd-Q2SY?3ghS7}JsC_%6#W2TK^q zq}VLt`t07Rc3lj)%yK6qEO!Za4)8^*s;;|tl*4B!_}LV&)`fR>7jU~hPb@CdHhJlg zr$0yyQ9qp$`#q(Lz#9LDDejmf@mv^#>FD5^S;~_$vo#}pza`(h$#m(|d&y^yCD|q{ zI4&wTzJ}@2G1}mOC!FHk62jvzp=2+c0cE2u(5<+RfeofX=KE9;eVdKO${rb){gv@A z`QX!B_W;8b5hz*;U#{b}xAk^xabY6zLV{;9AuG(F7*C%)s}FtEPe=Cyz4@Wf!&`5^ z3&8Y0QA57krp7h5pP##mECU6VHsaJG+(hq0Eo%Gu{pMfyZ-BVR)6c!7s;m{BQo={w zMM*TZ=pjunDnh%2}a>z6!lJcx^Z` zEnY4U^yu+J+&y{;4_DBkXhS%PBuU>oO zJ$U`Suj9dMukiBl5iWPt>w(WKysFjvIr`eXrUSQ_xCsaCssP1F4w?kz=fH9@HPJso zp(Y^O)F&j$d6cue}JC8`?e=1wSeySslX-y z8u0O-AYg9{^WNU5)14Q}4k>8bZsQiL4MXyL57?fhKa_?^IyxeGR7}Hvdd%2aJOvCZ zEz;cQKo0cPHigQ-FjA1OLT5g-3K&VIjZNii?ujNI&KiQRAyipbeNwA%W_>LY<>0oq z(FH~^jkRSP9o#^#fQTr@IwFNgil}+M94wq-%OpHU`rv!NOdbQUwhtGP<@D}?c-9f{ z@t3)yfe)5|uj%-3V&7a0vY`Boi}nk&1Q#V@!RDZ*n3+aOj>Vn-&_$F@X~KX7>=CjG zL6yU0pkw5j{9u}G`n6S6VYyr$;4+C19M_THlZGY823z@bcV^RF2|%%{w;~X2U`1sR zZztr1XzE1gw-j??h>WbSp6=@o$)6ehd|kx)jsU?}Zm!zmjoVMY=SkHv!!8{kx*DdR zt&0~mmI}2l&c)X$T0D~M5rVwXTl@8eXXWv##s$;)b14`FN;)|9FTkx~mi?G6BTQE@ zuRVJ-DbC8hMQTOdzVeg)Ad*q?Be~Zr```j&16>02y~nQ6+BQ_xTGH70ET>MXDGm5FyFg^>w5@|dGpj+3stuU4l>?ehuloQC)HGrK{YO@ zmYYA<7lYPDmx*omgp*^r#383O@!2RM*W`U_B~qIh4E`*fYaE&hr0l&vY~)}}2&jhV zs+bsx)H~S-et)v9;<0qY`9}F-R}2U%8=u+xDH9F}jv&;|jy4$Z#QF|wn0b5qEE!;3 zP%P#A89xNGR?FA%{Q33OyUU#$Ik_&Z{vg^4RXaw7XB35naFP7d|88@37OurJp^4sahufJGOCh%Os6y zXrG|q?K8&#+KAVlArndjp!;$r&dfUt$F1ar=0=W9#icME6dWHqg+-_=`~so19jDLx zSl&e0d0PH?V=sfRUgx^qh08;|t>-$7rIWI|>SK)1^WsyE5sU=5#_R$MF;=SS?gxa0 zIYSM>kqdDwOOVat&@G9Yf-6}5Q70LrT!?j&qz>Gij(VggVKWAg)ULs+{xf+|8OWCD z{Yd5Ng+${|FNoz6SMQdtSK(0 zxWiJ8RfUr9pp9ZlUJt%pdm-!%>0*dTGw@~w_ickSQ|eKRD4Tj_WqYSHG~F)}Yb|#& z?ytBP`@>)TGwP#X_eb&Odp{qa{>&%&+T%NIUH$aBxRyO1KsIf(M0*vue>6K<-n7Sg z$%NbmP4SDr@OweH=-tnKZol_^Z(jDkpC{pvDa((f_Omsqzydqw5J`{@Zb~FCJ1r$V z^TZ_80=ol$QnhJfC?Q-SHLuqt7Ie8>sxA+3_uwI(?|VGFTmTSHuN&`v_HF9_7{++zGrR9zF&iKE~avZ|LDGFV#!0yo^V$z3d0G7StQh zo;=6({$9`by`dTx>aH5yJ~}fHW%l=gm)rK}>RKKs&8)Z8L?#Iga-F9OIsW;I5LsR# z-8c4o&yin=dC#A`LxOnx-~qVRS9D#7E%b#0PB{I%fGL=~>Izg&_sQTtbYfpotMD~{ z`s?*`{@I`0c;g4un_v2m=*ipfI6o#9i>TF>Ny=;knql!%iJsz%K#t&{JGPCWXM;CS z>?qa_-j}cgnF)FWBz5~k%QAJg?LOGs=L)A#z>JlkfF^o*L`E7O46yBj)NW(~Txj=) z;xpqkPeMtYpvt4~OKw&5@=<{D`nFUv)`Uii8EJ5v%OwcXksBX`T&EOD%kz@+4g=dK zo<`H{(uc)x?e!NMi$+PJX|0yqeKOfIcfO1OP|6T}Cf$-zXc!I3cGoo5O4-2bzSX3ROA5 zggTX0FfD3Nl{2}>yL*+7(1q6n(SyT`tF#1Oo$~fN@Dtg^Bu)Kwmnyp2j6EA4M`e>q zK8$)05Xth17oA>!(%2as7$D5#ceobEG;U7OOrp~5UcrU|Q{YkpfsK6&WqZtnPrT|p zW33Q%iJM*u=x(kV(bg2cp4B~J5|aDC+hcSn9tjLg+vj{99-yCR+}Y-myU4{+*;t-X zj7mt;jr8-Y9PgR}*Bl{kv+O=qVWSXTdel8W<}5eoR#mOwCL*x1ZR>BdS+8eX!THzY>tC^ zBQ{b?!!ZdtD!2%>**2KINH9H?m+tgxQm?PrwN}<~gIs9bCn%C7NHoE~`2&m%2~OVj z116M4xKMp)G^1J9Ayg|$p?1u%EZ_UOQ*bBmY7VDPPNQ~iiCKA6%uEtH-Nm1iAr3#m z1=&B$ZpfH(U}80~0M#9Ug=bIRdH=&V-iL7|!69yy_~fYtd5VAf5JQka8vq(DPj9XNQ zcIw1Gy%4uXq3z|HFVfD&Ll`D|pyqmq`b=1R-n|=DhIa9r(=J`Nb6MnnK!L zK}521ZZaJiHB(fkke=_JLUZ{ZT|@U#Aed!OnUP{Pp!j^p%$E$qbh^stx%i$7@KM;z z?B2vD&QeVxSUM7j1Syb~;f#Z0gRCmu?`!FP({6g8xagb}yQd@%dH6CQRM+lZldOEd z?yPJP)W-I?ZjV6r<#MV0OeY~A>@(4c310ZFS82i|$8pJP4^-LiY??h;Y||N0`y~0E z_nxr1lXGUB0Km4M(KII^E)ds~UA-1aTm=-zDIi71DuX6W+|gN+Be$E)=J#mVXfC<&>(L*&vqLL`VAqbBU-Xy_DJIuGGu^OF-Rs|M`nFw z5NgbsR6ZXW`<_oe_YS_`$NW?H=r{afy#LKFsK5Vh-`t<~!4Fa``uHibp{A^et0c^6 z;ZW)R2FJFTPIXeOz`F;JT=&c&VO`{M@b=95>Gi?FIIo+Yvp~-xy6>t8d?9O_ zN6?9fzSfeuNdnhvW8E!0ynBSZN00d6?g5`YeYQXS9sgiG`P4^%cRmB`cR;*5p;RvK ziiJg8UPfIWVZHn^3JbhE0Pim9tJv3jazE9xC*MiE^$wnY0(g$+_#ChcmufsPl6&QY zc>HR%k2Bz!-sed=`-)V%}1}kTziuO76S?k#M+fnDu2@`T-;Ig zo?%{K-Ybij{@TCxH|nSV#IGh_`#$S^U-EH(LUbBr5&lZ z9JWU8eB!Ri^0^~22zQsSeY|DINXXc)hB`Q(K^}Jxcu^RLN7^?GWPt zqb>Awx zQLi}tYset4Am;{+H|1b0Z>Iptrb2;YLEIJWa~PB<1moF2LfsOt;V%tvjroRqI0Kex z=5YKbA~f+{fYX>QdaBQ9EObBsm^Ba&DrK5Oz1-{x5!|$O$(CcHV+kTV;puZs7oYNY zCx~nZM#&cW@P_7i%#s1U8$EUxyy2ySeQ!p2>Koz?E>+>2bO2(EnbD*(YJQ+D(UIv(r4(kf%EqFzMEOx29F%g8fkP zM_Ip^W~d7VW)wC2hxcblo{*-L)Z{9!*~BE}z;^q!q&97X;7T3t=WEOZ*3{+!$;rsb z2wS$rV7inp+3gPgdqaBQsPyEWw_khs#+x<;Ujs5-5ZVJ`qr3a%mtU9ezn!%TS2I&N z=Gb|pK}eg>1$1NZWi&bA!=t-OoGq-r`Z;FYPaIbqcx}bI19=8hv~LirfQxX51y?A3 z|0WTp?jmq?>@`uH2i&*XE@v0^{cs?omkme^*+lxr9U z_vMh*qvR^x#u{So=+PXevv1rCT@?Q)cr0UFVT(p#?gchz!th-5`KA0+j!}O8D%B4{io;txkGI`qK1#n?3AZyS` zoq4*v4fbR;t!(!gkL90d4ST$U4kjT@dKORBE!Yh?#CTWGLloo8O&LU>=8X1c>q<*K zm)X|7$J3|Khrars$9Mku|B@g69$!=+`@~1|=IgI>HMSO4^$SrCNJon(b{Z&YVjMt@ z6sw+z+q*Y#y{x-OZt@2#TdqxX{E?FjWgf%Z$z2CGY9|O9L)nxF3VTh$24@;J1UVGb zjnM_(T^{P;W254?Km9p;?63b7)Vm);Y~Q*byr*9K&==@O{OBLepY)Iac>IJP`2+QZ z-}CdiE)Q^bS6o~|fy)TMypE>V>;O4XUjnXu#r^ZEKJw9z)&KlWe-nT8Z~hIUo> zpYQMu+hJqj9?0Z!zAypL=6jAblE^*8FfdbY0--I`B33ulQ4J*(i=u2oE0LsJ;8LU5 za>6~Ar3IUfc^$U`^2dLd?o1L44|w5%Zf8jgm{cBUm&QV6k0dmK5tcRCLGvZ726hdj zFP~tGz zpbs?m01IwE)v{^>GR{e^p_1gviX|WBAy~1@X_%nf6Q|U6?|`S13RIK(COG$OzIcjs zcKS#_D6=&45`r@Z#ux2WIHW|vvn3B%29vddv10BvBaLXIxn`aEWd(4mLTXgJ2O7Y| z*oH&Oim{u&sMy>zHMs%Sjv~%O!iX88E0+P(sUa}5Z^Z}~#%*)#WO#O8J5o^0> zVen%ZnweW~R}!3=#6E;bp5?xg3CUcr+mt5FPW>NjGhj3&?{rgPErI#Y_$o0aSNxv_8r7}KrNwRaIfirq3bfdG&8f4Et~%-!FapQ| z#vnDzHOJFuCob zF6KC>AG3vAOtzZUx5`IEy4aN^s>kb+BN0zzA!f8xizwD-?(Xh3bS-+dmr8BIy*=S$ z+wiq6ylN2*JW2`acbh$CYQGaheQy;&H%2HXy^=+v)^-A{^ZxAZ;dpZiQ3;M3!tc7+ zgV%A4VNz?M<`kyHAUc=anlgDQ6x;$ImNzj^G4PPt{pWcGtcKu zJqT1r_k5qKdV#ROA^B&G&bd}@+AOS*PjKoO;KFljed36pcbHY}NornL ziewVJK{ri76$!@+M{`V8H*;U7pqrp0(56>C*O4OL)xrx8LMfumxb!gclO(d?GvI92 z1Gh%O6!(|~!2_KJ0RoWa#u&CFz^7p2xT#{&m6&3@PZ1f;Az<)kOyR}cd8WwoMJ;Gw zCvxJVne#G`nD@|rIJ%H`UQFFptSg&7xC?3>`V!(;231%A-75)1^PC;E01B7OgWk`c zUHniM2y9UoH;j_2(hXD+y%Z!|lRM{g8w9&EK3|wvn62VY*8xFh!Juk#howbwN6l&n zJz;0c9IM$~s$t4NskZTeiv}jSYzPcPchY}O+%S9`@vWnnY<22Zp5#6Hh5!4t5bz;^vbA` z26p`Q5J+=_ zTMB>!C?UHFDSvA5;t0P=KIv6T47TXrB#k+@v@Bc+#h%fm*Ux@$fKMmaf%Aaq5 zyMb@}&X4my|HFR_|KH#H-{M>Ux4*2n5dCwaS+^zrgcl|f`s^9hN zoO(8i)i=U6!ssA7$A5plUy9EMms+(h3xDHp{~!2CU-1>tgGc@5Kk^m2e)gTkJ7TR1 zyVF(coJ%fnicY5fT$VN^xpj(MFSSu}I^>Sv@D^cDYH;V!JmX|y6xLjzpiW3kwl>lN#11b{UR%86dPjW#qKT^RLsG`uDP0ilWRK2$=ajV8 z8SCrmygK!z!<_NGdB|EuCm@~1%K(xuZ5%w(l6$w#C{nVa&w ztc(jAS2U;5 zHk!+znj3rNS6@?+Gk9QF@DL}+d&Yn~8B;_~X577Qv_&RmqPnW1L~s<%FVskh%IshW zHwQey1{YH`d9ckc_NLLpe7f-R&|i#&7>*^z30|+mGB~tWP*ZxHF$%;naL{aghgjd% zNb5%$ser{3g#1!U0l00JXN*eXUzk7Z3>!s!DfpHP zVsaKsW4MEPh9iz-6GfccuYr~9$FJZT?~>U$*n|d;Vdq} z0P7mCw)a&iZgjWMmr5C^S@N?P%r4nxpxhZr9M0btwrb5<(5;H`@iPMUOm~JLfyhmH zV+f-lb>PQTwFCGG7H3ieZf*2AS=qrWJ};X2z;tyd3hE^Bb&VxX8r2ZuU{U{fG>WK>;MJSHT| z!_T8-6V_twd+c{VhtL0!|3vBe=lH?*f4|G~`=@)c=phiVNhcTP5p91jn2v)tl~B@d z#$vC2>A&^sf%OU=zw%O`j95LH+P`BR^bJ&|W^wjR)u1N0fQ4eZafpQWkOANYweI-f z)mQP->u>1UTkqmK|NI~0C%^8$;{D(FAMoMt`-AcC{qFyQpL+Yb=_AyefAvBpFhLyEAadZJ=<8__@dAMkbccC`PcFHzWGn1_dER7kA5eA z*{}cY`0xilzn*=|pU20)?mx#zzu}ML?eF?7K7RRSJbdL<@Inw5vUAck3XQU8Buzgm zwS{Co;$ zh(A*B`J*9!A@JHS3*ItE~YB?4E^N?6JXw8*ll2qveZU{J(DtTr8gRA{ic!?K%#nPV5T&6NCCgBeH&7l$^Jqc!J%cMZ7-uNL~;cVOhiDX$!4V}x!bRyOFO z0<^q5Duax951ghzI^(0SgJ&y)#!66KQ5LN^ho);lq?s@zR69cD^S$!PbSBLet+Ynm zOLc=FGq;@2q#rgbW#cJ2c^0jcO!`tOiD@b5IaaLh27)Eq8h{z6G#4vg9yQtTh3*T8 zWr1lQ+y$g#o3@cNrWegQjW^4$GwS9X8d|+aYqw=7Nhj&lL|;GPbwftQA@K9zPD$uk zwIrdNVqs%GQ|LPC4TJ}nq-#QoS^LI_kjM6N``xVCOzIcNp7o+OshOAVvRcLtrvUfY z1$#07Hs_e!YI{3^K#adm{_|~~%qwn~%QE3c zV9${vP!(319W)4(Zs6Ht|Ngc`jIrMF*E_2w1(_u+a6Y=CJGp086GWe(m6+zCwTT60 zbR9rLB7|&SS)oyZTa(+PxAz|gvx@X6iuZFJvJFs)WtE1MG3VkjzRDWig3(a}rK*I7 zVV$SLo(EtJh=YausM8$;U=17q)CO=#k0YNqq?LdEYDE|B9;}VR?!I=5i_Q4^S#ZB0 zY+*MkaiiInRROvRnM&7k!XVJBzL}jTrlAo6F7+d4T`g4YB(wZn5sE30v2#pD8%H(b zqPz3=XCK9zVY}~NA(|n~G2ln_3$I^ad2$Fnl?({(R)pz>W1>bi23q6?rb+4%qK&C$ zCy@F($A_Sin)*DaK@X{OGq>MqT83=(CSLQ*eJwSb9s;)}q_52^Qp{464uJ7qn2w=D z2Efdsuf`RGk70;Z*eu#vXr1enON-p>?Y|^E15cZybW(SRNe+4AN3>)17cHohs*AFt z{4T&_0GWmz35bJMHe)~~^LaB|-GyPok<@SY@>a-j?l-Mi+tSS6jhaAnceAD~iyS6& zknVJq(x~bf;2^*yO;W6Y$Gxvu57yIFYlHi`yVcvYnTyJ+!yPLIT0{BQXP-TNhPqsm zoQKUPuz?4wO4@6w-vO|$_t)ikD=N~ngU{IBnA@zAJGzb7V)#E>nLmXWaSP%OaE=K| zg1`=4+7((guyyu?dRZu>#u%STIRdYUnYRLXo_+fWct6tuI*F{~^?V7{Cz>7+=*q7x(=&j+ zfV-5IfY(Y9T7@<3|F!%8YoYhX^DTbx$Ncnqa(|EazV>epZr^YTOaw_--pk9^Pgz!xA1@erT;EI_vC4R`#1kN{5wDQ zXX4G59szxowo=G%T%Vg|zT6e=?(R^v@L*Awiz{RSs4A_C-HcaVbXm*J#>?Hy3rg$G z&zY;Z)&+NW3zxe)7ao@aE`@6myEl6a?pFif^FtrNfA}kZ9zOEze*@zJmU1O3Tw{9keR=pkNv{~IDNxME}X6&K2K?aq848e3U8SZK6(t`zJ=?y2ZQ!T)zaGy z{Lmlqk5)f>rZ4#FpMkyaak(s9>SC^11+v6ioJlGhH^+nzBO7w0xi!RA3Ida(vR>7N zT&1`hfa1E@ZM<~UAwXrH0U>IzsJX}-X*P=aun$UIHe@S1U{O3k04v1+29NlcdW{lJ zPK>-zEuC4y9y}=DPl}a!(nptYfSaob<(|45drvG?;-0%nyKE)|jmZ)N5CWp*=N)@2 zgcv|~X-0bh6Y$I`Q<}=i-*w{CJomh>fz~D{+Oez8T!M2;lSgXqu4{0B0yZ(SFy*0Q zu)Vv~$rn=s&YALox`-?`V}XFw+)3xQF-iWWO%g`}Jki{pO#`jDK0v_koG`kbsdIGU z)LDv){4?5dPnpuxlVE zHbl5uBON6b)80m*_VzPD$DhR&OGDhda@?3r7NNp&z;_cU9l9Cc%xjw#XxiEx(2R4W zaKooH&GQ$$ZYN!PsZL=(MG1f=YY(OZoSQU-p9x*zV6^KC*LB+iUN=@r>Es^oA!eNL zwl3Y2Iv3^Dea0G7{O&$+bac}a3p>I4L`Vchrs_{>4FldX;`JW zJjJ8W%}poS#&cKl$kM%MjeC7ikMGST6D@#gIliVA7-xGX?m5TYRIb9pE}Zp_;2!QF zf&5dI*|i}`rP83xjgeqSNtAan$8EbH+Xuh1mPc#^G@`CagK-EHbDcV$Q#p3Ery`!Y ziLBMZ@Xd*rbuf!7E+oHXt>?NrIh2TeqZ-qPO0fipF?05KN_&xEPDFG_Y45K%kx#>Q zZf$l#bz!fv0x!j!>lrz3dA)@HPyB3Qg`MqmsVDCja_naf?ddozQABCg1t6=m@y2Vf zV#lBoU_2s(?#3c<>HB*72^QAnqP||B4XSzFUFY5eJcQQbg}8qXUh3L?#bm!Zb&3S0 z((0n$f5SQYByq>9Su;KsGYehwcJj~i&fMGkZ-xM;ngni!oTJuZ)Z%W(JP~)crek7Jojb2or5tAorWQ z?;CvJ60uZbW0P8Y&RCf4dI{F|TxaZHlEnm{nb8q0JIlP9nxjR1&4LMqw9Zw6RyL%U z#3@jX4*YJNeCj+CqQI3zG0b*`jce;xe%~BjoH+8s4JTSqTB0{n5_h$4YHgv`cIS?j zv#WjQ#p-i%C2t%41-ixpaGpC!qDrFS%6{uu>+kt+ zRxE5lREERqJ;K6~Ux*2A+70f7zASy%MAL#3M{!jhIKj^FYx4z>$YWF>U z$A9!|@Zf>l%-4PG>$OkeRamN8s7ryXKsrW|v{*K0b}LGx7Cf)cNg4==6+s%u5+)ef zm;eN|R6tcogNi3ntM@&6KUeogqxI5D5Adsg$N~&g z5A479r~d@jL-Z@}d9%rd=l9QK$GKUb08kCJx;)?Rz3iB_JS04J3K?Li*|*lS?EB`r z(<|TqEBep;k>7>i_`7~T>hgdE;Hqt)+AahprdhO9zIQ^Gb>T-o`#HY(_%%Fz>$7Cc_pNukumfZP^$5^;nyE!#)tZwra~`=J&v6U;;GSbc9gwYt6v!n3o%w5T_L2*l zFxGh=x%o1QRwh{;{_JnAj`=7pcZEC=AB`yxGBO0Nq7%lt$uXRtm~tWA4agLBFL7OF z7QmpR+P#E@To0JJ-XxwuT=6HLe6YA|I|HIrxZpU(SdkZSOu2J#z)Ir!3q6*^W3IJ~{L|@zW_{8$4cRKiq%U}ZgxTD_U1Rt4 zC|ewve4V`V9OLGK`9=hR!WxI!C@dzALK0cZY%!!WwRAH( zcnOdX!cy}6!m|GY;jxxkK~4A^A7m!gVQRpE>gF~?5LZIHxLDE5SZjdi6bIR+1&Gwl zcFw$ba6GDaXlt*ZdF+YqcBCfJC{J2d@-rEiwez0D;FV(*_W~K@GjS?wwbQXPY2VYe zRcwQN$&l7lq-A>dHga#cB2 z8om<+gm9(%m*-C-+NMulg(5(rm4P0m@kX9_R^0PH_3bsrq%irxDTgaN4XIp|}9Jnda=c-II`=Y_o#?J*{kNhHjQnNm6p{p?= z%pOSNkDf<0J3WVI`b*5QC#RU02#EFeH1QokY&D#*Rh}~f$v8$Z%pv5`^jKj{h_^wH z)Eqn=aVuxk^};!X{_(-tjy~h>!aN@?k7qO(+NCF?xHseid8U~KN>*4+&{rV8)wi54 z=U@vb65;Z+iW_LF{^jDhC}?|Vm#W_EtHS7%R$Hukf*rEUFiM^!ll=n&G<$Ih?_0r@ zAe2i^G(75brD2+)J0UqZ-v3*gd+87k^wd_}@}w0xlgwtl07KliK^0(l2ry$vecpgo_9baTxx zPL`@YcUaDOxt1HKh{gOitK~!`gWvNg7?6$Rr;Ki4I)*(wMiHwzCo<3T8<+qba5S^0 z0H_-001&aDYGMb=RHtAJ{omXGJBLl1Nd#L>LcQd79(Ml>(0C?NK`_eN_6h8DFo0QX zC)Azw7e-w@?>HkP$(|?`B&oO8PL*QJVrZqhg}A{y-Ju_Pe&48c9MDOC7YvCBmlvFb z@WOZ`2Xn#`?4;C*V?x!!_5KRnU-`Z-|7UQ0_tSXv#uwn)09J|Do^A$nH0&UZjHz8w zfUcLqoA3X=eE#&ac>j<333&SC9UEwJq|-~jE^8HPc9kDl-6{rxYI%W7r%8DJ>{@Ez z(R<$D<+AvZum5xS^k4ad!u2iuf?xV;>+PrS*5Cf$zD{5A`5%^gtM9LEY5bM77P%r+ zm>QwucN7p3b~)}mev(DP?hDS)DFYpv3n2;oBov2+LikC~Jq3pn#)rhJa$9#T)a8yt zwp_1QHMY8+>(vL3`TzNCzd`r?Hh6_2LupW zN%H2LT&@)4k%9n2CrxtB3vaX!#R07gQZzC>M3d@6)wgB zj7G|@rU|vZToNMvKL++mg)*i{^?0jiR#pKV&sSk=z8u7cId$j8B**s7wSSCl6AXzQ zKp|XV;=WiYIhwL;0pVxXTpvssrVc*v!iP%rp1cd2y*EhSaWkArMd@b0--fmc=1H z-FZaR+M4|8_qM!Wmp|9BC3|CpdUMY?r9%L?_c~o=r7#(E=*K#wPKOIN+9jg#pW)p_ zfEjf5{-CyQ@5kl;2!g=2?(>k*YFwxr$pfitiB|^VZFwYSQ~`Ns%Jbrke+Z)}@LWMU zd-FyqMCN46g`HA{A#B)CXHoZ}qC6A&Op`*1i_`71OBqPd{;+{ELCC?kLk1NDdUDSV z09D8pW6Sbe0IK&2TJ36`q6a4~XDBMVTDv4nByiFU^uWP&VLn8Vo@|5wt*AyLZ8)7+ zl#3=EeBfLlKT~&Jqr9R^a^~~>G22gtk$H26W+K#J`sX)n4;N)=Zbp6HoGWtLKf63( zh`dP;ZpEGeaCL zGcfV3L4Po4^?KmWui4btA!mD@m)ez=ZMJlyuY*yhc;P^Z0xoxzd4<|#O2N~?A=Nm1 zv~7$Fyii^(PkD*THlLpg1vx@7&o=m5FJMMB2*(klsuaUYOv{TQcb-SyQ0}2}?M31= z$jeP&@?sS`{XJ+adF2>_oc5a-=Dj1NVF!U+XMNU?e~I%`D<)-}d~#&^>jfnXr_rEk zAe_c?)r~|y9Ef5ek$-nnJhiIJB5c;gO4JL#pSiBY>>(lyqEhp_Gwx(+CUNG{I5Abo zY(cU?ikI6kT4nEyO9p56SXD4>iUd4Uyp#MJM(ah5bc*)2cn(7ao`6g z{TN^!<29tChmoL65miZQRpY{nyh=+D4bm_b7ry&EOI~|GP?kE9(+`*#J~)r+1eVy( zodpNrh0gVv1%#^A+TA<;LDY(K1G*%YHSNN@%lSuU6Q~BtRhphMaL2NL*`X zXT7e8aXT8+%-e`fJSG4ao65ho;()4<`e0f_<5>_uz^wnQ&9<+y#ybPan=1ifU!S7) zJ>LJL|9RYh_ANYm_Yp>{I|MNHE zlX$b-$kj6zW12tH}klOREhZ->B*$n_Ez~ zXSMnO9>yQPi0w(j>Ee|*`9`waK6)U=K#{@(gS2Bf68thQvAeGqyTf&rSj8wx$>-N+ zegFJ98|Yv7FZ?tmTK>`Gr5Xf5HFrKLJ$D3$fM(SgXZ~ zY;GNCOXPqqW z(^ki(&<*RDqj3mT4hzr?Cbx~w#l&3Y{OKqOqN1A9PZksqKO=0Z#Q^W0F@j0mSEF~w z#NnH}7OO(~lnDs}tD4o7>(3Dqof-XV_}EtWeW}ZUd5Yd~pa)G%LrXUF z13aIang#G1g@B%uo~I0-!n@dGZo^S262d~0Sfs5ZiykpU9_o~iymiXlby1uw9F3Y$ z$(<1sdgNe%Jh`F=Hzkta3X6CM zbVUY*1WzB(JhPHLAx9zcv(<7dSauVJm7QjwgX3dnZD9#B{^wT?vjwR;7#ycFkdg5y zS0XLPAogaf!f_7sm2s_w7rM7u%aH+?GU(f_Fxc18#uL5VzSdp>w-3i{aVA^oXOcdK zA1|Tl7y9UH?_O9{MXN&z?xk=u@qL+yD8Xl1=g2~sPEmrU7EKv&#d1xywh%O*V|STU zgf{hevD#U|DP~NZZhJ~*lrtS8XkWRO*D5Cu&SQjd!JVXS{@BtTQ44*P;KIf6*g618 z>U(rw?ZT+~2MO?(*dQ-p^q@Lq;Te`SWsdzH7`I=>&z#_wVR+Nq5X z9hp2%h#iV4LA((ad1B#o(t*S#<=Nb>)%9-W`~A#|FZ`ZTa0@9S;KI=|GP7>DFbTjH zcpP}O{oI`4f7--k+gW&$xj`7NK=<}FM4F}KD@8hmxi<)FPou3)Ld7hkZd57>+rjwrIK|*${NqCq z*{uL{g&D^AN`ns-w0lT0_U;|#OzsLoX8Z_ZrTPYZc&N_&;rvI5;T+Y7b^Pv)Yd%LP zs)yK>#I-psB~62(u((o)^@MfMOLPCm||Z5wyY%W%%@4% zS}unDZaK33CfJ!+iTR0-z{olVcFi?~V@JtoS7!fR>5o~9a$t)B^b}(b)c_y|qh?w? z!y399V8}2x?nQmhLUlCqPe%^y8n3YB;1sq`=$n)=J${pA$>>d!Vp4Gr!{Ah4xW_`R zi+Vr9{gZd`fv^0hC8*wb{XP8ezxFSpxUlXnc<}J9?=BZy9$vIoiNfU%{i$!j_DRUH{Tg`$?=q_rB_Se+4A6E-Wox8)#@5HYc96Nh)RoS?TX% z!VZ(~5jbuEZ3%$+e{3JMm*6#VXpVTy$$FWg^zvn_gj_=m#0JQ26Opl8+%=;f+v5Tk zauK>-Z9>?sAM=$zte(B|k@|yw>aSuw{RIC0pZop$BmeVX#!HW1(u0>?#r^fl?kjB& zmeGXC_&bTp-A|0+l8>1)38Erc#ZB<}^XGcc7knXJ{nCGY{mx(aOR?6ae*J&)`|zo^ z-?rdjE${+}totkXzxIoN9e&DB_%XnHzmy;N@}I)%{XKMjhRem4a^4dTsy{n=0tlHC&_tIP5 z0~)fQfPDizaBE3AJYAE*l~M|$PLDHTtT0`?1F*c-JCC|@xFI`c=X097FOH6*{2eui=-6Df(;|m=?j=MRS`m1PUr+M=S!O;k@1mcZrsHJ+wZFZ zU{h9(WNl!WGG|Vkt@+z-2l>hyuXE7h2st_yZ5$GVXYJcYJjLg<=MQf5+VXX!xS9eY zuR;zmuD*8i>i8DO=y-f3iVMZoDIDc@V;9&{Ep z>G5@nqGyDM6c6kQ-uM3U+VCFDUlcZ{Q6t#e)ZJzK2{eP8r)`^o9H5b2AL-|yA|({E5g-i?t?dMGUQr;z^)exk%GGzSv698R2D2u zO3`<{X$=@B=(L1jbd=bY0IewbBpr-r&3BbT>`Ze!A?0Iq{s0_z%^AjnQd(56e z0n1`gwC=UqjlvAk=k_tHu1_3-2B#$DiNduQgVwp#Q2Vfx zA-}{$XhFMQSu3u1nayNEql>hx%lSv>Y`H@kob{btE$=sD1x~O>ct#8qxB3qg$U|}t z2{lE12qR7|caX_Z+L$7&hm6KELDM4Qn#OloR| zCLyK{8_lROH%CUbO>GjZjfqtW0f&M~MG%6ZM+pidM>q#K=fJt_voG)O`>feN=3LMB zce=Uk{l34;_j7rkwdR^@uK8%XvAI9r?={N6&X^C9BbN*Lv=$Cl)lNN@drQ2@%FcS> z9ZQXoVr}Mw(ybXXcs^8VPs*nSqcD67Ei+7^ix@Z=)F25r4@YKKEl_zv3WQ0mB8UrP ztvUr723@lZ#DyW6y=iIkU}(KHTe%~Hhz#Q>4FWU_l+wCMw=`XI-wW4aR<@>_l(}Jq zuvk1yke{|Y5wmcc$Q-!*GFPZ}F>=jJ{^>4>H}SNx2Ls~L@Tvi`tCCp@#8x!_C{<3g zVY)E`vE0#{*nNMn{+39M7Ep!VKK05A#S=5CVl3|64I-e;!CE<72WKo6h%u?Ttu%wo z>gJ9e|I!I73#-Io`I79AKK&K?CsJI?dpbkdBXbF%Xy|*=@ta z3?3V50brw+soureL$ap=Z>V1I5mG+07lMr%(eXu*sfFtT_apY>+xXmH`8Dci@8Pfe zwZ8(debyK8-~4y}s6O!HAJGSY`cwGePkeI!f&c3t=c|9;&)0AGCw^7;E1!+e{YSnU z;Ent3mjeU`ubsrzmA%Ll4r7{>R9|79jac#Q`3ndaKKNb#4c_{Z{|;aM_1~a(Zmr+_ z+kW$Y;KuFc+k2alXO!r$uufg8JdH!zfd>tgVy~kfQ=d5>ehPEId1?rnWET-ji|C!g z(2N>z&SM`cII%h$YGPfXjJ!;{b+M}eZ3q;X!Fc7(LhQm)(LO5GMQsTZe*Hi8%k-(2 zZ}WHj?ti!R$q)38{l)(rKmC(Grgy*lvv56ohTfa4ZlDt1l7d9c;OqhKPHY_35Zw_7 z^xiMu)+_IMH$LZA{?q8!e>T4HU;0gW-+MlzpTF{6yytyite^cq`6~RpulQQMc)r#j z`Gda)&wkFY#{0hH7werjKZU-%qbieD-aMR5k0Im7OlQvLb1sfyk?Rz9cjXQ#?2~r5 zE8bsCVx!{{2M`9&i4#g3V7&bHX_LmR;q=vvshPBx7wJMZ^L10;CiOVAg*Q|{e!@VO zy1UqL$Q4|qR_N&!z`}~QmN+NvDEX_096|C@B=Y&5inPyh%GazFx?;r{IzTJ$APXJw zLUZ?`I6>NxdKJ)%q{I+dsDX_k*z2sjxvxFWY<@FO#z1gX zg-LaY9fLpQj1_5`q>kM^@=wI1lej?~zYbBpbY!%vkN3x?12zqQ2?11tK{$mbMtaOS z(Jq+91fe%x(S-de0um4W3gh&=V)&GktJttQVrmk4u@{N^2c)Y-v*OZtmy5K@>NJYQ)Y0 z(|L|*erSPZU#89&NuXuadO*-^)E<5|oq`=Rb{Sb?{3z^)lk2_jLaMDM9m^i0)KXwW zTH4pWh|p@3V#F8e?~?{>lm^7M2tD|ichdp@wWnrDSwJ3>KwpR7T?d!?Irc1?^SmsM z=e@%hbhQ%HvxPme$OVzZSKTKXC2UgTYcgxj4_(ksCqCpEMO@I#J{VsWQ}^lY3svUp zVh+Ou(Kes%Raj{}%;Vr}jzQjaGH9Jq&Q4)Mg2BNBx0_h#azkhK7bwm74ohR;H`KT{ zeNuMzrE^tuvp_Fwc^2B;0zcHf1gNd#NI?>TEdYP-*-l0kKP2(i6iNk zV#vQ~MR&Gmz7l?MVNMxXLB@AXR!@^g!bb43+;Q;RUO>B!0$FTTyG~FdmbXMB!4dSK-Q(Cx?vj?D3k-p$F!qct2VT1i z8D~N2^mRIEtHoyQ&b(3^%t6tZWiA+E)8LwMb1Dj(p}dXEKpJke-0mnku``8W%ZlDM z6O*JvHN?}&TxD6eaRA5&2^Ay@%~xQA3TPid5YsO|gJwUOEt;T&jW)HAV-mP`%VIUd zGNe1fS+Ilg0hE+;g9)ZJsQ}~@A5J^lVhwfq;88VeE!E>qZ+_wv_4!}+tMRFizk!ec zz<2fU{_X!9e)n(33d)RY)vNrRFZ){5tIu?M`%}X0R?7wl*pW6|<4Bznt;1}qhN&kR zrJ7CVpzGlQc;z*IR4Q~F zE1F0@^XzZ2%El;K$Le8)PL$Brm=5uBI$AkYo?aW85^FG~{Ps87r|?ennm(-T4*{~U zJS8WuLZ&QHY#El@Q?kp{DFy-I!o|IXzTNojde*<^cmCG;*M7(UZhiG{{+;;N|J(2H zzxSixU!VVF|8rjNet~yB{&DP*R$LowC}ps3l3$(Oggqiy`bE&qv(*sy%Xjd=7xK8*ZO^lUz{o0_54bH4>K- z>mv-5JIN|?xz|;sN#aY?CRrKxl4od&T{#jQ8yqH->ETp)KU5$qC!QeeAyA8Qdo9Rt zs5}=(OpT(1CMK?WRW84o>|zz&fvHrKeu_z)DM#CZg>hhQo zdkk<2$2~;%lzi?{LKW(j=^rNAKgstQQ*jnm0^<}k(iUdQ&lldbnnMJN)TZv|#!vcO zg3Zw!uL+UZQQ18 zaoG|0J7=#>@Kn}#${Kk)sVEMxDWTL`N}tVMHygrIrF&0ppo;S0y7Jy#vQVcfZ z(nkANmxY<#!(-jSr?*sb6dhm>f7U&K3C)ViV~UF^br(y!QE~*&kdh&Ivp3DHXOD+m z$-@gv>PFk1m3d~gXPi~N(U!>t=FfWoOtt$HyKK^T3LvpjJ8WfV1AAe0YE5+);!`lV zel!Nu($?l^RgQ2V72;xJt3cdR5+U^lrofX89hhmZGz8lLr}M>{Yi=}_-**?IDoCNb z8fxpQVVy>MLl9$kq+>ylkF{(_Q!e zynK&GfuK_e@2o!!@xq>f?XmPBp~MlYH?R%g@wcLQ1;Rxvg_i2%}SJ^LYL+Nqb?m*qOO914t0m z4Rnt%0Xl|f%tPW7+dye&HnZafq`5B?+_CQyVs!w<$jt<^otsH4XyAsN`D{X<^D_P6 z72}%Orbxg6EO1<~^Q>W}h?8(^@Zr1hysI#VGER#fj{?VorAYJ!Tju_|MPUPvsBQ|S z2Ptl(cheF$)-{`}JY{W;y?d^mn7K-}jsI^M9$eI{8$tVmJEB6NYWqGMM;Zl3#Gx4= zaa^r4DSEcdUEJfBVhb>*^?;EI6ZvFAbH!)Y7Vf}o!Zbr!_Q<{H zu7;1CY23xzBMZIMIKmx)hvYgC)cZhdsMQ7}td*m!DnWV^xLg5nIwKrDFgRHBDNk;q zXJpTn2D8qmQDgw=kDnug<{VlYX(XO)B68Fkq&=jFuq+;2o*H{)alL%R+i$*uSKjj; zy!z$8rUdAnH$N%8(|qyj3p{`K>$4 ziY4)uCGh;!*I4Vq2fyu4fOy0={s(^qzw5XBvjlF?ew1z-_3)ez&!Fzn|Hd}0(U&9} zpx-*HGvLd+-#MhtIusP%Yf^y8_fAk$x{}E^t|Q6G&9=j=)EyF*%AM+aw~4k9OrTBa zow5>*G9ZwDOE>L6z1zYh_bAHWAapJCzEwkbab5c6Kl1zd1ONJOUBBoHzX%`vOMgP| z`oe#d@BMi{x8C~L$FUzDQ4bHN#E)b#$d(?YG@X2`awqqw5dWK$z|@n1w950-q6 zH#stowN!n|2S95D&2|@5dzH-5B?kv(dGQWRH8QEgupplfj9)_#a0)6QcwQi|+;qqz zvC2n*I<_Fj3dV%}ak@tLB#zA;Coasp&iXA5U>7jYKMEzevIncjPZW&|sn?9M0ECZw zq|Qjhz{27(87KgX=~)kOOf5G}t=gy2;r+ihFPU<7I|RdFBQjsAttV@WbG|qM&wsOP z#w>bM8O6CjTn=< zs7fHF$^}*hUYD>`+NXCvYu5qRl#yfk)TUKHZyS2>9Lr+9R(+rSrx)$L8np_2BX;jos}1QDGz{UaDWnUEu)qd>0&E8A_n&^5b5@e$)S!MH`CYnK zA@~0`g|RSrD=W`=$>fRGf&;jpuFng^p<>SU8>FZ))B!^KIG~J}<;;sbXd9L!+y zEC~lZ4eA+XPf3HP>eR(Di80s0)4#ow81tM%5ZH(!?*hOzuU|(qm__ffnnu+r;VccI z`K`^BF4z>d!W1@+=PR2pSs>bWp-tuaXT|N^ZS)qiM+bQ zluZ&;R_Rn*J9J*pvM(I@p$62-uX1Tao4{hmA}Xwna*m}Rdgt$+WSU6_Xc8-cY#uzA z>)z?!vT?Kfk9T-EuvsILV1p< zR^h^}(R>FbTvc^zZd?|P)G2QLs61c2u`^b1pN5-x-T@|^pyYSzQ<$>wnn1PJZrZ4Y zk*>I~wy3FDSg2}5;qQfQ)RI7+d90KWL;Pe45esx+Mq?xI_d4vRyFjTyM1qd+0e*o$ zBYV6SxNn(v@`mfo5H3u&BJ3p707zKa?QRN%nBq9Fc$!0p37q}rnb;KnW7LqXTo#|A zRb~=k0NT`jhPAAaxwf#^6e2RKu{Tr;BJue4n+ESyyq>*+en!09jdwoz$w*fO%*aHU z#@guY(ZbH5TH^@Ya`CK7=uK)r;_Vi$hi7>4{8fDN$A1EE{P4HovwrrM;_v*xU(vgs zKO=DSa|BtJB|VxVGLrA=LUUDPdtVF)v_rVpjcY5nU^@iWDkufx%wCxSx`3EfxM`BG zAD@CQ`ix=g7aVlyj>k&xuqCY0(IFZr`g?*a9ZT-r8_p?qTxNfa13GFUhx@2xpx(t* z_ys@b^YQjuAICrS&-`Zo*MH)V^rt@j#eCl{`7*xq)?2u4k5e@G&T0}!Lt4bPf#&_6 zNd_D~7v28+e&><<@eyymkxre;12GqI>4LU9F0BS@-S;fBCkMGlGl(EQu2p5~f zyv=#tFyy`8k1%0qI*T5y7@rLPYPI)Up{ab0ut0QVwW5K%i`P6b_;(Tcdl}X{HV<%^ ze)^RBotW$LicgW=;E2G?6#%LyUGD+@29oLTtj0}@qR%;S&RxFyCwcw#Fded+ zgewG+U+sO)T%(v|0CCTKs!WdX;FQ5u4WjxM5~b0RSAW{|^GUIscg3_g2XUt)gCGy= zg}G=I7So|~$Le1E(^O|GY#mZNNvGh}c|XWnPuILU`7;440=&?H{#|F}G^E~?0o#5)4Y zbupdIHF+eyKTCJ=r!xZ8p2b#PXyPWPBk8yj`$6`2)_AQXUslUllaBk^1aO0T8Ef{; z{S&%|fWGgcB7sMj#482mgd=Z{N{2KHVCo7CA_%oEVXrmDALwaFVq&k~%MeTVu7UUV zUcf@777V`C#wy^Jy*Zva(W@_Q!?3t-dTY0y~F^+`H6^!0N4=MSFFBmeZth!^Pyc z4rz8&2XlWjub(|$&5T+_Nj^%V#Hg_U{@U~(;pbO1L`l}*R+_yxh?nzeh&c0v`Q9{@ z1b=PFr4v(`CSBjl{y7oL-T4ll%T6A`B0gfx4Op*=(?rkOtbi2-qa4h2)|dDDR>s_g zv)@CSV+cpnXe+DAwf6XS$+d_fgYieeP@5j|Jb4QCPO#=tT-+s1r_c#l33&3S+ljd5 zb0Eygu?B(x1>Bz=7}NLkjHns9vAJ#l7~>iE{6mjPI$>J@V9<5gXfaBz%(-NfdV}4; zNTs_$5)TQcq1#q-=DDSz%a{hTr+AYXJ=kv2Yi8qTA+=Cr z`v}2jtz1`2Tmq&=<)e=@?iVQuP4F@-?*v@SLPD|;rG+ivhOWiJRtBt)HjV{{o#8Mi zERU%NoU9=UYAEOgSD~>nW4m`FEMSy@5iqpizKKgeBd~SOnJv^kI-x?2@a7Jkk!V=( zc!70h^1Mk5MJZVFY6GD$|3%CMd&&1QOuY?x1a!{h*3IV&Pk<0H(_MnVZWmz6q|X!* z@cF@oqtx^osqtlW&1=vrT?q(NRC5GqZ&36+)JG3bG9CFx+ql ze>)(z)VD^ze1vXx*~j+$91>Iow)agRGSK8nis5OAmuv$PaL|J4*)u$U<+(oeSH4+q z{P3UG@BID$5q|3Lem~yz>T`mU<#?IOXVe*S`YMjSR;I&38usod&%u#_wru1b!@2+h zkMW9MMlS#^ObXOtS^>F$%uvm=9_0XRa<4d~GI+5B1s8)Z|AOFMpW8eJe(I5XI{N%U)X+2*HeE!_vskp0vT4Uc@XZ&qI zvY!KFe~8Tp6BAntF0+i7ec=a<~sXx?2T*eU*F_i-Pmnz&TwVkM}`CQ6di z(&^3&`;el^wnDl0u=~<>ybV!PIr+qe-A0kUGTYL{9Q~To;t42`M>;}M+HWTZH~Kwu z%mi`r?3682+zzWv3}FovLc3NvgOf*lNZn|-m)DMVd3}4`TGTI-WjjHgWl7{?nOcl9A> zK_2m~S`yj-!5}CJKlJkHkSX)Rc9iu3Hc#YzP=TyYDkC>>Jl`qU389wh0h8=`ewuYY zEQ^T}ANHMQRhcjyvT6fxhZwjK=*&+}LDih7op;-?^3X3LZ`zw(qY_aF80g6n+e7BM z)mJ=LdcL-aJzi&>6I$c>GV98p9a*7CZt>LJ%=ml#|@vPnf*j}2j!SZu5fbmY56d&VrxUoh4m+8djw+ND07^LfsC z(wvke8tMNX;>o>k!+KHRy?fDbqmXC5d_T!NY($Q*9# z-w#fn4HGzj(evQ)Dr%BJlnBcU2v^1wQb{@4j6vFLge38~m%~I0Yox=#lg~sRSQvXC z1%^S(t}u#6b~JTLo=*yiVU~k=Fvn%gT+NY8@t}|}OVe#}@d?WNrzpvzHI|B~3k5BA z@RvxfbQmMgcH@BB;FeE_a#?e75tAf=3#*pf^W7V3C6|tw1psgF0a7dPaSV=p{q~ye zg6b}LiTMR3`JC3w8SZ&cF4+o_n6VBj;bOPRjg{Mrtjy=4FWf^$f`7488H**@cD*gs z&aoxam5g4F+F`Zx9818Jg2;vhPEzfnsJr#>$_u`_F8$LNI{mFNm~o`EDBKvt1+I?|!@9EJz!G9$WsQ8P6G*OwG140yUsGdX~3Sa z;S*m5U><@_IR4*GPDBgm872V}@QDq8qW&@;?1FCuVUurZvpz4HVpJCJIyE3K=16u( zJ%l!WPU3{g0p5sdFX3QIP;J}?9pkv&ggTV+_>3TAKysiduDLe%oK%v{yzXELXi+;& z%dO*RoyWuhygfJsP%jW&-C#T}a-6u!B?X^YW}L?#va*gk#w&4a@QRgYJYP-Ln^8A3 zO1F?y=`l^gTLzT&u<$c%8{q)${8~xvo>m-G2Fz$A@>w(6IxBxcc*gcTJ*Rd`;mx2j z3wE-x%JYnxKy#o_!psTQEe%hGS)kU-HKc=$P=zu8)64DNUZ2!NA8 zK);iJ2#D0=wrCzG?j}Oc1h=P}2p`1k3&}!-R0m{l3&>IvGcx%Cu6x&h9$+PJO*!DB z@Is4QeL&EPMpNjoXY51LR7jF}+T$6880R zC#Qi*Ok#GV%|q3EIe)L1H(i z$x)aZGfE+^ud+{4QpS_DS7{vZo(rNpuTUy}|&+DA>b zK@Wu_M_R9(__mPQ?Ig5SKG4koVa&4H!7fH7Q{r+Z=*^-}#tGw${9$ehN8YVr*}V7* zz^1!CN5@n=T^mASlFSUM4Z0iz?&%$DtfPaP;F@Gaoa@NaIMaProG@&A_?EI25 zZeQCo9QSX70S3-z9M%eL7shlGPz9~_i-kaTI_P1&NIRp7P@$_tTtaPiYd5skd8`_F zJV{meOx@+YChfg&F;#862ZVqt0$@AOh$uD}TQl1S1gryEWYo^?bcAvg+z~Ow?!-5K z0sie~p#1K)Sdri{Y@o{_*!0ir`>|LHTEDZBrtG>4%Lb=Y+nrZ_7}(C`2~*WqkFl#3 zMolu(bth;c{tT1ru$fMt*P&|I({veJkxWm45;r6h@*`I**iGpldATU6x?d4pM_Xsq_z zvpbxFWZAXB?Lf0#N?=4-QkyD}b}jQ;IT12v^2#ie_h+8bX+R=l0G{agefE71fT&{3 zvT9<-2{p=`unYXseBCvHF#=VBH%})4Qa(P=OD^-4M=j>#{YsL3DYb>&k9hZs=ls|w zeyo1kulefzvA_B)_?aL2Tm9^{_uvskvm4#0p;rkXP@c0uWJkIzuE5A*6mS)MZg4{l z6DDZIhc89JG&c%zm*4U?3%@urw*=k-SS+?XLs!0kXC2lOw&#Kzmk8)u>DCCS?KR#^ zVd(v5lP-lwXma~uPLV#{wI?*YyX*lDUPF=T8BGTmN13)wI4%Iip%y!^)Hk+)WTe^tqWac z#n(sx9N}%cyG<4PIp6Z{(UTzSuB>LPJX6j8Zg{^ZhnDqkc6jzk+WMUsthJA87D+wpy*+5U27qNBX*HPyEO`mi+1T)e3o?rbWu-8quF z`+iNK%EbWJN^vCGFpTWbWb=Cma3_9Cn3MR@AVmy!Pr;iS1nMY}WN(umT$gVvw71(L zhBs}t559;(u#Y^;*N{`VohQ^LUc8u%GeShzqruU^9y5huK?M0U2Lz+cjUW$dPCCKR zuPGE4u`1z*+o#vgoQmJA#G-`gE&U$ny*L1Oy4;D<%rlBiISqF-3g}eRq_0 zp>&-rlPr?;XYl5TAqi;zIS=8)QYx2PqDS*aQWwJaWo)-Lnu~jt(Ddz zdB%Oc8G*X6yEyX8O;Or@Zk^L>aDh^@8&Gva9=5ec24F~ZXiCq#^~uq|sRahZPQ8|P zj7M4z?y7Tr$T;xCnJcP4cmW4_9*+Vn31V9;09|4G6bC8%j5p=)=Av83{ zx1OGS>IfhwO!$6>T+R<;mJEme@VV8PhP&^{wV@j=9&F~uLv9VLt`jD!w;1m5h6 z;B_Ym510dE%;(>_)-7{O^Aa+T-+)`1en_3;FQ)MC{Qo91Q{&A&Gdw7a@;I}PobcpA zUOF#t9{6e-9(9DOZ?_k6%zozYj7O*$92zjznIG<7FjG9T|E%!E$OJJjTuI9sB|*s*pA zZDfj7o-=mmN)fylqKov*@(lfY9Y#r77WI~V+hJ*wHF1~TIQrbBZpjWex;YlGa}T)z ze8UnaSz*cwDU7en3o&at^~=1z9;Aa<(J=woBhdz-Hz(nl$=al~jQK{z5G?2hjlz1s zlw_ZNT`0ALogPfL@bKbwJihaYpZLrFFZ_aE{44MiKl#J)?`p8h`q=C~DkK;k#mP!Q zCij67p;c4{nnvvO$$Rt)Z%R=q2%Tk~qAV>mV{QqPC*rm;;Ts#s6bTwa=R|r6uH@am z((n^vi?tauBD!ng{gUZk;Jh4~H)jkmb3};~Z~Vb~`JwNw55NC=@Z!bmY!-{v;*Q4}YlWEYI5v~+Ab{R3fi~VZA*ekUJ#2U& zLn|^nB^$sJ$hlzXm?ru;yCY0MJu!m79(G>>w$$5C|7k~zdmDs#F*_NT3q8y79KU?x zk*sQ3zM}@UCVsXZ)I86cbK2=yZp!3RHjcSY;(+rxT4#sW;<3bHB2gd3zfRz0$jIdt1{*&355;zockQlg(k4` zIYQ>Gv*(nD9io4(E8G~@la!Mu>v&%XxE0j*sC#!)-ZUk%{dTB+TB|=IMg#6x32{ zq})JP<(LWM)~=9=Uf~xFMrrxdDTb8dWX?G-rX{#F)mbPu`DCQ&$2m0(7oU7(j8ZAO z!Z*xI@%n5RYype|#e$yae+N^0J?E)e-6?o(KbZLhZU!%(SLENL-fm$9wGUynkfuh^ zz7-9~XJt(XBDaHU6k)_1<#(EuZYqSl0?bUo;cTBtezShI#b888yo_;nasl(Qh>R;F>o3YuZHzcA z7YqcDr2H~mPr=9gMg>rpcUCQA4%D5Rp1A~OuGIR*fLj2n%tyn93MuHFF1$|Hu&TX4 z5?dGAEkEag$_*Z~tGuM0z)FCTjjfrD;3O#j%nIu=k`e^`R^MzAeuIUg>qQA`vrDOIV^0)P0X{SdmQNBHEw7 zA_eKpM9R>yI&L=+2;QS^qMgRTPeBcFxb@tq7v;?V!h|{Q^D9|PAv~J%@(I);*>fCK zp{SiqU*ZgO-_>CdxbA{35n=wl9t}J`O=35_MJK>KRKc}gl^JkG?`pM%i;+q(Ml>>k zh$^3LKg3x|`gkd2+@a@b{q1XT`} zq_EgntS~|oJPWu*O2>9LYy~uyO&d*GSS~oGch{^*Bp8NSC;9aGLJ+TI-DWrW?A6!s z=7)X~Kl8o+g?{a?{}=H7@A-3B-FUdS2~>utEfQUqGV2f&?&{*?{)UYy(mGP33u3JI za#DAr=JchS7?;kLMU-H)$3r9=7z8RJF;1tMlMBUt=iCGIO!zt6gh>1+HrS-rxQW`osUlH(`JD2k=wx z|IU8(mDjnaA&g*#0ox%~A}ItcY31?*bRO7BjP+(y65-@+AN>@9+3Pf`=e|A@mvj;E z9Oq~dlc=I@0y9eBpqWUVLTg$PxsE?1?8UqJx4?hkv&lU-96~ix?LAutT9G7d8R@L`N$#@t7{g?Jod!v z^2lqXxc3~Q88494p(W=|Yq>lb1JLTQjyTZ?!f)^LMz&JEF!U{nGsnnkbTq17>%tY< z)v>({ikA*Zq2rdi-Qn`^tbg9!GCd&{gn%w6k1n*3mY8|`#@++f!dR_@BJ%eY$MzygZtly3jq9fYtOV#WuOn+Cq+Y>hjHpUb#*kDgxRE2p zQ*b&P_o=XwAF}UrovDXCsio z8wJx0JL)K;IPzX5Xi{SKI-WG`#zV{Mg3dh|n|Qyb;AiUd@*W;vm~ll z*-UB*+CJ-Cn4=z(D=F{-SXbiQ#I!rv&6>IGeBEj{M&23oKw$*3>5({-*2K;!rV}3} z)XEpil)eWXeYQQvM#lmfj3QKEOy#_HyM=8*AyIbnS=zl(XhkGj1zrtw4w~X>@xnq? zE#7e`Gi%zjE(?;)f$W>&C%=H41QXoNG<>kU$1@h@pU>W-u`5t#{bI(Hq||;kMoqB> za2jnr{Qtq<(BxQvTB*MZhj9ly{#=YlO=5q_x-k^Dwt3C|I`7DP$JbG_lsKCQPwp?7 zh%mM&#~H!-$RXdjqzDw2)h4OE#$5KSIr&|mhUDP2rlpjfe1!x$<$>qCIn3;(EGfaM z!OxKt&dR*McYi~=cC5}zJC7k?ZVHOP$y`H+K~=d6gSx>-Gi=`sG$=mnJ}*5ihpu#R z%b$M;pd`Y>G_UKh_hI02jb29+1oFwg*8zQlTIjBY&7_6}vZO#WM_ehifXN#E*){j? z8?S}PzK0!B3?V?SC9rSaY^MP8eYYTa`WR_dhdL6f58E_}-V1r5XDG9U9C@z_d1u*V zhz+y*09tA<))YFP#maRyL{wy3ATh!BB-L2sO#8Zt-WIG%cYGn>$P!P0BcR?)d6zKJ zj&XSwQ^1a@c1#%08cVT&8_7=BY~B|y)W|Wiz`J1s960eW^<8lp@aANl$Id)|-3xgw zn(-~%yJrBTh0gfsbooTK1%v5Mo`Rsz%qX$aDVCo=&b$R#=(aV?{oaHhjZx`(6CgfBfIm zlC&*MH*pm((oj{4D=c)O%BQ%;yO;pDt+t@=*?tzRbl{_Gg|LZURj7^XsVeiXv-kuq zf!(UO213(#lvK8>@RhhQEG9>K>7|*GVRPr#X`mQrSySSf%`mxpASgA{1&#&*c4dA| z?LRmX`4BGp$U!7-vKGrHm3aEf960~Eul`DW$M^k!`e%N)KKOm#fmdF8O=_Dbv4!o% z1h_GCne8ML;!ZVt70nCUl0k=OQSA6VvBQoTN{)@If)AdCeNx(w(4G{aNd?d#z}d_& zFJh!j-A@|TE^4i)qhLD5k=LCEpHW7j-3^%+bPTryfjfQghDePYH3Mdi@!TmCn3>C! zJebV61*47t-~6L?4XG5<+E#Sb?wQ$+a$OU()UfJlOgk+pgh4XU3PEkTc0+B* zH&zQi$tU?arhmpkY~}TPVHzpQ`MQZkE=k)5WFG8E`CU;4-|~M1J7x(ZL_n%00a+?+ zO`~pJ8Pdh5^pC2Ccwp_bL^CRS{D6EXqci}#{|0=xdK>GQ{3!&bT9Ne37()8RYsMF$WLhKHZI8zXKu zIqsPt^MQy%UR&lft;uPPReSlAv%DlB2rBF0c;HWzA8Ing67KNj#>$x8sl>x|@+8S?g%x~SDOE3y9NZhOyhALnwJ#65ga3p3?X{DeK9D z{j}~_Hatup(lMi;BX64!=;Q0}45k5!+2wk&$*}3Jt9<0m@HBf0$~I#H&~lmF%b5|L z|C>ZYV0ixH7OAk>lm3+NIOyKR|9~nRvH(vD_b4y}EpTKd)6t#efhZFmZ(SfSoI;uC zTRw9Q^MnfJV}pQP+n8(AH1-MX8zD8X3?R2!EwN)gjf6HoZo-;J7FkCoMu6-va%OB9 zY5-(3OznWuEu|lusW>y=m^}kPlDBO+DFstwm}VQB-2dM0$Eq`fmTMjsRhngzz!~|a z79@;m#stWX-te(;8q8HS{XjF7UH3Sm90fA2n=S+~vP{T_diO?T>L{AkwXa4>D=C|t zlU9)EZ0T~82HBS^1@>e;8&oZ9cXDEAoKp~xvUI@xZl+(4-2!UZ)wA&Fd7M0eQxha{ zxN(zYCa4?L;)~Z_!>4}YLwM^){#*Quzw7tl5B~mt3(F@J^I=s@Ib?(?k=#S0-X76spGD^a=Jvfcth2qC;q6% zTSK=;ec3PiVt&W}@Wahd{vCbj{qL_=-~H}$!o*=4N)wjq7|7)jdtTBcCNCti_y9Aon!ZkqD6$>22m_~2qT>H*v`xo};;FG_V zp?sDVF0*FhrDB9%z!ZIM4_Dl+Pcpz@PKZ$k1ppjkE(Q`=?Fi7EmmaDHGg>6jrgA=Z70J+OKBSvz0DMMs2>)g_Rm-XGm%-E|)99bk$9^mxa-%QKU>uUx9r&7%y$}woJ zO_OU9QRev?bgDT9BaRvBvMKGIz%q~Q72l!{{>gEoXP6ihw*0$#$T>xfKG$=a9$qWj z^6VFw{i$SNKaVN6=J*sU9csu;3t=iV%&|L!xv_w7_q%$qp5w@~Ae zp9cKXj4=jDj^+$p`BQ?cnV3}o?_(&+Bbt&!Q#EKXREP@%dmUq`y4ND}!QlP=6x*}F zHL-IFP95Q<%T%!g0JAGKozeVS_t^ZB{kcmhZ4?ytA!S)~&* z26mPy`K`qY0tbw+a958ZGtz;?^4PEm+++(8WRBcs3PbQbS2vuBb6mM&R;+zSPCcVy zSyM>b_GdOc;le?UA=c?9xlGL_nIk9fVd(5>Fgou}ZID$%`>r75Sw~$^4R$rREZjOL zC2;P`ePQG+4}nWN7+}&7(zY?pVO(`~OwSJS@3LmB@%XZLx2pKKfXf?8a_UYa)jVU_ zf5;RUN?JH4ju7J+!^ABPvj@LN*G_)UOUX%T;H9R>9zg1&QHVFj_|nwQtOMhxS*MjF zMdw|n9Tt$B#w`)0(9>O<&uo3#JL`l^@A;aM<9kh$_s|FH9kLXItG&`a<}r=q%tK+Q z>`~cF{sC;3Dz>T7Y{Hqqc3p;EgrvnZ3w$`326gANg~t3Kcd?LgwqoB}n; zb-s7%U^ibBc1w3gNA1}@O^BTrpc7m&W)jwJ@KzE-Qj7P8riQ-b_yF0`#^uVOew@vRDcTSQCNBnITn?+4@I7o#Li;{n>ra=U#FR(rS`7P&3GTwEp8X>| z9tFT!HD@4gjpzCGZLbGldv9KE6nrt*1$Q7Q~+oj{oCV90sB$~ zKJ6y7U7Gh3sa586W@g8m&c`lUw&Hs~9Y(GL;mn$onjr&5&=O$n#(h8#^USZ|qbjM3 zkn9CB4drKKj8A;*G!c?fT#U8~-l;FaPGh ziU&4a@(fWSwRZOYCOW4#ci}1~I1$835ET#`_6c5oZ=<7eN6{pj*WK7$sb{V|6_hmn zK(C3x7m-W(S$Q6POa3`E)HdNeNv4TgLEN1B3uFCKf_&XBt%u2XPi3caOk7(=m}*9j zn6~+%jWSW?+SvU893M@^|&olCA zZ<;-8nY))bBLnQ{*=rd8>=lNXuol`GWpEd4#=1!>Ah&^S!=7h%nYM4`X3&>}AK7t? zLPPwgP+KR+`*rBVH4&bj^_vHHcUfsIlhGp*Oun^Wf=dTAurpTW@i9${Ju}YvopM~A zxPU+|ORn1vO-NS-79lFX-|H~zR>Ixz!5xQ4tP|f%Km^Y?M)r`&A*&PDf?WN3&wwn! zrE@YCIACaEegxNok80yI3=CpC3qM9gMp9isx3d5HUJ2Z{_*nxcFfuzo4V_uHH-E75 z-fc=80)#r4)m^cIYDU27PPPC!^B!j{h(#Ov=}8wUL4rbQ`#9SyzUev+5bR|Gy}>MF z3T0*HG#!#qvW7|?S89!svYRG{41fYu(@ARC@T`$B8=h-50hAq?&*OBxofy59Q(PtH zL6d&-FqAc+6p!Gn&&vK8xSp?%B6)Ed&iQ>4r#T*qd7kC*na~syQ?-JpvbS4~_%43D z8^ZDfYIR~56H|PAVNAK?=V6;{ora7zXv1KCqqg^zjZl%MlkRyl|F@#x8v_QCAx_69 z%Q3DxdnlV`p-vo)B=f8r3`rm&=EITDBkz12$Wke`4_4RUY1;)%QQ;$E0jTwD$2>Q&gwWlc{fT6WiaK-R&Pd}EqsOdl(D{n*SJ?+3XcTn4<|R@vHI< z`%p5jXPkRszgu6GV?(@0)WntXQ=YJUhNv9kW?U;|mU|K*=_%OL^GSds`101T6x|T; ze#8?$5dcy>dtR4xH6CvZfF2bR2Ug*Rk;^AIT=(XA8D-M`;5sW&&v5PcgB-m{TcF;6(V!OG_btXR162l|QCNH-k(evWrUcO_0DkGZLEY zI*!jIMt`dbwB?79p(jkYY!c?3nGf!SAAFPWJ>BPV2C&vCv;gI-nJLt4a)eXVQ4ZFD zYME0>P){cbbN>erWHV2JnCn($#Ym@EYnoc{w+`#+z;@2W1hBVY4!lsStSwV5mG#V9 zTV!W!W*qv9J|4)eo62>~q6Cs?nXuZ}4ZehmtPYCxJMMtlk*R_0kqp4+*2A2#8xHm` zn?;^rl!0n$99xET@f`Hj5-!)K*raR%##_XJoPLW;*B&y$u)6njA(MRv*n|uSE$&eW z)M;+p=+D6NfS&0vS5w4@Raz-2|nY4qZ7lkDQDlt*i30P zgvG4$naddk7PT-*=;rB;zRd{JG#vAYHf-b5T4i<|={C*Sk0}us4mE8oGdP|Wwez(( z!PV&p7MqQCZns{~Ui8~-Hjn1$SX<(G8}5zl%%~>fKf&mY#!5GY$P&S% zRd)joZI;N2S3|ml0$aQ8VCXM7ce7Uf# zcK1|!KlU&Gz(`HTNw^jjb9PyWrnj(X*pkIcQhB zcB(%CG6kQ)cqfKu$akK>#9l?#KATsaB*@dTa;dSsfSEqUa#2WD;~XZ(lH(5(>qACD zvRN^7js^m3GMJMTh@2Iju1<53cEJ|*0?$%a<(B{f002ouK~$i!El>~1h!WlE3B}|N z43nppC?9#`*W;-x0o}NQc=MZM9bl1`I^!MlHH^L@8i*8(qZ~liqIyjS9!OX#C!jll zN&5^8cfvvjN(0_^qqSY-L!&SCrW`#fMGljB*0$F`t*H!{HqLbGFl!t)_^@nlqUOwv z03j5Thp3t1t~@Bmg|H8f1tQ9$!clfi2h1jY0IN~lg5uMnLf1wcz-N!Ou>35?Y!uv{ zQbZp0$?1a7s9o?0AUK9nu5Ic3fw%~y18x!`3>NMOH@1tufo}J1SV98T*bGrK@M6cX za+ggHDf4yxJ%Xwq>-px%RB$RNf}Mw<-N&Pen^5OnZOL$-Nx@rCF?@TR>kBq4L3??qX2^OvYUc@;!oDD z&3Q1)mb88R^(mQ<0$RtTYitEG{0U}!YkAZ{1aWnSQ`g2`ckI3ssR?MtXVMnHqJ3{f zseJSBlANC(L=mh%eg+fYXfl83b+52#q|DHy0SRaFAp|(u^-LUu(9?7(lI2>&lOF`I z!D6Rr$0xBKA-a5eA#9e+0=R58YN9I1oj5)e=?{ebi0_4Q*`DV!tyD7jI(3>Vs7XM) z_&Y3Lc#eYYtP7-ep$^eA{%l_Nsb^HTMaYY=1@3eB6uQyCR#z9%TD^A@T-VDrMQvvu}z*65eOx|C1#x7-<*?EvWe0mH_yrqlPyJ}?KuUPqb>rkFz29KIn0gEfSh0F zgx5aFe6|Tv?gTM`Vd_*N8*&CI&e@u-dS{00JcRQw^QOY&bQTX1WRCF-3Dw=SaQtGa@WpwFp%SV`C>wr#zv^rrU`o!&V&?h3h@q1QBi13!MTfLmdaW^vDH4*36c6 z9Y%Pm%5qmtvnkaKwdGH zE}r*|7psM_;4EX0iYh=UOD}-rtUHz~9*(@$>o#p4YQo{P`Q*Aj$_T8auX^MDFOSHl19h4!&GML`R3KAY5+`DqQl38aa9AGNEO zV^7U&1p$c6x#4Dm9O%We*NbhnTZ!1`kB{M*28K7ZR?poElTfOfjg=F;<|D z$78V#tgsEp$*Q#gs<_rgJwEoY`IY~${?q^WH`VQ@-_K9{-M@=h9$v-fu_E#^Rz|Fv zfL2K{tr9HdUGjXj_hYajfg6%~BP&w@xI!FRfo=o1Nai5ajv1G1FBKnn?pGrYMD>o~X%n@^lqi^$KSCEC&u=^l!+?6TxvLDQN{P+pa z*|8{u)C_5Z_*?ih8<9T*Bv04cDBV}`#139Vr~@gaiS9+#oLc2ARh_a+?MI`IKyMV} z3v33|1}LSlKZcO(kYWLG^5=8>Ga8%?9HQ3V3a*TS_Yk0vO}$`uu3 zl$pjNi?|(NZ?hgv{wvqDGdjSwjZHs+U7erhc8i9lLW23>X#xZ7W=66a995m)TBqX_ zUz?P~UabQih&=cdiOlSNwH{j0qjyrv#bYTMg7s+hEM(+WqpIvh#P4e%h22TuTg*#dd0_oq9)@=F-J7rt6^a zkujh$m+u;+q>vQB)xjt$3D4yS(>qFC!^D^h+Ck@JhJ6Qd_T0hUrvSnEGWnUz!ft+A zBad*)B$yN~R0H({g)s7V&&V2pqt$P~erSXZ7yM_k?dCM`la3$LNgoQ8XuCUjdbOnO z^q|BinY|^j8`3f6&U8bi0hlecf;^0ATqt^NEvkeiwp&ZhT0Tl?AGzZ+t7u=j!SeN_ z@aFFLr{sBNpJdAA4!xYyL%a(Q$l6UjAEVZ0&M7{4_4%rPXER}3F zXu}Mzgah(5yxhihE%17VkG%g|_;Y^YSKwRz%>NT5rFQB9xn0xpK4lb;ojd@`>D;0X zp~mPq$wCiELjsoDh8{SsB9;~kttqvcK8wkqoJj3sF=^!L?+hDds24q#I_L7S-M8;G z46xz*h|>j|Z9#Z?Mu13G-LDjy?H-dyRpcwyz=_M@$4NKWL%2aIc+TUviU3H*y;~jd z(1|x(&XTM`zkI|$^EF?ofB9egz5DGS{Vsg!!#{=V`75{y>PC0(5O4JKGX-fI#I3k5 z+T%r_pcP>(H7NnPPydfL!q%v7%`vpY&pTN!z+ zE3TRy5>C`9+@MH|636pcSTR9u3af!>)!#?6{m5IcL8nvhYuG+r5=PH6)|Mu@lD|@| zx{|M$E0|YFrZQ@bOxJtAfv{n*mt&vecMs9M_B=HcHx0NO6Hgh(297Gj=b*O=(RK!h zve+iq0QQC9s!eomSnEUl|MmL}s+;j!FgZJQI6=#w9Uqa|637NCAeploC;sk%MCpdv zm=AOw+kxfNKse)60J@iK66cC`OtMftM5fNsf{Ez_Ve-r`BLyS~MNC+-a%`If_L9fQ zM+G3pV&(#t(mi+40l;~DnIPD~Ld>0P*MA5m^ZOj%BLA>0F0UanI){nDHY^$DXfr{M zj|G71kohp4Oy4Z5W8NIj^~)u9NH1-NL;A(JS&}Xz-QXN@L-_;uM9h396K6pli-0+u znfG$*KBAYB`2dyvE+Xc5IR;*%^9sVMVK@MAgFXXK1B7!2C~Fw4 z#!m8#Q>K_U^<8$07xQmNfzPJt8kaS5uPv=Ts? z91oKXDni^43+xM%G($0i{=M>Ccw)DB2tQERyiAvl3s6@CBaNQQ4=!XYz_>!JY~~2u ztnf2R0l&KvP_jD7o$Xn$jz?Bw^2xnL9W}dHhJoEHF(k;)%_%fxdtS8nl?_B)iLOGS z7Kl9~ZkeltpjB0fNr`tUbKNEZb|>-se!2N%)GwI@AWJ?Ysf8R{*YkXF#=m%yW=7;l z%u$90xPj5kbIWf;1qsE2L+Qs%yG0XZG_;wfE^yV##tIqiS6aax_a#26Uj+Y3Ge)XN zG22r8#3ix@=|u@yM+KHq`;#O5JX6_}$6^7pI38v^M zCs#x&p?qG9RA6TcfBjsJLlX}7@7ZE^spe*;EJcif0I>VcsNr5%n#;)pmf8Jba!9}Q z)l)PJH-rRP_Y{T`;Nba`Q&ff3$xC6LC3a>qndC_Ud*%1t-!}1N&PTBEQf^~Uc=y>s zI;(er_Oy^&_TvyJ^>*3|FbeRPQ$i5o`Gso-YtgcA2L*`j$Qk-uptwY;Y;u;%KlY>m zx8-VMBFVZUdjXjN7|Wl?sf&e@7^0e%zvZ8{`?Wh|has1xsS*vq0|shjkkkQ>9njjP zX#^iO+FFXdOo%L1&&7@${RHL;zc+zd&Wt^69e4JjVdo4LRKOUZhjs&H378JHr=@is zX^^u2H1%ZW?Vk)?rY;V1kV{k&0wq?8I)C%PZU$j68T=6$^S`*5 z`DWMickv_N_bqx>OW*%J-->4>A8&hfPogGmXDdhkJ^uJ44LlNOkbr&$|96aEFZ6g?`wD5F7IbsPnVPJdx_akQUnnTPNt9JrRn&!R4yb*(qW)`yXz-FjVeA| zc-hT==Ntc(_3OUwx8Re1``f@4EO>0m>5_E!e=)G+{6zq9xrPYG)yv#_+e%Mr`|E6p0#lndJuUGvc}|5VI=M#Ba znP%J&d89hvJ9+QmhTwsKs!>Bg%TbmoJY@x$_DqIR*v^kieDUjXC1#?hIo(=!ZZ>4} zKkG2Hwb!?mWHL7-c&~Y}c>NnhF+`CNUjn)gpC5AW3mUjnS^2L#KSc@P8PiZxZbk@G zC`0g>?t$LP6I-&!r=u-b-@9Gv6E@OxNqXTvmK##xmTjAM&V6qtcp1<(nK|NFts`V| zVKPts$*g~#S2{_gDs%cecxr;Ldn&%qX_OGs7~(pZ-G6^PdED#mn&zXY43T%;!EG+6 zn9tCpa!4+#6;KQ&g}ET>L*%C$~= z5l-%!mjjPw{F3ooJ85VKcQ&C?s@`n59TjZ@HA;`8vrmI%Ym zP>=_ha#Zr3^*eKM&d{0CWFUCrR^mGVY}9zt_%ysWc<~-E5ygyJpJY07bK;IZpY3>5OSlzpOh5YSOpqq=bxiTy!JfF z*=BjR@X*t{Y1%)A4g#W$cTbExGlMurjN#86XHJ}h-)UEhT278S8$9Dz-W?(O8;u%M z-6A4K^-;%DQy?Ww8rJ3GJ)+8(eTEzxn>{=)DWq`%P~u@9a>-qg#E^&~nI;R%1RC@1 z#?N4WVE9R<9`)J^6`P)4M^`p)nc7ids8YK&}|2Zdjz#9UZ;G%>TWCJZkM+}>~ zAGs5Y}}J;IoP&XB5mJIRF19jBFXdN@XMk&tcL0N`#lq9JTd>BV{r<^66Auv z>{_Nm?cDeANtnY~2}JLSbFQl2rkk8d0i}-iMh9p>t}+?rM1@{-4=}ZE1U}$`Pg(FU4 zf>Q=*39+k2U|nW}fk8U%!}bA*&tCrw{N&&I>%iL|=lA`Mzs6TzyaMg5Rm&AmFcg7I zSIc&C>ef@6Iv$`$<42AQ1PKN|&9q=BO+~4g( zcL#W@D*X+k7adK8@7uMhD_PzEHMAsQH&)Ie{L}y0zmHen^FDm|yS^3A-u)camq7(> z-l?(-nbP5xrk5xbv}`M>5SWkwt&#_N>BLy)1p~ykECqAkz!=O?j%R{9Q(1Va3-0VW z$l!ubTI$FKol`0?7i(m4-nOTRNl{xxcGma|W>f(AY{OpP0#_psUl;7{ZzH|u+VC|SD=jQm`H5~+9&_U;ftvu+X-R!O=XTg!%dq~gz63H;0` z)9FRPGn+0xc>Jz7YM8vchI>iCF;7X-G_g>aQ^DK?B`yVjMd>qevrs@4ZoMFu$(@k< z0_=&9XY6C4rwKI<9ms0VC}lmdMA>OCQBiyhM)YEzF`+S6u1McTp+oKihFYmzYVa+< zA+J@at~+_4f>u;-ZoQ-t5>Ua$3h4rWd%z9Anh_Jus!e$J_0>7@qXevU$^9f}JQ34^ zkPJa?H}i8sH_P)yB6~HcvY75NxGC1EjQvcKGf2O9xeGo>`V@m-Hm}U?-b%C3D$%Vo6 z=!2{3?q;w!y+MCJ511X~3c)wp^MVRshn9XCOtV#Cm8 z76z7_`E28~Rg=$@APGy66{37iH~xhI9N6qw{-0Jz{zpmSwmI_JZ8r@YA`@obb` z%Kcy@VyA6U$qfT0>KYlkH&t^oUjklOC}xp!Jqc#a{Z_g(m}hMOtD&}a|9Ry5jK3C1(Ogl7N5jC9O|GfsM0_L2RGkIwS;_2OzwY9EhD5ha?#y zBSD$$riaKgBP(X?nH{ziA$&w=*&$0t3?_2pT$Fj%78_&YJh6#dsa!oRTU%hK&_Eci zkza+jrfEwP;C0rA z^H6<5P$OO1<9C;Eecg!MI2kogRzB-Fx4m>jK}Z$+8rm>h+3V#Gzm1fP(F;s2Mxv$$%Tr^ zYb?^|2t`ZDN#$-+a+OtERpZg2qJ`PUAgd{8`4~3R^|ip>%h%T{#U48FL(wT_NNM-5k9MX-X$<`d` z;WNbzYC9FGY%JOn)OzaAJcIbsbp9^$c8S9vYzpcBwCuCzi_i$|K*g5?_kYrrMZ~~E z5Gpg^ZvVOQcO`L1_TtbeRX9ay=aD+lYoZ0`-~F`Mj|M=kL#zvp49#1k?7srY=@HGl z%%mZcb1GSV)_*&vRL+yo<=007xV1;#EE57yDUO~H7PS%ojDTbL)_RUW3o)WduaI3m zK#ic%Z3Azc)gMS8Nia@Kyjp~i~TjW_7*r|0$g~|G{|7R_M<>v69 z56V?&LI7sG#cQ*DD<{u*y-kPs6oK^5CZq*JZoi2pqzeWi4cnRH-sMeOAq)8oyL9B# zl?67@!)-<5q>+4kR^J!|nCtNcmaAb$9RUVEeq7zQ#8O5w`#eXl@igjAG4YfE7*%MZ zTh`=IE5wKlrBY>D4ltv74IZ`cM_jLRQD?uliBXdhj)&7B%tM}HV158uK&HRc&&z8J zIH|9)OxapJ|oCt`r=QZkmP{FwQ(SMeUyYgv!!MqoFr3nwL>e<;N0bW@{My zl;xAhRMRBE%p>+0fe?T-7^;M>B6f%bMd;{2>da6T5sfE5Nlx}p95Ozuhd?}2{<&Aq z8;k-Wd!d!~6L{q-mh(w%-lI4hEn6blJis362%oi2`w0{hVIi-r=7$;%OP?Q0D z$j`*jzzfx7nJ=ds>F_IyQcyKm@j=RF^}0-TuvXYx?}6LdH;IQT*hi@nyGgJjASuwA zNCRZ-m^#Geg0mbnolF#ps?}X?`$;2ablu@Fv2dd-h1gXr;#wTEo249;Ur4X4T4(x< zce4!<#(QpRt6a*-8;q&?kZImjjsYfPhTPAy=bB0>dozTBI$yunlR$OOG!b7o$e8@m6l;pakl-cRTn>}h@GX&e< zhm>}w`NuRzX1|*W8*>EsCfH9d_WZY_1M+^52XpZI6RJm@BY1KX>vVTC^P#@L6x7Vm zR^KZ_Ig{fP6IV%EPP%S{JxS<`XlYMBqS#S?K^8+5+!`YJMks0`2`i zvvjhUn1^aZp=0Kd8I+N73^-V`ZUpNH@np_YNmjxn96TKbp|&X$wRVFjT`jvdl!z6r z73UT=qFCLMWb@!8@zMAypS?FgwN3mRn>IkP0&msE+Vje@-UP!9TDqbHg(8!DfH~d` zdp7!M`?CpEnfG8iBGVyqa=?Sguz z1rt?(BLv5<@cIR;&l#Rm?dWA?`~mbHqRJ57gAFsdd*9S&phpW$I5*hd3)u= zU`zJOu-PGSWD~vym+PFpk!J~abl4H^6T|KkG0$9B=JYgzK7e7>J*!4k)uL=7bA%Dw z30!sI;guKs*kAoK`0}s(jrdJp_f^h+OXST1oSsfzpvO8KaI${UBcT*#aGx{KreVGl zG(gW>vCim7wpQk!oQfk~2X%9_a0gAGrfcoF_TIk7+0=w**{L`rw_$3!jEeYyfKQ`~ zBj2#U217o%H`mYATT|2|A&C*9dd?o6#D3Bxn4b>|Yl6E+UM+aun{x)YN1JkG+8&&# z4Jd<$exM1(w@1GFU9a&E{ilBt{WE{F-}>o~;rVN?1GlzHLGYd=$sTi?3|oyVOa=vh z5CvMz4qY=hs7c{YfCgEPyJSYQ+s!li&!kR=AI7gHZBmswRtAU|!%eB=hjZ#1@AFF` zTB;x#sj?P4Due)yiT^mmiWx^UZ;OE0Qmy2J8D+{zAYkX5flBi1_AWi0QXmID;&hBK zIAVi*NYR-|blHH)v4t`(Z>^X@z!N^R+@I&fSUanSJJoNTvYOB)yZ03PcW@QCoOFh} zfqld74NvJcHi$>4e2k`7XF8Lttw@rYirBwz*6-cn^GV9=@F7uM%#n;S$AIVer~ep5 z!E{6~pVVVpggPTxc}adkO3#YGbYa42q)_l{ac!|r%z^fOCKKUg6yXy$%F%1^gMXj5 zBHY=+DG-#{kx?8@jW+59b(-KBKbv=+sSq<#W-Tz#dnrfvWP@<KnEq=-H+9EM0xI^NBP%apwfabyE^s%wS+J#36y8ffex=E)A|xLjh$}eR+YoUzkCIKN zp7gAJV$Z?F$qjzLC*ONn$kw1)gE_PuT0^S)=axE3Bb^gWCPt)L;Bt6gJ&fTBLp))y zYmlVUk>BU=9i4BPcvN6VijO)TDt?1<4i9cc)&g;|E{4o@N;#zJ#Iaz|V3#529Et(R z9v7NDFx_a*F94uPO!7IaI*-hI%<&?QtO#qW1Scj*(T17XWLC5y612p?ZuBx>S&{bl zuoh2V_F?As%x&8F@PL&P>K67TU9vHT!uZ@heaiV~B$381w8SV%lRSAp%t@~OM1B=! zdd3-!)SBhbs$AbHFU*emAru(EL?(p34QZoz0IpuZ9dcnH-%L9Sk#rE}dwkZ4_= z*TP18&-_w+hK%oAHt0Ab6`6DNo-CuA0M|_z+L;gchLTR9xg$g7aqZf-P} zH}?+Xok{D)u&sKs#v`PloDA+{m(!6V^9kasI&M1z&4Y>>D%LYl?Dvi`g1hJ7ZxPilAt35~(f~$nS3Ge!h zcj51S=U)J?!hic`|EP*W??;v{XL3AkjtOO->l6q8Rzcz8EAoY0arRn@UDt^5g|i{0 z$(%fox#e07wfkPF!5sKT{9G2Sk!UPmQwl4$4y|LmtNPknu=dekVX&<*aT3j=FL2+W z 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